ETH Price: $2,390.43 (+0.05%)

Token

Book of SHIB (BOSH)
 

Overview

Max Total Supply

1,000,000,000 BOSH

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
11,569,866.13562226 BOSH

Value
$0.00
0x7d551c20e2df8b9193356c020b5486c57c1a6e15
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:
BOSH

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-16
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.22;

/*

Telegram: https://t.me/BOSHPortal
Twitter: https://twitter.com/BOSHToken
Website: https://BOSHToken.fun

*/

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;

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

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

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

interface IUniswapV2Router02 {
    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);

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

contract BOSH is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = unicode"Book of SHIB";
    string private constant _symbol = unicode"BOSH";

    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1_000_000_000 * (10 ** _decimals);

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    IUniswapV2Router02 private _uniswapV2Router;
    address private _uniswapV2Pair;

    address private _taxWallet;

    mapping(address => bool) private _isExcludedFromFee;

    uint256 private _initialBuyTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _reduceBuyTaxAt = 30;

    uint256 private _initialSellTax = 20;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceSellTaxAt = 30;

    uint256 private _buyCount;
    uint256 private _sellCount;
    uint256 private _lastSellBlock;
    uint256 private _preventSwapBefore = 30;
    uint256 private _maxSellsPerBlock = 3;

    uint256 private _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 private _maxWalletAmount = _totalSupply.mul(2).div(100);

    uint256 private _swapThresholdAmount = _totalSupply.div(100);
    uint256 private _maxSwapAmount = _totalSupply.div(100);

    bool private _inSwap;
    bool private _swapEnabled;
    bool private _tradingEnabled;

    bool private _limitsEnabled = true;
    uint256 private _launchBlock;
    uint256 private _disableLimitsAfterBlock = 10;

    modifier onlyTaxWallet() {
        require(_msgSender() == _taxWallet, "Caller not authorized");
        _;
    }

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    constructor() payable {
        _taxWallet = _msgSender();
        address devWallet = 0xC0599496c77f8914958F0251eF2C4c719C477c04;
        address ecoWallet = 0x42F4D10b70367d45b7eCa3Ccd61AAF4a7Cd5d662;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[ecoWallet] = true;

        uint256 taxWalletAmount = _totalSupply.mul(2).div(100);
        uint256 devWalletAmount = _totalSupply.mul(2).div(100);
        uint256 ecoWalletAmount = _totalSupply.mul(2).div(100);
        uint256 liquidityAmount = _totalSupply.mul(94).div(100);

        _balances[_taxWallet] = taxWalletAmount;
        _balances[devWallet] = devWalletAmount;
        _balances[ecoWallet] = ecoWalletAmount;
        _balances[address(this)] = liquidityAmount;

        emit Transfer(address(0), _taxWallet, taxWalletAmount);
        emit Transfer(address(0), devWallet, devWalletAmount);
        emit Transfer(address(0), ecoWallet, ecoWalletAmount);
        emit Transfer(address(0), address(this), liquidityAmount);
    }

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

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

    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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 taxAmount = 0;

        if (_tradingEnabled && _limitsEnabled && block.number > _launchBlock.add(_disableLimitsAfterBlock)) {
            _disableLimits();
        }

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

            if (from == _uniswapV2Pair && to != address(_uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "Exceeds the max TX amount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds the max wallet amount");

                _buyCount++;
            }

            if (to != _uniswapV2Pair && !_isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds the max wallet amount");
            }

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

            uint256 contractTokenBalance = balanceOf(address(this));

            if (
                !_inSwap && 
                to == _uniswapV2Pair && 
                _swapEnabled && 
                _buyCount > _preventSwapBefore && 
                contractTokenBalance > _swapThresholdAmount
            ) {
                if (block.number > _lastSellBlock) {
                    _sellCount = 0;
                }

                require(_sellCount < _maxSellsPerBlock, "Max sells per block exceeded");

                _sellCount++;
                _lastSellBlock = block.number;

                _swapTokensForEth(_min(amount, _min(contractTokenBalance, _maxSwapAmount)));

                _sendETHToFee();
            }
        }

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

        try _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {}
    }

    function _sendETHToFee() private {
        uint256 contractETHBalance = address(this).balance;

        if (contractETHBalance == 0) {
            return;
        }

        bool success;
        (success,) = address(_taxWallet).call{value: contractETHBalance}("");
    }

    function _disableLimits() private {
        _maxTxAmount = totalSupply();
        _maxWalletAmount = totalSupply();

        _limitsEnabled = false;
    }

    function disableLimits() external onlyTaxWallet {
        _disableLimits();
    }

    function reduceTaxes(uint256 buyTax_, uint256 sellTax_) external onlyTaxWallet {
        require(buyTax_ <= _finalBuyTax, "New buy tax cannot exceed current buy tax");
        require(sellTax_ <= _finalSellTax, "New sell tax cannot exceed current sell tax");

        _initialBuyTax = buyTax_;
        _initialSellTax = sellTax_;

        _finalBuyTax = buyTax_;
        _finalSellTax = sellTax_;
    }

    function manualSwap() external onlyTaxWallet {
        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance > 0) {
            _swapTokensForEth(contractTokenBalance);

            _sendETHToFee();
        }
    }

    function manualSendETH() external onlyTaxWallet {
        _sendETHToFee();
    }

    function manualSendTokens(uint256 tokenAmount) external onlyTaxWallet {
        require(tokenAmount <= balanceOf(address(this)), "Transfer amount exceeds balance");

        IERC20(address(this)).transfer(_msgSender(), tokenAmount);
    }

    function openTrading() external onlyOwner {
        require(!_tradingEnabled, "Trading already open");

        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _approve(address(this), address(_uniswapV2Router), totalSupply());

        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        IERC20(_uniswapV2Pair).approve(address(_uniswapV2Router), type(uint256).max);

        _swapEnabled = true;
        _tradingEnabled = true;
        _launchBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSendETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"manualSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax_","type":"uint256"},{"internalType":"uint256","name":"sellTax_","type":"uint256"}],"name":"reduceTaxes","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"},{"stateMutability":"payable","type":"receive"}]

