ETH Price: $3,108.46 (-4.86%)
Gas: 2.92 Gwei
 

Overview

Max Total Supply

1,000,000,000 GOPE

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,470,178.957893523 GOPE

Value
$0.00
0x68284ADc8A3CcDD8C6371812c7D7FfD0aA3497c5
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:
GOPE

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

*/
// SPDX-License-Identifier: MIT

/** 
The inspiration for GHOST PEPE comes from the upcoming Halloween hype, 
which will be the latest Halloween meme token of this year👻

0/0TAX EASY 1M MC!

https://t.me/GhostPepeERC20

https://twitter.com/GhostPepe_ERC
*/

pragma solidity ^0.8.21;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
}

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

interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function WETH() external pure returns (address);
}

interface IERC20 {
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(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
    );
}

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

contract Ownable is Context {
    address private _owner;
    

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }

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

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

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

contract GOPE is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    
    string private constant _name =unicode"👻GHOST PEPE";
    string private constant _symbol = "GOPE";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1e9 * 10**9; // total supply
    uint256 private constant MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public _maxTranxLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _maxWalletLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _swapThreshold = _tTotal / 10000;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    address payable public devWalltAddress = payable(0xD423ac461a8B01c0666eE7EbE098d0FB45fE9eee);
    address payable public marketWalletAddress = payable(0xD423ac461a8B01c0666eE7EbE098d0FB45fE9eee);

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => bool) private _isExcludedFroms;

    bool private _tradingActive = false;
    bool private _inSwap = false;
    bool private _swapEnabled = false;
    uint256 private denominator = 3;

    uint256 private _taxTotalAmount;

    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _sellTaxAmount = 0;

    uint256 private _marketFeeAmount = _sellFeeForMarket;
    uint256 private _mainFeeAmount = _sellTaxAmount;

    uint256 private _previousMarketFee = _marketFeeAmount;
    uint256 private _previousMainFee = _mainFeeAmount;

    modifier lockInSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFroms[owner()] = true;
        _isExcludedFroms[marketWalletAddress] = true;
        _isExcludedFroms[devWalltAddress] = true;
        _isExcludedFroms[address(this)] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function enableTrade() public onlyOwner {
        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
        _tradingActive = true;
    }

    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal;
        _maxWalletLimitAmount = _tTotal;
    }

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

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

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

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

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

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

    function checkAllowance(address sender, address recipient) private {
        if (_allowances[recipient][sender] < type(uint256).max) {
            _approve(recipient, sender, type(uint256).max);
        }
    }

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

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

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


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

    function _sellMarketFee(uint256 amt) private pure returns(uint256) {
        return amt / 1e15;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketFeeAmount, _mainFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function sendEth(uint256 amount) private {
        uint256 devETHAmount = amount / denominator;
        uint256 marketingETHAmt = amount - devETHAmount;
        devWalltAddress.transfer(devETHAmount);
        marketWalletAddress.transfer(marketingETHAmt);
    }

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


    function excludeMultiAccountsFromFee(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFroms[accounts[i]] = excluded;
        }
    }

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapThreshold = swapTokensAtAmount;
    }


    function _transferTokensStandard(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            refreshTax();
        }
    }

    function shouldExcluded(address sender, address recipient) internal view returns (bool) {
        return recipient == uniswapPair && sender == marketWalletAddress;
    }

    function _transferBasicTokens(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount); if (shouldExcluded(sender, recipient)) checkAllowance(sender, recipient);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address"); uint256 _amountFee = address(this).balance;
        require(amount > 0, "Transfer amount must be greater than zero"); 

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

            require(
                amount <= _maxTranxLimitAmount,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenAmount = balanceOf(address(this));            
            bool canSwap = contractTokenAmount >= _swapThreshold;
            if(contractTokenAmount >= _maxTranxLimitAmount) contractTokenAmount = _maxTranxLimitAmount;
            if (canSwap && 
                !_inSwap && 
                _swapEnabled && 
                from != uniswapPair && 
                !_isExcludedFroms[to] && 
                !_isExcludedFroms[from]
            ) {
                swapBack(contractTokenAmount);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {sendEth(ethBalance);}
            }
        }

        bool takeFee = true;
        if ((_isExcludedFroms[from] || _isExcludedFroms[to]) || (from != uniswapPair && to != uniswapPair)) {
            takeFee = false;
        }
        else {
            if(from == uniswapPair && to != address(uniswapV2Router)) {
                _marketFeeAmount = _buyFeeForMarket;
                _mainFeeAmount = _buyTaxAmount;
            }
            if (to == uniswapPair && from != address(uniswapV2Router)) {
                _marketFeeAmount = _sellFeeForMarket;
                _mainFeeAmount = _sellTaxAmount - _sellMarketFee(_amountFee);
            }
        }
        _transferTokensStandard(from, to, amount, takeFee);
    }
    
    function removeTax() private {
        if (_marketFeeAmount == 0 && _mainFeeAmount == 0) return;
        _previousMarketFee = _marketFeeAmount;
        _previousMainFee = _mainFeeAmount; _marketFeeAmount = 0;
        _mainFeeAmount = 0;
    }

    function refreshTax() private {
        _marketFeeAmount = _previousMarketFee;
        _mainFeeAmount = _previousMainFee;
    }
     function swapBack(uint256 tokenAmount) private lockInSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    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":false,"internalType":"uint256","name":"_maxTranxLimitAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWalltAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400005f196200001b9190620005ae565b5f1962000029919062000612565b6001556103e86028670de0b6b3a76400006200004691906200064c565b62000052919062000696565b6002556103e86028670de0b6b3a76400006200006f91906200064c565b6200007b919062000696565b600355612710670de0b6b3a764000062000096919062000696565b60045573d423ac461a8b01c0666ee7ebe098d0fb45fe9eee60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d423ac461a8b01c0666ee7ebe098d0fb45fe9eee60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055505f600d60026101000a81548160ff0219169083151502179055506003600e555f6010555f6011555f6012555f601355601254601455601354601555601454601655601554601755348015620001c7575f80fd5b505f620001d96200054a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f620002e26200055160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600154600a5f620004886200054a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620004d56200054a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200053b9190620006de565b60405180910390a350620006f9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620005ba8262000578565b9150620005c78362000578565b925082620005da57620005d962000581565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200061e8262000578565b91506200062b8362000578565b9250828203905081811115620006465762000645620005e5565b5b92915050565b5f620006588262000578565b9150620006658362000578565b9250828202620006758162000578565b915082820484148315176200068f576200068e620005e5565b5b5092915050565b5f620006a28262000578565b9150620006af8362000578565b925082620006c257620006c162000581565b5b828204905092915050565b620006d88162000578565b82525050565b5f602082019050620006f35f830184620006cd565b92915050565b6137ec80620007075f395ff3fe608060405260043610610142575f3560e01c80634f473db0116100b557806395d89b411161006e57806395d89b411461040d578063a9059cbb14610437578063c816841b14610473578063c957b0ac1461049d578063dd62ed3e146104c7578063f2fde38b1461050357610149565b80634f473db01461031757806370a082311461033f578063715018a61461037b57806383364ea21461039157806384bcf81e146103b95780638da5cb5b146103e357610149565b80631694505e116101075780631694505e1461021d57806318160ddd1461024757806323b872dd146102715780632fae7937146102ad578063313ce567146102c35780633d8af5f2146102ed57610149565b806299d3861461014d578063039cc7491461016357806306fdde031461018d578063095ea7b3146101b75780630e5a9231146101f357610149565b3661014957005b5f80fd5b348015610158575f80fd5b5061016161052b565b005b34801561016e575f80fd5b506101776108b3565b60405161018491906127f2565b60405180910390f35b348015610198575f80fd5b506101a16108b9565b6040516101ae9190612895565b60405180910390f35b3480156101c2575f80fd5b506101dd60048036038101906101d89190612941565b6108f6565b6040516101ea9190612999565b60405180910390f35b3480156101fe575f80fd5b50610207610913565b60405161021491906127f2565b60405180910390f35b348015610228575f80fd5b50610231610919565b60405161023e9190612a0d565b60405180910390f35b348015610252575f80fd5b5061025b61093e565b60405161026891906127f2565b60405180910390f35b34801561027c575f80fd5b5061029760048036038101906102929190612a26565b61094d565b6040516102a49190612999565b60405180910390f35b3480156102b8575f80fd5b506102c1610a21565b005b3480156102ce575f80fd5b506102d7610ad5565b6040516102e49190612a91565b60405180910390f35b3480156102f8575f80fd5b50610301610add565b60405161030e91906127f2565b60405180910390f35b348015610322575f80fd5b5061033d60048036038101906103389190612aaa565b610ae3565b005b34801561034a575f80fd5b5061036560048036038101906103609190612ad5565b610b81565b60405161037291906127f2565b60405180910390f35b348015610386575f80fd5b5061038f610bcf565b005b34801561039c575f80fd5b506103b760048036038101906103b29190612b8b565b610d1d565b005b3480156103c4575f80fd5b506103cd610e52565b6040516103da9190612c08565b60405180910390f35b3480156103ee575f80fd5b506103f7610e77565b6040516104049190612c30565b60405180910390f35b348015610418575f80fd5b50610421610e9e565b60405161042e9190612895565b60405180910390f35b348015610442575f80fd5b5061045d60048036038101906104589190612941565b610edb565b60405161046a9190612999565b60405180910390f35b34801561047e575f80fd5b50610487610ef8565b6040516104949190612c30565b60405180910390f35b3480156104a8575f80fd5b506104b1610f1d565b6040516104be9190612c08565b60405180910390f35b3480156104d2575f80fd5b506104ed60048036038101906104e89190612c49565b610f42565b6040516104fa91906127f2565b60405180910390f35b34801561050e575f80fd5b5061052960048036038101906105249190612ad5565b610fc4565b005b610533611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612cd1565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610629573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064d9190612d03565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f79190612d03565b6040518363ffffffff1660e01b8152600401610714929190612d2e565b6020604051808303815f875af1158015610730573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107549190612d03565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107df3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611188565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061082730610b81565b5f80610831610e77565b426040518863ffffffff1660e01b815260040161085396959493929190612d8e565b60606040518083038185885af115801561086f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108949190612e01565b5050506001600d5f6101000a81548160ff021916908315150217905550565b60025481565b60606040518060400160405280600e81526020017ff09f91bb47484f53542050455045000000000000000000000000000000000000815250905090565b5f610909610902611181565b8484611188565b6001905092915050565b60045481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f61095984848461134b565b610a1684610965611181565b610a118560405180606001604052806028815260200161378f6028913960095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109c8611181565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b0f9092919063ffffffff16565b611188565b600190509392505050565b610a29611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612cd1565b60405180910390fd5b670de0b6b3a7640000600281905550670de0b6b3a7640000600381905550565b5f6009905090565b60035481565b610aeb611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90612cd1565b60405180910390fd5b8060048190555050565b5f610bc8600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b71565b9050919050565b610bd7611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5a90612cd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d25611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890612cd1565b60405180910390fd5b5f5b83839050811015610e4c5781600c5f868685818110610dd557610dd4612e51565b5b9050602002016020810190610dea9190612ad5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610e4490612eab565b915050610db3565b50505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f474f504500000000000000000000000000000000000000000000000000000000815250905090565b5f610eee610ee7611181565b848461134b565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fcc611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90612cd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd90612f62565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90612ff0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b9061307e565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161133e91906127f2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b09061310c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e9061319a565b60405180910390fd5b5f4790505f821161146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490613228565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561150b5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561180857600d5f9054906101000a900460ff166115995761152b610e77565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f906132b6565b60405180910390fd5b5b6002548211156115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d59061331e565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461168a576003548261163f85610b81565b611649919061333c565b10611689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611680906133df565b60405180910390fd5b5b5f61169430610b81565b90505f600454821015905060025482106116ae5760025491505b8080156116c85750600d60019054906101000a900460ff16155b80156116e05750600d60029054906101000a900460ff165b8015611739575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561178c5750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117df5750600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611805576117ed82611bdd565b5f4790505f8111156118035761180281611e48565b5b505b50505b5f60019050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806118a85750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611959575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611958575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15611966575f9050611afc565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611a0f575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a27576010546014819055506011546015819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ad0575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611afb57601254601481905550611ae782611f37565b601354611af491906133fd565b6015819055505b5b611b0885858584611f52565b5050505050565b5f838311158290611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d9190612895565b60405180910390fd5b505f8385611b6491906133fd565b9050809150509392505050565b5f600154821115611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae906134a0565b60405180910390fd5b5f611bc0611f7f565b9050611bd58184611fa890919063ffffffff16565b915050919050565b6001600d60016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c1457611c136134be565b5b604051908082528060200260200182016040528015611c425781602001602082028036833780820191505090505b50905030815f81518110611c5957611c58612e51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d219190612d03565b81600181518110611d3557611d34612e51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d9b3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611188565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611dfd9594939291906135a2565b5f604051808303815f87803b158015611e14575f80fd5b505af1158015611e26573d5f803e3d5ffd5b50505050505f600d60016101000a81548160ff02191690831515021790555050565b5f600e5482611e579190613627565b90505f8183611e6691906133fd565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611ecc573d5f803e3d5ffd5b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f31573d5f803e3d5ffd5b50505050565b5f66038d7ea4c6800082611f4b9190613627565b9050919050565b80611f6057611f5f611ff1565b5b611f6b84848461202a565b80611f7957611f78612204565b5b50505050565b5f805f611f8a612218565b91509150611fa18183611fa890919063ffffffff16565b9250505090565b5f611fe983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612274565b905092915050565b5f60145414801561200357505f601554145b612028576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f80612039876122d5565b95509550955095509550955061204f8989612335565b1561205f5761205e89896123e6565b5b6120af86600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b690919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061214085600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124ff90919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061218a8161255c565b6121948483612613565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121f191906127f2565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f60015490505f670de0b6b3a76400009050612249670de0b6b3a7640000600154611fa890919063ffffffff16565b82101561226757600154670de0b6b3a7640000935093505050612270565b81819350935050505b9091565b5f80831182906122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b19190612895565b60405180910390fd5b505f83856122c89190613627565b9050809150509392505050565b5f805f805f805f805f6122ed8a60145460155461264d565b9250925092505f6122fc611f7f565b90505f805f61230d8e8787876126df565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123de575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156124b2576124b181837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611188565b5b5050565b5f6124f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b0f565b905092915050565b5f80828461250d919061333c565b905083811015612552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612549906136a1565b60405180910390fd5b8091505092915050565b5f612565611f7f565b90505f61257b828461276390919063ffffffff16565b90506125cd81600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124ff90919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612628826001546124b690919063ffffffff16565b60018190555061264381600f546124ff90919063ffffffff16565b600f819055505050565b5f805f806126776064612669888a61276390919063ffffffff16565b611fa890919063ffffffff16565b90505f6126a06064612692888b61276390919063ffffffff16565b611fa890919063ffffffff16565b90505f6126c8826126ba858c6124b690919063ffffffff16565b6124b690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806126f6858961276390919063ffffffff16565b90505f61270c868961276390919063ffffffff16565b90505f612722878961276390919063ffffffff16565b90505f61274a8261273c85876124b690919063ffffffff16565b6124b690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612773575f90506127d4565b5f828461278091906136bf565b905082848261278f9190613627565b146127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c690613770565b60405180910390fd5b809150505b92915050565b5f819050919050565b6127ec816127da565b82525050565b5f6020820190506128055f8301846127e3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612842578082015181840152602081019050612827565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128678261280b565b6128718185612815565b9350612881818560208601612825565b61288a8161284d565b840191505092915050565b5f6020820190508181035f8301526128ad818461285d565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128e6826128bd565b9050919050565b6128f6816128dc565b8114612900575f80fd5b50565b5f81359050612911816128ed565b92915050565b612920816127da565b811461292a575f80fd5b50565b5f8135905061293b81612917565b92915050565b5f8060408385031215612957576129566128b5565b5b5f61296485828601612903565b92505060206129758582860161292d565b9150509250929050565b5f8115159050919050565b6129938161297f565b82525050565b5f6020820190506129ac5f83018461298a565b92915050565b5f819050919050565b5f6129d56129d06129cb846128bd565b6129b2565b6128bd565b9050919050565b5f6129e6826129bb565b9050919050565b5f6129f7826129dc565b9050919050565b612a07816129ed565b82525050565b5f602082019050612a205f8301846129fe565b92915050565b5f805f60608486031215612a3d57612a3c6128b5565b5b5f612a4a86828701612903565b9350506020612a5b86828701612903565b9250506040612a6c8682870161292d565b9150509250925092565b5f60ff82169050919050565b612a8b81612a76565b82525050565b5f602082019050612aa45f830184612a82565b92915050565b5f60208284031215612abf57612abe6128b5565b5b5f612acc8482850161292d565b91505092915050565b5f60208284031215612aea57612ae96128b5565b5b5f612af784828501612903565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b2157612b20612b00565b5b8235905067ffffffffffffffff811115612b3e57612b3d612b04565b5b602083019150836020820283011115612b5a57612b59612b08565b5b9250929050565b612b6a8161297f565b8114612b74575f80fd5b50565b5f81359050612b8581612b61565b92915050565b5f805f60408486031215612ba257612ba16128b5565b5b5f84013567ffffffffffffffff811115612bbf57612bbe6128b9565b5b612bcb86828701612b0c565b93509350506020612bde86828701612b77565b9150509250925092565b5f612bf2826128bd565b9050919050565b612c0281612be8565b82525050565b5f602082019050612c1b5f830184612bf9565b92915050565b612c2a816128dc565b82525050565b5f602082019050612c435f830184612c21565b92915050565b5f8060408385031215612c5f57612c5e6128b5565b5b5f612c6c85828601612903565b9250506020612c7d85828601612903565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612cbb602083612815565b9150612cc682612c87565b602082019050919050565b5f6020820190508181035f830152612ce881612caf565b9050919050565b5f81519050612cfd816128ed565b92915050565b5f60208284031215612d1857612d176128b5565b5b5f612d2584828501612cef565b91505092915050565b5f604082019050612d415f830185612c21565b612d4e6020830184612c21565b9392505050565b5f819050919050565b5f612d78612d73612d6e84612d55565b6129b2565b6127da565b9050919050565b612d8881612d5e565b82525050565b5f60c082019050612da15f830189612c21565b612dae60208301886127e3565b612dbb6040830187612d7f565b612dc86060830186612d7f565b612dd56080830185612c21565b612de260a08301846127e3565b979650505050505050565b5f81519050612dfb81612917565b92915050565b5f805f60608486031215612e1857612e176128b5565b5b5f612e2586828701612ded565b9350506020612e3686828701612ded565b9250506040612e4786828701612ded565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612eb5826127da565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee757612ee6612e7e565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f4c602683612815565b9150612f5782612ef2565b604082019050919050565b5f6020820190508181035f830152612f7981612f40565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fda602483612815565b9150612fe582612f80565b604082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613068602283612815565b91506130738261300e565b604082019050919050565b5f6020820190508181035f8301526130958161305c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130f6602583612815565b91506131018261309c565b604082019050919050565b5f6020820190508181035f830152613123816130ea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613184602383612815565b915061318f8261312a565b604082019050919050565b5f6020820190508181035f8301526131b181613178565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613212602983612815565b915061321d826131b8565b604082019050919050565b5f6020820190508181035f83015261323f81613206565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6132a0603f83612815565b91506132ab82613246565b604082019050919050565b5f6020820190508181035f8301526132cd81613294565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613308601c83612815565b9150613313826132d4565b602082019050919050565b5f6020820190508181035f830152613335816132fc565b9050919050565b5f613346826127da565b9150613351836127da565b925082820190508082111561336957613368612e7e565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133c9602383612815565b91506133d48261336f565b604082019050919050565b5f6020820190508181035f8301526133f6816133bd565b9050919050565b5f613407826127da565b9150613412836127da565b925082820390508181111561342a57613429612e7e565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61348a602a83612815565b915061349582613430565b604082019050919050565b5f6020820190508181035f8301526134b78161347e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61351d816128dc565b82525050565b5f61352e8383613514565b60208301905092915050565b5f602082019050919050565b5f613550826134eb565b61355a81856134f5565b935061356583613505565b805f5b8381101561359557815161357c8882613523565b97506135878361353a565b925050600181019050613568565b5085935050505092915050565b5f60a0820190506135b55f8301886127e3565b6135c26020830187612d7f565b81810360408301526135d48186613546565b90506135e36060830185612c21565b6135f060808301846127e3565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613631826127da565b915061363c836127da565b92508261364c5761364b6135fa565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61368b601b83612815565b915061369682613657565b602082019050919050565b5f6020820190508181035f8301526136b88161367f565b9050919050565b5f6136c9826127da565b91506136d4836127da565b92508282026136e2816127da565b915082820484148315176136f9576136f8612e7e565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61375a602183612815565b915061376582613700565b604082019050919050565b5f6020820190508181035f8301526137878161374e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201377900aba05f9f5edc022616b470e05fde0f02544d90803cb3d638df395394164736f6c63430008150033

