ETH Price: $3,422.90 (+3.09%)

Token

Original Comic (COMIC)
 

Overview

Max Total Supply

420,690,000,000 COMIC

Holders

197

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,737,539.484898258 COMIC

Value
$0.00
0x90bdf2c633965478bcb35419634024c1ae379de1
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:
COMIC

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
https://t.me/originalcomicerc20
https://x.com/original_comic
https://originalcomic.xyz
*/

pragma solidity 0.8.23;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

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

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

contract COMIC is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isFree;
    mapping (address => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

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

    uint256 private _reduceBuyTaxAt=23;

    uint256 private _reduceSellTaxAt=23;
    uint256 private _preventSwapBefore=23;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Original Comic";
    string private constant _symbol = unicode"COMIC";
    uint256 public _maxTxAmount =   4206900000 * 10**_decimals;
    uint256 public _maxWalletSize = 4206900000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 4206900000 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public caCount = 2;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caLimiter = true;

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

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        isFree[owner()] = true;
        isFree[address(this)] = true;
        isFree[address(uniswapV2Pair)] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;
        isFree[address(uniswapV2Pair)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    mapping (address => bool) public _isBlacklisted;

    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 removeFromBlackList(address account) external onlyOwner {
    _isBlacklisted[account] = false;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require (!_isBlacklisted[from] && !_isBlacklisted[to], "To/from address is blacklisted");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;

        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(100);

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

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (!marketPair[to] && ! isFree[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(marketPair[to] && from!= address(this) ){
                taxAmount = amount.mul((_buyCount> _reduceSellTaxAt)? _finalSellTax: _initialSellTax).div(100);
            }

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caLimiter && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < caCount, "CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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


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

    function removeFromBlackListwallets(address[] calldata addresses) public onlyOwner(){
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = false;
        }
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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


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

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

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

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

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

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caLimiter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"isFree_AnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFree_AnyStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFree_WalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromBlackListwallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601760075560176008555f6009555f600a556017600b556017600c556017600d555f600e555f600f555f6010556009600a62000041919062000b5a565b63fac0332062000052919062000baa565b6011556009600a62000065919062000b5a565b63fac0332062000076919062000baa565b6012556009600a62000089919062000b5a565b63fac033206200009a919062000baa565b6013556009600a620000ad919062000b5a565b63fac03320620000be919062000baa565b60145560026017555f60185f6101000a81548160ff0219169083151502179055505f601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff02191690831515021790555034801562000120575f80fd5b505f62000132620007cf60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001de620007cf60201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200022d919062000b5a565b6461f313f8806200023f919062000baa565b60015f62000252620007cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002a4620007d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004673060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a62000449919062000b5a565b6461f313f8806200045b919062000baa565b620007fd60201b60201c565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004f8919062000c59565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200057f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005a5919062000c59565b6040518363ffffffff1660e01b8152600401620005c492919062000c9a565b6020604051808303815f875af1158015620005e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000607919062000c59565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000742620007cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620007a0919062000b5a565b6461f313f880620007b2919062000baa565b604051620007c1919062000cd6565b60405180910390a362000e29565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200086e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008659062000d75565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d69062000e09565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009bb919062000cd6565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a525780860481111562000a2a5762000a29620009c8565b5b600185161562000a3a5780820291505b808102905062000a4a85620009f5565b945062000a0a565b94509492505050565b5f8262000a6c576001905062000b3e565b8162000a7b575f905062000b3e565b816001811462000a94576002811462000a9f5762000ad5565b600191505062000b3e565b60ff84111562000ab45762000ab3620009c8565b5b8360020a91508482111562000ace5762000acd620009c8565b5b5062000b3e565b5060208310610133831016604e8410600b841016171562000b0f5782820a90508381111562000b095762000b08620009c8565b5b62000b3e565b62000b1e848484600162000a01565b9250905081840481111562000b385762000b37620009c8565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000b668262000b45565b915062000b738362000b4e565b925062000ba27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a5b565b905092915050565b5f62000bb68262000b45565b915062000bc38362000b45565b925082820262000bd38162000b45565b9150828204841483151762000bed5762000bec620009c8565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c238262000bf8565b9050919050565b62000c358162000c17565b811462000c40575f80fd5b50565b5f8151905062000c538162000c2a565b92915050565b5f6020828403121562000c715762000c7062000bf4565b5b5f62000c808482850162000c43565b91505092915050565b62000c948162000c17565b82525050565b5f60408201905062000caf5f83018562000c89565b62000cbe602083018462000c89565b9392505050565b62000cd08162000b45565b82525050565b5f60208201905062000ceb5f83018462000cc5565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000d5d60248362000cf1565b915062000d6a8262000d01565b604082019050919050565b5f6020820190508181035f83015262000d8e8162000d4f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000df160228362000cf1565b915062000dfe8262000d95565b604082019050919050565b5f6020820190508181035f83015262000e228162000de3565b9050919050565b613a6f8062000e375f395ff3fe6080604052600436106101ba575f3560e01c8063715018a6116100eb578063b5ef226a11610089578063f2fde38b11610063578063f2fde38b146105cb578063f4ef1f42146105f3578063f5b3c3bf1461061d578063ff89757014610659576101c1565b8063b5ef226a1461053d578063bf474bed14610565578063dd62ed3e1461058f576101c1565b80638da5cb5b116100c55780638da5cb5b146104835780638f9a55c0146104ad57806395d89b41146104d7578063a9059cbb14610501576101c1565b8063715018a61461042d5780637d1db4a5146104435780638a8c523c1461046d576101c1565b806323b872dd11610158578063313ce56711610132578063313ce5671461037557806349bd5a5e1461039f5780634a49ac4c146103c957806370a08231146103f1576101c1565b806323b872dd1461030d57806324988e1b1461034957806330ef74251461035f576101c1565b80630e12062d116101945780630e12062d146102535780630faee56f1461027d57806318160ddd146102a75780631cdd3be3146102d1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630b91e5651461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610681565b6040516101e691906129b5565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612a6a565b6106be565b6040516102229190612ac2565b60405180910390f35b348015610236575f80fd5b50610251600480360381019061024c9190612a6a565b6106db565b005b34801561025e575f80fd5b50610267610810565b6040516102749190612aea565b60405180910390f35b348015610288575f80fd5b50610291610816565b60405161029e9190612aea565b60405180910390f35b3480156102b2575f80fd5b506102bb61081c565b6040516102c89190612aea565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612b03565b610840565b6040516103049190612ac2565b60405180910390f35b348015610318575f80fd5b50610333600480360381019061032e9190612b2e565b61085d565b6040516103409190612ac2565b60405180910390f35b348015610354575f80fd5b5061035d610931565b005b34801561036a575f80fd5b50610373610a2c565b005b348015610380575f80fd5b50610389610b5e565b6040516103969190612b99565b60405180910390f35b3480156103aa575f80fd5b506103b3610b66565b6040516103c09190612bc1565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612b03565b610b8b565b005b3480156103fc575f80fd5b5061041760048036038101906104129190612b03565b610c76565b6040516104249190612aea565b60405180910390f35b348015610438575f80fd5b50610441610cbc565b005b34801561044e575f80fd5b50610457610e0a565b6040516104649190612aea565b60405180910390f35b348015610478575f80fd5b50610481610e10565b005b34801561048e575f80fd5b506104976110c9565b6040516104a49190612bc1565b60405180910390f35b3480156104b8575f80fd5b506104c16110f0565b6040516104ce9190612aea565b60405180910390f35b3480156104e2575f80fd5b506104eb6110f6565b6040516104f891906129b5565b60405180910390f35b34801561050c575f80fd5b5061052760048036038101906105229190612a6a565b611133565b6040516105349190612ac2565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612c3b565b611150565b005b348015610570575f80fd5b5061057961127c565b6040516105869190612aea565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612c86565b611282565b6040516105c29190612aea565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190612b03565b611304565b005b3480156105fe575f80fd5b506106076114c1565b6040516106149190612ac2565b60405180910390f35b348015610628575f80fd5b50610643600480360381019061063e9190612b03565b6114d4565b6040516106509190612ac2565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190612c3b565b6114f1565b005b60606040518060400160405280600e81526020017f4f726967696e616c20436f6d6963000000000000000000000000000000000000815250905090565b5f6106d16106ca61161e565b8484611625565b6001905092915050565b6106e361161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690612d0e565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016107cb929190612d87565b6020604051808303815f875af11580156107e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080b9190612dd8565b505050565b60175481565b60145481565b5f6009600a61082b9190612f5f565b6461f313f88061083b9190612fa9565b905090565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f6108698484846117e8565b6109268461087561161e565b61092185604051806060016040528060288152602001613a126028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108d861161e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124089092919063ffffffff16565b611625565b600190509392505050565b61093961161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90612d0e565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610a29573d5f803e3d5ffd5b50565b610a3461161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612d0e565b60405180910390fd5b6009600a610ace9190612f5f565b6461f313f880610ade9190612fa9565b6011819055506009600a610af29190612f5f565b6461f313f880610b029190612fa9565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b379190612f5f565b6461f313f880610b479190612fa9565b604051610b549190612aea565b60405180910390a1565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b9361161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690612d0e565b60405180910390fd5b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc461161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790612d0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b610e1861161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b90612d0e565b60405180910390fd5b601660149054906101000a900460ff1615610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90613034565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f3c30610c76565b5f80610f466110c9565b426040518863ffffffff1660e01b8152600401610f689695949392919061308b565b60606040518083038185885af1158015610f84573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa991906130fe565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161104992919061314e565b6020604051808303815f875af1158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190612dd8565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600581526020017f434f4d4943000000000000000000000000000000000000000000000000000000815250905090565b5f61114661113f61161e565b84846117e8565b6001905092915050565b61115861161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612d0e565b60405180910390fd5b5f5b82829050811015611277575f60195f85858581811061120857611207613175565b5b905060200201602081019061121d9190612b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506111e6565b505050565b60135481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61130c61161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90612d0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613212565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860029054906101000a900460ff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b6114f961161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90612d0e565b60405180910390fd5b5f5b8282905081101561161957600160195f8585858181106115aa576115a9613175565b5b90506020020160208101906115bf9190612b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050611587565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a906132a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061332e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117db9190612aea565b60405180910390a3505050565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611886575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc90613396565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90613424565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611998906134b2565b60405180910390fd5b5f81116119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613540565b60405180910390fd5b5f6119ec6110c9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a5a5750611a2a6110c9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561215857611a9b6064611a8d600b54600e5411611a7a57600754611a7e565b6009545b8561246a90919063ffffffff16565b6124e190919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611b40575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b93575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c7657601154821115611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd4906135a8565b60405180910390fd5b60125482611bea85610c76565b611bf491906135c6565b1115611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613643565b60405180910390fd5b436003600654611c4591906135c6565b1115611c5e57611c548361252a565b15611c5d575f80fd5b5b600e5f815480929190611c7090613661565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d14575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d725760125482611d2685610c76565b611d3091906135c6565b1115611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890613643565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611df457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e3857611e356064611e27600c54600e5411611e1457600854611e18565b600a545b8561246a90919063ffffffff16565b6124e190919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ed6575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f0e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f17575f90505b5f611f2130610c76565b9050601860029054906101000a900460ff168015611f4b575060185f9054906101000a900460ff16155b8015611f9d575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611fb55750601860019054906101000a900460ff165b8015611fc2575060135481115b8015611fd15750600d54600e54115b1561208557601054431115611fe8575f600f819055505b601754600f541061202e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612025906136f2565b60405180910390fd5b61204b612046846120418460145461253b565b61253b565b612553565b5f4790505f81111561206157612060476127bc565b5b600f5f81548092919061207390613661565b91905055504360108190555050612156565b60185f9054906101000a900460ff161580156120e7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120ff5750601860019054906101000a900460ff165b801561210c575060135481115b801561211b5750600d54600e54115b156121555761213d612138846121338460145461253b565b61253b565b612553565b5f4790505f81111561215357612152476127bc565b5b505b5b505b5f811115612257576121b08160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161224e9190612aea565b60405180910390a35b6122a78260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061234a6122fe828461288190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123ed848661288190919063ffffffff16565b6040516123fa9190612aea565b60405180910390a350505050565b5f83831115829061244f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244691906129b5565b60405180910390fd5b505f838561245d9190613710565b9050809150509392505050565b5f80830361247a575f90506124db565b5f82846124879190612fa9565b90508284826124969190613770565b146124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cd90613810565b60405180910390fd5b809150505b92915050565b5f61252283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128ca565b905092915050565b5f80823b90505f8111915050919050565b5f818311612549578261254b565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125895761258861382e565b5b6040519080825280602002602001820160405280156125b75781602001602082028036833780820191505090505b50905030815f815181106125ce576125cd613175565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612672573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612696919061386f565b816001815181106126aa576126a9613175565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127103060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611625565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612772959493929190613951565b5f604051808303815f87803b158015612789575f80fd5b505af115801561279b573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612820573d5f803e3d5ffd5b5050565b5f80828461283291906135c6565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e906139f3565b60405180910390fd5b8091505092915050565b5f6128c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612408565b905092915050565b5f8083118290612910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290791906129b5565b60405180910390fd5b505f838561291e9190613770565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612962578082015181840152602081019050612947565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6129878261292b565b6129918185612935565b93506129a1818560208601612945565b6129aa8161296d565b840191505092915050565b5f6020820190508181035f8301526129cd818461297d565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a06826129dd565b9050919050565b612a16816129fc565b8114612a20575f80fd5b50565b5f81359050612a3181612a0d565b92915050565b5f819050919050565b612a4981612a37565b8114612a53575f80fd5b50565b5f81359050612a6481612a40565b92915050565b5f8060408385031215612a8057612a7f6129d5565b5b5f612a8d85828601612a23565b9250506020612a9e85828601612a56565b9150509250929050565b5f8115159050919050565b612abc81612aa8565b82525050565b5f602082019050612ad55f830184612ab3565b92915050565b612ae481612a37565b82525050565b5f602082019050612afd5f830184612adb565b92915050565b5f60208284031215612b1857612b176129d5565b5b5f612b2584828501612a23565b91505092915050565b5f805f60608486031215612b4557612b446129d5565b5b5f612b5286828701612a23565b9350506020612b6386828701612a23565b9250506040612b7486828701612a56565b9150509250925092565b5f60ff82169050919050565b612b9381612b7e565b82525050565b5f602082019050612bac5f830184612b8a565b92915050565b612bbb816129fc565b82525050565b5f602082019050612bd45f830184612bb2565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612bfb57612bfa612bda565b5b8235905067ffffffffffffffff811115612c1857612c17612bde565b5b602083019150836020820283011115612c3457612c33612be2565b5b9250929050565b5f8060208385031215612c5157612c506129d5565b5b5f83013567ffffffffffffffff811115612c6e57612c6d6129d9565b5b612c7a85828601612be6565b92509250509250929050565b5f8060408385031215612c9c57612c9b6129d5565b5b5f612ca985828601612a23565b9250506020612cba85828601612a23565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612cf8602083612935565b9150612d0382612cc4565b602082019050919050565b5f6020820190508181035f830152612d2581612cec565b9050919050565b5f819050919050565b5f612d4f612d4a612d45846129dd565b612d2c565b6129dd565b9050919050565b5f612d6082612d35565b9050919050565b5f612d7182612d56565b9050919050565b612d8181612d67565b82525050565b5f604082019050612d9a5f830185612d78565b612da76020830184612adb565b9392505050565b612db781612aa8565b8114612dc1575f80fd5b50565b5f81519050612dd281612dae565b92915050565b5f60208284031215612ded57612dec6129d5565b5b5f612dfa84828501612dc4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612e8557808604811115612e6157612e60612e03565b5b6001851615612e705780820291505b8081029050612e7e85612e30565b9450612e45565b94509492505050565b5f82612e9d5760019050612f58565b81612eaa575f9050612f58565b8160018114612ec05760028114612eca57612ef9565b6001915050612f58565b60ff841115612edc57612edb612e03565b5b8360020a915084821115612ef357612ef2612e03565b5b50612f58565b5060208310610133831016604e8410600b8410161715612f2e5782820a905083811115612f2957612f28612e03565b5b612f58565b612f3b8484846001612e3c565b92509050818404811115612f5257612f51612e03565b5b81810290505b9392505050565b5f612f6982612a37565b9150612f7483612b7e565b9250612fa17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e8e565b905092915050565b5f612fb382612a37565b9150612fbe83612a37565b9250828202612fcc81612a37565b91508282048414831517612fe357612fe2612e03565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61301e601783612935565b915061302982612fea565b602082019050919050565b5f6020820190508181035f83015261304b81613012565b9050919050565b5f819050919050565b5f61307561307061306b84613052565b612d2c565b612a37565b9050919050565b6130858161305b565b82525050565b5f60c08201905061309e5f830189612bb2565b6130ab6020830188612adb565b6130b8604083018761307c565b6130c5606083018661307c565b6130d26080830185612bb2565b6130df60a0830184612adb565b979650505050505050565b5f815190506130f881612a40565b92915050565b5f805f60608486031215613115576131146129d5565b5b5f613122868287016130ea565b9350506020613133868287016130ea565b9250506040613144868287016130ea565b9150509250925092565b5f6040820190506131615f830185612bb2565b61316e6020830184612adb565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131fc602683612935565b9150613207826131a2565b604082019050919050565b5f6020820190508181035f830152613229816131f0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61328a602483612935565b915061329582613230565b604082019050919050565b5f6020820190508181035f8301526132b78161327e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613318602283612935565b9150613323826132be565b604082019050919050565b5f6020820190508181035f8301526133458161330c565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c697374656400005f82015250565b5f613380601e83612935565b915061338b8261334c565b602082019050919050565b5f6020820190508181035f8301526133ad81613374565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61340e602583612935565b9150613419826133b4565b604082019050919050565b5f6020820190508181035f83015261343b81613402565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61349c602383612935565b91506134a782613442565b604082019050919050565b5f6020820190508181035f8301526134c981613490565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61352a602983612935565b9150613535826134d0565b604082019050919050565b5f6020820190508181035f8301526135578161351e565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613592601983612935565b915061359d8261355e565b602082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b5f6135d082612a37565b91506135db83612a37565b92508282019050808211156135f3576135f2612e03565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61362d601a83612935565b9150613638826135f9565b602082019050919050565b5f6020820190508181035f83015261365a81613621565b9050919050565b5f61366b82612a37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361369d5761369c612e03565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6136dc600f83612935565b91506136e7826136a8565b602082019050919050565b5f6020820190508181035f830152613709816136d0565b9050919050565b5f61371a82612a37565b915061372583612a37565b925082820390508181111561373d5761373c612e03565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61377a82612a37565b915061378583612a37565b92508261379557613794613743565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137fa602183612935565b9150613805826137a0565b604082019050919050565b5f6020820190508181035f830152613827816137ee565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061386981612a0d565b92915050565b5f60208284031215613884576138836129d5565b5b5f6138918482850161385b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138cc816129fc565b82525050565b5f6138dd83836138c3565b60208301905092915050565b5f602082019050919050565b5f6138ff8261389a565b61390981856138a4565b9350613914836138b4565b805f5b8381101561394457815161392b88826138d2565b9750613936836138e9565b925050600181019050613917565b5085935050505092915050565b5f60a0820190506139645f830188612adb565b613971602083018761307c565b818103604083015261398381866138f5565b90506139926060830185612bb2565b61399f6080830184612adb565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6139dd601b83612935565b91506139e8826139a9565b602082019050919050565b5f6020820190508181035f830152613a0a816139d1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202536e2c3a0e4b733a91161aee1b66d5610091f01ea9bacaf7ee1fd07c22c11a364736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063715018a6116100eb578063b5ef226a11610089578063f2fde38b11610063578063f2fde38b146105cb578063f4ef1f42146105f3578063f5b3c3bf1461061d578063ff89757014610659576101c1565b8063b5ef226a1461053d578063bf474bed14610565578063dd62ed3e1461058f576101c1565b80638da5cb5b116100c55780638da5cb5b146104835780638f9a55c0146104ad57806395d89b41146104d7578063a9059cbb14610501576101c1565b8063715018a61461042d5780637d1db4a5146104435780638a8c523c1461046d576101c1565b806323b872dd11610158578063313ce56711610132578063313ce5671461037557806349bd5a5e1461039f5780634a49ac4c146103c957806370a08231146103f1576101c1565b806323b872dd1461030d57806324988e1b1461034957806330ef74251461035f576101c1565b80630e12062d116101945780630e12062d146102535780630faee56f1461027d57806318160ddd146102a75780631cdd3be3146102d1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630b91e5651461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610681565b6040516101e691906129b5565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612a6a565b6106be565b6040516102229190612ac2565b60405180910390f35b348015610236575f80fd5b50610251600480360381019061024c9190612a6a565b6106db565b005b34801561025e575f80fd5b50610267610810565b6040516102749190612aea565b60405180910390f35b348015610288575f80fd5b50610291610816565b60405161029e9190612aea565b60405180910390f35b3480156102b2575f80fd5b506102bb61081c565b6040516102c89190612aea565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612b03565b610840565b6040516103049190612ac2565b60405180910390f35b348015610318575f80fd5b50610333600480360381019061032e9190612b2e565b61085d565b6040516103409190612ac2565b60405180910390f35b348015610354575f80fd5b5061035d610931565b005b34801561036a575f80fd5b50610373610a2c565b005b348015610380575f80fd5b50610389610b5e565b6040516103969190612b99565b60405180910390f35b3480156103aa575f80fd5b506103b3610b66565b6040516103c09190612bc1565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612b03565b610b8b565b005b3480156103fc575f80fd5b5061041760048036038101906104129190612b03565b610c76565b6040516104249190612aea565b60405180910390f35b348015610438575f80fd5b50610441610cbc565b005b34801561044e575f80fd5b50610457610e0a565b6040516104649190612aea565b60405180910390f35b348015610478575f80fd5b50610481610e10565b005b34801561048e575f80fd5b506104976110c9565b6040516104a49190612bc1565b60405180910390f35b3480156104b8575f80fd5b506104c16110f0565b6040516104ce9190612aea565b60405180910390f35b3480156104e2575f80fd5b506104eb6110f6565b6040516104f891906129b5565b60405180910390f35b34801561050c575f80fd5b5061052760048036038101906105229190612a6a565b611133565b6040516105349190612ac2565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612c3b565b611150565b005b348015610570575f80fd5b5061057961127c565b6040516105869190612aea565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612c86565b611282565b6040516105c29190612aea565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190612b03565b611304565b005b3480156105fe575f80fd5b506106076114c1565b6040516106149190612ac2565b60405180910390f35b348015610628575f80fd5b50610643600480360381019061063e9190612b03565b6114d4565b6040516106509190612ac2565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190612c3b565b6114f1565b005b60606040518060400160405280600e81526020017f4f726967696e616c20436f6d6963000000000000000000000000000000000000815250905090565b5f6106d16106ca61161e565b8484611625565b6001905092915050565b6106e361161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690612d0e565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016107cb929190612d87565b6020604051808303815f875af11580156107e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080b9190612dd8565b505050565b60175481565b60145481565b5f6009600a61082b9190612f5f565b6461f313f88061083b9190612fa9565b905090565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f6108698484846117e8565b6109268461087561161e565b61092185604051806060016040528060288152602001613a126028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108d861161e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124089092919063ffffffff16565b611625565b600190509392505050565b61093961161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc90612d0e565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610a29573d5f803e3d5ffd5b50565b610a3461161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612d0e565b60405180910390fd5b6009600a610ace9190612f5f565b6461f313f880610ade9190612fa9565b6011819055506009600a610af29190612f5f565b6461f313f880610b029190612fa9565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b379190612f5f565b6461f313f880610b479190612fa9565b604051610b549190612aea565b60405180910390a1565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b9361161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690612d0e565b60405180910390fd5b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc461161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790612d0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b610e1861161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b90612d0e565b60405180910390fd5b601660149054906101000a900460ff1615610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90613034565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f3c30610c76565b5f80610f466110c9565b426040518863ffffffff1660e01b8152600401610f689695949392919061308b565b60606040518083038185885af1158015610f84573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa991906130fe565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161104992919061314e565b6020604051808303815f875af1158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190612dd8565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600581526020017f434f4d4943000000000000000000000000000000000000000000000000000000815250905090565b5f61114661113f61161e565b84846117e8565b6001905092915050565b61115861161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612d0e565b60405180910390fd5b5f5b82829050811015611277575f60195f85858581811061120857611207613175565b5b905060200201602081019061121d9190612b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506111e6565b505050565b60135481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61130c61161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90612d0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613212565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860029054906101000a900460ff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b6114f961161e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c90612d0e565b60405180910390fd5b5f5b8282905081101561161957600160195f8585858181106115aa576115a9613175565b5b90506020020160208101906115bf9190612b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050611587565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a906132a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061332e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117db9190612aea565b60405180910390a3505050565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611886575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc90613396565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90613424565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611998906134b2565b60405180910390fd5b5f81116119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90613540565b60405180910390fd5b5f6119ec6110c9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a5a5750611a2a6110c9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561215857611a9b6064611a8d600b54600e5411611a7a57600754611a7e565b6009545b8561246a90919063ffffffff16565b6124e190919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611b40575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b93575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c7657601154821115611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd4906135a8565b60405180910390fd5b60125482611bea85610c76565b611bf491906135c6565b1115611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613643565b60405180910390fd5b436003600654611c4591906135c6565b1115611c5e57611c548361252a565b15611c5d575f80fd5b5b600e5f815480929190611c7090613661565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d14575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d725760125482611d2685610c76565b611d3091906135c6565b1115611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6890613643565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611df457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e3857611e356064611e27600c54600e5411611e1457600854611e18565b600a545b8561246a90919063ffffffff16565b6124e190919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ed6575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f0e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f17575f90505b5f611f2130610c76565b9050601860029054906101000a900460ff168015611f4b575060185f9054906101000a900460ff16155b8015611f9d575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611fb55750601860019054906101000a900460ff165b8015611fc2575060135481115b8015611fd15750600d54600e54115b1561208557601054431115611fe8575f600f819055505b601754600f541061202e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612025906136f2565b60405180910390fd5b61204b612046846120418460145461253b565b61253b565b612553565b5f4790505f81111561206157612060476127bc565b5b600f5f81548092919061207390613661565b91905055504360108190555050612156565b60185f9054906101000a900460ff161580156120e7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120ff5750601860019054906101000a900460ff165b801561210c575060135481115b801561211b5750600d54600e54115b156121555761213d612138846121338460145461253b565b61253b565b612553565b5f4790505f81111561215357612152476127bc565b5b505b5b505b5f811115612257576121b08160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161224e9190612aea565b60405180910390a35b6122a78260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461288190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061234a6122fe828461288190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123ed848661288190919063ffffffff16565b6040516123fa9190612aea565b60405180910390a350505050565b5f83831115829061244f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244691906129b5565b60405180910390fd5b505f838561245d9190613710565b9050809150509392505050565b5f80830361247a575f90506124db565b5f82846124879190612fa9565b90508284826124969190613770565b146124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cd90613810565b60405180910390fd5b809150505b92915050565b5f61252283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128ca565b905092915050565b5f80823b90505f8111915050919050565b5f818311612549578261254b565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125895761258861382e565b5b6040519080825280602002602001820160405280156125b75781602001602082028036833780820191505090505b50905030815f815181106125ce576125cd613175565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612672573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612696919061386f565b816001815181106126aa576126a9613175565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127103060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611625565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612772959493929190613951565b5f604051808303815f87803b158015612789575f80fd5b505af115801561279b573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612820573d5f803e3d5ffd5b5050565b5f80828461283291906135c6565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e906139f3565b60405180910390fd5b8091505092915050565b5f6128c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612408565b905092915050565b5f8083118290612910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290791906129b5565b60405180910390fd5b505f838561291e9190613770565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612962578082015181840152602081019050612947565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6129878261292b565b6129918185612935565b93506129a1818560208601612945565b6129aa8161296d565b840191505092915050565b5f6020820190508181035f8301526129cd818461297d565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a06826129dd565b9050919050565b612a16816129fc565b8114612a20575f80fd5b50565b5f81359050612a3181612a0d565b92915050565b5f819050919050565b612a4981612a37565b8114612a53575f80fd5b50565b5f81359050612a6481612a40565b92915050565b5f8060408385031215612a8057612a7f6129d5565b5b5f612a8d85828601612a23565b9250506020612a9e85828601612a56565b9150509250929050565b5f8115159050919050565b612abc81612aa8565b82525050565b5f602082019050612ad55f830184612ab3565b92915050565b612ae481612a37565b82525050565b5f602082019050612afd5f830184612adb565b92915050565b5f60208284031215612b1857612b176129d5565b5b5f612b2584828501612a23565b91505092915050565b5f805f60608486031215612b4557612b446129d5565b5b5f612b5286828701612a23565b9350506020612b6386828701612a23565b9250506040612b7486828701612a56565b9150509250925092565b5f60ff82169050919050565b612b9381612b7e565b82525050565b5f602082019050612bac5f830184612b8a565b92915050565b612bbb816129fc565b82525050565b5f602082019050612bd45f830184612bb2565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612bfb57612bfa612bda565b5b8235905067ffffffffffffffff811115612c1857612c17612bde565b5b602083019150836020820283011115612c3457612c33612be2565b5b9250929050565b5f8060208385031215612c5157612c506129d5565b5b5f83013567ffffffffffffffff811115612c6e57612c6d6129d9565b5b612c7a85828601612be6565b92509250509250929050565b5f8060408385031215612c9c57612c9b6129d5565b5b5f612ca985828601612a23565b9250506020612cba85828601612a23565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612cf8602083612935565b9150612d0382612cc4565b602082019050919050565b5f6020820190508181035f830152612d2581612cec565b9050919050565b5f819050919050565b5f612d4f612d4a612d45846129dd565b612d2c565b6129dd565b9050919050565b5f612d6082612d35565b9050919050565b5f612d7182612d56565b9050919050565b612d8181612d67565b82525050565b5f604082019050612d9a5f830185612d78565b612da76020830184612adb565b9392505050565b612db781612aa8565b8114612dc1575f80fd5b50565b5f81519050612dd281612dae565b92915050565b5f60208284031215612ded57612dec6129d5565b5b5f612dfa84828501612dc4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612e8557808604811115612e6157612e60612e03565b5b6001851615612e705780820291505b8081029050612e7e85612e30565b9450612e45565b94509492505050565b5f82612e9d5760019050612f58565b81612eaa575f9050612f58565b8160018114612ec05760028114612eca57612ef9565b6001915050612f58565b60ff841115612edc57612edb612e03565b5b8360020a915084821115612ef357612ef2612e03565b5b50612f58565b5060208310610133831016604e8410600b8410161715612f2e5782820a905083811115612f2957612f28612e03565b5b612f58565b612f3b8484846001612e3c565b92509050818404811115612f5257612f51612e03565b5b81810290505b9392505050565b5f612f6982612a37565b9150612f7483612b7e565b9250612fa17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e8e565b905092915050565b5f612fb382612a37565b9150612fbe83612a37565b9250828202612fcc81612a37565b91508282048414831517612fe357612fe2612e03565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61301e601783612935565b915061302982612fea565b602082019050919050565b5f6020820190508181035f83015261304b81613012565b9050919050565b5f819050919050565b5f61307561307061306b84613052565b612d2c565b612a37565b9050919050565b6130858161305b565b82525050565b5f60c08201905061309e5f830189612bb2565b6130ab6020830188612adb565b6130b8604083018761307c565b6130c5606083018661307c565b6130d26080830185612bb2565b6130df60a0830184612adb565b979650505050505050565b5f815190506130f881612a40565b92915050565b5f805f60608486031215613115576131146129d5565b5b5f613122868287016130ea565b9350506020613133868287016130ea565b9250506040613144868287016130ea565b9150509250925092565b5f6040820190506131615f830185612bb2565b61316e6020830184612adb565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131fc602683612935565b9150613207826131a2565b604082019050919050565b5f6020820190508181035f830152613229816131f0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61328a602483612935565b915061329582613230565b604082019050919050565b5f6020820190508181035f8301526132b78161327e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613318602283612935565b9150613323826132be565b604082019050919050565b5f6020820190508181035f8301526133458161330c565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c697374656400005f82015250565b5f613380601e83612935565b915061338b8261334c565b602082019050919050565b5f6020820190508181035f8301526133ad81613374565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61340e602583612935565b9150613419826133b4565b604082019050919050565b5f6020820190508181035f83015261343b81613402565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61349c602383612935565b91506134a782613442565b604082019050919050565b5f6020820190508181035f8301526134c981613490565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61352a602983612935565b9150613535826134d0565b604082019050919050565b5f6020820190508181035f8301526135578161351e565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613592601983612935565b915061359d8261355e565b602082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b5f6135d082612a37565b91506135db83612a37565b92508282019050808211156135f3576135f2612e03565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61362d601a83612935565b9150613638826135f9565b602082019050919050565b5f6020820190508181035f83015261365a81613621565b9050919050565b5f61366b82612a37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361369d5761369c612e03565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6136dc600f83612935565b91506136e7826136a8565b602082019050919050565b5f6020820190508181035f830152613709816136d0565b9050919050565b5f61371a82612a37565b915061372583612a37565b925082820390508181111561373d5761373c612e03565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61377a82612a37565b915061378583612a37565b92508261379557613794613743565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137fa602183612935565b9150613805826137a0565b604082019050919050565b5f6020820190508181035f830152613827816137ee565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061386981612a0d565b92915050565b5f60208284031215613884576138836129d5565b5b5f6138918482850161385b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138cc816129fc565b82525050565b5f6138dd83836138c3565b60208301905092915050565b5f602082019050919050565b5f6138ff8261389a565b61390981856138a4565b9350613914836138b4565b805f5b8381101561394457815161392b88826138d2565b9750613936836138e9565b925050600181019050613917565b5085935050505092915050565b5f60a0820190506139645f830188612adb565b613971602083018761307c565b818103604083015261398381866138f5565b90506139926060830185612bb2565b61399f6080830184612adb565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6139dd601b83612935565b91506139e8826139a9565b602082019050919050565b5f6020820190508181035f830152613a0a816139d1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202536e2c3a0e4b733a91161aee1b66d5610091f01ea9bacaf7ee1fd07c22c11a364736f6c63430008170033

Deployed Bytecode Sourcemap

3823:9533:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6189:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7022:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12449:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5204:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5026:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6466:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7191:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7247:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12322:119;;;;;;;;;;;;;:::i;:::-;;12608:172;;;;;;;;;;;;;:::i;:::-;;6375:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5138:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7911:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6569:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2654:148;;;;;;;;;;;;;:::i;:::-;;4829:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12888:428;;;;;;;;;;;;;:::i;:::-;;2440:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4894:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6280:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6696:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11210:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4959:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6871:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5310:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4082:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12122:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6189:83;6226:13;6259:5;;;;;;;;;;;;;;;;;6252:12;;6189:83;:::o;7022:161::-;7097:4;7114:39;7123:12;:10;:12::i;:::-;7137:7;7146:6;7114:8;:39::i;:::-;7171:4;7164:11;;7022:161;;;;:::o;12449:151::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12551:10:::1;12544:27;;;12572:10;;;;;;;;;;;12584:7;12544:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12449:151:::0;;:::o;5204:26::-;;;;:::o;5026:54::-;;;;:::o;6466:95::-;6519:7;4634:1;4692:2;:13;;;;:::i;:::-;4677:12;:28;;;;:::i;:::-;6539:14;;6466:95;:::o;7191:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;7247:313::-;7345:4;7362:36;7372:6;7380:9;7391:6;7362:9;:36::i;:::-;7409:121;7418:6;7426:12;:10;:12::i;:::-;7440:89;7478:6;7440:89;;;;;;;;;;;;;;;;;:11;:19;7452:6;7440:19;;;;;;;;;;;;;;;:33;7460:12;:10;:12::i;:::-;7440:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7409:8;:121::i;:::-;7548:4;7541:11;;7247:313;;;;;:::o;12322:119::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12390:10:::1;;;;;;;;;;;12382:28;;:51;12411:21;12382:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12322:119::o:0;12608:172::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4634:1:::1;4692:2;:13;;;;:::i;:::-;4677:12;:28;;;;:::i;:::-;12674:12;:22;;;;4634:1;4692:2;:13;;;;:::i;:::-;4677:12;:28;;;;:::i;:::-;12707:14;:22;;;;12745:27;4634:1;4692:2;:13;;;;:::i;:::-;4677:12;:28;;;;:::i;:::-;12745:27;;;;;;:::i;:::-;;;;;;;;12608:172::o:0;6375:83::-;6416:5;4634:1;6434:16;;6375:83;:::o;5138:28::-;;;;;;;;;;;;;:::o;7911:111::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8009:5:::1;7983:14;:23;7998:7;7983:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;7911:111:::0;:::o;6569:119::-;6635:7;6662:9;:18;6672:7;6662:18;;;;;;;;;;;;;;;;6655:25;;6569:119;;;:::o;2654:148::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2761:1:::1;2724:40;;2745:6;::::0;::::1;;;;;;;;2724:40;;;;;;;;;;;;2792:1;2775:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2654:148::o:0;4829:58::-;;;;:::o;12888:428::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12954:11:::1;;;;;;;;;;;12953:12;12945:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13003:15;;;;;;;;;;;:31;;;13042:21;13073:4;13079:24;13097:4;13079:9;:24::i;:::-;13104:1;13106::::0;13108:7:::1;:5;:7::i;:::-;13116:15;13003:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13150:13;;;;;;;;;;;13143:29;;;13181:15;;;;;;;;;;;13199:14;13143:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13239:4;13225:11;;:18;;;;;;;;;;;;;;;;;;13268:4;13254:11;;:18;;;;;;;;;;;;;;;;;;13296:12;13283:10;:25;;;;12888:428::o:0;2440:79::-;2478:7;2505:6;;;;;;;;;;;2498:13;;2440:79;:::o;4894:58::-;;;;:::o;6280:87::-;6319:13;6352:7;;;;;;;;;;;;;;;;;6345:14;;6280:87;:::o;6696:167::-;6774:4;6791:42;6801:12;:10;:12::i;:::-;6815:9;6826:6;6791:9;:42::i;:::-;6851:4;6844:11;;6696:167;;;;:::o;11210:208::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11310:9:::1;11305:106;11325:9;;:16;;11321:1;:20;11305:106;;;11394:5;11363:14;:28;11378:9;;11388:1;11378:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11363:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;11343:3;;;;;11305:106;;;;11210:208:::0;;:::o;4959:60::-;;;;:::o;6871:143::-;6952:7;6979:11;:18;6991:5;6979:18;;;;;;;;;;;;;;;:27;6998:7;6979:27;;;;;;;;;;;;;;;;6972:34;;6871:143;;;;:::o;2810:244::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2919:1:::1;2899:22;;:8;:22;;::::0;2891:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3009:8;2980:38;;3001:6;::::0;::::1;;;;;;;;2980:38;;;;;;;;;;;;3038:8;3029:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2810:244:::0;:::o;5310:28::-;;;;;;;;;;;;;:::o;4082:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;12122:192::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12211:9:::1;12206:101;12226:9;;:16;;12222:1;:20;12206:101;;;12291:4;12260:14;:28;12275:9;;12285:1;12275:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12260:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12244:3;;;;;12206:101;;;;12122:192:::0;;:::o;195:98::-;248:7;275:10;268:17;;195:98;:::o;7568:335::-;7678:1;7661:19;;:5;:19;;;7653:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7759:1;7740:21;;:7;:21;;;7732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7841:6;7811:11;:18;7823:5;7811:18;;;;;;;;;;;;;;;:27;7830:7;7811:27;;;;;;;;;;;;;;;:36;;;;7879:7;7863:32;;7872:5;7863:32;;;7888:6;7863:32;;;;;;:::i;:::-;;;;;;;;7568:335;;;:::o;8030:3064::-;8120:14;:20;8135:4;8120:20;;;;;;;;;;;;;;;;;;;;;;;;;8119:21;:44;;;;;8145:14;:18;8160:2;8145:18;;;;;;;;;;;;;;;;;;;;;;;;;8144:19;8119:44;8110:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8233:1;8217:18;;:4;:18;;;8209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8310:1;8296:16;;:2;:16;;;8288:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8380:1;8371:6;:10;8363:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8438:17;8482:7;:5;:7::i;:::-;8474:15;;:4;:15;;;;:32;;;;;8499:7;:5;:7::i;:::-;8493:13;;:2;:13;;;;8474:32;8470:2268;;;8535:79;8610:3;8535:70;8558:15;;8547:9;;:26;8546:58;;8590:14;;8546:58;;;8576:12;;8546:58;8535:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8523:91;;8635:10;:16;8646:4;8635:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8669:15;;;;;;;;;;;8655:30;;:2;:30;;;;8635:50;:66;;;;;8691:6;:10;8698:2;8691:10;;;;;;;;;;;;;;;;;;;;;;;;;8689:12;8635:66;8631:419;;;8741:12;;8731:6;:22;;8723:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8836:14;;8826:6;8810:13;8820:2;8810:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8802:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8924:12;8919:1;8906:10;;:14;;;;:::i;:::-;:30;8902:103;;;8970:14;8981:2;8970:10;:14::i;:::-;8969:15;8961:24;;;;;;8902:103;9023:9;;:11;;;;;;;;;:::i;:::-;;;;;;8631:419;9071:10;:14;9082:2;9071:14;;;;;;;;;;;;;;;;;;;;;;;;;9070:15;:31;;;;;9091:6;:10;9098:2;9091:10;;;;;;;;;;;;;;;;;;;;;;;;;9089:12;9070:31;9066:151;;;9156:14;;9146:6;9130:13;9140:2;9130:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9122:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9066:151;9236:10;:14;9247:2;9236:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;9269:4;9254:20;;:4;:20;;;;9236:38;9233:172;;;9307:82;9385:3;9307:73;9330:16;;9319:9;;:27;9318:61;;9364:15;;9318:61;;;9349:13;;9318:61;9307:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9295:94;;9233:172;9419:10;:16;9430:4;9419:16;;;;;;;;;;;;;;;;;;;;;;;;;9418:17;:36;;;;;9440:10;:14;9451:2;9440:14;;;;;;;;;;;;;;;;;;;;;;;;;9439:15;9418:36;:60;;;;;9473:4;9458:20;;:4;:20;;;;9418:60;9414:115;;;9512:1;9500:13;;9414:115;9545:28;9576:24;9594:4;9576:9;:24::i;:::-;9545:55;;9619:9;;;;;;;;;;;:20;;;;;9633:6;;;;;;;;;;;9632:7;9619:20;:38;;;;;9643:10;:14;9654:2;9643:14;;;;;;;;;;;;;;;;;;;;;;;;;9619:38;:53;;;;;9661:11;;;;;;;;;;;9619:53;:95;;;;;9697:17;;9676:20;:38;9619:95;:127;;;;;9728:18;;9718:9;;:28;9619:127;9615:1112;;;9786:13;;9771:12;:28;9767:90;;;9836:1;9824:9;:13;;;;9767:90;9895:7;;9883:9;;:19;9875:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9941:67;9958:49;9962:6;9969:37;9973:20;9994:11;;9969:3;:37::i;:::-;9958:3;:49::i;:::-;9941:16;:67::i;:::-;10027:26;10056:21;10027:50;;10120:1;10099:18;:22;10096:105;;;10146:35;10159:21;10146:12;:35::i;:::-;10096:105;10219:9;;:11;;;;;;;;;:::i;:::-;;;;;;10265:12;10249:13;:28;;;;9748:545;9615:1112;;;10318:6;;;;;;;;;;;10317:7;:25;;;;;10328:10;:14;10339:2;10328:14;;;;;;;;;;;;;;;;;;;;;;;;;10317:25;:40;;;;;10346:11;;;;;;;;;;;10317:40;:82;;;;;10382:17;;10361:20;:38;10317:82;:114;;;;;10413:18;;10403:9;;:28;10317:114;10314:413;;;10452:67;10469:49;10473:6;10480:37;10484:20;10505:11;;10480:3;:37::i;:::-;10469:3;:49::i;:::-;10452:16;:67::i;:::-;10538:26;10567:21;10538:50;;10631:1;10610:18;:22;10607:105;;;10657:35;10670:21;10657:12;:35::i;:::-;10607:105;10433:294;10314:413;9615:1112;8508:2230;8470:2268;10763:1;10753:9;:11;10750:161;;;10803:39;10832:9;10803;:24;10821:4;10803:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10778:9;:24;10796:4;10778:24;;;;;;;;;;;;;;;:64;;;;10883:4;10860:39;;10869:4;10860:39;;;10889:9;10860:39;;;;;;:::i;:::-;;;;;;;;10750:161;10937:27;10957:6;10937:9;:15;10947:4;10937:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10921:9;:15;10931:4;10921:15;;;;;;;;;;;;;;;:43;;;;10989:40;11007:21;11018:9;11007:6;:10;;:21;;;;:::i;:::-;10989:9;:13;10999:2;10989:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10975:9;:13;10985:2;10975:13;;;;;;;;;;;;;;;:54;;;;11060:2;11045:41;;11054:4;11045:41;;;11064:21;11075:9;11064:6;:10;;:21;;;;:::i;:::-;11045:41;;;;;;:::i;:::-;;;;;;;;8099:2995;8030:3064;;;:::o;1332:190::-;1418:7;1451:1;1446;:6;;1454:12;1438:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1478:9;1494:1;1490;:5;;;;:::i;:::-;1478:17;;1513:1;1506:8;;;1332:190;;;;;:::o;1530:246::-;1588:7;1617:1;1612;:6;1608:47;;1642:1;1635:8;;;;1608:47;1665:9;1681:1;1677;:5;;;;:::i;:::-;1665:17;;1710:1;1705;1701;:5;;;;:::i;:::-;:10;1693:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1767:1;1760:8;;;1530:246;;;;;:::o;1784:132::-;1842:7;1869:39;1873:1;1876;1869:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1862:46;;1784:132;;;;:::o;11426:195::-;11485:4;11502:12;11569:7;11557:20;11549:28;;11612:1;11605:4;:8;11598:15;;;11426:195;;;:::o;11104:98::-;11161:7;11188:1;11186;:3;11185:9;;11193:1;11185:9;;;11191:1;11185:9;11178:16;;11104:98;;;;:::o;11629:483::-;5438:4;5429:6;;:13;;;;;;;;;;;;;;;;;;11707:21:::1;11745:1;11731:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11707:40;;11776:4;11758;11763:1;11758:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11802:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11792:4;11797:1;11792:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11835:62;11852:4;11867:15;;;;;;;;;;;11885:11;11835:8;:62::i;:::-;11908:15;;;;;;;;;;;:66;;;11989:11;12015:1;12031:4;12058;12078:15;11908:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11696:416;5474:5:::0;5465:6;;:14;;;;;;;;;;;;;;;;;;11629:483;:::o;12788:92::-;12845:10;;;;;;;;;;;:19;;:27;12865:6;12845:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12788:92;:::o;1001:179::-;1059:7;1079:9;1095:1;1091;:5;;;;:::i;:::-;1079:17;;1120:1;1115;:6;;1107:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1171:1;1164:8;;;1001:179;;;;:::o;1188:136::-;1246:7;1273:43;1277:1;1280;1273:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1266:50;;1188:136;;;;:::o;1924:189::-;2010:7;2042:1;2038;:5;2045:12;2030:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2069:9;2085:1;2081;:5;;;;:::i;:::-;2069:17;;2104:1;2097:8;;;1924:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:117::-;5649:1;5646;5639:12;5663:117;5772:1;5769;5762:12;5786:117;5895:1;5892;5885:12;5926:568;5999:8;6009:6;6059:3;6052:4;6044:6;6040:17;6036:27;6026:122;;6067:79;;:::i;:::-;6026:122;6180:6;6167:20;6157:30;;6210:18;6202:6;6199:30;6196:117;;;6232:79;;:::i;:::-;6196:117;6346:4;6338:6;6334:17;6322:29;;6400:3;6392:4;6384:6;6380:17;6370:8;6366:32;6363:41;6360:128;;;6407:79;;:::i;:::-;6360:128;5926:568;;;;;:::o;6500:559::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6797:1;6786:9;6782:17;6769:31;6827:18;6819:6;6816:30;6813:117;;;6849:79;;:::i;:::-;6813:117;6962:80;7034:7;7025:6;7014:9;7010:22;6962:80;:::i;:::-;6944:98;;;;6740:312;6500:559;;;;;:::o;7065:474::-;7133:6;7141;7190:2;7178:9;7169:7;7165:23;7161:32;7158:119;;;7196:79;;:::i;:::-;7158:119;7316:1;7341:53;7386:7;7377:6;7366:9;7362:22;7341:53;:::i;:::-;7331:63;;7287:117;7443:2;7469:53;7514:7;7505:6;7494:9;7490:22;7469:53;:::i;:::-;7459:63;;7414:118;7065:474;;;;;:::o;7545:182::-;7685:34;7681:1;7673:6;7669:14;7662:58;7545:182;:::o;7733:366::-;7875:3;7896:67;7960:2;7955:3;7896:67;:::i;:::-;7889:74;;7972:93;8061:3;7972:93;:::i;:::-;8090:2;8085:3;8081:12;8074:19;;7733:366;;;:::o;8105:419::-;8271:4;8309:2;8298:9;8294:18;8286:26;;8358:9;8352:4;8348:20;8344:1;8333:9;8329:17;8322:47;8386:131;8512:4;8386:131;:::i;:::-;8378:139;;8105:419;;;:::o;8530:60::-;8558:3;8579:5;8572:12;;8530:60;;;:::o;8596:142::-;8646:9;8679:53;8697:34;8706:24;8724:5;8706:24;:::i;:::-;8697:34;:::i;:::-;8679:53;:::i;:::-;8666:66;;8596:142;;;:::o;8744:126::-;8794:9;8827:37;8858:5;8827:37;:::i;:::-;8814:50;;8744:126;;;:::o;8876:134::-;8934:9;8967:37;8998:5;8967:37;:::i;:::-;8954:50;;8876:134;;;:::o;9016:147::-;9111:45;9150:5;9111:45;:::i;:::-;9106:3;9099:58;9016:147;;:::o;9169:348::-;9298:4;9336:2;9325:9;9321:18;9313:26;;9349:79;9425:1;9414:9;9410:17;9401:6;9349:79;:::i;:::-;9438:72;9506:2;9495:9;9491:18;9482:6;9438:72;:::i;:::-;9169:348;;;;;:::o;9523:116::-;9593:21;9608:5;9593:21;:::i;:::-;9586:5;9583:32;9573:60;;9629:1;9626;9619:12;9573:60;9523:116;:::o;9645:137::-;9699:5;9730:6;9724:13;9715:22;;9746:30;9770:5;9746:30;:::i;:::-;9645:137;;;;:::o;9788:345::-;9855:6;9904:2;9892:9;9883:7;9879:23;9875:32;9872:119;;;9910:79;;:::i;:::-;9872:119;10030:1;10055:61;10108:7;10099:6;10088:9;10084:22;10055:61;:::i;:::-;10045:71;;10001:125;9788:345;;;;:::o;10139:180::-;10187:77;10184:1;10177:88;10284:4;10281:1;10274:15;10308:4;10305:1;10298:15;10325:102;10367:8;10414:5;10411:1;10407:13;10386:34;;10325:102;;;:::o;10433:848::-;10494:5;10501:4;10525:6;10516:15;;10549:5;10540:14;;10563:712;10584:1;10574:8;10571:15;10563:712;;;10679:4;10674:3;10670:14;10664:4;10661:24;10658:50;;;10688:18;;:::i;:::-;10658:50;10738:1;10728:8;10724:16;10721:451;;;11153:4;11146:5;11142:16;11133:25;;10721:451;11203:4;11197;11193:15;11185:23;;11233:32;11256:8;11233:32;:::i;:::-;11221:44;;10563:712;;;10433:848;;;;;;;:::o;11287:1073::-;11341:5;11532:8;11522:40;;11553:1;11544:10;;11555:5;;11522:40;11581:4;11571:36;;11598:1;11589:10;;11600:5;;11571:36;11667:4;11715:1;11710:27;;;;11751:1;11746:191;;;;11660:277;;11710:27;11728:1;11719:10;;11730:5;;;11746:191;11791:3;11781:8;11778:17;11775:43;;;11798:18;;:::i;:::-;11775:43;11847:8;11844:1;11840:16;11831:25;;11882:3;11875:5;11872:14;11869:40;;;11889:18;;:::i;:::-;11869:40;11922:5;;;11660:277;;12046:2;12036:8;12033:16;12027:3;12021:4;12018:13;12014:36;11996:2;11986:8;11983:16;11978:2;11972:4;11969:12;11965:35;11949:111;11946:246;;;12102:8;12096:4;12092:19;12083:28;;12137:3;12130:5;12127:14;12124:40;;;12144:18;;:::i;:::-;12124:40;12177:5;;11946:246;12217:42;12255:3;12245:8;12239:4;12236:1;12217:42;:::i;:::-;12202:57;;;;12291:4;12286:3;12282:14;12275:5;12272:25;12269:51;;;12300:18;;:::i;:::-;12269:51;12349:4;12342:5;12338:16;12329:25;;11287:1073;;;;;;:::o;12366:281::-;12424:5;12448:23;12466:4;12448:23;:::i;:::-;12440:31;;12492:25;12508:8;12492:25;:::i;:::-;12480:37;;12536:104;12573:66;12563:8;12557:4;12536:104;:::i;:::-;12527:113;;12366:281;;;;:::o;12653:410::-;12693:7;12716:20;12734:1;12716:20;:::i;:::-;12711:25;;12750:20;12768:1;12750:20;:::i;:::-;12745:25;;12805:1;12802;12798:9;12827:30;12845:11;12827:30;:::i;:::-;12816:41;;13006:1;12997:7;12993:15;12990:1;12987:22;12967:1;12960:9;12940:83;12917:139;;13036:18;;:::i;:::-;12917:139;12701:362;12653:410;;;;:::o;13069:173::-;13209:25;13205:1;13197:6;13193:14;13186:49;13069:173;:::o;13248:366::-;13390:3;13411:67;13475:2;13470:3;13411:67;:::i;:::-;13404:74;;13487:93;13576:3;13487:93;:::i;:::-;13605:2;13600:3;13596:12;13589:19;;13248:366;;;:::o;13620:419::-;13786:4;13824:2;13813:9;13809:18;13801:26;;13873:9;13867:4;13863:20;13859:1;13848:9;13844:17;13837:47;13901:131;14027:4;13901:131;:::i;:::-;13893:139;;13620:419;;;:::o;14045:85::-;14090:7;14119:5;14108:16;;14045:85;;;:::o;14136:158::-;14194:9;14227:61;14245:42;14254:32;14280:5;14254:32;:::i;:::-;14245:42;:::i;:::-;14227:61;:::i;:::-;14214:74;;14136:158;;;:::o;14300:147::-;14395:45;14434:5;14395:45;:::i;:::-;14390:3;14383:58;14300:147;;:::o;14453:807::-;14702:4;14740:3;14729:9;14725:19;14717:27;;14754:71;14822:1;14811:9;14807:17;14798:6;14754:71;:::i;:::-;14835:72;14903:2;14892:9;14888:18;14879:6;14835:72;:::i;:::-;14917:80;14993:2;14982:9;14978:18;14969:6;14917:80;:::i;:::-;15007;15083:2;15072:9;15068:18;15059:6;15007:80;:::i;:::-;15097:73;15165:3;15154:9;15150:19;15141:6;15097:73;:::i;:::-;15180;15248:3;15237:9;15233:19;15224:6;15180:73;:::i;:::-;14453:807;;;;;;;;;:::o;15266:143::-;15323:5;15354:6;15348:13;15339:22;;15370:33;15397:5;15370:33;:::i;:::-;15266:143;;;;:::o;15415:663::-;15503:6;15511;15519;15568:2;15556:9;15547:7;15543:23;15539:32;15536:119;;;15574:79;;:::i;:::-;15536:119;15694:1;15719:64;15775:7;15766:6;15755:9;15751:22;15719:64;:::i;:::-;15709:74;;15665:128;15832:2;15858:64;15914:7;15905:6;15894:9;15890:22;15858:64;:::i;:::-;15848:74;;15803:129;15971:2;15997:64;16053:7;16044:6;16033:9;16029:22;15997:64;:::i;:::-;15987:74;;15942:129;15415:663;;;;;:::o;16084:332::-;16205:4;16243:2;16232:9;16228:18;16220:26;;16256:71;16324:1;16313:9;16309:17;16300:6;16256:71;:::i;:::-;16337:72;16405:2;16394:9;16390:18;16381:6;16337:72;:::i;:::-;16084:332;;;;;:::o;16422:180::-;16470:77;16467:1;16460:88;16567:4;16564:1;16557:15;16591:4;16588:1;16581:15;16608:225;16748:34;16744:1;16736:6;16732:14;16725:58;16817:8;16812:2;16804:6;16800:15;16793:33;16608:225;:::o;16839:366::-;16981:3;17002:67;17066:2;17061:3;17002:67;:::i;:::-;16995:74;;17078:93;17167:3;17078:93;:::i;:::-;17196:2;17191:3;17187:12;17180:19;;16839:366;;;:::o;17211:419::-;17377:4;17415:2;17404:9;17400:18;17392:26;;17464:9;17458:4;17454:20;17450:1;17439:9;17435:17;17428:47;17492:131;17618:4;17492:131;:::i;:::-;17484:139;;17211:419;;;:::o;17636:223::-;17776:34;17772:1;17764:6;17760:14;17753:58;17845:6;17840:2;17832:6;17828:15;17821:31;17636:223;:::o;17865:366::-;18007:3;18028:67;18092:2;18087:3;18028:67;:::i;:::-;18021:74;;18104:93;18193:3;18104:93;:::i;:::-;18222:2;18217:3;18213:12;18206:19;;17865:366;;;:::o;18237:419::-;18403:4;18441:2;18430:9;18426:18;18418:26;;18490:9;18484:4;18480:20;18476:1;18465:9;18461:17;18454:47;18518:131;18644:4;18518:131;:::i;:::-;18510:139;;18237:419;;;:::o;18662:221::-;18802:34;18798:1;18790:6;18786:14;18779:58;18871:4;18866:2;18858:6;18854:15;18847:29;18662:221;:::o;18889:366::-;19031:3;19052:67;19116:2;19111:3;19052:67;:::i;:::-;19045:74;;19128:93;19217:3;19128:93;:::i;:::-;19246:2;19241:3;19237:12;19230:19;;18889:366;;;:::o;19261:419::-;19427:4;19465:2;19454:9;19450:18;19442:26;;19514:9;19508:4;19504:20;19500:1;19489:9;19485:17;19478:47;19542:131;19668:4;19542:131;:::i;:::-;19534:139;;19261:419;;;:::o;19686:180::-;19826:32;19822:1;19814:6;19810:14;19803:56;19686:180;:::o;19872:366::-;20014:3;20035:67;20099:2;20094:3;20035:67;:::i;:::-;20028:74;;20111:93;20200:3;20111:93;:::i;:::-;20229:2;20224:3;20220:12;20213:19;;19872:366;;;:::o;20244:419::-;20410:4;20448:2;20437:9;20433:18;20425:26;;20497:9;20491:4;20487:20;20483:1;20472:9;20468:17;20461:47;20525:131;20651:4;20525:131;:::i;:::-;20517:139;;20244:419;;;:::o;20669:224::-;20809:34;20805:1;20797:6;20793:14;20786:58;20878:7;20873:2;20865:6;20861:15;20854:32;20669:224;:::o;20899:366::-;21041:3;21062:67;21126:2;21121:3;21062:67;:::i;:::-;21055:74;;21138:93;21227:3;21138:93;:::i;:::-;21256:2;21251:3;21247:12;21240:19;;20899:366;;;:::o;21271:419::-;21437:4;21475:2;21464:9;21460:18;21452:26;;21524:9;21518:4;21514:20;21510:1;21499:9;21495:17;21488:47;21552:131;21678:4;21552:131;:::i;:::-;21544:139;;21271:419;;;:::o;21696:222::-;21836:34;21832:1;21824:6;21820:14;21813:58;21905:5;21900:2;21892:6;21888:15;21881:30;21696:222;:::o;21924:366::-;22066:3;22087:67;22151:2;22146:3;22087:67;:::i;:::-;22080:74;;22163:93;22252:3;22163:93;:::i;:::-;22281:2;22276:3;22272:12;22265:19;;21924:366;;;:::o;22296:419::-;22462:4;22500:2;22489:9;22485:18;22477:26;;22549:9;22543:4;22539:20;22535:1;22524:9;22520:17;22513:47;22577:131;22703:4;22577:131;:::i;:::-;22569:139;;22296:419;;;:::o;22721:228::-;22861:34;22857:1;22849:6;22845:14;22838:58;22930:11;22925:2;22917:6;22913:15;22906:36;22721:228;:::o;22955:366::-;23097:3;23118:67;23182:2;23177:3;23118:67;:::i;:::-;23111:74;;23194:93;23283:3;23194:93;:::i;:::-;23312:2;23307:3;23303:12;23296:19;;22955:366;;;:::o;23327:419::-;23493:4;23531:2;23520:9;23516:18;23508:26;;23580:9;23574:4;23570:20;23566:1;23555:9;23551:17;23544:47;23608:131;23734:4;23608:131;:::i;:::-;23600:139;;23327:419;;;:::o;23752:175::-;23892:27;23888:1;23880:6;23876:14;23869:51;23752:175;:::o;23933:366::-;24075:3;24096:67;24160:2;24155:3;24096:67;:::i;:::-;24089:74;;24172:93;24261:3;24172:93;:::i;:::-;24290:2;24285:3;24281:12;24274:19;;23933:366;;;:::o;24305:419::-;24471:4;24509:2;24498:9;24494:18;24486:26;;24558:9;24552:4;24548:20;24544:1;24533:9;24529:17;24522:47;24586:131;24712:4;24586:131;:::i;:::-;24578:139;;24305:419;;;:::o;24730:191::-;24770:3;24789:20;24807:1;24789:20;:::i;:::-;24784:25;;24823:20;24841:1;24823:20;:::i;:::-;24818:25;;24866:1;24863;24859:9;24852:16;;24887:3;24884:1;24881:10;24878:36;;;24894:18;;:::i;:::-;24878:36;24730:191;;;;:::o;24927:176::-;25067:28;25063:1;25055:6;25051:14;25044:52;24927:176;:::o;25109:366::-;25251:3;25272:67;25336:2;25331:3;25272:67;:::i;:::-;25265:74;;25348:93;25437:3;25348:93;:::i;:::-;25466:2;25461:3;25457:12;25450:19;;25109:366;;;:::o;25481:419::-;25647:4;25685:2;25674:9;25670:18;25662:26;;25734:9;25728:4;25724:20;25720:1;25709:9;25705:17;25698:47;25762:131;25888:4;25762:131;:::i;:::-;25754:139;;25481:419;;;:::o;25906:233::-;25945:3;25968:24;25986:5;25968:24;:::i;:::-;25959:33;;26014:66;26007:5;26004:77;26001:103;;26084:18;;:::i;:::-;26001:103;26131:1;26124:5;26120:13;26113:20;;25906:233;;;:::o;26145:165::-;26285:17;26281:1;26273:6;26269:14;26262:41;26145:165;:::o;26316:366::-;26458:3;26479:67;26543:2;26538:3;26479:67;:::i;:::-;26472:74;;26555:93;26644:3;26555:93;:::i;:::-;26673:2;26668:3;26664:12;26657:19;;26316:366;;;:::o;26688:419::-;26854:4;26892:2;26881:9;26877:18;26869:26;;26941:9;26935:4;26931:20;26927:1;26916:9;26912:17;26905:47;26969:131;27095:4;26969:131;:::i;:::-;26961:139;;26688:419;;;:::o;27113:194::-;27153:4;27173:20;27191:1;27173:20;:::i;:::-;27168:25;;27207:20;27225:1;27207:20;:::i;:::-;27202:25;;27251:1;27248;27244:9;27236:17;;27275:1;27269:4;27266:11;27263:37;;;27280:18;;:::i;:::-;27263:37;27113:194;;;;:::o;27313:180::-;27361:77;27358:1;27351:88;27458:4;27455:1;27448:15;27482:4;27479:1;27472:15;27499:185;27539:1;27556:20;27574:1;27556:20;:::i;:::-;27551:25;;27590:20;27608:1;27590:20;:::i;:::-;27585:25;;27629:1;27619:35;;27634:18;;:::i;:::-;27619:35;27676:1;27673;27669:9;27664:14;;27499:185;;;;:::o;27690:220::-;27830:34;27826:1;27818:6;27814:14;27807:58;27899:3;27894:2;27886:6;27882:15;27875:28;27690:220;:::o;27916:366::-;28058:3;28079:67;28143:2;28138:3;28079:67;:::i;:::-;28072:74;;28155:93;28244:3;28155:93;:::i;:::-;28273:2;28268:3;28264:12;28257:19;;27916:366;;;:::o;28288:419::-;28454:4;28492:2;28481:9;28477:18;28469:26;;28541:9;28535:4;28531:20;28527:1;28516:9;28512:17;28505:47;28569:131;28695:4;28569:131;:::i;:::-;28561:139;;28288:419;;;:::o;28713:180::-;28761:77;28758:1;28751:88;28858:4;28855:1;28848:15;28882:4;28879:1;28872:15;28899:143;28956:5;28987:6;28981:13;28972:22;;29003:33;29030:5;29003:33;:::i;:::-;28899:143;;;;:::o;29048:351::-;29118:6;29167:2;29155:9;29146:7;29142:23;29138:32;29135:119;;;29173:79;;:::i;:::-;29135:119;29293:1;29318:64;29374:7;29365:6;29354:9;29350:22;29318:64;:::i;:::-;29308:74;;29264:128;29048:351;;;;:::o;29405:114::-;29472:6;29506:5;29500:12;29490:22;;29405:114;;;:::o;29525:184::-;29624:11;29658:6;29653:3;29646:19;29698:4;29693:3;29689:14;29674:29;;29525:184;;;;:::o;29715:132::-;29782:4;29805:3;29797:11;;29835:4;29830:3;29826:14;29818:22;;29715:132;;;:::o;29853:108::-;29930:24;29948:5;29930:24;:::i;:::-;29925:3;29918:37;29853:108;;:::o;29967:179::-;30036:10;30057:46;30099:3;30091:6;30057:46;:::i;:::-;30135:4;30130:3;30126:14;30112:28;;29967:179;;;;:::o;30152:113::-;30222:4;30254;30249:3;30245:14;30237:22;;30152:113;;;:::o;30301:732::-;30420:3;30449:54;30497:5;30449:54;:::i;:::-;30519:86;30598:6;30593:3;30519:86;:::i;:::-;30512:93;;30629:56;30679:5;30629:56;:::i;:::-;30708:7;30739:1;30724:284;30749:6;30746:1;30743:13;30724:284;;;30825:6;30819:13;30852:63;30911:3;30896:13;30852:63;:::i;:::-;30845:70;;30938:60;30991:6;30938:60;:::i;:::-;30928:70;;30784:224;30771:1;30768;30764:9;30759:14;;30724:284;;;30728:14;31024:3;31017:10;;30425:608;;;30301:732;;;;:::o;31039:831::-;31302:4;31340:3;31329:9;31325:19;31317:27;;31354:71;31422:1;31411:9;31407:17;31398:6;31354:71;:::i;:::-;31435:80;31511:2;31500:9;31496:18;31487:6;31435:80;:::i;:::-;31562:9;31556:4;31552:20;31547:2;31536:9;31532:18;31525:48;31590:108;31693:4;31684:6;31590:108;:::i;:::-;31582:116;;31708:72;31776:2;31765:9;31761:18;31752:6;31708:72;:::i;:::-;31790:73;31858:3;31847:9;31843:19;31834:6;31790:73;:::i;:::-;31039:831;;;;;;;;:::o;31876:177::-;32016:29;32012:1;32004:6;32000:14;31993:53;31876:177;:::o;32059:366::-;32201:3;32222:67;32286:2;32281:3;32222:67;:::i;:::-;32215:74;;32298:93;32387:3;32298:93;:::i;:::-;32416:2;32411:3;32407:12;32400:19;;32059:366;;;:::o;32431:419::-;32597:4;32635:2;32624:9;32620:18;32612:26;;32684:9;32678:4;32674:20;32670:1;32659:9;32655:17;32648:47;32712:131;32838:4;32712:131;:::i;:::-;32704:139;;32431:419;;;:::o

Swarm Source

ipfs://2536e2c3a0e4b733a91161aee1b66d5610091f01ea9bacaf7ee1fd07c22c11a3
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.