608060405260146007555f600855601e6009556014600a555f600b55601e600c55601e60105560036011556200007560646200006660026009600a62000046919062000b7e565b633b9aca0062000057919062000bce565b6200088760201b90919060201c565b6200090760201b90919060201c565b601255620000c36064620000b460026009600a62000094919062000b7e565b633b9aca00620000a5919062000bce565b6200088760201b90919060201c565b6200090760201b90919060201c565b601355620000fc60646009600a620000dc919062000b7e565b633b9aca00620000ed919062000bce565b6200090760201b90919060201c565b6014556200013560646009600a62000115919062000b7e565b633b9aca0062000126919062000bce565b6200090760201b90919060201c565b6015556001601660036101000a81548160ff021916908315150217905550600a6018555f620001696200095860201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002156200095860201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73c0599496c77f8914958f0251ef2c4c719c477c0490505f7342f4d10b70367d45b7eca3ccd61aaf4a7cd5d6629050600160065f620002996200095f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f620004a960646200049a60026009600a6200047a919062000b7e565b633b9aca006200048b919062000bce565b6200088760201b90919060201c565b6200090760201b90919060201c565b90505f620004f76064620004e860026009600a620004c8919062000b7e565b633b9aca00620004d9919062000bce565b6200088760201b90919060201c565b6200090760201b90919060201c565b90505f6200054560646200053660026009600a62000516919062000b7e565b633b9aca0062000527919062000bce565b6200088760201b90919060201c565b6200090760201b90919060201c565b90505f62000593606462000584605e6009600a62000564919062000b7e565b633b9aca0062000575919062000bce565b6200088760201b90919060201c565b6200090760201b90919060201c565b90508360015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516200073e919062000c29565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051620007a5919062000c29565b60405180910390a38473ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200080c919062000c29565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000873919062000c29565b60405180910390a350505050505062000df2565b5f80830362000899575f905062000901565b5f8284620008a8919062000bce565b9050828482620008b9919062000c71565b14620008fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f39062000d2c565b60405180910390fd5b809150505b92915050565b5f6200095083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200098660201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8083118290620009cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c6919062000dd0565b60405180910390fd5b505f8385620009df919062000c71565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a765780860481111562000a4e5762000a4d620009ec565b5b600185161562000a5e5780820291505b808102905062000a6e8562000a19565b945062000a2e565b94509492505050565b5f8262000a90576001905062000b62565b8162000a9f575f905062000b62565b816001811462000ab8576002811462000ac35762000af9565b600191505062000b62565b60ff84111562000ad85762000ad7620009ec565b5b8360020a91508482111562000af25762000af1620009ec565b5b5062000b62565b5060208310610133831016604e8410600b841016171562000b335782820a90508381111562000b2d5762000b2c620009ec565b5b62000b62565b62000b42848484600162000a25565b9250905081840481111562000b5c5762000b5b620009ec565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000b8a8262000b69565b915062000b978362000b72565b925062000bc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a7f565b905092915050565b5f62000bda8262000b69565b915062000be78362000b69565b925082820262000bf78162000b69565b9150828204841483151762000c115762000c10620009ec565b5b5092915050565b62000c238162000b69565b82525050565b5f60208201905062000c3e5f83018462000c18565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000c7d8262000b69565b915062000c8a8362000b69565b92508262000c9d5762000c9c62000c44565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000d1460218362000ca8565b915062000d218262000cb8565b604082019050919050565b5f6020820190508181035f83015262000d458162000d06565b9050919050565b5f81519050919050565b5f5b8381101562000d7557808201518184015260208101905062000d58565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000d9c8262000d4c565b62000da8818562000ca8565b935062000dba81856020860162000d56565b62000dc58162000d80565b840191505092915050565b5f6020820190508181035f83015262000dea818462000d90565b905092915050565b61344b8062000e005f395ff3fe608060405260043610610101575f3560e01c806370a082311161009457806395d89b411161006357806395d89b41146102fa578063a9059cbb14610324578063c9567bf914610360578063dd62ed3e14610376578063f928364c146103b257610108565b806370a0823114610256578063715018a614610292578063876193d4146102a85780638da5cb5b146102d057610108565b80632c09e444116100d05780632c09e444146101d85780632ff5fe1e146101ee578063313ce5671461021657806351bc3c851461024057610108565b806306fdde031461010c578063095ea7b31461013657806318160ddd1461017257806323b872dd1461019c57610108565b3661010857005b5f80fd5b348015610117575f80fd5b506101206103c8565b60405161012d91906122f3565b60405180910390f35b348015610141575f80fd5b5061015c600480360381019061015791906123a4565b610405565b60405161016991906123fc565b60405180910390f35b34801561017d575f80fd5b50610186610422565b6040516101939190612424565b60405180910390f35b3480156101a7575f80fd5b506101c260048036038101906101bd919061243d565b610445565b6040516101cf91906123fc565b60405180910390f35b3480156101e3575f80fd5b506101ec610519565b005b3480156101f9575f80fd5b50610214600480360381019061020f919061248d565b6105b9565b005b348015610221575f80fd5b5061022a6106f9565b60405161023791906124e6565b60405180910390f35b34801561024b575f80fd5b50610254610701565b005b348015610261575f80fd5b5061027c600480360381019061027791906124ff565b6107c0565b6040516102899190612424565b60405180910390f35b34801561029d575f80fd5b506102a6610806565b005b3480156102b3575f80fd5b506102ce60048036038101906102c9919061252a565b610954565b005b3480156102db575f80fd5b506102e4610abb565b6040516102f19190612564565b60405180910390f35b348015610305575f80fd5b5061030e610ae2565b60405161031b91906122f3565b60405180910390f35b34801561032f575f80fd5b5061034a600480360381019061034591906123a4565b610b1f565b60405161035791906123fc565b60405180910390f35b34801561036b575f80fd5b50610374610b3c565b005b348015610381575f80fd5b5061039c6004803603810190610397919061257d565b611050565b6040516103a99190612424565b60405180910390f35b3480156103bd575f80fd5b506103c66110d2565b005b60606040518060400160405280600c81526020017f426f6f6b206f6620534849420000000000000000000000000000000000000000815250905090565b5f610418610411611172565b8484611179565b6001905092915050565b5f6009600a6104319190612717565b633b9aca006104409190612761565b905090565b5f61045184848461133c565b61050e8461045d611172565b610509856040518060600160405280602881526020016133ee6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104c0611172565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cea9092919063ffffffff16565b611179565b600190509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610559611172565b73ffffffffffffffffffffffffffffffffffffffff16146105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a6906127ec565b60405180910390fd5b6105b7611d4c565b565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105f9611172565b73ffffffffffffffffffffffffffffffffffffffff161461064f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610646906127ec565b60405180910390fd5b600854821115610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068b9061287a565b60405180910390fd5b600b548111156106d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d090612908565b60405180910390fd5b8160078190555080600a819055508160088190555080600b819055505050565b5f6009905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610741611172565b73ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e906127ec565b60405180910390fd5b5f6107a1306107c0565b90505f8111156107bd576107b481611ded565b6107bc611d4c565b5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61080e611172565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089190612970565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610994611172565b73ffffffffffffffffffffffffffffffffffffffff16146109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e1906127ec565b60405180910390fd5b6109f3306107c0565b811115610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c906129d8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610a59611172565b836040518363ffffffff1660e01b8152600401610a779291906129f6565b6020604051808303815f875af1158015610a93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab79190612a47565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f424f534800000000000000000000000000000000000000000000000000000000815250905090565b5f610b32610b2b611172565b848461133c565b6001905092915050565b610b44611172565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc790612970565b60405180910390fd5b601660029054906101000a900460ff1615610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790612abc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ca73060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ca2610422565b611179565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190612aee565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddf9190612aee565b6040518363ffffffff1660e01b8152600401610dfc929190612b19565b6020604051808303815f875af1158015610e18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c9190612aee565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610ec3306107c0565b5f80610ecd610abb565b426040518863ffffffff1660e01b8152600401610eef96959493929190612b82565b60606040518083038185885af1158015610f0b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f309190612bf5565b50505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610fd09291906129f6565b6020604051808303815f875af1158015610fec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110109190612a47565b506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555043601781905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611112611172565b73ffffffffffffffffffffffffffffffffffffffff1614611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f906127ec565b60405180910390fd5b611170612052565b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90612cb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90612d43565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161132f9190612424565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a190612dd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90612e5f565b60405180910390fd5b5f811161145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190612eed565b60405180910390fd5b5f601660029054906101000a900460ff1680156114835750601660039054906101000a900460ff165b80156114a457506114a160185460175461208a90919063ffffffff16565b43115b156114b2576114b1612052565b5b6114ba610abb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561152857506114f8610abb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a3a57611569606461155b600954600d54116115485760075461154c565b6008545b856120e790919063ffffffff16565b61215e90919063ffffffff16565b905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611614575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611667575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611721576012548211156116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890612f55565b60405180910390fd5b601354826116be856107c0565b6116c89190612f73565b1115611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170090612ff0565b60405180910390fd5b600d5f81548092919061171b9061300e565b91905055505b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117c5575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561182357601354826117d7856107c0565b6117e19190612f73565b1115611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990612ff0565b60405180910390fd5b5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118ab57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118ef576118ec60646118de600c54600d54116118cb57600a546118cf565b600b545b856120e790919063ffffffff16565b61215e90919063ffffffff16565b90505b5f6118f9306107c0565b905060165f9054906101000a900460ff16158015611963575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561197b5750601660019054906101000a900460ff165b801561198a5750601054600d54115b8015611997575060145481115b15611a3857600f544311156119ae575f600e819055505b601154600e54106119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb9061309f565b60405180910390fd5b600e5f815480929190611a069061300e565b919050555043600f81905550611a2f611a2a84611a25846015546121a7565b6121a7565b611ded565b611a37611d4c565b5b505b5f811115611b3957611a928160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461208a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b309190612424565b60405180910390a35b611b898260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121bf90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c2c611be082846121bf90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461208a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ccf84866121bf90919063ffffffff16565b604051611cdc9190612424565b60405180910390a350505050565b5f838311158290611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2891906122f3565b60405180910390fd5b505f8385611d3f91906130bd565b9050809150509392505050565b5f4790505f8103611d5d5750611deb565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611da39061311d565b5f6040518083038185875af1925050503d805f8114611ddd576040519150601f19603f3d011682016040523d82523d5f602084013e611de2565b606091505b50508091505050505b565b600160165f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e2357611e22613131565b5b604051908082528060200260200182016040528015611e515781602001602082028036833780820191505090505b50905030815f81518110611e6857611e6761315e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f309190612aee565b81600181518110611f4457611f4361315e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611faa3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611179565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161200c959493929190613242565b5f604051808303815f87803b158015612023575f80fd5b505af1925050508015612034575060015b50505f60165f6101000a81548160ff02191690831515021790555050565b61205a610422565b601281905550612068610422565b6013819055505f601660036101000a81548160ff021916908315150217905550565b5f8082846120989190612f73565b9050838110156120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d4906132e4565b60405180910390fd5b8091505092915050565b5f8083036120f7575f9050612158565b5f82846121049190612761565b9050828482612113919061332f565b14612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a906133cf565b60405180910390fd5b809150505b92915050565b5f61219f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612208565b905092915050565b5f8183116121b557826121b7565b815b905092915050565b5f61220083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cea565b905092915050565b5f808311829061224e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224591906122f3565b60405180910390fd5b505f838561225c919061332f565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122a0578082015181840152602081019050612285565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122c582612269565b6122cf8185612273565b93506122df818560208601612283565b6122e8816122ab565b840191505092915050565b5f6020820190508181035f83015261230b81846122bb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61234082612317565b9050919050565b61235081612336565b811461235a575f80fd5b50565b5f8135905061236b81612347565b92915050565b5f819050919050565b61238381612371565b811461238d575f80fd5b50565b5f8135905061239e8161237a565b92915050565b5f80604083850312156123ba576123b9612313565b5b5f6123c78582860161235d565b92505060206123d885828601612390565b9150509250929050565b5f8115159050919050565b6123f6816123e2565b82525050565b5f60208201905061240f5f8301846123ed565b92915050565b61241e81612371565b82525050565b5f6020820190506124375f830184612415565b92915050565b5f805f6060848603121561245457612453612313565b5b5f6124618682870161235d565b93505060206124728682870161235d565b925050604061248386828701612390565b9150509250925092565b5f80604083850312156124a3576124a2612313565b5b5f6124b085828601612390565b92505060206124c185828601612390565b9150509250929050565b5f60ff82169050919050565b6124e0816124cb565b82525050565b5f6020820190506124f95f8301846124d7565b92915050565b5f6020828403121561251457612513612313565b5b5f6125218482850161235d565b91505092915050565b5f6020828403121561253f5761253e612313565b5b5f61254c84828501612390565b91505092915050565b61255e81612336565b82525050565b5f6020820190506125775f830184612555565b92915050565b5f806040838503121561259357612592612313565b5b5f6125a08582860161235d565b92505060206125b18582860161235d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561263d57808604811115612619576126186125bb565b5b60018516156126285780820291505b8081029050612636856125e8565b94506125fd565b94509492505050565b5f826126555760019050612710565b81612662575f9050612710565b81600181146126785760028114612682576126b1565b6001915050612710565b60ff841115612694576126936125bb565b5b8360020a9150848211156126ab576126aa6125bb565b5b50612710565b5060208310610133831016604e8410600b84101617156126e65782820a9050838111156126e1576126e06125bb565b5b612710565b6126f384848460016125f4565b9250905081840481111561270a576127096125bb565b5b81810290505b9392505050565b5f61272182612371565b915061272c836124cb565b92506127597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612646565b905092915050565b5f61276b82612371565b915061277683612371565b925082820261278481612371565b9150828204841483151761279b5761279a6125bb565b5b5092915050565b7f43616c6c6572206e6f7420617574686f72697a656400000000000000000000005f82015250565b5f6127d6601583612273565b91506127e1826127a2565b602082019050919050565b5f6020820190508181035f830152612803816127ca565b9050919050565b7f4e657720627579207461782063616e6e6f74206578636565642063757272656e5f8201527f7420627579207461780000000000000000000000000000000000000000000000602082015250565b5f612864602983612273565b915061286f8261280a565b604082019050919050565b5f6020820190508181035f83015261289181612858565b9050919050565b7f4e65772073656c6c207461782063616e6e6f74206578636565642063757272655f8201527f6e742073656c6c20746178000000000000000000000000000000000000000000602082015250565b5f6128f2602b83612273565b91506128fd82612898565b604082019050919050565b5f6020820190508181035f83015261291f816128e6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61295a602083612273565b915061296582612926565b602082019050919050565b5f6020820190508181035f8301526129878161294e565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e6365005f82015250565b5f6129c2601f83612273565b91506129cd8261298e565b602082019050919050565b5f6020820190508181035f8301526129ef816129b6565b9050919050565b5f604082019050612a095f830185612555565b612a166020830184612415565b9392505050565b612a26816123e2565b8114612a30575f80fd5b50565b5f81519050612a4181612a1d565b92915050565b5f60208284031215612a5c57612a5b612313565b5b5f612a6984828501612a33565b91505092915050565b7f54726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f612aa6601483612273565b9150612ab182612a72565b602082019050919050565b5f6020820190508181035f830152612ad381612a9a565b9050919050565b5f81519050612ae881612347565b92915050565b5f60208284031215612b0357612b02612313565b5b5f612b1084828501612ada565b91505092915050565b5f604082019050612b2c5f830185612555565b612b396020830184612555565b9392505050565b5f819050919050565b5f819050919050565b5f612b6c612b67612b6284612b40565b612b49565b612371565b9050919050565b612b7c81612b52565b82525050565b5f60c082019050612b955f830189612555565b612ba26020830188612415565b612baf6040830187612b73565b612bbc6060830186612b73565b612bc96080830185612555565b612bd660a0830184612415565b979650505050505050565b5f81519050612bef8161237a565b92915050565b5f805f60608486031215612c0c57612c0b612313565b5b5f612c1986828701612be1565b9350506020612c2a86828701612be1565b9250506040612c3b86828701612be1565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c9f602483612273565b9150612caa82612c45565b604082019050919050565b5f6020820190508181035f830152612ccc81612c93565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d2d602283612273565b9150612d3882612cd3565b604082019050919050565b5f6020820190508181035f830152612d5a81612d21565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dbb602583612273565b9150612dc682612d61565b604082019050919050565b5f6020820190508181035f830152612de881612daf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e49602383612273565b9150612e5482612def565b604082019050919050565b5f6020820190508181035f830152612e7681612e3d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ed7602983612273565b9150612ee282612e7d565b604082019050919050565b5f6020820190508181035f830152612f0481612ecb565b9050919050565b7f4578636565647320746865206d617820545820616d6f756e74000000000000005f82015250565b5f612f3f601983612273565b9150612f4a82612f0b565b602082019050919050565b5f6020820190508181035f830152612f6c81612f33565b9050919050565b5f612f7d82612371565b9150612f8883612371565b9250828201905080821115612fa057612f9f6125bb565b5b92915050565b7f4578636565647320746865206d61782077616c6c657420616d6f756e740000005f82015250565b5f612fda601d83612273565b9150612fe582612fa6565b602082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b5f61301882612371565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304a576130496125bb565b5b600182019050919050565b7f4d61782073656c6c732070657220626c6f636b206578636565646564000000005f82015250565b5f613089601c83612273565b915061309482613055565b602082019050919050565b5f6020820190508181035f8301526130b68161307d565b9050919050565b5f6130c782612371565b91506130d283612371565b92508282039050818111156130ea576130e96125bb565b5b92915050565b5f81905092915050565b50565b5f6131085f836130f0565b9150613113826130fa565b5f82019050919050565b5f613127826130fd565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131bd81612336565b82525050565b5f6131ce83836131b4565b60208301905092915050565b5f602082019050919050565b5f6131f08261318b565b6131fa8185613195565b9350613205836131a5565b805f5b8381101561323557815161321c88826131c3565b9750613227836131da565b925050600181019050613208565b5085935050505092915050565b5f60a0820190506132555f830188612415565b6132626020830187612b73565b818103604083015261327481866131e6565b90506132836060830185612555565b6132906080830184612415565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132ce601b83612273565b91506132d98261329a565b602082019050919050565b5f6020820190508181035f8301526132fb816132c2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61333982612371565b915061334483612371565b92508261335457613353613302565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133b9602183612273565b91506133c48261335f565b604082019050919050565b5f6020820190508181035f8301526133e6816133ad565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084214fb7dd09b5fd0348f8c211f889c842a8f1241d7efc23cc2af2d6901e373a64736f6c63430008160033