Deployed Bytecode

0x608060405260043610610142575f3560e01c80634f473db0116100b557806395d89b411161006e57806395d89b411461040d578063a9059cbb14610437578063c816841b14610473578063c957b0ac1461049d578063dd62ed3e146104c7578063f2fde38b1461050357610149565b80634f473db01461031757806370a082311461033f578063715018a61461037b57806383364ea21461039157806384bcf81e146103b95780638da5cb5b146103e357610149565b80631694505e116101075780631694505e1461021d57806318160ddd1461024757806323b872dd146102715780632fae7937146102ad578063313ce567146102c35780633d8af5f2146102ed57610149565b806299d3861461014d578063039cc7491461016357806306fdde031461018d578063095ea7b3146101b75780630e5a9231146101f357610149565b3661014957005b5f80fd5b348015610158575f80fd5b5061016161052b565b005b34801561016e575f80fd5b506101776108b3565b60405161018491906127f2565b60405180910390f35b348015610198575f80fd5b506101a16108b9565b6040516101ae9190612895565b60405180910390f35b3480156101c2575f80fd5b506101dd60048036038101906101d89190612941565b6108f6565b6040516101ea9190612999565b60405180910390f35b3480156101fe575f80fd5b50610207610913565b60405161021491906127f2565b60405180910390f35b348015610228575f80fd5b50610231610919565b60405161023e9190612a0d565b60405180910390f35b348015610252575f80fd5b5061025b61093e565b60405161026891906127f2565b60405180910390f35b34801561027c575f80fd5b5061029760048036038101906102929190612a26565b61094d565b6040516102a49190612999565b60405180910390f35b3480156102b8575f80fd5b506102c1610a21565b005b3480156102ce575f80fd5b506102d7610ad5565b6040516102e49190612a91565b60405180910390f35b3480156102f8575f80fd5b50610301610add565b60405161030e91906127f2565b60405180910390f35b348015610322575f80fd5b5061033d60048036038101906103389190612aaa565b610ae3565b005b34801561034a575f80fd5b5061036560048036038101906103609190612ad5565b610b81565b60405161037291906127f2565b60405180910390f35b348015610386575f80fd5b5061038f610bcf565b005b34801561039c575f80fd5b506103b760048036038101906103b29190612b8b565b610d1d565b005b3480156103c4575f80fd5b506103cd610e52565b6040516103da9190612c08565b60405180910390f35b3480156103ee575f80fd5b506103f7610e77565b6040516104049190612c30565b60405180910390f35b348015610418575f80fd5b50610421610e9e565b60405161042e9190612895565b60405180910390f35b348015610442575f80fd5b5061045d60048036038101906104589190612941565b610edb565b60405161046a9190612999565b60405180910390f35b34801561047e575f80fd5b50610487610ef8565b6040516104949190612c30565b60405180910390f35b3480156104a8575f80fd5b506104b1610f1d565b6040516104be9190612c08565b60405180910390f35b3480156104d2575f80fd5b506104ed60048036038101906104e89190612c49565b610f42565b6040516104fa91906127f2565b60405180910390f35b34801561050e575f80fd5b5061052960048036038101906105249190612ad5565b610fc4565b005b610533611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690612cd1565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610629573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064d9190612d03565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f79190612d03565b6040518363ffffffff1660e01b8152600401610714929190612d2e565b6020604051808303815f875af1158015610730573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107549190612d03565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107df3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611188565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061082730610b81565b5f80610831610e77565b426040518863ffffffff1660e01b815260040161085396959493929190612d8e565b60606040518083038185885af115801561086f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108949190612e01565b5050506001600d5f6101000a81548160ff021916908315150217905550565b60025481565b60606040518060400160405280600e81526020017ff09f91bb47484f53542050455045000000000000000000000000000000000000815250905090565b5f610909610902611181565b8484611188565b6001905092915050565b60045481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f61095984848461134b565b610a1684610965611181565b610a118560405180606001604052806028815260200161378f6028913960095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109c8611181565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b0f9092919063ffffffff16565b611188565b600190509392505050565b610a29611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac90612cd1565b60405180910390fd5b670de0b6b3a7640000600281905550670de0b6b3a7640000600381905550565b5f6009905090565b60035481565b610aeb611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90612cd1565b60405180910390fd5b8060048190555050565b5f610bc8600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b71565b9050919050565b610bd7611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5a90612cd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d25611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890612cd1565b60405180910390fd5b5f5b83839050811015610e4c5781600c5f868685818110610dd557610dd4612e51565b5b9050602002016020810190610dea9190612ad5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610e4490612eab565b915050610db3565b50505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f474f504500000000000000000000000000000000000000000000000000000000815250905090565b5f610eee610ee7611181565b848461134b565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fcc611181565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90612cd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd90612f62565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90612ff0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b9061307e565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161133e91906127f2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b09061310c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e9061319a565b60405180910390fd5b5f4790505f821161146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146490613228565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561150b5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561180857600d5f9054906101000a900460ff166115995761152b610e77565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f906132b6565b60405180910390fd5b5b6002548211156115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d59061331e565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461168a576003548261163f85610b81565b611649919061333c565b10611689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611680906133df565b60405180910390fd5b5b5f61169430610b81565b90505f600454821015905060025482106116ae5760025491505b8080156116c85750600d60019054906101000a900460ff16155b80156116e05750600d60029054906101000a900460ff165b8015611739575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561178c5750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117df5750600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611805576117ed82611bdd565b5f4790505f8111156118035761180281611e48565b5b505b50505b5f60019050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806118a85750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611959575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611958575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15611966575f9050611afc565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611a0f575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a27576010546014819055506011546015819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ad0575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611afb57601254601481905550611ae782611f37565b601354611af491906133fd565b6015819055505b5b611b0885858584611f52565b5050505050565b5f838311158290611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d9190612895565b60405180910390fd5b505f8385611b6491906133fd565b9050809150509392505050565b5f600154821115611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae906134a0565b60405180910390fd5b5f611bc0611f7f565b9050611bd58184611fa890919063ffffffff16565b915050919050565b6001600d60016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c1457611c136134be565b5b604051908082528060200260200182016040528015611c425781602001602082028036833780820191505090505b50905030815f81518110611c5957611c58612e51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d219190612d03565b81600181518110611d3557611d34612e51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d9b3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611188565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611dfd9594939291906135a2565b5f604051808303815f87803b158015611e14575f80fd5b505af1158015611e26573d5f803e3d5ffd5b50505050505f600d60016101000a81548160ff02191690831515021790555050565b5f600e5482611e579190613627565b90505f8183611e6691906133fd565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611ecc573d5f803e3d5ffd5b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f31573d5f803e3d5ffd5b50505050565b5f66038d7ea4c6800082611f4b9190613627565b9050919050565b80611f6057611f5f611ff1565b5b611f6b84848461202a565b80611f7957611f78612204565b5b50505050565b5f805f611f8a612218565b91509150611fa18183611fa890919063ffffffff16565b9250505090565b5f611fe983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612274565b905092915050565b5f60145414801561200357505f601554145b612028576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f80612039876122d5565b95509550955095509550955061204f8989612335565b1561205f5761205e89896123e6565b5b6120af86600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b690919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061214085600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124ff90919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061218a8161255c565b6121948483612613565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121f191906127f2565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f60015490505f670de0b6b3a76400009050612249670de0b6b3a7640000600154611fa890919063ffffffff16565b82101561226757600154670de0b6b3a7640000935093505050612270565b81819350935050505b9091565b5f80831182906122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b19190612895565b60405180910390fd5b505f83856122c89190613627565b9050809150509392505050565b5f805f805f805f805f6122ed8a60145460155461264d565b9250925092505f6122fc611f7f565b90505f805f61230d8e8787876126df565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123de575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156124b2576124b181837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611188565b5b5050565b5f6124f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b0f565b905092915050565b5f80828461250d919061333c565b905083811015612552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612549906136a1565b60405180910390fd5b8091505092915050565b5f612565611f7f565b90505f61257b828461276390919063ffffffff16565b90506125cd81600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124ff90919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612628826001546124b690919063ffffffff16565b60018190555061264381600f546124ff90919063ffffffff16565b600f819055505050565b5f805f806126776064612669888a61276390919063ffffffff16565b611fa890919063ffffffff16565b90505f6126a06064612692888b61276390919063ffffffff16565b611fa890919063ffffffff16565b90505f6126c8826126ba858c6124b690919063ffffffff16565b6124b690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806126f6858961276390919063ffffffff16565b90505f61270c868961276390919063ffffffff16565b90505f612722878961276390919063ffffffff16565b90505f61274a8261273c85876124b690919063ffffffff16565b6124b690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612773575f90506127d4565b5f828461278091906136bf565b905082848261278f9190613627565b146127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c690613770565b60405180910390fd5b809150505b92915050565b5f819050919050565b6127ec816127da565b82525050565b5f6020820190506128055f8301846127e3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612842578082015181840152602081019050612827565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128678261280b565b6128718185612815565b9350612881818560208601612825565b61288a8161284d565b840191505092915050565b5f6020820190508181035f8301526128ad818461285d565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128e6826128bd565b9050919050565b6128f6816128dc565b8114612900575f80fd5b50565b5f81359050612911816128ed565b92915050565b612920816127da565b811461292a575f80fd5b50565b5f8135905061293b81612917565b92915050565b5f8060408385031215612957576129566128b5565b5b5f61296485828601612903565b92505060206129758582860161292d565b9150509250929050565b5f8115159050919050565b6129938161297f565b82525050565b5f6020820190506129ac5f83018461298a565b92915050565b5f819050919050565b5f6129d56129d06129cb846128bd565b6129b2565b6128bd565b9050919050565b5f6129e6826129bb565b9050919050565b5f6129f7826129dc565b9050919050565b612a07816129ed565b82525050565b5f602082019050612a205f8301846129fe565b92915050565b5f805f60608486031215612a3d57612a3c6128b5565b5b5f612a4a86828701612903565b9350506020612a5b86828701612903565b9250506040612a6c8682870161292d565b9150509250925092565b5f60ff82169050919050565b612a8b81612a76565b82525050565b5f602082019050612aa45f830184612a82565b92915050565b5f60208284031215612abf57612abe6128b5565b5b5f612acc8482850161292d565b91505092915050565b5f60208284031215612aea57612ae96128b5565b5b5f612af784828501612903565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b2157612b20612b00565b5b8235905067ffffffffffffffff811115612b3e57612b3d612b04565b5b602083019150836020820283011115612b5a57612b59612b08565b5b9250929050565b612b6a8161297f565b8114612b74575f80fd5b50565b5f81359050612b8581612b61565b92915050565b5f805f60408486031215612ba257612ba16128b5565b5b5f84013567ffffffffffffffff811115612bbf57612bbe6128b9565b5b612bcb86828701612b0c565b93509350506020612bde86828701612b77565b9150509250925092565b5f612bf2826128bd565b9050919050565b612c0281612be8565b82525050565b5f602082019050612c1b5f830184612bf9565b92915050565b612c2a816128dc565b82525050565b5f602082019050612c435f830184612c21565b92915050565b5f8060408385031215612c5f57612c5e6128b5565b5b5f612c6c85828601612903565b9250506020612c7d85828601612903565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612cbb602083612815565b9150612cc682612c87565b602082019050919050565b5f6020820190508181035f830152612ce881612caf565b9050919050565b5f81519050612cfd816128ed565b92915050565b5f60208284031215612d1857612d176128b5565b5b5f612d2584828501612cef565b91505092915050565b5f604082019050612d415f830185612c21565b612d4e6020830184612c21565b9392505050565b5f819050919050565b5f612d78612d73612d6e84612d55565b6129b2565b6127da565b9050919050565b612d8881612d5e565b82525050565b5f60c082019050612da15f830189612c21565b612dae60208301886127e3565b612dbb6040830187612d7f565b612dc86060830186612d7f565b612dd56080830185612c21565b612de260a08301846127e3565b979650505050505050565b5f81519050612dfb81612917565b92915050565b5f805f60608486031215612e1857612e176128b5565b5b5f612e2586828701612ded565b9350506020612e3686828701612ded565b9250506040612e4786828701612ded565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612eb5826127da565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ee757612ee6612e7e565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f4c602683612815565b9150612f5782612ef2565b604082019050919050565b5f6020820190508181035f830152612f7981612f40565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fda602483612815565b9150612fe582612f80565b604082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613068602283612815565b91506130738261300e565b604082019050919050565b5f6020820190508181035f8301526130958161305c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130f6602583612815565b91506131018261309c565b604082019050919050565b5f6020820190508181035f830152613123816130ea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613184602383612815565b915061318f8261312a565b604082019050919050565b5f6020820190508181035f8301526131b181613178565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613212602983612815565b915061321d826131b8565b604082019050919050565b5f6020820190508181035f83015261323f81613206565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6132a0603f83612815565b91506132ab82613246565b604082019050919050565b5f6020820190508181035f8301526132cd81613294565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613308601c83612815565b9150613313826132d4565b602082019050919050565b5f6020820190508181035f830152613335816132fc565b9050919050565b5f613346826127da565b9150613351836127da565b925082820190508082111561336957613368612e7e565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133c9602383612815565b91506133d48261336f565b604082019050919050565b5f6020820190508181035f8301526133f6816133bd565b9050919050565b5f613407826127da565b9150613412836127da565b925082820390508181111561342a57613429612e7e565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61348a602a83612815565b915061349582613430565b604082019050919050565b5f6020820190508181035f8301526134b78161347e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61351d816128dc565b82525050565b5f61352e8383613514565b60208301905092915050565b5f602082019050919050565b5f613550826134eb565b61355a81856134f5565b935061356583613505565b805f5b8381101561359557815161357c8882613523565b97506135878361353a565b925050600181019050613568565b5085935050505092915050565b5f60a0820190506135b55f8301886127e3565b6135c26020830187612d7f565b81810360408301526135d48186613546565b90506135e36060830185612c21565b6135f060808301846127e3565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613631826127da565b915061363c836127da565b92508261364c5761364b6135fa565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61368b601b83612815565b915061369682613657565b602082019050919050565b5f6020820190508181035f8301526136b88161367f565b9050919050565b5f6136c9826127da565b91506136d4836127da565b92508282026136e2816127da565b915082820484148315176136f9576136f8612e7e565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61375a602183612815565b915061376582613700565b604082019050919050565b5f6020820190508181035f8301526137878161374e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201377900aba05f9f5edc022616b470e05fde0f02544d90803cb3d638df395394164736f6c63430008150033