Deployed Bytecode

0x608060405260043610610101575f3560e01c806370a082311161009457806395d89b411161006357806395d89b41146102fa578063a9059cbb14610324578063c9567bf914610360578063dd62ed3e14610376578063f928364c146103b257610108565b806370a0823114610256578063715018a614610292578063876193d4146102a85780638da5cb5b146102d057610108565b80632c09e444116100d05780632c09e444146101d85780632ff5fe1e146101ee578063313ce5671461021657806351bc3c851461024057610108565b806306fdde031461010c578063095ea7b31461013657806318160ddd1461017257806323b872dd1461019c57610108565b3661010857005b5f80fd5b348015610117575f80fd5b506101206103c8565b60405161012d91906122f3565b60405180910390f35b348015610141575f80fd5b5061015c600480360381019061015791906123a4565b610405565b60405161016991906123fc565b60405180910390f35b34801561017d575f80fd5b50610186610422565b6040516101939190612424565b60405180910390f35b3480156101a7575f80fd5b506101c260048036038101906101bd919061243d565b610445565b6040516101cf91906123fc565b60405180910390f35b3480156101e3575f80fd5b506101ec610519565b005b3480156101f9575f80fd5b50610214600480360381019061020f919061248d565b6105b9565b005b348015610221575f80fd5b5061022a6106f9565b60405161023791906124e6565b60405180910390f35b34801561024b575f80fd5b50610254610701565b005b348015610261575f80fd5b5061027c600480360381019061027791906124ff565b6107c0565b6040516102899190612424565b60405180910390f35b34801561029d575f80fd5b506102a6610806565b005b3480156102b3575f80fd5b506102ce60048036038101906102c9919061252a565b610954565b005b3480156102db575f80fd5b506102e4610abb565b6040516102f19190612564565b60405180910390f35b348015610305575f80fd5b5061030e610ae2565b60405161031b91906122f3565b60405180910390f35b34801561032f575f80fd5b5061034a600480360381019061034591906123a4565b610b1f565b60405161035791906123fc565b60405180910390f35b34801561036b575f80fd5b50610374610b3c565b005b348015610381575f80fd5b5061039c6004803603810190610397919061257d565b611050565b6040516103a99190612424565b60405180910390f35b3480156103bd575f80fd5b506103c66110d2565b005b60606040518060400160405280600c81526020017f426f6f6b206f6620534849420000000000000000000000000000000000000000815250905090565b5f610418610411611172565b8484611179565b6001905092915050565b5f6009600a6104319190612717565b633b9aca006104409190612761565b905090565b5f61045184848461133c565b61050e8461045d611172565b610509856040518060600160405280602881526020016133ee6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104c0611172565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cea9092919063ffffffff16565b611179565b600190509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610559611172565b73ffffffffffffffffffffffffffffffffffffffff16146105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a6906127ec565b60405180910390fd5b6105b7611d4c565b565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105f9611172565b73ffffffffffffffffffffffffffffffffffffffff161461064f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610646906127ec565b60405180910390fd5b600854821115610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068b9061287a565b60405180910390fd5b600b548111156106d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d090612908565b60405180910390fd5b8160078190555080600a819055508160088190555080600b819055505050565b5f6009905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610741611172565b73ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e906127ec565b60405180910390fd5b5f6107a1306107c0565b90505f8111156107bd576107b481611ded565b6107bc611d4c565b5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61080e611172565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089190612970565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610994611172565b73ffffffffffffffffffffffffffffffffffffffff16146109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e1906127ec565b60405180910390fd5b6109f3306107c0565b811115610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c906129d8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610a59611172565b836040518363ffffffff1660e01b8152600401610a779291906129f6565b6020604051808303815f875af1158015610a93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab79190612a47565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f424f534800000000000000000000000000000000000000000000000000000000815250905090565b5f610b32610b2b611172565b848461133c565b6001905092915050565b610b44611172565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc790612970565b60405180910390fd5b601660029054906101000a900460ff1615610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790612abc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ca73060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ca2610422565b611179565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190612aee565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddf9190612aee565b6040518363ffffffff1660e01b8152600401610dfc929190612b19565b6020604051808303815f875af1158015610e18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c9190612aee565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610ec3306107c0565b5f80610ecd610abb565b426040518863ffffffff1660e01b8152600401610eef96959493929190612b82565b60606040518083038185885af1158015610f0b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f309190612bf5565b50505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610fd09291906129f6565b6020604051808303815f875af1158015610fec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110109190612a47565b506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555043601781905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611112611172565b73ffffffffffffffffffffffffffffffffffffffff1614611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f906127ec565b60405180910390fd5b611170612052565b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90612cb5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90612d43565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161132f9190612424565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a190612dd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90612e5f565b60405180910390fd5b5f811161145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190612eed565b60405180910390fd5b5f601660029054906101000a900460ff1680156114835750601660039054906101000a900460ff165b80156114a457506114a160185460175461208a90919063ffffffff16565b43115b156114b2576114b1612052565b5b6114ba610abb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561152857506114f8610abb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a3a57611569606461155b600954600d54116115485760075461154c565b6008545b856120e790919063ffffffff16565b61215e90919063ffffffff16565b905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611614575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611667575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611721576012548211156116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890612f55565b60405180910390fd5b601354826116be856107c0565b6116c89190612f73565b1115611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170090612ff0565b60405180910390fd5b600d5f81548092919061171b9061300e565b91905055505b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117c5575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561182357601354826117d7856107c0565b6117e19190612f73565b1115611822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181990612ff0565b60405180910390fd5b5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118ab57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118ef576118ec60646118de600c54600d54116118cb57600a546118cf565b600b545b856120e790919063ffffffff16565b61215e90919063ffffffff16565b90505b5f6118f9306107c0565b905060165f9054906101000a900460ff16158015611963575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561197b5750601660019054906101000a900460ff165b801561198a5750601054600d54115b8015611997575060145481115b15611a3857600f544311156119ae575f600e819055505b601154600e54106119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb9061309f565b60405180910390fd5b600e5f815480929190611a069061300e565b919050555043600f81905550611a2f611a2a84611a25846015546121a7565b6121a7565b611ded565b611a37611d4c565b5b505b5f811115611b3957611a928160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461208a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b309190612424565b60405180910390a35b611b898260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121bf90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c2c611be082846121bf90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461208a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ccf84866121bf90919063ffffffff16565b604051611cdc9190612424565b60405180910390a350505050565b5f838311158290611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2891906122f3565b60405180910390fd5b505f8385611d3f91906130bd565b9050809150509392505050565b5f4790505f8103611d5d5750611deb565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611da39061311d565b5f6040518083038185875af1925050503d805f8114611ddd576040519150601f19603f3d011682016040523d82523d5f602084013e611de2565b606091505b50508091505050505b565b600160165f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e2357611e22613131565b5b604051908082528060200260200182016040528015611e515781602001602082028036833780820191505090505b50905030815f81518110611e6857611e6761315e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f309190612aee565b81600181518110611f4457611f4361315e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611faa3060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611179565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161200c959493929190613242565b5f604051808303815f87803b158015612023575f80fd5b505af1925050508015612034575060015b50505f60165f6101000a81548160ff02191690831515021790555050565b61205a610422565b601281905550612068610422565b6013819055505f601660036101000a81548160ff021916908315150217905550565b5f8082846120989190612f73565b9050838110156120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d4906132e4565b60405180910390fd5b8091505092915050565b5f8083036120f7575f9050612158565b5f82846121049190612761565b9050828482612113919061332f565b14612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a906133cf565b60405180910390fd5b809150505b92915050565b5f61219f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612208565b905092915050565b5f8183116121b557826121b7565b815b905092915050565b5f61220083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cea565b905092915050565b5f808311829061224e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224591906122f3565b60405180910390fd5b505f838561225c919061332f565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122a0578082015181840152602081019050612285565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122c582612269565b6122cf8185612273565b93506122df818560208601612283565b6122e8816122ab565b840191505092915050565b5f6020820190508181035f83015261230b81846122bb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61234082612317565b9050919050565b61235081612336565b811461235a575f80fd5b50565b5f8135905061236b81612347565b92915050565b5f819050919050565b61238381612371565b811461238d575f80fd5b50565b5f8135905061239e8161237a565b92915050565b5f80604083850312156123ba576123b9612313565b5b5f6123c78582860161235d565b92505060206123d885828601612390565b9150509250929050565b5f8115159050919050565b6123f6816123e2565b82525050565b5f60208201905061240f5f8301846123ed565b92915050565b61241e81612371565b82525050565b5f6020820190506124375f830184612415565b92915050565b5f805f6060848603121561245457612453612313565b5b5f6124618682870161235d565b93505060206124728682870161235d565b925050604061248386828701612390565b9150509250925092565b5f80604083850312156124a3576124a2612313565b5b5f6124b085828601612390565b92505060206124c185828601612390565b9150509250929050565b5f60ff82169050919050565b6124e0816124cb565b82525050565b5f6020820190506124f95f8301846124d7565b92915050565b5f6020828403121561251457612513612313565b5b5f6125218482850161235d565b91505092915050565b5f6020828403121561253f5761253e612313565b5b5f61254c84828501612390565b91505092915050565b61255e81612336565b82525050565b5f6020820190506125775f830184612555565b92915050565b5f806040838503121561259357612592612313565b5b5f6125a08582860161235d565b92505060206125b18582860161235d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561263d57808604811115612619576126186125bb565b5b60018516156126285780820291505b8081029050612636856125e8565b94506125fd565b94509492505050565b5f826126555760019050612710565b81612662575f9050612710565b81600181146126785760028114612682576126b1565b6001915050612710565b60ff841115612694576126936125bb565b5b8360020a9150848211156126ab576126aa6125bb565b5b50612710565b5060208310610133831016604e8410600b84101617156126e65782820a9050838111156126e1576126e06125bb565b5b612710565b6126f384848460016125f4565b9250905081840481111561270a576127096125bb565b5b81810290505b9392505050565b5f61272182612371565b915061272c836124cb565b92506127597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612646565b905092915050565b5f61276b82612371565b915061277683612371565b925082820261278481612371565b9150828204841483151761279b5761279a6125bb565b5b5092915050565b7f43616c6c6572206e6f7420617574686f72697a656400000000000000000000005f82015250565b5f6127d6601583612273565b91506127e1826127a2565b602082019050919050565b5f6020820190508181035f830152612803816127ca565b9050919050565b7f4e657720627579207461782063616e6e6f74206578636565642063757272656e5f8201527f7420627579207461780000000000000000000000000000000000000000000000602082015250565b5f612864602983612273565b915061286f8261280a565b604082019050919050565b5f6020820190508181035f83015261289181612858565b9050919050565b7f4e65772073656c6c207461782063616e6e6f74206578636565642063757272655f8201527f6e742073656c6c20746178000000000000000000000000000000000000000000602082015250565b5f6128f2602b83612273565b91506128fd82612898565b604082019050919050565b5f6020820190508181035f83015261291f816128e6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61295a602083612273565b915061296582612926565b602082019050919050565b5f6020820190508181035f8301526129878161294e565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e6365005f82015250565b5f6129c2601f83612273565b91506129cd8261298e565b602082019050919050565b5f6020820190508181035f8301526129ef816129b6565b9050919050565b5f604082019050612a095f830185612555565b612a166020830184612415565b9392505050565b612a26816123e2565b8114612a30575f80fd5b50565b5f81519050612a4181612a1d565b92915050565b5f60208284031215612a5c57612a5b612313565b5b5f612a6984828501612a33565b91505092915050565b7f54726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f612aa6601483612273565b9150612ab182612a72565b602082019050919050565b5f6020820190508181035f830152612ad381612a9a565b9050919050565b5f81519050612ae881612347565b92915050565b5f60208284031215612b0357612b02612313565b5b5f612b1084828501612ada565b91505092915050565b5f604082019050612b2c5f830185612555565b612b396020830184612555565b9392505050565b5f819050919050565b5f819050919050565b5f612b6c612b67612b6284612b40565b612b49565b612371565b9050919050565b612b7c81612b52565b82525050565b5f60c082019050612b955f830189612555565b612ba26020830188612415565b612baf6040830187612b73565b612bbc6060830186612b73565b612bc96080830185612555565b612bd660a0830184612415565b979650505050505050565b5f81519050612bef8161237a565b92915050565b5f805f60608486031215612c0c57612c0b612313565b5b5f612c1986828701612be1565b9350506020612c2a86828701612be1565b9250506040612c3b86828701612be1565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c9f602483612273565b9150612caa82612c45565b604082019050919050565b5f6020820190508181035f830152612ccc81612c93565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d2d602283612273565b9150612d3882612cd3565b604082019050919050565b5f6020820190508181035f830152612d5a81612d21565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dbb602583612273565b9150612dc682612d61565b604082019050919050565b5f6020820190508181035f830152612de881612daf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e49602383612273565b9150612e5482612def565b604082019050919050565b5f6020820190508181035f830152612e7681612e3d565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ed7602983612273565b9150612ee282612e7d565b604082019050919050565b5f6020820190508181035f830152612f0481612ecb565b9050919050565b7f4578636565647320746865206d617820545820616d6f756e74000000000000005f82015250565b5f612f3f601983612273565b9150612f4a82612f0b565b602082019050919050565b5f6020820190508181035f830152612f6c81612f33565b9050919050565b5f612f7d82612371565b9150612f8883612371565b9250828201905080821115612fa057612f9f6125bb565b5b92915050565b7f4578636565647320746865206d61782077616c6c657420616d6f756e740000005f82015250565b5f612fda601d83612273565b9150612fe582612fa6565b602082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b5f61301882612371565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304a576130496125bb565b5b600182019050919050565b7f4d61782073656c6c732070657220626c6f636b206578636565646564000000005f82015250565b5f613089601c83612273565b915061309482613055565b602082019050919050565b5f6020820190508181035f8301526130b68161307d565b9050919050565b5f6130c782612371565b91506130d283612371565b92508282039050818111156130ea576130e96125bb565b5b92915050565b5f81905092915050565b50565b5f6131085f836130f0565b9150613113826130fa565b5f82019050919050565b5f613127826130fd565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131bd81612336565b82525050565b5f6131ce83836131b4565b60208301905092915050565b5f602082019050919050565b5f6131f08261318b565b6131fa8185613195565b9350613205836131a5565b805f5b8381101561323557815161321c88826131c3565b9750613227836131da565b925050600181019050613208565b5085935050505092915050565b5f60a0820190506132555f830188612415565b6132626020830187612b73565b818103604083015261327481866131e6565b90506132836060830185612555565b6132906080830184612415565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132ce601b83612273565b91506132d98261329a565b602082019050919050565b5f6020820190508181035f8301526132fb816132c2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61333982612371565b915061334483612371565b92508261335457613353613302565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133b9602183612273565b91506133c48261335f565b604082019050919050565b5f6020820190508181035f8301526133e6816133ad565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084214fb7dd09b5fd0348f8c211f889c842a8f1241d7efc23cc2af2d6901e373a64736f6c63430008160033