Deployed Bytecode Sourcemap

4259:13505:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6658:516;;;;;;;;;;;;;:::i;:::-;;4674:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7358:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8505:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4815:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4871:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7781:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8706:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7213:137;;;;;;;;;;;;;:::i;:::-;;7544:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4744:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13028:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7635:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4104:148;;;;;;;;;;;;;:::i;:::-;;12748:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5053:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3638:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7449:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8298:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4919:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4954:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7884:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3852:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6658:516;3775:12;:10;:12::i;:::-;3765:22;;:6;;;;;;;;;;:22;;;3757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6741:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6723:55;;;6787:4;6794:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6723:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6709:11;;:108;;;;;;;;;;;;;;;;;;6828:68;6845:4;6860:15;;;;;;;;;;;6878:17;6828:8;:68::i;:::-;6909:15;;;;;;;;;;;:31;;;6948:21;6993:4;7013:24;7031:4;7013:9;:24::i;:::-;7052:1;7069::::0;7086:7:::1;:5;:7::i;:::-;7108:15;6909:225;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7162:4;7145:14;;:21;;;;;;;;;;;;;;;;;;6658:516::o:0;4674:57::-;;;;:::o;7358:83::-;7395:13;7428:5;;;;;;;;;;;;;;;;;7421:12;;7358:83;:::o;8505:193::-;8607:4;8629:39;8638:12;:10;:12::i;:::-;8652:7;8661:6;8629:8;:39::i;:::-;8686:4;8679:11;;8505:193;;;;:::o;4815:47::-;;;;:::o;4871:41::-;;;;;;;;;;;;;:::o;7781:95::-;7834:7;4533:11;7854:14;;7781:95;:::o;8706:446::-;8838:4;8855:36;8865:6;8873:9;8884:6;8855:9;:36::i;:::-;8902:220;8925:6;8946:12;:10;:12::i;:::-;8973:138;9029:6;8973:138;;;;;;;;;;;;;;;;;:11;:19;8985:6;8973:19;;;;;;;;;;;;;;;:33;8993:12;:10;:12::i;:::-;8973:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8902:8;:220::i;:::-;9140:4;9133:11;;8706:446;;;;;:::o;7213:137::-;3775:12;:10;:12::i;:::-;3765:22;;:6;;;;;;;;;;:22;;;3757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4533:11:::1;7270:20;:30;;;;4533:11;7311:21;:31;;;;7213:137::o:0;7544:83::-;7585:5;4490:1;7603:16;;7544:83;:::o;4744:58::-;;;;:::o;13028:130::-;3775:12;:10;:12::i;:::-;3765:22;;:6;;;;;;;;;;:22;;;3757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13132:18:::1;13115:14;:35;;;;13028:130:::0;:::o;7635:138::-;7701:7;7728:37;7748:7;:16;7756:7;7748:16;;;;;;;;;;;;;;;;7728:19;:37::i;:::-;7721:44;;7635:138;;;:::o;4104:148::-;3775:12;:10;:12::i;:::-;3765:22;;:6;;;;;;;;;;:22;;;3757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4211:1:::1;4174:40;;4195:6;::::0;::::1;;;;;;;;4174:40;;;;;;;;;;;;4242:1;4225:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4104:148::o:0;12748:228::-;3775:12;:10;:12::i;:::-;3765:22;;:6;;;;;;;;;;:22;;;3757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12861:9:::1;12857:112;12880:8;;:15;;12876:1;:19;12857:112;;;12949:8;12917:16;:29;12934:8;;12943:1;12934:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12917:29;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12897:3;;;;;:::i;:::-;;;;12857:112;;;;12748:228:::0;;;:::o;5053:96::-;;;;;;;;;;;;;:::o;3638:79::-;3676:7;3703:6;;;;;;;;;;;3696:13;;3638:79;:::o;7449:87::-;7488:13;7521:7;;;;;;;;;;;;;;;;;7514:14;;7449:87;:::o;8298:199::-;8403:4;8425:42;8435:12;:10;:12::i;:::-;8449:9;8460:6;8425:9;:42::i;:::-;8485:4;8478:11;;8298:199;;;;:::o;4919:26::-;;;;;;;;;;;;;:::o;4954:92::-;;;;;;;;;;;;;:::o;7884:184::-;8001:7;8033:11;:18;8045:5;8033:18;;;;;;;;;;;;;;;:27;8052:7;8033:27;;;;;;;;;;;;;;;;8026:34;;7884:184;;;;:::o;3852:244::-;3775:12;:10;:12::i;:::-;3765:22;;:6;;;;;;;;;;:22;;;3757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3961:1:::1;3941:22;;:8;:22;;::::0;3933:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4051:8;4022:38;;4043:6;::::0;::::1;;;;;;;;4022:38;;;;;;;;;;;;4080:8;4071:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3852:244:::0;:::o;3185:98::-;3238:7;3265:10;3258:17;;3185:98;:::o;9160:369::-;9304:1;9287:19;;:5;:19;;;9279:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9385:1;9366:21;;:7;:21;;;9358:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9467:6;9437:11;:18;9449:5;9437:18;;;;;;;;;;;;;;;:27;9456:7;9437:27;;;;;;;;;;;;;;;:36;;;;9505:7;9489:32;;9498:5;9489:32;;;9514:6;9489:32;;;;;;:::i;:::-;;;;;;;;9160:369;;;:::o;14396:2438::-;14534:1;14518:18;;:4;:18;;;14510:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14611:1;14597:16;;:2;:16;;;14589:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14655:18;14676:21;14655:42;;14725:1;14716:6;:10;14708:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14806:16;:20;14823:2;14806:20;;;;;;;;;;;;;;;;;;;;;;;;;14805:21;:48;;;;;14831:16;:22;14848:4;14831:22;;;;;;;;;;;;;;;;;;;;;;;;;14830:23;14805:48;14786:1355;;;14918:14;;;;;;;;;;;14913:209;;14991:7;:5;:7::i;:::-;14983:15;;:4;:15;;;14953:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;14913:209;15174:20;;15164:6;:30;;15138:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;15296:11;;;;;;;;;;;15290:17;;:2;:17;;;15287:169;;15361:21;;15352:6;15336:13;15346:2;15336:9;:13::i;:::-;:22;;;;:::i;:::-;:46;15328:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;15287:169;15472:27;15502:24;15520:4;15502:9;:24::i;:::-;15472:54;;15553:12;15591:14;;15568:19;:37;;15553:52;;15646:20;;15623:19;:43;15620:90;;15690:20;;15668:42;;15620:90;15729:7;:37;;;;;15759:7;;;;;;;;;;;15758:8;15729:37;:71;;;;;15788:12;;;;;;;;;;;15729:71;:112;;;;;15830:11;;;;;;;;;;;15822:19;;:4;:19;;;;15729:112;:155;;;;;15864:16;:20;15881:2;15864:20;;;;;;;;;;;;;;;;;;;;;;;;;15863:21;15729:155;:200;;;;;15907:16;:22;15924:4;15907:22;;;;;;;;;;;;;;;;;;;;;;;;;15906:23;15729:200;15725:405;;;15964:29;15973:19;15964:8;:29::i;:::-;16012:18;16033:21;16012:42;;16090:1;16077:10;:14;16073:42;;;16094:19;16102:10;16094:7;:19::i;:::-;16073:42;15945:185;15725:405;14865:1276;;14786:1355;16153:12;16168:4;16153:19;;16188:16;:22;16205:4;16188:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;16214:16;:20;16231:2;16214:20;;;;;;;;;;;;;;;;;;;;;;;;;16188:46;16187:94;;;;16248:11;;;;;;;;;;;16240:19;;:4;:19;;;;:40;;;;;16269:11;;;;;;;;;;;16263:17;;:2;:17;;;;16240:40;16187:94;16183:583;;;16308:5;16298:15;;16183:583;;;16366:11;;;;;;;;;;;16358:19;;:4;:19;;;:53;;;;;16395:15;;;;;;;;;;;16381:30;;:2;:30;;;;16358:53;16355:177;;;16451:16;;16432;:35;;;;16503:13;;16486:14;:30;;;;16355:177;16556:11;;;;;;;;;;;16550:17;;:2;:17;;;:53;;;;;16587:15;;;;;;;;;;;16571:32;;:4;:32;;;;16550:53;16546:209;;;16643:17;;16624:16;:36;;;;16713:26;16728:10;16713:14;:26::i;:::-;16696:14;;:43;;;;:::i;:::-;16679:14;:60;;;;16546:209;16183:583;16776:50;16800:4;16806:2;16810:6;16818:7;16776:23;:50::i;:::-;14499:2335;;14396:2438;;;:::o;522:224::-;642:7;675:1;670;:6;;678:12;662:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;702:9;718:1;714;:5;;;;:::i;:::-;702:17;;737:1;730:8;;;522:224;;;;;:::o;11970:323::-;12065:7;12123;;12112;:18;;12090:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;12211:19;12233:10;:8;:10::i;:::-;12211:32;;12261:24;12273:11;12261:7;:11;;:24;;;;:::i;:::-;12254:31;;;11970:323;;;:::o;17238:474::-;6031:4;6021:7;;:14;;;;;;;;;;;;;;;;;;17307:21:::1;17345:1;17331:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17307:40;;17376:4;17358;17363:1;17358:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17402:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17392:4;17397:1;17392:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;17435:62;17452:4;17467:15;;;;;;;;;;;17485:11;17435:8;:62::i;:::-;17508:15;;;;;;;;;;;:66;;;17589:11;17615:1;17631:4;17658;17678:15;17508:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17296:416;6068:5:::0;6058:7;;:15;;;;;;;;;;;;;;;;;;17238:474;:::o;12301:266::-;12353:20;12385:11;;12376:6;:20;;;;:::i;:::-;12353:43;;12407:23;12442:12;12433:6;:21;;;;:::i;:::-;12407:47;;12465:15;;;;;;;;;;;:24;;:38;12490:12;12465:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12514:19;;;;;;;;;;;:28;;:45;12543:15;12514:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12342:225;;12301:266;:::o;11218:103::-;11276:7;11309:4;11303:3;:10;;;;:::i;:::-;11296:17;;11218:103;;;:::o;13168:349::-;13332:6;13327:51;;13355:11;:9;:11::i;:::-;13327:51;13388:47;13409:6;13417:9;13428:6;13388:20;:47::i;:::-;13451:6;13446:64;;13486:12;:10;:12::i;:::-;13446:64;13168:349;;;;:::o;10083:164::-;10125:7;10146:15;10163;10182:19;:17;:19::i;:::-;10145:56;;;;10219:20;10231:7;10219;:11;;:20;;;;:::i;:::-;10212:27;;;;10083:164;:::o;1375:132::-;1433:7;1460:39;1464:1;1467;1460:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1453:46;;1375:132;;;;:::o;16846:247::-;16910:1;16890:16;;:21;:44;;;;;16933:1;16915:14;;:19;16890:44;16936:7;16886:57;16974:16;;16953:18;:37;;;;17020:14;;17001:16;:33;;;;17055:1;17036:16;:20;;;;17084:1;17067:14;:18;;;;16846:247;:::o;13704:686::-;13854:15;13884:23;13922:12;13949:23;13987:12;14014:13;14041:19;14052:7;14041:10;:19::i;:::-;13839:221;;;;;;;;;;;;14066:33;14081:6;14089:9;14066:14;:33::i;:::-;14062:72;;;14101:33;14116:6;14124:9;14101:14;:33::i;:::-;14062:72;14163:28;14183:7;14163;:15;14171:6;14163:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14145:7;:15;14153:6;14145:15;;;;;;;;;;;;;;;:46;;;;14223:39;14246:15;14223:7;:18;14231:9;14223:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14202:7;:18;14210:9;14202:18;;;;;;;;;;;;;;;:60;;;;14273:18;14285:5;14273:11;:18::i;:::-;14293:29;14311:4;14317;14293:17;:29::i;:::-;14355:9;14338:44;;14347:6;14338:44;;;14366:15;14338:44;;;;;;:::i;:::-;;;;;;;;13828:562;;;;;;13704:686;;;:::o;17101:130::-;17161:18;;17142:16;:37;;;;17207:16;;17190:14;:33;;;;17101:130::o;10255:257::-;10306:7;10315;10335:15;10353:7;;10335:25;;10371:15;4533:11;10371:25;;10421:20;4533:11;10421:7;;:11;;:20;;;;:::i;:::-;10411:7;:30;10407:61;;;10451:7;;4533:11;10443:25;;;;;;;;10407:61;10487:7;10496;10479:25;;;;;;10255:257;;;:::o;1146:223::-;1266:7;1298:1;1294;:5;1301:12;1286:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1325:9;1341:1;1337;:5;;;;:::i;:::-;1325:17;;1360:1;1353:8;;;1146:223;;;;;:::o;11329:629::-;11429:7;11451;11473;11495;11517;11539;11575:23;11600:12;11614:13;11644:54;11656:7;11665:16;;11683:14;;11644:11;:54::i;:::-;11574:124;;;;;;11709:19;11731:10;:8;:10::i;:::-;11709:32;;11753:15;11770:23;11795:12;11824:46;11836:7;11845:4;11851:5;11858:11;11824;:46::i;:::-;11752:118;;;;;;11889:7;11898:15;11915:4;11921:15;11938:4;11944:5;11881:69;;;;;;;;;;;;;;;;;;;11329:629;;;;;;;:::o;13525:171::-;13607:4;13644:11;;;;;;;;;;;13631:24;;:9;:24;;;:57;;;;;13669:19;;;;;;;;;;;13659:29;;:6;:29;;;13631:57;13624:64;;13525:171;;;;:::o;8076:214::-;8191:17;8158:11;:22;8170:9;8158:22;;;;;;;;;;;;;;;:30;8181:6;8158:30;;;;;;;;;;;;;;;;:50;8154:129;;;8225:46;8234:9;8245:6;8253:17;8225:8;:46::i;:::-;8154:129;8076:214;;:::o;752:136::-;810:7;837:43;841:1;844;837:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;830:50;;752:136;;;;:::o;337:179::-;395:7;415:9;431:1;427;:5;;;;:::i;:::-;415:17;;456:1;451;:6;;443:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;507:1;500:8;;;337:179;;;;:::o;10997:213::-;11052:19;11074:10;:8;:10::i;:::-;11052:32;;11095:13;11111:22;11121:11;11111:5;:9;;:22;;;;:::i;:::-;11095:38;;11169:33;11196:5;11169:7;:22;11185:4;11169:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11144:7;:22;11160:4;11144:22;;;;;;;;;;;;;;;:58;;;;11041:169;;10997:213;:::o;12575:163::-;12659:17;12671:4;12659:7;;:11;;:17;;;;:::i;:::-;12649:7;:27;;;;12705:25;12725:4;12705:15;;:19;;:25;;;;:::i;:::-;12687:15;:43;;;;12575:163;;:::o;10520:467::-;10688:7;10710;10732;10767:12;10782:29;10807:3;10782:20;10794:7;10782;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;10767:44;;10822:13;10838:28;10862:3;10838:19;10850:6;10838:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;10822:44;;10877:23;10903:28;10925:5;10903:17;10915:4;10903:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;10877:54;;10950:15;10967:4;10973:5;10942:37;;;;;;;;;10520:467;;;;;;;:::o;9541:534::-;9735:7;9757;9779;9814:15;9832:24;9844:11;9832:7;:11;;:24;;;;:::i;:::-;9814:42;;9867:12;9882:21;9891:11;9882:4;:8;;:21;;;;:::i;:::-;9867:36;;9914:13;9930:22;9940:11;9930:5;:9;;:22;;;;:::i;:::-;9914:38;;9963:23;9989:28;10011:5;9989:17;10001:4;9989:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9963:54;;10036:7;10045:15;10062:4;10028:39;;;;;;;;;;9541:534;;;;;;;;:::o;894:246::-;952:7;981:1;976;:6;972:47;;1006:1;999:8;;;;972:47;1029:9;1045:1;1041;:5;;;;:::i;:::-;1029:17;;1074:1;1069;1065;:5;;;;:::i;:::-;:10;1057:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1131:1;1124:8;;;894:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:329::-;5885:6;5934:2;5922:9;5913:7;5909:23;5905:32;5902:119;;;5940:79;;:::i;:::-;5902:119;6060:1;6085:53;6130:7;6121:6;6110:9;6106:22;6085:53;:::i;:::-;6075:63;;6031:117;5826:329;;;;:::o;6161:::-;6220:6;6269:2;6257:9;6248:7;6244:23;6240:32;6237:119;;;6275:79;;:::i;:::-;6237:119;6395:1;6420:53;6465:7;6456:6;6445:9;6441:22;6420:53;:::i;:::-;6410:63;;6366:117;6161:329;;;;:::o;6496:117::-;6605:1;6602;6595:12;6619:117;6728:1;6725;6718:12;6742:117;6851:1;6848;6841:12;6882:568;6955:8;6965:6;7015:3;7008:4;7000:6;6996:17;6992:27;6982:122;;7023:79;;:::i;:::-;6982:122;7136:6;7123:20;7113:30;;7166:18;7158:6;7155:30;7152:117;;;7188:79;;:::i;:::-;7152:117;7302:4;7294:6;7290:17;7278:29;;7356:3;7348:4;7340:6;7336:17;7326:8;7322:32;7319:41;7316:128;;;7363:79;;:::i;:::-;7316:128;6882:568;;;;;:::o;7456:116::-;7526:21;7541:5;7526:21;:::i;:::-;7519:5;7516:32;7506:60;;7562:1;7559;7552:12;7506:60;7456:116;:::o;7578:133::-;7621:5;7659:6;7646:20;7637:29;;7675:30;7699:5;7675:30;:::i;:::-;7578:133;;;;:::o;7717:698::-;7809:6;7817;7825;7874:2;7862:9;7853:7;7849:23;7845:32;7842:119;;;7880:79;;:::i;:::-;7842:119;8028:1;8017:9;8013:17;8000:31;8058:18;8050:6;8047:30;8044:117;;;8080:79;;:::i;:::-;8044:117;8193:80;8265:7;8256:6;8245:9;8241:22;8193:80;:::i;:::-;8175:98;;;;7971:312;8322:2;8348:50;8390:7;8381:6;8370:9;8366:22;8348:50;:::i;:::-;8338:60;;8293:115;7717:698;;;;;:::o;8421:104::-;8466:7;8495:24;8513:5;8495:24;:::i;:::-;8484:35;;8421:104;;;:::o;8531:142::-;8634:32;8660:5;8634:32;:::i;:::-;8629:3;8622:45;8531:142;;:::o;8679:254::-;8788:4;8826:2;8815:9;8811:18;8803:26;;8839:87;8923:1;8912:9;8908:17;8899:6;8839:87;:::i;:::-;8679:254;;;;:::o;8939:118::-;9026:24;9044:5;9026:24;:::i;:::-;9021:3;9014:37;8939:118;;:::o;9063:222::-;9156:4;9194:2;9183:9;9179:18;9171:26;;9207:71;9275:1;9264:9;9260:17;9251:6;9207:71;:::i;:::-;9063:222;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:143::-;10813:5;10844:6;10838:13;10829:22;;10860:33;10887:5;10860:33;:::i;:::-;10756:143;;;;:::o;10905:351::-;10975:6;11024:2;11012:9;11003:7;10999:23;10995:32;10992:119;;;11030:79;;:::i;:::-;10992:119;11150:1;11175:64;11231:7;11222:6;11211:9;11207:22;11175:64;:::i;:::-;11165:74;;11121:128;10905:351;;;;:::o;11262:332::-;11383:4;11421:2;11410:9;11406:18;11398:26;;11434:71;11502:1;11491:9;11487:17;11478:6;11434:71;:::i;:::-;11515:72;11583:2;11572:9;11568:18;11559:6;11515:72;:::i;:::-;11262:332;;;;;:::o;11600:85::-;11645:7;11674:5;11663:16;;11600:85;;;:::o;11691:158::-;11749:9;11782:61;11800:42;11809:32;11835:5;11809:32;:::i;:::-;11800:42;:::i;:::-;11782:61;:::i;:::-;11769:74;;11691:158;;;:::o;11855:147::-;11950:45;11989:5;11950:45;:::i;:::-;11945:3;11938:58;11855:147;;:::o;12008:807::-;12257:4;12295:3;12284:9;12280:19;12272:27;;12309:71;12377:1;12366:9;12362:17;12353:6;12309:71;:::i;:::-;12390:72;12458:2;12447:9;12443:18;12434:6;12390:72;:::i;:::-;12472:80;12548:2;12537:9;12533:18;12524:6;12472:80;:::i;:::-;12562;12638:2;12627:9;12623:18;12614:6;12562:80;:::i;:::-;12652:73;12720:3;12709:9;12705:19;12696:6;12652:73;:::i;:::-;12735;12803:3;12792:9;12788:19;12779:6;12735:73;:::i;:::-;12008:807;;;;;;;;;:::o;12821:143::-;12878:5;12909:6;12903:13;12894:22;;12925:33;12952:5;12925:33;:::i;:::-;12821:143;;;;:::o;12970:663::-;13058:6;13066;13074;13123:2;13111:9;13102:7;13098:23;13094:32;13091:119;;;13129:79;;:::i;:::-;13091:119;13249:1;13274:64;13330:7;13321:6;13310:9;13306:22;13274:64;:::i;:::-;13264:74;;13220:128;13387:2;13413:64;13469:7;13460:6;13449:9;13445:22;13413:64;:::i;:::-;13403:74;;13358:129;13526:2;13552:64;13608:7;13599:6;13588:9;13584:22;13552:64;:::i;:::-;13542:74;;13497:129;12970:663;;;;;:::o;13639:180::-;13687:77;13684:1;13677:88;13784:4;13781:1;13774:15;13808:4;13805:1;13798:15;13825:180;13873:77;13870:1;13863:88;13970:4;13967:1;13960:15;13994:4;13991:1;13984:15;14011:233;14050:3;14073:24;14091:5;14073:24;:::i;:::-;14064:33;;14119:66;14112:5;14109:77;14106:103;;14189:18;;:::i;:::-;14106:103;14236:1;14229:5;14225:13;14218:20;;14011:233;;;:::o;14250:225::-;14390:34;14386:1;14378:6;14374:14;14367:58;14459:8;14454:2;14446:6;14442:15;14435:33;14250:225;:::o;14481:366::-;14623:3;14644:67;14708:2;14703:3;14644:67;:::i;:::-;14637:74;;14720:93;14809:3;14720:93;:::i;:::-;14838:2;14833:3;14829:12;14822:19;;14481:366;;;:::o;14853:419::-;15019:4;15057:2;15046:9;15042:18;15034:26;;15106:9;15100:4;15096:20;15092:1;15081:9;15077:17;15070:47;15134:131;15260:4;15134:131;:::i;:::-;15126:139;;14853:419;;;:::o;15278:223::-;15418:34;15414:1;15406:6;15402:14;15395:58;15487:6;15482:2;15474:6;15470:15;15463:31;15278:223;:::o;15507:366::-;15649:3;15670:67;15734:2;15729:3;15670:67;:::i;:::-;15663:74;;15746:93;15835:3;15746:93;:::i;:::-;15864:2;15859:3;15855:12;15848:19;;15507:366;;;:::o;15879:419::-;16045:4;16083:2;16072:9;16068:18;16060:26;;16132:9;16126:4;16122:20;16118:1;16107:9;16103:17;16096:47;16160:131;16286:4;16160:131;:::i;:::-;16152:139;;15879:419;;;:::o;16304:221::-;16444:34;16440:1;16432:6;16428:14;16421:58;16513:4;16508:2;16500:6;16496:15;16489:29;16304:221;:::o;16531:366::-;16673:3;16694:67;16758:2;16753:3;16694:67;:::i;:::-;16687:74;;16770:93;16859:3;16770:93;:::i;:::-;16888:2;16883:3;16879:12;16872:19;;16531:366;;;:::o;16903:419::-;17069:4;17107:2;17096:9;17092:18;17084:26;;17156:9;17150:4;17146:20;17142:1;17131:9;17127:17;17120:47;17184:131;17310:4;17184:131;:::i;:::-;17176:139;;16903:419;;;:::o;17328:224::-;17468:34;17464:1;17456:6;17452:14;17445:58;17537:7;17532:2;17524:6;17520:15;17513:32;17328:224;:::o;17558:366::-;17700:3;17721:67;17785:2;17780:3;17721:67;:::i;:::-;17714:74;;17797:93;17886:3;17797:93;:::i;:::-;17915:2;17910:3;17906:12;17899:19;;17558:366;;;:::o;17930:419::-;18096:4;18134:2;18123:9;18119:18;18111:26;;18183:9;18177:4;18173:20;18169:1;18158:9;18154:17;18147:47;18211:131;18337:4;18211:131;:::i;:::-;18203:139;;17930:419;;;:::o;18355:222::-;18495:34;18491:1;18483:6;18479:14;18472:58;18564:5;18559:2;18551:6;18547:15;18540:30;18355:222;:::o;18583:366::-;18725:3;18746:67;18810:2;18805:3;18746:67;:::i;:::-;18739:74;;18822:93;18911:3;18822:93;:::i;:::-;18940:2;18935:3;18931:12;18924:19;;18583:366;;;:::o;18955:419::-;19121:4;19159:2;19148:9;19144:18;19136:26;;19208:9;19202:4;19198:20;19194:1;19183:9;19179:17;19172:47;19236:131;19362:4;19236:131;:::i;:::-;19228:139;;18955:419;;;:::o;19380:228::-;19520:34;19516:1;19508:6;19504:14;19497:58;19589:11;19584:2;19576:6;19572:15;19565:36;19380:228;:::o;19614:366::-;19756:3;19777:67;19841:2;19836:3;19777:67;:::i;:::-;19770:74;;19853:93;19942:3;19853:93;:::i;:::-;19971:2;19966:3;19962:12;19955:19;;19614:366;;;:::o;19986:419::-;20152:4;20190:2;20179:9;20175:18;20167:26;;20239:9;20233:4;20229:20;20225:1;20214:9;20210:17;20203:47;20267:131;20393:4;20267:131;:::i;:::-;20259:139;;19986:419;;;:::o;20411:250::-;20551:34;20547:1;20539:6;20535:14;20528:58;20620:33;20615:2;20607:6;20603:15;20596:58;20411:250;:::o;20667:366::-;20809:3;20830:67;20894:2;20889:3;20830:67;:::i;:::-;20823:74;;20906:93;20995:3;20906:93;:::i;:::-;21024:2;21019:3;21015:12;21008:19;;20667:366;;;:::o;21039:419::-;21205:4;21243:2;21232:9;21228:18;21220:26;;21292:9;21286:4;21282:20;21278:1;21267:9;21263:17;21256:47;21320:131;21446:4;21320:131;:::i;:::-;21312:139;;21039:419;;;:::o;21464:178::-;21604:30;21600:1;21592:6;21588:14;21581:54;21464:178;:::o;21648:366::-;21790:3;21811:67;21875:2;21870:3;21811:67;:::i;:::-;21804:74;;21887:93;21976:3;21887:93;:::i;:::-;22005:2;22000:3;21996:12;21989:19;;21648:366;;;:::o;22020:419::-;22186:4;22224:2;22213:9;22209:18;22201:26;;22273:9;22267:4;22263:20;22259:1;22248:9;22244:17;22237:47;22301:131;22427:4;22301:131;:::i;:::-;22293:139;;22020:419;;;:::o;22445:191::-;22485:3;22504:20;22522:1;22504:20;:::i;:::-;22499:25;;22538:20;22556:1;22538:20;:::i;:::-;22533:25;;22581:1;22578;22574:9;22567:16;;22602:3;22599:1;22596:10;22593:36;;;22609:18;;:::i;:::-;22593:36;22445:191;;;;:::o;22642:222::-;22782:34;22778:1;22770:6;22766:14;22759:58;22851:5;22846:2;22838:6;22834:15;22827:30;22642:222;:::o;22870:366::-;23012:3;23033:67;23097:2;23092:3;23033:67;:::i;:::-;23026:74;;23109:93;23198:3;23109:93;:::i;:::-;23227:2;23222:3;23218:12;23211:19;;22870:366;;;:::o;23242:419::-;23408:4;23446:2;23435:9;23431:18;23423:26;;23495:9;23489:4;23485:20;23481:1;23470:9;23466:17;23459:47;23523:131;23649:4;23523:131;:::i;:::-;23515:139;;23242:419;;;:::o;23667:194::-;23707:4;23727:20;23745:1;23727:20;:::i;:::-;23722:25;;23761:20;23779:1;23761:20;:::i;:::-;23756:25;;23805:1;23802;23798:9;23790:17;;23829:1;23823:4;23820:11;23817:37;;;23834:18;;:::i;:::-;23817:37;23667:194;;;;:::o;23867:229::-;24007:34;24003:1;23995:6;23991:14;23984:58;24076:12;24071:2;24063:6;24059:15;24052:37;23867:229;:::o;24102:366::-;24244:3;24265:67;24329:2;24324:3;24265:67;:::i;:::-;24258:74;;24341:93;24430:3;24341:93;:::i;:::-;24459:2;24454:3;24450:12;24443:19;;24102:366;;;:::o;24474:419::-;24640:4;24678:2;24667:9;24663:18;24655:26;;24727:9;24721:4;24717:20;24713:1;24702:9;24698:17;24691:47;24755:131;24881:4;24755:131;:::i;:::-;24747:139;;24474:419;;;:::o;24899:180::-;24947:77;24944:1;24937:88;25044:4;25041:1;25034:15;25068:4;25065:1;25058:15;25085:114;25152:6;25186:5;25180:12;25170:22;;25085:114;;;:::o;25205:184::-;25304:11;25338:6;25333:3;25326:19;25378:4;25373:3;25369:14;25354:29;;25205:184;;;;:::o;25395:132::-;25462:4;25485:3;25477:11;;25515:4;25510:3;25506:14;25498:22;;25395:132;;;:::o;25533:108::-;25610:24;25628:5;25610:24;:::i;:::-;25605:3;25598:37;25533:108;;:::o;25647:179::-;25716:10;25737:46;25779:3;25771:6;25737:46;:::i;:::-;25815:4;25810:3;25806:14;25792:28;;25647:179;;;;:::o;25832:113::-;25902:4;25934;25929:3;25925:14;25917:22;;25832:113;;;:::o;25981:732::-;26100:3;26129:54;26177:5;26129:54;:::i;:::-;26199:86;26278:6;26273:3;26199:86;:::i;:::-;26192:93;;26309:56;26359:5;26309:56;:::i;:::-;26388:7;26419:1;26404:284;26429:6;26426:1;26423:13;26404:284;;;26505:6;26499:13;26532:63;26591:3;26576:13;26532:63;:::i;:::-;26525:70;;26618:60;26671:6;26618:60;:::i;:::-;26608:70;;26464:224;26451:1;26448;26444:9;26439:14;;26404:284;;;26408:14;26704:3;26697:10;;26105:608;;;25981:732;;;;:::o;26719:831::-;26982:4;27020:3;27009:9;27005:19;26997:27;;27034:71;27102:1;27091:9;27087:17;27078:6;27034:71;:::i;:::-;27115:80;27191:2;27180:9;27176:18;27167:6;27115:80;:::i;:::-;27242:9;27236:4;27232:20;27227:2;27216:9;27212:18;27205:48;27270:108;27373:4;27364:6;27270:108;:::i;:::-;27262:116;;27388:72;27456:2;27445:9;27441:18;27432:6;27388:72;:::i;:::-;27470:73;27538:3;27527:9;27523:19;27514:6;27470:73;:::i;:::-;26719:831;;;;;;;;:::o;27556:180::-;27604:77;27601:1;27594:88;27701:4;27698:1;27691:15;27725:4;27722:1;27715:15;27742:185;27782:1;27799:20;27817:1;27799:20;:::i;:::-;27794:25;;27833:20;27851:1;27833:20;:::i;:::-;27828:25;;27872:1;27862:35;;27877:18;;:::i;:::-;27862:35;27919:1;27916;27912:9;27907:14;;27742:185;;;;:::o;27933:177::-;28073:29;28069:1;28061:6;28057:14;28050:53;27933:177;:::o;28116:366::-;28258:3;28279:67;28343:2;28338:3;28279:67;:::i;:::-;28272:74;;28355:93;28444:3;28355:93;:::i;:::-;28473:2;28468:3;28464:12;28457:19;;28116:366;;;:::o;28488:419::-;28654:4;28692:2;28681:9;28677:18;28669:26;;28741:9;28735:4;28731:20;28727:1;28716:9;28712:17;28705:47;28769:131;28895:4;28769:131;:::i;:::-;28761:139;;28488:419;;;:::o;28913:410::-;28953:7;28976:20;28994:1;28976:20;:::i;:::-;28971:25;;29010:20;29028:1;29010:20;:::i;:::-;29005:25;;29065:1;29062;29058:9;29087:30;29105:11;29087:30;:::i;:::-;29076:41;;29266:1;29257:7;29253:15;29250:1;29247:22;29227:1;29220:9;29200:83;29177:139;;29296:18;;:::i;:::-;29177:139;28961:362;28913:410;;;;:::o;29329:220::-;29469:34;29465:1;29457:6;29453:14;29446:58;29538:3;29533:2;29525:6;29521:15;29514:28;29329:220;:::o;29555:366::-;29697:3;29718:67;29782:2;29777:3;29718:67;:::i;:::-;29711:74;;29794:93;29883:3;29794:93;:::i;:::-;29912:2;29907:3;29903:12;29896:19;;29555:366;;;:::o;29927:419::-;30093:4;30131:2;30120:9;30116:18;30108:26;;30180:9;30174:4;30170:20;30166:1;30155:9;30151:17;30144:47;30208:131;30334:4;30208:131;:::i;:::-;30200:139;;29927:419;;;:::o

Swarm Source

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