Deployed Bytecode Sourcemap

3627:10270:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6622:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7460:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6899:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7629:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12680:82;;;;;;;;;;;;;:::i;:::-;;11994:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6808:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12413:259;;;;;;;;;;;;;:::i;:::-;;7007:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2603:148;;;;;;;;;;;;;:::i;:::-;;12770:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2389:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6713:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7134:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13020:837;;;;;;;;;;;;;:::i;:::-;;7309:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11903:83;;;;;;;;;;;;;:::i;:::-;;6622;6659:13;6692:5;;;;;;;;;;;;;;;;;6685:12;;6622:83;:::o;7460:161::-;7535:4;7552:39;7561:12;:10;:12::i;:::-;7575:7;7584:6;7552:8;:39::i;:::-;7609:4;7602:11;;7460:161;;;;:::o;6899:100::-;6952:7;3862:1;3927:2;:15;;;;:::i;:::-;3910:13;:33;;;;:::i;:::-;6972:19;;6899:100;:::o;7629:313::-;7727:4;7744:36;7754:6;7762:9;7773:6;7744:9;:36::i;:::-;7791:121;7800:6;7808:12;:10;:12::i;:::-;7822:89;7860:6;7822:89;;;;;;;;;;;;;;;;;:11;:19;7834:6;7822:19;;;;;;;;;;;;;;;:33;7842:12;:10;:12::i;:::-;7822:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7791:8;:121::i;:::-;7930:4;7923:11;;7629:313;;;;;:::o;12680:82::-;5267:10;;;;;;;;;;;5251:26;;:12;:10;:12::i;:::-;:26;;;5243:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12739:15:::1;:13;:15::i;:::-;12680:82::o:0;11994:411::-;5267:10;;;;;;;;;;;5251:26;;:12;:10;:12::i;:::-;:26;;;5243:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12103:12:::1;;12092:7;:23;;12084:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;12192:13;;12180:8;:25;;12172:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12283:7;12266:14;:24;;;;12319:8;12301:15;:26;;;;12355:7;12340:12;:22;;;;12389:8;12373:13;:24;;;;11994:411:::0;;:::o;6808:83::-;6849:5;3862:1;6867:16;;6808:83;:::o;12413:259::-;5267:10;;;;;;;;;;;5251:26;;:12;:10;:12::i;:::-;:26;;;5243:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12469:28:::1;12500:24;12518:4;12500:9;:24::i;:::-;12469:55;;12564:1;12541:20;:24;12537:128;;;12582:39;12600:20;12582:17;:39::i;:::-;12638:15;:13;:15::i;:::-;12537:128;12458:214;12413:259::o:0;7007:119::-;7073:7;7100:9;:18;7110:7;7100:18;;;;;;;;;;;;;;;;7093:25;;7007:119;;;:::o;2603:148::-;2526:12;:10;:12::i;:::-;2516:22;;:6;;;;;;;;;;:22;;;2508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2710:1:::1;2673:40;;2694:6;::::0;::::1;;;;;;;;2673:40;;;;;;;;;;;;2741:1;2724:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2603:148::o:0;12770:242::-;5267:10;;;;;;;;;;;5251:26;;:12;:10;:12::i;:::-;:26;;;5243:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12874:24:::1;12892:4;12874:9;:24::i;:::-;12859:11;:39;;12851:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;12962:4;12947:30;;;12978:12;:10;:12::i;:::-;12992:11;12947:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12770:242:::0;:::o;2389:79::-;2427:7;2454:6;;;;;;;;;;;2447:13;;2389:79;:::o;6713:87::-;6752:13;6785:7;;;;;;;;;;;;;;;;;6778:14;;6713:87;:::o;7134:167::-;7212:4;7229:42;7239:12;:10;:12::i;:::-;7253:9;7264:6;7229:9;:42::i;:::-;7289:4;7282:11;;7134:167;;;;:::o;13020:837::-;2526:12;:10;:12::i;:::-;2516:22;;:6;;;;;;;;;;:22;;;2508:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13082:15:::1;;;;;;;;;;;13081:16;13073:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13173:42;13135:16;;:81;;;;;;;;;;;;;;;;;;13229:65;13246:4;13261:16;;;;;;;;;;;13280:13;:11;:13::i;:::-;13229:8;:65::i;:::-;13342:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13324:56;;;13389:4;13396:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13324:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13307:14;;:113;;;;;;;;;;;;;;;;;;13433:16;;;;;;;;;;;:32;;;13473:21;13518:4;13538:24;13556:4;13538:9;:24::i;:::-;13577:1;13593::::0;13609:7:::1;:5;:7::i;:::-;13631:15;13433:224;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13677:14;;;;;;;;;;;13670:30;;;13709:16;;;;;;;;;;;13728:17;13670:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13774:4;13759:12;;:19;;;;;;;;;;;;;;;;;;13807:4;13789:15;;:22;;;;;;;;;;;;;;;;;;13837:12;13822;:27;;;;13020:837::o:0;7309:143::-;7390:7;7417:11;:18;7429:5;7417:18;;;;;;;;;;;;;;;:27;7436:7;7417:27;;;;;;;;;;;;;;;;7410:34;;7309:143;;;;:::o;11903:83::-;5267:10;;;;;;;;;;;5251:26;;:12;:10;:12::i;:::-;:26;;;5243:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11962:16:::1;:14;:16::i;:::-;11903:83::o:0;221:98::-;274:7;301:10;294:17;;221:98;:::o;7950:335::-;8060:1;8043:19;;:5;:19;;;8035:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8141:1;8122:21;;:7;:21;;;8114:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8223:6;8193:11;:18;8205:5;8193:18;;;;;;;;;;;;;;;:27;8212:7;8193:27;;;;;;;;;;;;;;;:36;;;;8261:7;8245:32;;8254:5;8245:32;;;8270:6;8245:32;;;;;;:::i;:::-;;;;;;;;7950:335;;;:::o;8293:2517::-;8397:1;8381:18;;:4;:18;;;8373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8474:1;8460:16;;:2;:16;;;8452:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8544:1;8535:6;:10;8527:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8604:17;8642:15;;;;;;;;;;;:33;;;;;8661:14;;;;;;;;;;;8642:33;:94;;;;;8694:42;8711:24;;8694:12;;:16;;:42;;;;:::i;:::-;8679:12;:57;8642:94;8638:143;;;8753:16;:14;:16::i;:::-;8638:143;8805:7;:5;:7::i;:::-;8797:15;;:4;:15;;;;:32;;;;;8822:7;:5;:7::i;:::-;8816:13;;:2;:13;;;;8797:32;8793:1640;;;8858:82;8936:3;8858:73;8882:15;;8870:9;;:27;8869:61;;8916:14;;8869:61;;;8901:12;;8869:61;8858:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8846:94;;8969:14;;;;;;;;;;;8961:22;;:4;:22;;;:57;;;;;9001:16;;;;;;;;;;;8987:31;;:2;:31;;;;8961:57;:84;;;;;9023:18;:22;9042:2;9023:22;;;;;;;;;;;;;;;;;;;;;;;;;9022:23;8961:84;8957:320;;;9084:12;;9074:6;:22;;9066:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9179:16;;9169:6;9153:13;9163:2;9153:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;9145:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;9250:9;;:11;;;;;;;;;:::i;:::-;;;;;;8957:320;9303:14;;;;;;;;;;;9297:20;;:2;:20;;;;:47;;;;;9322:18;:22;9341:2;9322:22;;;;;;;;;;;;;;;;;;;;;;;;;9321:23;9297:47;9293:172;;;9399:16;;9389:6;9373:13;9383:2;9373:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;9365:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;9293:172;9491:14;;;;;;;;;;;9485:20;;:2;:20;;;:45;;;;;9525:4;9509:21;;:4;:21;;;;9485:45;9481:183;;;9563:85;9644:3;9563:76;9587:16;;9575:9;;:28;9574:64;;9623:15;;9574:64;;;9607:13;;9574:64;9563:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9551:97;;9481:183;9680:28;9711:24;9729:4;9711:9;:24::i;:::-;9680:55;;9775:7;;;;;;;;;;;9774:8;:50;;;;;9810:14;;;;;;;;;;;9804:20;;:2;:20;;;9774:50;:84;;;;;9846:12;;;;;;;;;;;9774:84;:136;;;;;9892:18;;9880:9;;:30;9774:136;:201;;;;;9955:20;;9932;:43;9774:201;9752:670;;;10029:14;;10014:12;:29;10010:92;;;10081:1;10068:10;:14;;;;10010:92;10143:17;;10130:10;;:30;10122:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10214:10;;:12;;;;;;;;;:::i;:::-;;;;;;10262;10245:14;:29;;;;10295:75;10313:56;10318:6;10326:42;10331:20;10353:14;;10326:4;:42::i;:::-;10313:4;:56::i;:::-;10295:17;:75::i;:::-;10391:15;:13;:15::i;:::-;9752:670;8831:1602;8793:1640;10461:1;10449:9;:13;10445:174;;;10506:39;10535:9;10506;:24;10524:4;10506:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10479:9;:24;10497:4;10479:24;;;;;;;;;;;;;;;:66;;;;10590:4;10567:40;;10576:4;10567:40;;;10597:9;10567:40;;;;;;:::i;:::-;;;;;;;;10445:174;10649:27;10669:6;10649:9;:15;10659:4;10649:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10631:9;:15;10641:4;10631:15;;;;;;;;;;;;;;;:45;;;;10703:40;10721:21;10732:9;10721:6;:10;;:21;;;;:::i;:::-;10703:9;:13;10713:2;10703:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10687:9;:13;10697:2;10687:13;;;;;;;;;;;;;;;:56;;;;10776:2;10761:41;;10770:4;10761:41;;;10780:21;10791:9;10780:6;:10;;:21;;;;:::i;:::-;10761:41;;;;;;:::i;:::-;;;;;;;;8362:2448;8293:2517;;;:::o;1372:190::-;1458:7;1491:1;1486;:6;;1494:12;1478:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1518:9;1534:1;1530;:5;;;;:::i;:::-;1518:17;;1553:1;1546:8;;;1372:190;;;;;:::o;11448:280::-;11492:26;11521:21;11492:50;;11581:1;11559:18;:23;11555:62;;11599:7;;;11555:62;11629:12;11673:10;;;;;;;;;;;11665:24;;11697:18;11665:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11652:68;;;;;11481:247;;11448:280;:::o;10934:506::-;5375:4;5365:7;;:14;;;;;;;;;;;;;;;;;;11013:21:::1;11051:1;11037:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11013:40;;11082:4;11064;11069:1;11064:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11108:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11098:4;11103:1;11098:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;::::0;::::1;11144:63;11161:4;11176:16;;;;;;;;;;;11195:11;11144:8;:63::i;:::-;11224:16;;;;;;;;;;;:67;;;11306:11;11332:1;11348:4;11375;11395:15;11224:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;11220:213:::0;11002:438:::1;5412:5:::0;5402:7;;:15;;;;;;;;;;;;;;;;;;10934:506;:::o;11736:159::-;11796:13;:11;:13::i;:::-;11781:12;:28;;;;11839:13;:11;:13::i;:::-;11820:16;:32;;;;11882:5;11865:14;;:22;;;;;;;;;;;;;;;;;;11736:159::o;1041:179::-;1099:7;1119:9;1135:1;1131;:5;;;;:::i;:::-;1119:17;;1160:1;1155;:6;;1147:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1211:1;1204:8;;;1041:179;;;;:::o;1570:246::-;1628:7;1657:1;1652;:6;1648:47;;1682:1;1675:8;;;;1648:47;1705:9;1721:1;1717;:5;;;;:::i;:::-;1705:17;;1750:1;1745;1741;:5;;;;:::i;:::-;:10;1733:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1807:1;1800:8;;;1570:246;;;;;:::o;1824:132::-;1882:7;1909:39;1913:1;1916;1909:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1902:46;;1824:132;;;;:::o;10818:108::-;10876:7;10908:1;10904;:5;10903:15;;10917:1;10903:15;;;10913:1;10903:15;10896:22;;10818:108;;;;:::o;1228:136::-;1286:7;1313:43;1317:1;1320;1313:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1306:50;;1228:136;;;;:::o;1964:189::-;2050:7;2082:1;2078;:5;2085:12;2070:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2109:9;2125:1;2121;:5;;;;:::i;:::-;2109:17;;2144:1;2137:8;;;1964: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;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:474::-;4491:6;4499;4548:2;4536:9;4527:7;4523:23;4519:32;4516:119;;;4554:79;;:::i;:::-;4516:119;4674:1;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4645:117;4801:2;4827:53;4872:7;4863:6;4852:9;4848:22;4827:53;:::i;:::-;4817:63;;4772:118;4423:474;;;;;:::o;4903:86::-;4938:7;4978:4;4971:5;4967:16;4956:27;;4903:86;;;:::o;4995:112::-;5078:22;5094:5;5078:22;:::i;:::-;5073:3;5066:35;4995:112;;:::o;5113:214::-;5202:4;5240:2;5229:9;5225:18;5217:26;;5253:67;5317:1;5306:9;5302:17;5293:6;5253:67;:::i;:::-;5113:214;;;;:::o;5333:329::-;5392:6;5441:2;5429:9;5420:7;5416:23;5412:32;5409:119;;;5447:79;;:::i;:::-;5409:119;5567:1;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5538:117;5333:329;;;;:::o;5668:::-;5727:6;5776:2;5764:9;5755:7;5751:23;5747:32;5744:119;;;5782:79;;:::i;:::-;5744:119;5902:1;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5873:117;5668:329;;;;:::o;6003:118::-;6090:24;6108:5;6090:24;:::i;:::-;6085:3;6078:37;6003:118;;:::o;6127:222::-;6220:4;6258:2;6247:9;6243:18;6235:26;;6271:71;6339:1;6328:9;6324:17;6315:6;6271:71;:::i;:::-;6127:222;;;;:::o;6355:474::-;6423:6;6431;6480:2;6468:9;6459:7;6455:23;6451:32;6448:119;;;6486:79;;:::i;:::-;6448:119;6606:1;6631:53;6676:7;6667:6;6656:9;6652:22;6631:53;:::i;:::-;6621:63;;6577:117;6733:2;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6704:118;6355:474;;;;;:::o;6835:180::-;6883:77;6880:1;6873:88;6980:4;6977:1;6970:15;7004:4;7001:1;6994:15;7021:102;7063:8;7110:5;7107:1;7103:13;7082:34;;7021:102;;;:::o;7129:848::-;7190:5;7197:4;7221:6;7212:15;;7245:5;7236:14;;7259:712;7280:1;7270:8;7267:15;7259:712;;;7375:4;7370:3;7366:14;7360:4;7357:24;7354:50;;;7384:18;;:::i;:::-;7354:50;7434:1;7424:8;7420:16;7417:451;;;7849:4;7842:5;7838:16;7829:25;;7417:451;7899:4;7893;7889:15;7881:23;;7929:32;7952:8;7929:32;:::i;:::-;7917:44;;7259:712;;;7129:848;;;;;;;:::o;7983:1073::-;8037:5;8228:8;8218:40;;8249:1;8240:10;;8251:5;;8218:40;8277:4;8267:36;;8294:1;8285:10;;8296:5;;8267:36;8363:4;8411:1;8406:27;;;;8447:1;8442:191;;;;8356:277;;8406:27;8424:1;8415:10;;8426:5;;;8442:191;8487:3;8477:8;8474:17;8471:43;;;8494:18;;:::i;:::-;8471:43;8543:8;8540:1;8536:16;8527:25;;8578:3;8571:5;8568:14;8565:40;;;8585:18;;:::i;:::-;8565:40;8618:5;;;8356:277;;8742:2;8732:8;8729:16;8723:3;8717:4;8714:13;8710:36;8692:2;8682:8;8679:16;8674:2;8668:4;8665:12;8661:35;8645:111;8642:246;;;8798:8;8792:4;8788:19;8779:28;;8833:3;8826:5;8823:14;8820:40;;;8840:18;;:::i;:::-;8820:40;8873:5;;8642:246;8913:42;8951:3;8941:8;8935:4;8932:1;8913:42;:::i;:::-;8898:57;;;;8987:4;8982:3;8978:14;8971:5;8968:25;8965:51;;;8996:18;;:::i;:::-;8965:51;9045:4;9038:5;9034:16;9025:25;;7983:1073;;;;;;:::o;9062:281::-;9120:5;9144:23;9162:4;9144:23;:::i;:::-;9136:31;;9188:25;9204:8;9188:25;:::i;:::-;9176:37;;9232:104;9269:66;9259:8;9253:4;9232:104;:::i;:::-;9223:113;;9062:281;;;;:::o;9349:410::-;9389:7;9412:20;9430:1;9412:20;:::i;:::-;9407:25;;9446:20;9464:1;9446:20;:::i;:::-;9441:25;;9501:1;9498;9494:9;9523:30;9541:11;9523:30;:::i;:::-;9512:41;;9702:1;9693:7;9689:15;9686:1;9683:22;9663:1;9656:9;9636:83;9613:139;;9732:18;;:::i;:::-;9613:139;9397:362;9349:410;;;;:::o;9765:171::-;9905:23;9901:1;9893:6;9889:14;9882:47;9765:171;:::o;9942:366::-;10084:3;10105:67;10169:2;10164:3;10105:67;:::i;:::-;10098:74;;10181:93;10270:3;10181:93;:::i;:::-;10299:2;10294:3;10290:12;10283:19;;9942:366;;;:::o;10314:419::-;10480:4;10518:2;10507:9;10503:18;10495:26;;10567:9;10561:4;10557:20;10553:1;10542:9;10538:17;10531:47;10595:131;10721:4;10595:131;:::i;:::-;10587:139;;10314:419;;;:::o;10739:228::-;10879:34;10875:1;10867:6;10863:14;10856:58;10948:11;10943:2;10935:6;10931:15;10924:36;10739:228;:::o;10973:366::-;11115:3;11136:67;11200:2;11195:3;11136:67;:::i;:::-;11129:74;;11212:93;11301:3;11212:93;:::i;:::-;11330:2;11325:3;11321:12;11314:19;;10973:366;;;:::o;11345:419::-;11511:4;11549:2;11538:9;11534:18;11526:26;;11598:9;11592:4;11588:20;11584:1;11573:9;11569:17;11562:47;11626:131;11752:4;11626:131;:::i;:::-;11618:139;;11345:419;;;:::o;11770:230::-;11910:34;11906:1;11898:6;11894:14;11887:58;11979:13;11974:2;11966:6;11962:15;11955:38;11770:230;:::o;12006:366::-;12148:3;12169:67;12233:2;12228:3;12169:67;:::i;:::-;12162:74;;12245:93;12334:3;12245:93;:::i;:::-;12363:2;12358:3;12354:12;12347:19;;12006:366;;;:::o;12378:419::-;12544:4;12582:2;12571:9;12567:18;12559:26;;12631:9;12625:4;12621:20;12617:1;12606:9;12602:17;12595:47;12659:131;12785:4;12659:131;:::i;:::-;12651:139;;12378:419;;;:::o;12803:182::-;12943:34;12939:1;12931:6;12927:14;12920:58;12803:182;:::o;12991:366::-;13133:3;13154:67;13218:2;13213:3;13154:67;:::i;:::-;13147:74;;13230:93;13319:3;13230:93;:::i;:::-;13348:2;13343:3;13339:12;13332:19;;12991:366;;;:::o;13363:419::-;13529:4;13567:2;13556:9;13552:18;13544:26;;13616:9;13610:4;13606:20;13602:1;13591:9;13587:17;13580:47;13644:131;13770:4;13644:131;:::i;:::-;13636:139;;13363:419;;;:::o;13788:181::-;13928:33;13924:1;13916:6;13912:14;13905:57;13788:181;:::o;13975:366::-;14117:3;14138:67;14202:2;14197:3;14138:67;:::i;:::-;14131:74;;14214:93;14303:3;14214:93;:::i;:::-;14332:2;14327:3;14323:12;14316:19;;13975:366;;;:::o;14347:419::-;14513:4;14551:2;14540:9;14536:18;14528:26;;14600:9;14594:4;14590:20;14586:1;14575:9;14571:17;14564:47;14628:131;14754:4;14628:131;:::i;:::-;14620:139;;14347:419;;;:::o;14772:332::-;14893:4;14931:2;14920:9;14916:18;14908:26;;14944:71;15012:1;15001:9;14997:17;14988:6;14944:71;:::i;:::-;15025:72;15093:2;15082:9;15078:18;15069:6;15025:72;:::i;:::-;14772:332;;;;;:::o;15110:116::-;15180:21;15195:5;15180:21;:::i;:::-;15173:5;15170:32;15160:60;;15216:1;15213;15206:12;15160:60;15110:116;:::o;15232:137::-;15286:5;15317:6;15311:13;15302:22;;15333:30;15357:5;15333:30;:::i;:::-;15232:137;;;;:::o;15375:345::-;15442:6;15491:2;15479:9;15470:7;15466:23;15462:32;15459:119;;;15497:79;;:::i;:::-;15459:119;15617:1;15642:61;15695:7;15686:6;15675:9;15671:22;15642:61;:::i;:::-;15632:71;;15588:125;15375:345;;;;:::o;15726:170::-;15866:22;15862:1;15854:6;15850:14;15843:46;15726:170;:::o;15902:366::-;16044:3;16065:67;16129:2;16124:3;16065:67;:::i;:::-;16058:74;;16141:93;16230:3;16141:93;:::i;:::-;16259:2;16254:3;16250:12;16243:19;;15902:366;;;:::o;16274:419::-;16440:4;16478:2;16467:9;16463:18;16455:26;;16527:9;16521:4;16517:20;16513:1;16502:9;16498:17;16491:47;16555:131;16681:4;16555:131;:::i;:::-;16547:139;;16274:419;;;:::o;16699:143::-;16756:5;16787:6;16781:13;16772:22;;16803:33;16830:5;16803:33;:::i;:::-;16699:143;;;;:::o;16848:351::-;16918:6;16967:2;16955:9;16946:7;16942:23;16938:32;16935:119;;;16973:79;;:::i;:::-;16935:119;17093:1;17118:64;17174:7;17165:6;17154:9;17150:22;17118:64;:::i;:::-;17108:74;;17064:128;16848:351;;;;:::o;17205:332::-;17326:4;17364:2;17353:9;17349:18;17341:26;;17377:71;17445:1;17434:9;17430:17;17421:6;17377:71;:::i;:::-;17458:72;17526:2;17515:9;17511:18;17502:6;17458:72;:::i;:::-;17205:332;;;;;:::o;17543:85::-;17588:7;17617:5;17606:16;;17543:85;;;:::o;17634:60::-;17662:3;17683:5;17676:12;;17634:60;;;:::o;17700:158::-;17758:9;17791:61;17809:42;17818:32;17844:5;17818:32;:::i;:::-;17809:42;:::i;:::-;17791:61;:::i;:::-;17778:74;;17700:158;;;:::o;17864:147::-;17959:45;17998:5;17959:45;:::i;:::-;17954:3;17947:58;17864:147;;:::o;18017:807::-;18266:4;18304:3;18293:9;18289:19;18281:27;;18318:71;18386:1;18375:9;18371:17;18362:6;18318:71;:::i;:::-;18399:72;18467:2;18456:9;18452:18;18443:6;18399:72;:::i;:::-;18481:80;18557:2;18546:9;18542:18;18533:6;18481:80;:::i;:::-;18571;18647:2;18636:9;18632:18;18623:6;18571:80;:::i;:::-;18661:73;18729:3;18718:9;18714:19;18705:6;18661:73;:::i;:::-;18744;18812:3;18801:9;18797:19;18788:6;18744:73;:::i;:::-;18017:807;;;;;;;;;:::o;18830:143::-;18887:5;18918:6;18912:13;18903:22;;18934:33;18961:5;18934:33;:::i;:::-;18830:143;;;;:::o;18979:663::-;19067:6;19075;19083;19132:2;19120:9;19111:7;19107:23;19103:32;19100:119;;;19138:79;;:::i;:::-;19100:119;19258:1;19283:64;19339:7;19330:6;19319:9;19315:22;19283:64;:::i;:::-;19273:74;;19229:128;19396:2;19422:64;19478:7;19469:6;19458:9;19454:22;19422:64;:::i;:::-;19412:74;;19367:129;19535:2;19561:64;19617:7;19608:6;19597:9;19593:22;19561:64;:::i;:::-;19551:74;;19506:129;18979:663;;;;;:::o;19648:223::-;19788:34;19784:1;19776:6;19772:14;19765:58;19857:6;19852:2;19844:6;19840:15;19833:31;19648:223;:::o;19877:366::-;20019:3;20040:67;20104:2;20099:3;20040:67;:::i;:::-;20033:74;;20116:93;20205:3;20116:93;:::i;:::-;20234:2;20229:3;20225:12;20218:19;;19877:366;;;:::o;20249:419::-;20415:4;20453:2;20442:9;20438:18;20430:26;;20502:9;20496:4;20492:20;20488:1;20477:9;20473:17;20466:47;20530:131;20656:4;20530:131;:::i;:::-;20522:139;;20249:419;;;:::o;20674:221::-;20814:34;20810:1;20802:6;20798:14;20791:58;20883:4;20878:2;20870:6;20866:15;20859:29;20674:221;:::o;20901:366::-;21043:3;21064:67;21128:2;21123:3;21064:67;:::i;:::-;21057:74;;21140:93;21229:3;21140:93;:::i;:::-;21258:2;21253:3;21249:12;21242:19;;20901:366;;;:::o;21273:419::-;21439:4;21477:2;21466:9;21462:18;21454:26;;21526:9;21520:4;21516:20;21512:1;21501:9;21497:17;21490:47;21554:131;21680:4;21554:131;:::i;:::-;21546:139;;21273:419;;;:::o;21698:224::-;21838:34;21834:1;21826:6;21822:14;21815:58;21907:7;21902:2;21894:6;21890:15;21883:32;21698:224;:::o;21928:366::-;22070:3;22091:67;22155:2;22150:3;22091:67;:::i;:::-;22084:74;;22167:93;22256:3;22167:93;:::i;:::-;22285:2;22280:3;22276:12;22269:19;;21928:366;;;:::o;22300:419::-;22466:4;22504:2;22493:9;22489:18;22481:26;;22553:9;22547:4;22543:20;22539:1;22528:9;22524:17;22517:47;22581:131;22707:4;22581:131;:::i;:::-;22573:139;;22300:419;;;:::o;22725:222::-;22865:34;22861:1;22853:6;22849:14;22842:58;22934:5;22929:2;22921:6;22917:15;22910:30;22725:222;:::o;22953:366::-;23095:3;23116:67;23180:2;23175:3;23116:67;:::i;:::-;23109:74;;23192:93;23281:3;23192:93;:::i;:::-;23310:2;23305:3;23301:12;23294:19;;22953:366;;;:::o;23325:419::-;23491:4;23529:2;23518:9;23514:18;23506:26;;23578:9;23572:4;23568:20;23564:1;23553:9;23549:17;23542:47;23606:131;23732:4;23606:131;:::i;:::-;23598:139;;23325:419;;;:::o;23750:228::-;23890:34;23886:1;23878:6;23874:14;23867:58;23959:11;23954:2;23946:6;23942:15;23935:36;23750:228;:::o;23984:366::-;24126:3;24147:67;24211:2;24206:3;24147:67;:::i;:::-;24140:74;;24223:93;24312:3;24223:93;:::i;:::-;24341:2;24336:3;24332:12;24325:19;;23984:366;;;:::o;24356:419::-;24522:4;24560:2;24549:9;24545:18;24537:26;;24609:9;24603:4;24599:20;24595:1;24584:9;24580:17;24573:47;24637:131;24763:4;24637:131;:::i;:::-;24629:139;;24356:419;;;:::o;24781:175::-;24921:27;24917:1;24909:6;24905:14;24898:51;24781:175;:::o;24962:366::-;25104:3;25125:67;25189:2;25184:3;25125:67;:::i;:::-;25118:74;;25201:93;25290:3;25201:93;:::i;:::-;25319:2;25314:3;25310:12;25303:19;;24962:366;;;:::o;25334:419::-;25500:4;25538:2;25527:9;25523:18;25515:26;;25587:9;25581:4;25577:20;25573:1;25562:9;25558:17;25551:47;25615:131;25741:4;25615:131;:::i;:::-;25607:139;;25334:419;;;:::o;25759:191::-;25799:3;25818:20;25836:1;25818:20;:::i;:::-;25813:25;;25852:20;25870:1;25852:20;:::i;:::-;25847:25;;25895:1;25892;25888:9;25881:16;;25916:3;25913:1;25910:10;25907:36;;;25923:18;;:::i;:::-;25907:36;25759:191;;;;:::o;25956:179::-;26096:31;26092:1;26084:6;26080:14;26073:55;25956:179;:::o;26141:366::-;26283:3;26304:67;26368:2;26363:3;26304:67;:::i;:::-;26297:74;;26380:93;26469:3;26380:93;:::i;:::-;26498:2;26493:3;26489:12;26482:19;;26141:366;;;:::o;26513:419::-;26679:4;26717:2;26706:9;26702:18;26694:26;;26766:9;26760:4;26756:20;26752:1;26741:9;26737:17;26730:47;26794:131;26920:4;26794:131;:::i;:::-;26786:139;;26513:419;;;:::o;26938:233::-;26977:3;27000:24;27018:5;27000:24;:::i;:::-;26991:33;;27046:66;27039:5;27036:77;27033:103;;27116:18;;:::i;:::-;27033:103;27163:1;27156:5;27152:13;27145:20;;26938:233;;;:::o;27177:178::-;27317:30;27313:1;27305:6;27301:14;27294:54;27177:178;:::o;27361:366::-;27503:3;27524:67;27588:2;27583:3;27524:67;:::i;:::-;27517:74;;27600:93;27689:3;27600:93;:::i;:::-;27718:2;27713:3;27709:12;27702:19;;27361:366;;;:::o;27733:419::-;27899:4;27937:2;27926:9;27922:18;27914:26;;27986:9;27980:4;27976:20;27972:1;27961:9;27957:17;27950:47;28014:131;28140:4;28014:131;:::i;:::-;28006:139;;27733:419;;;:::o;28158:194::-;28198:4;28218:20;28236:1;28218:20;:::i;:::-;28213:25;;28252:20;28270:1;28252:20;:::i;:::-;28247:25;;28296:1;28293;28289:9;28281:17;;28320:1;28314:4;28311:11;28308:37;;;28325:18;;:::i;:::-;28308:37;28158:194;;;;:::o;28358:147::-;28459:11;28496:3;28481:18;;28358:147;;;;:::o;28511:114::-;;:::o;28631:398::-;28790:3;28811:83;28892:1;28887:3;28811:83;:::i;:::-;28804:90;;28903:93;28992:3;28903:93;:::i;:::-;29021:1;29016:3;29012:11;29005:18;;28631:398;;;:::o;29035:379::-;29219:3;29241:147;29384:3;29241:147;:::i;:::-;29234:154;;29405:3;29398:10;;29035:379;;;:::o;29420:180::-;29468:77;29465:1;29458:88;29565:4;29562:1;29555:15;29589:4;29586:1;29579:15;29606:180;29654:77;29651:1;29644:88;29751:4;29748:1;29741:15;29775:4;29772:1;29765:15;29792:114;29859:6;29893:5;29887:12;29877:22;;29792:114;;;:::o;29912:184::-;30011:11;30045:6;30040:3;30033:19;30085:4;30080:3;30076:14;30061:29;;29912:184;;;;:::o;30102:132::-;30169:4;30192:3;30184:11;;30222:4;30217:3;30213:14;30205:22;;30102:132;;;:::o;30240:108::-;30317:24;30335:5;30317:24;:::i;:::-;30312:3;30305:37;30240:108;;:::o;30354:179::-;30423:10;30444:46;30486:3;30478:6;30444:46;:::i;:::-;30522:4;30517:3;30513:14;30499:28;;30354:179;;;;:::o;30539:113::-;30609:4;30641;30636:3;30632:14;30624:22;;30539:113;;;:::o;30688:732::-;30807:3;30836:54;30884:5;30836:54;:::i;:::-;30906:86;30985:6;30980:3;30906:86;:::i;:::-;30899:93;;31016:56;31066:5;31016:56;:::i;:::-;31095:7;31126:1;31111:284;31136:6;31133:1;31130:13;31111:284;;;31212:6;31206:13;31239:63;31298:3;31283:13;31239:63;:::i;:::-;31232:70;;31325:60;31378:6;31325:60;:::i;:::-;31315:70;;31171:224;31158:1;31155;31151:9;31146:14;;31111:284;;;31115:14;31411:3;31404:10;;30812:608;;;30688:732;;;;:::o;31426:831::-;31689:4;31727:3;31716:9;31712:19;31704:27;;31741:71;31809:1;31798:9;31794:17;31785:6;31741:71;:::i;:::-;31822:80;31898:2;31887:9;31883:18;31874:6;31822:80;:::i;:::-;31949:9;31943:4;31939:20;31934:2;31923:9;31919:18;31912:48;31977:108;32080:4;32071:6;31977:108;:::i;:::-;31969:116;;32095:72;32163:2;32152:9;32148:18;32139:6;32095:72;:::i;:::-;32177:73;32245:3;32234:9;32230:19;32221:6;32177:73;:::i;:::-;31426:831;;;;;;;;:::o;32263:177::-;32403:29;32399:1;32391:6;32387:14;32380:53;32263:177;:::o;32446:366::-;32588:3;32609:67;32673:2;32668:3;32609:67;:::i;:::-;32602:74;;32685:93;32774:3;32685:93;:::i;:::-;32803:2;32798:3;32794:12;32787:19;;32446:366;;;:::o;32818:419::-;32984:4;33022:2;33011:9;33007:18;32999:26;;33071:9;33065:4;33061:20;33057:1;33046:9;33042:17;33035:47;33099:131;33225:4;33099:131;:::i;:::-;33091:139;;32818:419;;;:::o;33243:180::-;33291:77;33288:1;33281:88;33388:4;33385:1;33378:15;33412:4;33409:1;33402:15;33429:185;33469:1;33486:20;33504:1;33486:20;:::i;:::-;33481:25;;33520:20;33538:1;33520:20;:::i;:::-;33515:25;;33559:1;33549:35;;33564:18;;:::i;:::-;33549:35;33606:1;33603;33599:9;33594:14;;33429:185;;;;:::o;33620:220::-;33760:34;33756:1;33748:6;33744:14;33737:58;33829:3;33824:2;33816:6;33812:15;33805:28;33620:220;:::o;33846:366::-;33988:3;34009:67;34073:2;34068:3;34009:67;:::i;:::-;34002:74;;34085:93;34174:3;34085:93;:::i;:::-;34203:2;34198:3;34194:12;34187:19;;33846:366;;;:::o;34218:419::-;34384:4;34422:2;34411:9;34407:18;34399:26;;34471:9;34465:4;34461:20;34457:1;34446:9;34442:17;34435:47;34499:131;34625:4;34499:131;:::i;:::-;34491:139;;34218:419;;;:::o

Swarm Source

ipfs://84214fb7dd09b5fd0348f8c211f889c842a8f1241d7efc23cc2af2d6901e373a
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.