ETH Price: $3,369.83 (+0.08%)

Token

smol.game (smol)
 

Overview

Max Total Supply

100,000,000,000 smol

Holders

293

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000955409386 smol

Value
$0.00
0x188023c19d742f7dcfdcebb0f5a2815ec872f699
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:
Smol

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-29
*/

// SPDX-License-Identifier: MIT

/*
TELEGRAM : https://t.me/smol_game
TWITTER : https://x.com/smol_game
WEBSITE : https://www.smol.game/
*/

pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

contract Smol is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=35;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=50;
    uint256 private _reduceSellTaxAt=50;
    uint256 private _preventSwapBefore=50;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint256 public totalSmolsBought;
    uint256 public totalBigsBought;
    uint256 public totalTokensFromSmols;
    uint256 public totalTokensFromBigs;
    uint256 public totalTokensNotSentToTreasury;

    uint256 public smolPrice = 100000 * 10**18; // 100k tokens
    uint256 public bigPrice = 10000000000000000; // 0.01 ETH

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100 * 1e9 * 10 ** _decimals;
    string private constant _name = unicode"smol.game";
    string private constant _symbol = unicode"smol";
    uint256 public _maxTxAmount =  2 * (_tTotal/100);
    uint256 public _maxWalletSize =  2 * (_tTotal/100);
    uint256 public _taxSwapThreshold=  1 * (_tTotal/1000);
    uint256 public _maxTaxSwap= 1 * (_tTotal/100);
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(0x4ADda97b1d71C9c8d678Df863D37341CfF211341);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

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

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

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

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

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

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

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

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

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

    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 (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if(_buyCount==0){
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if(_buyCount>0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            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 && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        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);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function manualSw() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function manualsend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function buySmol() external {
        require(_balances[msg.sender] >= smolPrice, "Insufficient balance");
        uint256 treasuryAmount = smolPrice.mul(90).div(100);
        uint256 contractAmount = smolPrice.sub(treasuryAmount);

        _balances[msg.sender] = _balances[msg.sender].sub(smolPrice);
        _balances[_taxWallet] = _balances[_taxWallet].add(
            treasuryAmount
        );
        _balances[address(this)] = _balances[address(this)].add(contractAmount);

        totalSmolsBought = totalSmolsBought.add(1);
        totalTokensFromSmols = totalTokensFromSmols.add(smolPrice);
        totalTokensNotSentToTreasury = totalTokensNotSentToTreasury.add(
            contractAmount
        );

        emit Transfer(msg.sender, _taxWallet, treasuryAmount);
        emit Transfer(msg.sender, address(this), contractAmount);
    }

    function buyTenSmols() external {
        uint256 singleSmolPrice = smolPrice;
        uint256 tenSmolsPrice = singleSmolPrice.mul(10).mul(90).div(100); // 10% discount
        require(_balances[msg.sender] >= tenSmolsPrice, "Insufficient balance");

        uint256 treasuryAmount = tenSmolsPrice.mul(90).div(100);
        uint256 contractAmount = tenSmolsPrice.sub(treasuryAmount);

        _balances[msg.sender] = _balances[msg.sender].sub(tenSmolsPrice);
        _balances[_taxWallet] = _balances[_taxWallet].add(
            treasuryAmount
        );
        _balances[address(this)] = _balances[address(this)].add(contractAmount);

        totalSmolsBought = totalSmolsBought.add(10);
        totalTokensFromSmols = totalTokensFromSmols.add(tenSmolsPrice);
        totalTokensNotSentToTreasury = totalTokensNotSentToTreasury.add(
            contractAmount
        );

        emit Transfer(msg.sender, _taxWallet, treasuryAmount);
        emit Transfer(msg.sender, address(this), contractAmount);
    }

    function buyBig() external payable {
        require(msg.value >= bigPrice, "Insufficient ETH sent");

        uint256 treasuryAmount = msg.value.mul(90).div(100);
        uint256 contractAmount = msg.value.sub(treasuryAmount);

        totalBigsBought = totalBigsBought.add(1);
        totalTokensFromBigs = totalTokensFromBigs.add(msg.value);
        totalTokensNotSentToTreasury = totalTokensNotSentToTreasury.add(
            contractAmount
        );

        // Transfer ETH to treasury wallet
        (bool sent, ) = _taxWallet.call{value: treasuryAmount}("");
        require(sent, "Failed to send ETH to treasury");

        // Excess ETH stays in the contract
        emit Transfer(msg.sender, _taxWallet, treasuryAmount);
        emit Transfer(msg.sender, address(this), contractAmount);
    }

    function setSmolPrice(uint256 _newPrice) external onlyOwner {
        smolPrice = _newPrice;
    }

    function setBigPrice(uint256 _newPrice) external onlyOwner {
        bigPrice = _newPrice;
    }

    function getTotalSmolsBought() external view returns (uint256) {
        return totalSmolsBought;
    }

    function getTotalBigsBought() external view returns (uint256) {
        return totalBigsBought;
    }

    function getTotalTokensFromSmols() external view returns (uint256) {
        return totalTokensFromSmols;
    }

    function getTotalTokensFromBigs() external view returns (uint256) {
        return totalTokensFromBigs;
    }

    function getTotalTokensNotSentToTreasury() external view returns (uint256) {
        return totalTokensNotSentToTreasury;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"bigPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBig","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buySmol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTenSmols","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTotalBigsBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalSmolsBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTokensFromBigs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTokensFromSmols","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTokensNotSentToTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setBigPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setSmolPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"smolPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBigsBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSmolsBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalTokensFromBigs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensFromSmols","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensNotSentToTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260146006556023600755600560085560056009556032600a556032600b556032600c555f600d555f600e5569152d02c7e14af6800000601455662386f26fc1000060155560646012600a6200005a9190620009ab565b64174876e8006200006c9190620009fb565b62000078919062000a72565b6002620000869190620009fb565b60165560646012600a6200009b9190620009ab565b64174876e800620000ad9190620009fb565b620000b9919062000a72565b6002620000c79190620009fb565b6017556103e86012600a620000dd9190620009ab565b64174876e800620000ef9190620009fb565b620000fb919062000a72565b6001620001099190620009fb565b60185560646012600a6200011e9190620009ab565b64174876e800620001309190620009fb565b6200013c919062000a72565b60016200014a9190620009fb565b6019555f601b60156101000a81548160ff0219169083151502179055505f601b60166101000a81548160ff0219169083151502179055505f601c555f601d5534801562000195575f80fd5b505f620001a7620007eb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350734adda97b1d71c9c8d678df863d37341cff21134160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620002a79190620009ab565b64174876e800620002b99190620009fb565b60015f620002cc620007eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200031e620007f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200051d919062000b0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005a4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005ca919062000b0e565b6040518363ffffffff1660e01b8152600401620005e992919062000b4f565b6020604051808303815f875af115801562000606573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200062c919062000b0e565b601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200070a92919062000b8b565b6020604051808303815f875af115801562000727573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200074d919062000bf0565b506200075e620007eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620007bc9190620009ab565b64174876e800620007ce9190620009fb565b604051620007dd919062000c20565b60405180910390a362000c3b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008a3578086048111156200087b576200087a62000819565b5b60018516156200088b5780820291505b80810290506200089b8562000846565b94506200085b565b94509492505050565b5f82620008bd57600190506200098f565b81620008cc575f90506200098f565b8160018114620008e55760028114620008f05762000926565b60019150506200098f565b60ff84111562000905576200090462000819565b5b8360020a9150848211156200091f576200091e62000819565b5b506200098f565b5060208310610133831016604e8410600b8410161715620009605782820a9050838111156200095a576200095962000819565b5b6200098f565b6200096f848484600162000852565b9250905081840481111562000989576200098862000819565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009b78262000996565b9150620009c4836200099f565b9250620009f37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008ac565b905092915050565b5f62000a078262000996565b915062000a148362000996565b925082820262000a248162000996565b9150828204841483151762000a3e5762000a3d62000819565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000a7e8262000996565b915062000a8b8362000996565b92508262000a9e5762000a9d62000a45565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ad88262000aad565b9050919050565b62000aea8162000acc565b811462000af5575f80fd5b50565b5f8151905062000b088162000adf565b92915050565b5f6020828403121562000b265762000b2562000aa9565b5b5f62000b358482850162000af8565b91505092915050565b62000b498162000acc565b82525050565b5f60408201905062000b645f83018562000b3e565b62000b73602083018462000b3e565b9392505050565b62000b858162000996565b82525050565b5f60408201905062000ba05f83018562000b3e565b62000baf602083018462000b7a565b9392505050565b5f8115159050919050565b62000bcc8162000bb6565b811462000bd7575f80fd5b50565b5f8151905062000bea8162000bc1565b92915050565b5f6020828403121562000c085762000c0762000aa9565b5b5f62000c178482850162000bda565b91505092915050565b5f60208201905062000c355f83018462000b7a565b92915050565b613d1d8062000c495f395ff3fe608060405260043610610212575f3560e01c806370a08231116101175780639e0b241f1161009f578063b0bac86e1161006e578063b0bac86e146106df578063bf474bed146106f5578063dd62ed3e1461071f578063df0ca0be1461075b578063df282ce41461078557610219565b80639e0b241f14610639578063a9059cbb14610663578063ab41181d1461069f578063aba07f87146106b557610219565b80638a8c523c116100e65780638a8c523c1461057b5780638da5cb5b146105915780638f9a55c0146105bb5780638fb4b806146105e557806395d89b411461060f57610219565b806370a08231146104d5578063715018a6146105115780637d1db4a514610527578063833a50761461055157610219565b806338ed0c6b1161019a5780634d77d504116101695780634d77d504146104415780636225658914610457578063671bd5941461046d5780636ab02095146104955780636fc3eaec146104bf57610219565b806338ed0c6b146103b95780633eed3822146103e357806342771f3f1461040d57806347bab7011461041757610219565b806318160ddd116101e157806318160ddd146102d557806323b872dd146102ff5780632c6894581461033b5780632cd1e13d14610365578063313ce5671461038f57610219565b806302ba17601461021d57806306fdde0314610245578063095ea7b31461026f5780630faee56f146102ab57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190612d07565b6107af565b005b348015610250575f80fd5b5061025961084d565b6040516102669190612dbc565b60405180910390f35b34801561027a575f80fd5b5061029560048036038101906102909190612e36565b61088a565b6040516102a29190612e8e565b60405180910390f35b3480156102b6575f80fd5b506102bf6108a7565b6040516102cc9190612eb6565b60405180910390f35b3480156102e0575f80fd5b506102e96108ad565b6040516102f69190612eb6565b60405180910390f35b34801561030a575f80fd5b5061032560048036038101906103209190612ecf565b6108d1565b6040516103329190612e8e565b60405180910390f35b348015610346575f80fd5b5061034f6109a5565b60405161035c9190612eb6565b60405180910390f35b348015610370575f80fd5b506103796109ab565b6040516103869190612eb6565b60405180910390f35b34801561039a575f80fd5b506103a36109b1565b6040516103b09190612f3a565b60405180910390f35b3480156103c4575f80fd5b506103cd6109b9565b6040516103da9190612eb6565b60405180910390f35b3480156103ee575f80fd5b506103f76109bf565b6040516104049190612eb6565b60405180910390f35b6104156109c5565b005b348015610422575f80fd5b5061042b610c55565b6040516104389190612eb6565b60405180910390f35b34801561044c575f80fd5b50610455610c5b565b005b348015610462575f80fd5b5061046b61105b565b005b348015610478575f80fd5b50610493600480360381019061048e9190612d07565b61118d565b005b3480156104a0575f80fd5b506104a961122b565b6040516104b69190612eb6565b60405180910390f35b3480156104ca575f80fd5b506104d3611231565b005b3480156104e0575f80fd5b506104fb60048036038101906104f69190612f53565b6112a0565b6040516105089190612eb6565b60405180910390f35b34801561051c575f80fd5b506105256112e6565b005b348015610532575f80fd5b5061053b611434565b6040516105489190612eb6565b60405180910390f35b34801561055c575f80fd5b5061056561143a565b6040516105729190612eb6565b60405180910390f35b348015610586575f80fd5b5061058f611443565b005b34801561059c575f80fd5b506105a5611660565b6040516105b29190612f8d565b60405180910390f35b3480156105c6575f80fd5b506105cf611687565b6040516105dc9190612eb6565b60405180910390f35b3480156105f0575f80fd5b506105f961168d565b6040516106069190612eb6565b60405180910390f35b34801561061a575f80fd5b50610623611696565b6040516106309190612dbc565b60405180910390f35b348015610644575f80fd5b5061064d6116d3565b60405161065a9190612eb6565b60405180910390f35b34801561066e575f80fd5b5061068960048036038101906106849190612e36565b6116d9565b6040516106969190612e8e565b60405180910390f35b3480156106aa575f80fd5b506106b36116f6565b005b3480156106c0575f80fd5b506106c9611b31565b6040516106d69190612eb6565b60405180910390f35b3480156106ea575f80fd5b506106f3611b3a565b005b348015610700575f80fd5b50610709611bd1565b6040516107169190612eb6565b60405180910390f35b34801561072a575f80fd5b5061074560048036038101906107409190612fa6565b611bd7565b6040516107529190612eb6565b60405180910390f35b348015610766575f80fd5b5061076f611c59565b60405161077c9190612eb6565b60405180910390f35b348015610790575f80fd5b50610799611c62565b6040516107a69190612eb6565b60405180910390f35b6107b7611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a9061302e565b60405180910390fd5b8060148190555050565b60606040518060400160405280600981526020017f736d6f6c2e67616d650000000000000000000000000000000000000000000000815250905090565b5f61089d610896611c6b565b8484611c72565b6001905092915050565b60195481565b5f6012600a6108bc91906131a8565b64174876e8006108cc91906131f2565b905090565b5f6108dd848484611e35565b61099a846108e9611c6b565b61099585604051806060016040528060288152602001613cc06028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61094c611c6b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127bc9092919063ffffffff16565b611c72565b600190509392505050565b60135481565b600f5481565b5f6012905090565b60145481565b60155481565b601554341015610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a019061327d565b60405180910390fd5b5f610a326064610a24605a3461281e90919063ffffffff16565b61289590919063ffffffff16565b90505f610a4882346128de90919063ffffffff16565b9050610a60600160105461292790919063ffffffff16565b601081905550610a7b3460125461292790919063ffffffff16565b601281905550610a968160135461292790919063ffffffff16565b6013819055505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051610ae2906132c8565b5f6040518083038185875af1925050503d805f8114610b1c576040519150601f19603f3d011682016040523d82523d5f602084013e610b21565b606091505b5050905080610b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5c90613326565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610be39190612eb6565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c489190612eb6565b60405180910390a3505050565b60125481565b60145460015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd49061338e565b60405180910390fd5b5f610d076064610cf9605a60145461281e90919063ffffffff16565b61289590919063ffffffff16565b90505f610d1f826014546128de90919063ffffffff16565b9050610d7360145460015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128de90919063ffffffff16565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610e258260015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ed78160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610f2e6001600f5461292790919063ffffffff16565b600f81905550610f4b60145460115461292790919063ffffffff16565b601181905550610f668160135461292790919063ffffffff16565b60138190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fea9190612eb6565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161104f9190612eb6565b60405180910390a35050565b611063611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e69061302e565b60405180910390fd5b6012600a6110fd91906131a8565b64174876e80061110d91906131f2565b6016819055506012600a61112191906131a8565b64174876e80061113191906131f2565b6017819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a61116691906131a8565b64174876e80061117691906131f2565b6040516111839190612eb6565b60405180910390a1565b611195611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112189061302e565b60405180910390fd5b8060158190555050565b60105481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611271611c6b565b73ffffffffffffffffffffffffffffffffffffffff1614611290575f80fd5b5f47905061129d81612984565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112ee611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113719061302e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b5f601154905090565b61144b611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce9061302e565b60405180910390fd5b601b60149054906101000a900460ff1615611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906133f6565b60405180910390fd5b61157030601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a61155b91906131a8565b64174876e80061156b91906131f2565b611c72565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306115b8306112a0565b5f806115c2611660565b426040518863ffffffff1660e01b81526004016115e496959493929190613456565b60606040518083038185885af1158015611600573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061162591906134c9565b5050506001601b60166101000a81548160ff0219169083151502179055506001601b60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b5f601254905090565b60606040518060400160405280600481526020017f736d6f6c00000000000000000000000000000000000000000000000000000000815250905090565b60115481565b5f6116ec6116e5611c6b565b8484611e35565b6001905092915050565b5f60145490505f6117376064611729605a61171b600a8761281e90919063ffffffff16565b61281e90919063ffffffff16565b61289590919063ffffffff16565b90508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b09061338e565b60405180910390fd5b5f6117e160646117d3605a8561281e90919063ffffffff16565b61289590919063ffffffff16565b90505f6117f782846128de90919063ffffffff16565b90506118498360015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128de90919063ffffffff16565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118fb8260015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119ad8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611a04600a600f5461292790919063ffffffff16565b600f81905550611a1f8360115461292790919063ffffffff16565b601181905550611a3a8160135461292790919063ffffffff16565b60138190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611abe9190612eb6565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b239190612eb6565b60405180910390a350505050565b5f601054905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b7a611c6b565b73ffffffffffffffffffffffffffffffffffffffff1614611b99575f80fd5b5f611ba3306112a0565b90505f811115611bb757611bb6816129ec565b5b5f4790505f811115611bcd57611bcc81612984565b5b5050565b60185481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f600f54905090565b5f601354905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790613589565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4590613617565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e289190612eb6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a906136a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613733565b60405180910390fd5b5f8111611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a906137c1565b60405180910390fd5b5f611f5c611660565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fca5750611f9a611660565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561250c5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561206d575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612075575f80fd5b5f600e54036120bd576120ba60646120ac600a54600e54116120995760065461209d565b6008545b8561281e90919063ffffffff16565b61289590919063ffffffff16565b90505b5f600e5411156120f2576120ef60646120e1600d548561281e90919063ffffffff16565b61289590919063ffffffff16565b90505b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561219b5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121ee575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122e657601654821115612238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222f90613829565b60405180910390fd5b60175482612245856112a0565b61224f9190613847565b1115612290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612287906138c4565b60405180910390fd5b6122cc60646122be600a54600e54116122ab576006546122af565b6008545b8561281e90919063ffffffff16565b61289590919063ffffffff16565b9050600e5f8154809291906122e0906138e2565b91905055505b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561236e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123b2576123af60646123a1600b54600e541161238e57600754612392565b6009545b8561281e90919063ffffffff16565b61289590919063ffffffff16565b90505b5f6123bc306112a0565b9050601b60159054906101000a900460ff161580156124275750601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561243f5750601b60169054906101000a900460ff165b801561244c575060185481115b801561245b5750600c54600e54115b1561250a57601d54431115612472575f601c819055505b6003601c54106124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae90613973565b60405180910390fd5b6124d46124cf846124ca84601954612c57565b612c57565b6129ec565b5f4790505f8111156124ea576124e947612984565b5b601c5f8154809291906124fc906138e2565b919050555043601d81905550505b505b5f81111561260b576125648160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126029190612eb6565b60405180910390a35b61265b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128de90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126fe6126b282846128de90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127a184866128de90919063ffffffff16565b6040516127ae9190612eb6565b60405180910390a350505050565b5f838311158290612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa9190612dbc565b60405180910390fd5b505f83856128119190613991565b9050809150509392505050565b5f80830361282e575f905061288f565b5f828461283b91906131f2565b905082848261284a91906139f1565b1461288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190613a91565b60405180910390fd5b809150505b92915050565b5f6128d683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c6f565b905092915050565b5f61291f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127bc565b905092915050565b5f8082846129359190613847565b90508381101561297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297190613af9565b60405180910390fd5b8091505092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156129e8573d5f803e3d5ffd5b5050565b6001601b60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612a2357612a22613b17565b5b604051908082528060200260200182016040528015612a515781602001602082028036833780820191505090505b50905030815f81518110612a6857612a67613b44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b309190613b85565b81600181518110612b4457612b43613b44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612baa30601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c72565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612c0c959493929190613c67565b5f604051808303815f87803b158015612c23575f80fd5b505af1158015612c35573d5f803e3d5ffd5b50505050505f601b60156101000a81548160ff02191690831515021790555050565b5f818311612c655782612c67565b815b905092915050565b5f8083118290612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac9190612dbc565b60405180910390fd5b505f8385612cc391906139f1565b9050809150509392505050565b5f80fd5b5f819050919050565b612ce681612cd4565b8114612cf0575f80fd5b50565b5f81359050612d0181612cdd565b92915050565b5f60208284031215612d1c57612d1b612cd0565b5b5f612d2984828501612cf3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d69578082015181840152602081019050612d4e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d8e82612d32565b612d988185612d3c565b9350612da8818560208601612d4c565b612db181612d74565b840191505092915050565b5f6020820190508181035f830152612dd48184612d84565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e0582612ddc565b9050919050565b612e1581612dfb565b8114612e1f575f80fd5b50565b5f81359050612e3081612e0c565b92915050565b5f8060408385031215612e4c57612e4b612cd0565b5b5f612e5985828601612e22565b9250506020612e6a85828601612cf3565b9150509250929050565b5f8115159050919050565b612e8881612e74565b82525050565b5f602082019050612ea15f830184612e7f565b92915050565b612eb081612cd4565b82525050565b5f602082019050612ec95f830184612ea7565b92915050565b5f805f60608486031215612ee657612ee5612cd0565b5b5f612ef386828701612e22565b9350506020612f0486828701612e22565b9250506040612f1586828701612cf3565b9150509250925092565b5f60ff82169050919050565b612f3481612f1f565b82525050565b5f602082019050612f4d5f830184612f2b565b92915050565b5f60208284031215612f6857612f67612cd0565b5b5f612f7584828501612e22565b91505092915050565b612f8781612dfb565b82525050565b5f602082019050612fa05f830184612f7e565b92915050565b5f8060408385031215612fbc57612fbb612cd0565b5b5f612fc985828601612e22565b9250506020612fda85828601612e22565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613018602083612d3c565b915061302382612fe4565b602082019050919050565b5f6020820190508181035f8301526130458161300c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130ce578086048111156130aa576130a961304c565b5b60018516156130b95780820291505b80810290506130c785613079565b945061308e565b94509492505050565b5f826130e657600190506131a1565b816130f3575f90506131a1565b8160018114613109576002811461311357613142565b60019150506131a1565b60ff8411156131255761312461304c565b5b8360020a91508482111561313c5761313b61304c565b5b506131a1565b5060208310610133831016604e8410600b84101617156131775782820a9050838111156131725761317161304c565b5b6131a1565b6131848484846001613085565b9250905081840481111561319b5761319a61304c565b5b81810290505b9392505050565b5f6131b282612cd4565b91506131bd83612f1f565b92506131ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130d7565b905092915050565b5f6131fc82612cd4565b915061320783612cd4565b925082820261321581612cd4565b9150828204841483151761322c5761322b61304c565b5b5092915050565b7f496e73756666696369656e74204554482073656e7400000000000000000000005f82015250565b5f613267601583612d3c565b915061327282613233565b602082019050919050565b5f6020820190508181035f8301526132948161325b565b9050919050565b5f81905092915050565b50565b5f6132b35f8361329b565b91506132be826132a5565b5f82019050919050565b5f6132d2826132a8565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f20747265617375727900005f82015250565b5f613310601e83612d3c565b915061331b826132dc565b602082019050919050565b5f6020820190508181035f83015261333d81613304565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613378601483612d3c565b915061338382613344565b602082019050919050565b5f6020820190508181035f8301526133a58161336c565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6133e0601783612d3c565b91506133eb826133ac565b602082019050919050565b5f6020820190508181035f83015261340d816133d4565b9050919050565b5f819050919050565b5f819050919050565b5f61344061343b61343684613414565b61341d565b612cd4565b9050919050565b61345081613426565b82525050565b5f60c0820190506134695f830189612f7e565b6134766020830188612ea7565b6134836040830187613447565b6134906060830186613447565b61349d6080830185612f7e565b6134aa60a0830184612ea7565b979650505050505050565b5f815190506134c381612cdd565b92915050565b5f805f606084860312156134e0576134df612cd0565b5b5f6134ed868287016134b5565b93505060206134fe868287016134b5565b925050604061350f868287016134b5565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613573602483612d3c565b915061357e82613519565b604082019050919050565b5f6020820190508181035f8301526135a081613567565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613601602283612d3c565b915061360c826135a7565b604082019050919050565b5f6020820190508181035f83015261362e816135f5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61368f602583612d3c565b915061369a82613635565b604082019050919050565b5f6020820190508181035f8301526136bc81613683565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61371d602383612d3c565b9150613728826136c3565b604082019050919050565b5f6020820190508181035f83015261374a81613711565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137ab602983612d3c565b91506137b682613751565b604082019050919050565b5f6020820190508181035f8301526137d88161379f565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613813601983612d3c565b915061381e826137df565b602082019050919050565b5f6020820190508181035f83015261384081613807565b9050919050565b5f61385182612cd4565b915061385c83612cd4565b92508282019050808211156138745761387361304c565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6138ae601a83612d3c565b91506138b98261387a565b602082019050919050565b5f6020820190508181035f8301526138db816138a2565b9050919050565b5f6138ec82612cd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361391e5761391d61304c565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61395d601783612d3c565b915061396882613929565b602082019050919050565b5f6020820190508181035f83015261398a81613951565b9050919050565b5f61399b82612cd4565b91506139a683612cd4565b92508282039050818111156139be576139bd61304c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139fb82612cd4565b9150613a0683612cd4565b925082613a1657613a156139c4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a7b602183612d3c565b9150613a8682613a21565b604082019050919050565b5f6020820190508181035f830152613aa881613a6f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ae3601b83612d3c565b9150613aee82613aaf565b602082019050919050565b5f6020820190508181035f830152613b1081613ad7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613b7f81612e0c565b92915050565b5f60208284031215613b9a57613b99612cd0565b5b5f613ba784828501613b71565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613be281612dfb565b82525050565b5f613bf38383613bd9565b60208301905092915050565b5f602082019050919050565b5f613c1582613bb0565b613c1f8185613bba565b9350613c2a83613bca565b805f5b83811015613c5a578151613c418882613be8565b9750613c4c83613bff565b925050600181019050613c2d565b5085935050505092915050565b5f60a082019050613c7a5f830188612ea7565b613c876020830187613447565b8181036040830152613c998186613c0b565b9050613ca86060830185612f7e565b613cb56080830184612ea7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220902d2fcd72c8497db39aa4cc8d5269bba08a6f934b9758871058ef52fd5b7b6c64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610212575f3560e01c806370a08231116101175780639e0b241f1161009f578063b0bac86e1161006e578063b0bac86e146106df578063bf474bed146106f5578063dd62ed3e1461071f578063df0ca0be1461075b578063df282ce41461078557610219565b80639e0b241f14610639578063a9059cbb14610663578063ab41181d1461069f578063aba07f87146106b557610219565b80638a8c523c116100e65780638a8c523c1461057b5780638da5cb5b146105915780638f9a55c0146105bb5780638fb4b806146105e557806395d89b411461060f57610219565b806370a08231146104d5578063715018a6146105115780637d1db4a514610527578063833a50761461055157610219565b806338ed0c6b1161019a5780634d77d504116101695780634d77d504146104415780636225658914610457578063671bd5941461046d5780636ab02095146104955780636fc3eaec146104bf57610219565b806338ed0c6b146103b95780633eed3822146103e357806342771f3f1461040d57806347bab7011461041757610219565b806318160ddd116101e157806318160ddd146102d557806323b872dd146102ff5780632c6894581461033b5780632cd1e13d14610365578063313ce5671461038f57610219565b806302ba17601461021d57806306fdde0314610245578063095ea7b31461026f5780630faee56f146102ab57610219565b3661021957005b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190612d07565b6107af565b005b348015610250575f80fd5b5061025961084d565b6040516102669190612dbc565b60405180910390f35b34801561027a575f80fd5b5061029560048036038101906102909190612e36565b61088a565b6040516102a29190612e8e565b60405180910390f35b3480156102b6575f80fd5b506102bf6108a7565b6040516102cc9190612eb6565b60405180910390f35b3480156102e0575f80fd5b506102e96108ad565b6040516102f69190612eb6565b60405180910390f35b34801561030a575f80fd5b5061032560048036038101906103209190612ecf565b6108d1565b6040516103329190612e8e565b60405180910390f35b348015610346575f80fd5b5061034f6109a5565b60405161035c9190612eb6565b60405180910390f35b348015610370575f80fd5b506103796109ab565b6040516103869190612eb6565b60405180910390f35b34801561039a575f80fd5b506103a36109b1565b6040516103b09190612f3a565b60405180910390f35b3480156103c4575f80fd5b506103cd6109b9565b6040516103da9190612eb6565b60405180910390f35b3480156103ee575f80fd5b506103f76109bf565b6040516104049190612eb6565b60405180910390f35b6104156109c5565b005b348015610422575f80fd5b5061042b610c55565b6040516104389190612eb6565b60405180910390f35b34801561044c575f80fd5b50610455610c5b565b005b348015610462575f80fd5b5061046b61105b565b005b348015610478575f80fd5b50610493600480360381019061048e9190612d07565b61118d565b005b3480156104a0575f80fd5b506104a961122b565b6040516104b69190612eb6565b60405180910390f35b3480156104ca575f80fd5b506104d3611231565b005b3480156104e0575f80fd5b506104fb60048036038101906104f69190612f53565b6112a0565b6040516105089190612eb6565b60405180910390f35b34801561051c575f80fd5b506105256112e6565b005b348015610532575f80fd5b5061053b611434565b6040516105489190612eb6565b60405180910390f35b34801561055c575f80fd5b5061056561143a565b6040516105729190612eb6565b60405180910390f35b348015610586575f80fd5b5061058f611443565b005b34801561059c575f80fd5b506105a5611660565b6040516105b29190612f8d565b60405180910390f35b3480156105c6575f80fd5b506105cf611687565b6040516105dc9190612eb6565b60405180910390f35b3480156105f0575f80fd5b506105f961168d565b6040516106069190612eb6565b60405180910390f35b34801561061a575f80fd5b50610623611696565b6040516106309190612dbc565b60405180910390f35b348015610644575f80fd5b5061064d6116d3565b60405161065a9190612eb6565b60405180910390f35b34801561066e575f80fd5b5061068960048036038101906106849190612e36565b6116d9565b6040516106969190612e8e565b60405180910390f35b3480156106aa575f80fd5b506106b36116f6565b005b3480156106c0575f80fd5b506106c9611b31565b6040516106d69190612eb6565b60405180910390f35b3480156106ea575f80fd5b506106f3611b3a565b005b348015610700575f80fd5b50610709611bd1565b6040516107169190612eb6565b60405180910390f35b34801561072a575f80fd5b5061074560048036038101906107409190612fa6565b611bd7565b6040516107529190612eb6565b60405180910390f35b348015610766575f80fd5b5061076f611c59565b60405161077c9190612eb6565b60405180910390f35b348015610790575f80fd5b50610799611c62565b6040516107a69190612eb6565b60405180910390f35b6107b7611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083a9061302e565b60405180910390fd5b8060148190555050565b60606040518060400160405280600981526020017f736d6f6c2e67616d650000000000000000000000000000000000000000000000815250905090565b5f61089d610896611c6b565b8484611c72565b6001905092915050565b60195481565b5f6012600a6108bc91906131a8565b64174876e8006108cc91906131f2565b905090565b5f6108dd848484611e35565b61099a846108e9611c6b565b61099585604051806060016040528060288152602001613cc06028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61094c611c6b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127bc9092919063ffffffff16565b611c72565b600190509392505050565b60135481565b600f5481565b5f6012905090565b60145481565b60155481565b601554341015610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a019061327d565b60405180910390fd5b5f610a326064610a24605a3461281e90919063ffffffff16565b61289590919063ffffffff16565b90505f610a4882346128de90919063ffffffff16565b9050610a60600160105461292790919063ffffffff16565b601081905550610a7b3460125461292790919063ffffffff16565b601281905550610a968160135461292790919063ffffffff16565b6013819055505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051610ae2906132c8565b5f6040518083038185875af1925050503d805f8114610b1c576040519150601f19603f3d011682016040523d82523d5f602084013e610b21565b606091505b5050905080610b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5c90613326565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610be39190612eb6565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c489190612eb6565b60405180910390a3505050565b60125481565b60145460015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd49061338e565b60405180910390fd5b5f610d076064610cf9605a60145461281e90919063ffffffff16565b61289590919063ffffffff16565b90505f610d1f826014546128de90919063ffffffff16565b9050610d7360145460015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128de90919063ffffffff16565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610e258260015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610ed78160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610f2e6001600f5461292790919063ffffffff16565b600f81905550610f4b60145460115461292790919063ffffffff16565b601181905550610f668160135461292790919063ffffffff16565b60138190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fea9190612eb6565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161104f9190612eb6565b60405180910390a35050565b611063611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e69061302e565b60405180910390fd5b6012600a6110fd91906131a8565b64174876e80061110d91906131f2565b6016819055506012600a61112191906131a8565b64174876e80061113191906131f2565b6017819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a61116691906131a8565b64174876e80061117691906131f2565b6040516111839190612eb6565b60405180910390a1565b611195611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112189061302e565b60405180910390fd5b8060158190555050565b60105481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611271611c6b565b73ffffffffffffffffffffffffffffffffffffffff1614611290575f80fd5b5f47905061129d81612984565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112ee611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113719061302e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b5f601154905090565b61144b611c6b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce9061302e565b60405180910390fd5b601b60149054906101000a900460ff1615611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906133f6565b60405180910390fd5b61157030601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a61155b91906131a8565b64174876e80061156b91906131f2565b611c72565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306115b8306112a0565b5f806115c2611660565b426040518863ffffffff1660e01b81526004016115e496959493929190613456565b60606040518083038185885af1158015611600573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061162591906134c9565b5050506001601b60166101000a81548160ff0219169083151502179055506001601b60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b5f601254905090565b60606040518060400160405280600481526020017f736d6f6c00000000000000000000000000000000000000000000000000000000815250905090565b60115481565b5f6116ec6116e5611c6b565b8484611e35565b6001905092915050565b5f60145490505f6117376064611729605a61171b600a8761281e90919063ffffffff16565b61281e90919063ffffffff16565b61289590919063ffffffff16565b90508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b09061338e565b60405180910390fd5b5f6117e160646117d3605a8561281e90919063ffffffff16565b61289590919063ffffffff16565b90505f6117f782846128de90919063ffffffff16565b90506118498360015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128de90919063ffffffff16565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118fb8260015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506119ad8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611a04600a600f5461292790919063ffffffff16565b600f81905550611a1f8360115461292790919063ffffffff16565b601181905550611a3a8160135461292790919063ffffffff16565b60138190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611abe9190612eb6565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b239190612eb6565b60405180910390a350505050565b5f601054905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b7a611c6b565b73ffffffffffffffffffffffffffffffffffffffff1614611b99575f80fd5b5f611ba3306112a0565b90505f811115611bb757611bb6816129ec565b5b5f4790505f811115611bcd57611bcc81612984565b5b5050565b60185481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f600f54905090565b5f601354905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790613589565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4590613617565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e289190612eb6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a906136a5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613733565b60405180910390fd5b5f8111611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a906137c1565b60405180910390fd5b5f611f5c611660565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fca5750611f9a611660565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561250c5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561206d575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612075575f80fd5b5f600e54036120bd576120ba60646120ac600a54600e54116120995760065461209d565b6008545b8561281e90919063ffffffff16565b61289590919063ffffffff16565b90505b5f600e5411156120f2576120ef60646120e1600d548561281e90919063ffffffff16565b61289590919063ffffffff16565b90505b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561219b5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121ee575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122e657601654821115612238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222f90613829565b60405180910390fd5b60175482612245856112a0565b61224f9190613847565b1115612290576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612287906138c4565b60405180910390fd5b6122cc60646122be600a54600e54116122ab576006546122af565b6008545b8561281e90919063ffffffff16565b61289590919063ffffffff16565b9050600e5f8154809291906122e0906138e2565b91905055505b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561236e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123b2576123af60646123a1600b54600e541161238e57600754612392565b6009545b8561281e90919063ffffffff16565b61289590919063ffffffff16565b90505b5f6123bc306112a0565b9050601b60159054906101000a900460ff161580156124275750601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561243f5750601b60169054906101000a900460ff165b801561244c575060185481115b801561245b5750600c54600e54115b1561250a57601d54431115612472575f601c819055505b6003601c54106124b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ae90613973565b60405180910390fd5b6124d46124cf846124ca84601954612c57565b612c57565b6129ec565b5f4790505f8111156124ea576124e947612984565b5b601c5f8154809291906124fc906138e2565b919050555043601d81905550505b505b5f81111561260b576125648160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126029190612eb6565b60405180910390a35b61265b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128de90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126fe6126b282846128de90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461292790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127a184866128de90919063ffffffff16565b6040516127ae9190612eb6565b60405180910390a350505050565b5f838311158290612803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fa9190612dbc565b60405180910390fd5b505f83856128119190613991565b9050809150509392505050565b5f80830361282e575f905061288f565b5f828461283b91906131f2565b905082848261284a91906139f1565b1461288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190613a91565b60405180910390fd5b809150505b92915050565b5f6128d683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c6f565b905092915050565b5f61291f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127bc565b905092915050565b5f8082846129359190613847565b90508381101561297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297190613af9565b60405180910390fd5b8091505092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156129e8573d5f803e3d5ffd5b5050565b6001601b60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612a2357612a22613b17565b5b604051908082528060200260200182016040528015612a515781602001602082028036833780820191505090505b50905030815f81518110612a6857612a67613b44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b309190613b85565b81600181518110612b4457612b43613b44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612baa30601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c72565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612c0c959493929190613c67565b5f604051808303815f87803b158015612c23575f80fd5b505af1158015612c35573d5f803e3d5ffd5b50505050505f601b60156101000a81548160ff02191690831515021790555050565b5f818311612c655782612c67565b815b905092915050565b5f8083118290612cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cac9190612dbc565b60405180910390fd5b505f8385612cc391906139f1565b9050809150509392505050565b5f80fd5b5f819050919050565b612ce681612cd4565b8114612cf0575f80fd5b50565b5f81359050612d0181612cdd565b92915050565b5f60208284031215612d1c57612d1b612cd0565b5b5f612d2984828501612cf3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d69578082015181840152602081019050612d4e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d8e82612d32565b612d988185612d3c565b9350612da8818560208601612d4c565b612db181612d74565b840191505092915050565b5f6020820190508181035f830152612dd48184612d84565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e0582612ddc565b9050919050565b612e1581612dfb565b8114612e1f575f80fd5b50565b5f81359050612e3081612e0c565b92915050565b5f8060408385031215612e4c57612e4b612cd0565b5b5f612e5985828601612e22565b9250506020612e6a85828601612cf3565b9150509250929050565b5f8115159050919050565b612e8881612e74565b82525050565b5f602082019050612ea15f830184612e7f565b92915050565b612eb081612cd4565b82525050565b5f602082019050612ec95f830184612ea7565b92915050565b5f805f60608486031215612ee657612ee5612cd0565b5b5f612ef386828701612e22565b9350506020612f0486828701612e22565b9250506040612f1586828701612cf3565b9150509250925092565b5f60ff82169050919050565b612f3481612f1f565b82525050565b5f602082019050612f4d5f830184612f2b565b92915050565b5f60208284031215612f6857612f67612cd0565b5b5f612f7584828501612e22565b91505092915050565b612f8781612dfb565b82525050565b5f602082019050612fa05f830184612f7e565b92915050565b5f8060408385031215612fbc57612fbb612cd0565b5b5f612fc985828601612e22565b9250506020612fda85828601612e22565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613018602083612d3c565b915061302382612fe4565b602082019050919050565b5f6020820190508181035f8301526130458161300c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130ce578086048111156130aa576130a961304c565b5b60018516156130b95780820291505b80810290506130c785613079565b945061308e565b94509492505050565b5f826130e657600190506131a1565b816130f3575f90506131a1565b8160018114613109576002811461311357613142565b60019150506131a1565b60ff8411156131255761312461304c565b5b8360020a91508482111561313c5761313b61304c565b5b506131a1565b5060208310610133831016604e8410600b84101617156131775782820a9050838111156131725761317161304c565b5b6131a1565b6131848484846001613085565b9250905081840481111561319b5761319a61304c565b5b81810290505b9392505050565b5f6131b282612cd4565b91506131bd83612f1f565b92506131ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130d7565b905092915050565b5f6131fc82612cd4565b915061320783612cd4565b925082820261321581612cd4565b9150828204841483151761322c5761322b61304c565b5b5092915050565b7f496e73756666696369656e74204554482073656e7400000000000000000000005f82015250565b5f613267601583612d3c565b915061327282613233565b602082019050919050565b5f6020820190508181035f8301526132948161325b565b9050919050565b5f81905092915050565b50565b5f6132b35f8361329b565b91506132be826132a5565b5f82019050919050565b5f6132d2826132a8565b9150819050919050565b7f4661696c656420746f2073656e642045544820746f20747265617375727900005f82015250565b5f613310601e83612d3c565b915061331b826132dc565b602082019050919050565b5f6020820190508181035f83015261333d81613304565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613378601483612d3c565b915061338382613344565b602082019050919050565b5f6020820190508181035f8301526133a58161336c565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6133e0601783612d3c565b91506133eb826133ac565b602082019050919050565b5f6020820190508181035f83015261340d816133d4565b9050919050565b5f819050919050565b5f819050919050565b5f61344061343b61343684613414565b61341d565b612cd4565b9050919050565b61345081613426565b82525050565b5f60c0820190506134695f830189612f7e565b6134766020830188612ea7565b6134836040830187613447565b6134906060830186613447565b61349d6080830185612f7e565b6134aa60a0830184612ea7565b979650505050505050565b5f815190506134c381612cdd565b92915050565b5f805f606084860312156134e0576134df612cd0565b5b5f6134ed868287016134b5565b93505060206134fe868287016134b5565b925050604061350f868287016134b5565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613573602483612d3c565b915061357e82613519565b604082019050919050565b5f6020820190508181035f8301526135a081613567565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613601602283612d3c565b915061360c826135a7565b604082019050919050565b5f6020820190508181035f83015261362e816135f5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61368f602583612d3c565b915061369a82613635565b604082019050919050565b5f6020820190508181035f8301526136bc81613683565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61371d602383612d3c565b9150613728826136c3565b604082019050919050565b5f6020820190508181035f83015261374a81613711565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137ab602983612d3c565b91506137b682613751565b604082019050919050565b5f6020820190508181035f8301526137d88161379f565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613813601983612d3c565b915061381e826137df565b602082019050919050565b5f6020820190508181035f83015261384081613807565b9050919050565b5f61385182612cd4565b915061385c83612cd4565b92508282019050808211156138745761387361304c565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6138ae601a83612d3c565b91506138b98261387a565b602082019050919050565b5f6020820190508181035f8301526138db816138a2565b9050919050565b5f6138ec82612cd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361391e5761391d61304c565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61395d601783612d3c565b915061396882613929565b602082019050919050565b5f6020820190508181035f83015261398a81613951565b9050919050565b5f61399b82612cd4565b91506139a683612cd4565b92508282039050818111156139be576139bd61304c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139fb82612cd4565b9150613a0683612cd4565b925082613a1657613a156139c4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a7b602183612d3c565b9150613a8682613a21565b604082019050919050565b5f6020820190508181035f830152613aa881613a6f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ae3601b83612d3c565b9150613aee82613aaf565b602082019050919050565b5f6020820190508181035f830152613b1081613ad7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613b7f81612e0c565b92915050565b5f60208284031215613b9a57613b99612cd0565b5b5f613ba784828501613b71565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613be281612dfb565b82525050565b5f613bf38383613bd9565b60208301905092915050565b5f602082019050919050565b5f613c1582613bb0565b613c1f8185613bba565b9350613c2a83613bca565b805f5b83811015613c5a578151613c418882613be8565b9750613c4c83613bff565b925050600181019050613c2d565b5085935050505092915050565b5f60a082019050613c7a5f830188612ea7565b613c876020830187613447565b8181036040830152613c998186613c0b565b9050613ca86060830185612f7e565b613cb56080830184612ea7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220902d2fcd72c8497db39aa4cc8d5269bba08a6f934b9758871058ef52fd5b7b6c64736f6c63430008170033

Deployed Bytecode Sourcemap

3587:12127:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14904:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6199:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7032:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5035:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6476:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7201:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4459:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4301:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6385:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4511:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4575:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14073:823;;;:::i;:::-;;4418:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12159:867;;;;;;;;;;;;;:::i;:::-;;10920:158;;;;;;;;;;;;;:::i;:::-;;15012:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4339:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11964:187;;;;;;;;;;;;;:::i;:::-;;6579:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2668:148;;;;;;;;;;;;;:::i;:::-;;4863:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15342:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11186:379;;;;;;;;;;;;;:::i;:::-;;2454:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4918:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15463:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6290:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4376:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6706:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13034:1031;;;;;;;;;;;;;:::i;:::-;;15231:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11610:346;;;;;;;;;;;;;:::i;:::-;;4975:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6881:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15118:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15582:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14904:100;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14987:9:::1;14975;:21;;;;14904:100:::0;:::o;6199:83::-;6236:13;6269:5;;;;;;;;;;;;;;;;;6262:12;;6199:83;:::o;7032:161::-;7107:4;7124:39;7133:12;:10;:12::i;:::-;7147:7;7156:6;7124:8;:39::i;:::-;7181:4;7174:11;;7032:161;;;;:::o;5035:45::-;;;;:::o;6476:95::-;6529:7;4674:2;4730;:15;;;;:::i;:::-;4718:9;:27;;;;:::i;:::-;6549:14;;6476:95;:::o;7201:313::-;7299:4;7316:36;7326:6;7334:9;7345:6;7316:9;:36::i;:::-;7363:121;7372:6;7380:12;:10;:12::i;:::-;7394:89;7432:6;7394:89;;;;;;;;;;;;;;;;;:11;:19;7406:6;7394:19;;;;;;;;;;;;;;;:33;7414:12;:10;:12::i;:::-;7394:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7363:8;:121::i;:::-;7502:4;7495:11;;7201:313;;;;;:::o;4459:43::-;;;;:::o;4301:31::-;;;;:::o;6385:83::-;6426:5;4674:2;6444:16;;6385:83;:::o;4511:42::-;;;;:::o;4575:43::-;;;;:::o;14073:823::-;14140:8;;14127:9;:21;;14119:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14187:22;14212:26;14234:3;14212:17;14226:2;14212:9;:13;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;14187:51;;14249:22;14274:29;14288:14;14274:9;:13;;:29;;;;:::i;:::-;14249:54;;14334:22;14354:1;14334:15;;:19;;:22;;;;:::i;:::-;14316:15;:40;;;;14389:34;14413:9;14389:19;;:23;;:34;;;;:::i;:::-;14367:19;:56;;;;14465:72;14512:14;14465:28;;:32;;:72;;;;:::i;:::-;14434:28;:103;;;;14595:9;14610:10;;;;;;;;;;;:15;;14633:14;14610:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14594:58;;;14671:4;14663:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14794:10;;;;;;;;;;;14773:48;;14782:10;14773:48;;;14806:14;14773:48;;;;;;:::i;:::-;;;;;;;;14866:4;14837:51;;14846:10;14837:51;;;14873:14;14837:51;;;;;;:::i;:::-;;;;;;;;14108:788;;;14073:823::o;4418:34::-;;;;:::o;12159:867::-;12231:9;;12206;:21;12216:10;12206:21;;;;;;;;;;;;;;;;:34;;12198:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12276:22;12301:26;12323:3;12301:17;12315:2;12301:9;;:13;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;12276:51;;12338:22;12363:29;12377:14;12363:9;;:13;;:29;;;;:::i;:::-;12338:54;;12429:36;12455:9;;12429;:21;12439:10;12429:21;;;;;;;;;;;;;;;;:25;;:36;;;;:::i;:::-;12405:9;:21;12415:10;12405:21;;;;;;;;;;;;;;;:60;;;;12500:65;12540:14;12500:9;:21;12510:10;;;;;;;;;;;12500:21;;;;;;;;;;;;;;;;:25;;:65;;;;:::i;:::-;12476:9;:21;12486:10;;;;;;;;;;;12476:21;;;;;;;;;;;;;;;:89;;;;12603:44;12632:14;12603:9;:24;12621:4;12603:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12576:9;:24;12594:4;12576:24;;;;;;;;;;;;;;;:71;;;;12679:23;12700:1;12679:16;;:20;;:23;;;;:::i;:::-;12660:16;:42;;;;12736:35;12761:9;;12736:20;;:24;;:35;;;;:::i;:::-;12713:20;:58;;;;12813:72;12860:14;12813:28;;:32;;:72;;;;:::i;:::-;12782:28;:103;;;;12924:10;;;;;;;;;;;12903:48;;12912:10;12903:48;;;12936:14;12903:48;;;;;;:::i;:::-;;;;;;;;12996:4;12967:51;;12976:10;12967:51;;;13003:14;12967:51;;;;;;:::i;:::-;;;;;;;;12187:839;;12159:867::o;10920:158::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4674:2:::1;4730;:15;;;;:::i;:::-;4718:9;:27;;;;:::i;:::-;10972:12;:22;;;;4674:2;4730;:15;;;;:::i;:::-;4718:9;:27;;;;:::i;:::-;11005:14;:22;;;;11043:27;4674:2;4730;:15;;;;:::i;:::-;4718:9;:27;;;;:::i;:::-;11043;;;;;;:::i;:::-;;;;;;;;10920:158::o:0;15012:98::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15093:9:::1;15082:8;:20;;;;15012:98:::0;:::o;4339:30::-;;;;:::o;11964:187::-;12028:10;;;;;;;;;;;12014:24;;:12;:10;:12::i;:::-;:24;;;12006:33;;;;;;12050:26;12079:21;12050:50;;12111:32;12124:18;12111:12;:32::i;:::-;11995:156;11964:187::o;6579:119::-;6645:7;6672:9;:18;6682:7;6672:18;;;;;;;;;;;;;;;;6665:25;;6579:119;;;:::o;2668:148::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2775:1:::1;2738:40;;2759:6;::::0;::::1;;;;;;;;2738:40;;;;;;;;;;;;2806:1;2789:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2668:148::o:0;4863:48::-;;;;:::o;15342:113::-;15400:7;15427:20;;15420:27;;15342:113;:::o;11186:379::-;2591:12;:10;:12::i;:::-;2581:22;;:6;;;;;;;;;;:22;;;2573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11252:11:::1;;;;;;;;;;;11251:12;11243:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11301:58;11318:4;11333:15;;;;;;;;;;;4674:2;4730;:15;;;;:::i;:::-;4718:9;:27;;;;:::i;:::-;11301:8;:58::i;:::-;11370:15;;;;;;;;;;;:31;;;11409:21;11440:4;11446:24;11464:4;11446:9;:24::i;:::-;11471:1;11473::::0;11475:7:::1;:5;:7::i;:::-;11483:15;11370:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11524:4;11510:11;;:18;;;;;;;;;;;;;;;;;;11553:4;11539:11;;:18;;;;;;;;;;;;;;;;;;11186:379::o:0;2454:79::-;2492:7;2519:6;;;;;;;;;;;2512:13;;2454:79;:::o;4918:50::-;;;;:::o;15463:111::-;15520:7;15547:19;;15540:26;;15463:111;:::o;6290:87::-;6329:13;6362:7;;;;;;;;;;;;;;;;;6355:14;;6290:87;:::o;4376:35::-;;;;:::o;6706:167::-;6784:4;6801:42;6811:12;:10;:12::i;:::-;6825:9;6836:6;6801:9;:42::i;:::-;6861:4;6854:11;;6706:167;;;;:::o;13034:1031::-;13077:23;13103:9;;13077:35;;13123:21;13147:40;13183:3;13147:31;13175:2;13147:23;13167:2;13147:15;:19;;:23;;;;:::i;:::-;:27;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;13123:64;;13247:13;13222:9;:21;13232:10;13222:21;;;;;;;;;;;;;;;;:38;;13214:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13298:22;13323:30;13349:3;13323:21;13341:2;13323:13;:17;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;13298:55;;13364:22;13389:33;13407:14;13389:13;:17;;:33;;;;:::i;:::-;13364:58;;13459:40;13485:13;13459:9;:21;13469:10;13459:21;;;;;;;;;;;;;;;;:25;;:40;;;;:::i;:::-;13435:9;:21;13445:10;13435:21;;;;;;;;;;;;;;;:64;;;;13534:65;13574:14;13534:9;:21;13544:10;;;;;;;;;;;13534:21;;;;;;;;;;;;;;;;:25;;:65;;;;:::i;:::-;13510:9;:21;13520:10;;;;;;;;;;;13510:21;;;;;;;;;;;;;;;:89;;;;13637:44;13666:14;13637:9;:24;13655:4;13637:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;13610:9;:24;13628:4;13610:24;;;;;;;;;;;;;;;:71;;;;13713:24;13734:2;13713:16;;:20;;:24;;;;:::i;:::-;13694:16;:43;;;;13771:39;13796:13;13771:20;;:24;;:39;;;;:::i;:::-;13748:20;:62;;;;13852:72;13899:14;13852:28;;:32;;:72;;;;:::i;:::-;13821:28;:103;;;;13963:10;;;;;;;;;;;13942:48;;13951:10;13942:48;;;13975:14;13942:48;;;;;;:::i;:::-;;;;;;;;14035:4;14006:51;;14015:10;14006:51;;;14042:14;14006:51;;;;;;:::i;:::-;;;;;;;;13066:999;;;;13034:1031::o;15231:103::-;15284:7;15311:15;;15304:22;;15231:103;:::o;11610:346::-;11672:10;;;;;;;;;;;11658:24;;:12;:10;:12::i;:::-;:24;;;11650:33;;;;;;11694:20;11715:24;11733:4;11715:9;:24::i;:::-;11694:45;;11766:1;11753:12;:14;11750:73;;;11781:30;11798:12;11781:16;:30::i;:::-;11750:73;11833:18;11852:21;11833:40;;11898:1;11887:10;:12;11884:65;;;11913:24;11926:10;11913:12;:24::i;:::-;11884:65;11639:317;;11610:346::o;4975:53::-;;;;:::o;6881:143::-;6962:7;6989:11;:18;7001:5;6989:18;;;;;;;;;;;;;;;:27;7008:7;6989:27;;;;;;;;;;;;;;;;6982:34;;6881:143;;;;:::o;15118:105::-;15172:7;15199:16;;15192:23;;15118:105;:::o;15582:129::-;15648:7;15675:28;;15668:35;;15582:129;:::o;209:98::-;262:7;289:10;282:17;;209:98;:::o;7522:335::-;7632:1;7615:19;;:5;:19;;;7607:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7713:1;7694:21;;:7;:21;;;7686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7795:6;7765:11;:18;7777:5;7765:18;;;;;;;;;;;;;;;:27;7784:7;7765:27;;;;;;;;;;;;;;;:36;;;;7833:7;7817:32;;7826:5;7817:32;;;7842:6;7817:32;;;;;;:::i;:::-;;;;;;;;7522:335;;;:::o;7865:2448::-;7969:1;7953:18;;:4;:18;;;7945:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8046:1;8032:16;;:2;:16;;;8024:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8116:1;8107:6;:10;8099:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8174:17;8216:7;:5;:7::i;:::-;8208:15;;:4;:15;;;;:32;;;;;8233:7;:5;:7::i;:::-;8227:13;;:2;:13;;;;8208:32;8204:1753;;;8266:4;:10;8271:4;8266:10;;;;;;;;;;;;;;;;;;;;;;;;;8265:11;:24;;;;;8281:4;:8;8286:2;8281:8;;;;;;;;;;;;;;;;;;;;;;;;;8280:9;8265:24;8257:33;;;;;;8321:1;8310:9;;:12;8307:139;;8354:76;8426:3;8354:67;8376:15;;8366:9;;:25;8365:55;;8406:14;;8365:55;;;8393:12;;8365:55;8354:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8342:88;;8307:139;8473:1;8463:9;;:11;8460:95;;;8506:33;8535:3;8506:24;8517:12;;8506:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8494:45;;8460:95;8583:13;;;;;;;;;;;8575:21;;:4;:21;;;:55;;;;;8614:15;;;;;;;;;;;8600:30;;:2;:30;;;;8575:55;:83;;;;;8636:18;:22;8655:2;8636:22;;;;;;;;;;;;;;;;;;;;;;;;;8634:24;8575:83;8571:420;;;8698:12;;8688:6;:22;;8680:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8793:14;;8783:6;8767:13;8777:2;8767:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8759:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8869:76;8941:3;8869:67;8891:15;;8881:9;;:25;8880:55;;8921:14;;8880:55;;;8908:12;;8880:55;8869:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8857:88;;8964:9;;:11;;;;;;;;;:::i;:::-;;;;;;8571:420;9016:13;;;;;;;;;;;9010:19;;:2;:19;;;:43;;;;;9048:4;9033:20;;:4;:20;;;;9010:43;9007:174;;;9086:79;9161:3;9086:70;9108:16;;9098:9;;:26;9097:58;;9140:15;;9097:58;;;9126:13;;9097:58;9086:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9074:91;;9007:174;9197:28;9228:24;9246:4;9228:9;:24::i;:::-;9197:55;;9272:6;;;;;;;;;;;9271:7;:30;;;;;9288:13;;;;;;;;;;;9282:19;;:2;:19;;;9271:30;:45;;;;;9305:11;;;;;;;;;;;9271:45;:89;;;;;9343:17;;9320:20;:40;9271:89;:123;;;;;9376:18;;9364:9;;:30;9271:123;9267:679;;;9434:13;;9419:12;:28;9415:90;;;9484:1;9472:9;:13;;;;9415:90;9543:1;9531:9;;:13;9523:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9591:69;9608:51;9612:6;9620:38;9624:20;9646:11;;9620:3;:38::i;:::-;9608:3;:51::i;:::-;9591:16;:69::i;:::-;9679:26;9708:21;9679:50;;9773:1;9752:18;:22;9748:106;;;9799:35;9812:21;9799:12;:35::i;:::-;9748:106;9872:9;;:11;;;;;;;;;:::i;:::-;;;;;;9918:12;9902:13;:28;;;;9396:550;9267:679;8242:1715;8204:1753;9982:1;9972:9;:11;9969:161;;;10022:39;10051:9;10022;:24;10040:4;10022:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9997:9;:24;10015:4;9997:24;;;;;;;;;;;;;;;:64;;;;10102:4;10079:39;;10088:4;10079:39;;;10108:9;10079:39;;;;;;:::i;:::-;;;;;;;;9969:161;10156:27;10176:6;10156:9;:15;10166:4;10156:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10140:9;:15;10150:4;10140:15;;;;;;;;;;;;;;;:43;;;;10208:40;10226:21;10237:9;10226:6;:10;;:21;;;;:::i;:::-;10208:9;:13;10218:2;10208:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10194:9;:13;10204:2;10194:13;;;;;;;;;;;;;;;:54;;;;10279:2;10264:41;;10273:4;10264:41;;;10283:21;10294:9;10283:6;:10;;:21;;;;:::i;:::-;10264:41;;;;;;:::i;:::-;;;;;;;;7934:2379;7865:2448;;;:::o;1346:190::-;1432:7;1465:1;1460;:6;;1468:12;1452:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1492:9;1508:1;1504;:5;;;;:::i;:::-;1492:17;;1527:1;1520:8;;;1346:190;;;;;:::o;1544:246::-;1602:7;1631:1;1626;:6;1622:47;;1656:1;1649:8;;;;1622:47;1679:9;1695:1;1691;:5;;;;:::i;:::-;1679:17;;1724:1;1719;1715;:5;;;;:::i;:::-;:10;1707:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1781:1;1774:8;;;1544:246;;;;;:::o;1798:132::-;1856:7;1883:39;1887:1;1890;1883:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1876:46;;1798:132;;;;:::o;1202:136::-;1260:7;1287:43;1291:1;1294;1287:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1280:50;;1202:136;;;;:::o;1015:179::-;1073:7;1093:9;1109:1;1105;:5;;;;:::i;:::-;1093:17;;1134:1;1129;:6;;1121:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1185:1;1178:8;;;1015:179;;;;:::o;11086:92::-;11143:10;;;;;;;;;;;:19;;:27;11163:6;11143:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11086:92;:::o;10429:483::-;5491:4;5482:6;;:13;;;;;;;;;;;;;;;;;;10507:21:::1;10545:1;10531:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10507:40;;10576:4;10558;10563:1;10558:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10602:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10592:4;10597:1;10592:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10635:62;10652:4;10667:15;;;;;;;;;;;10685:11;10635:8;:62::i;:::-;10708:15;;;;;;;;;;;:66;;;10789:11;10815:1;10831:4;10858;10878:15;10708:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10496:416;5527:5:::0;5518:6;;:14;;;;;;;;;;;;;;;;;;10429:483;:::o;10323:98::-;10380:7;10407:1;10405;:3;10404:9;;10412:1;10404:9;;;10410:1;10404:9;10397:16;;10323:98;;;;:::o;1938:189::-;2024:7;2056:1;2052;:5;2059:12;2044:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2083:9;2099:1;2095;:5;;;;:::i;:::-;2083:17;;2118:1;2111:8;;;1938:189;;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:182::-;6495:34;6491:1;6483:6;6479:14;6472:58;6355:182;:::o;6543:366::-;6685:3;6706:67;6770:2;6765:3;6706:67;:::i;:::-;6699:74;;6782:93;6871:3;6782:93;:::i;:::-;6900:2;6895:3;6891:12;6884:19;;6543:366;;;:::o;6915:419::-;7081:4;7119:2;7108:9;7104:18;7096:26;;7168:9;7162:4;7158:20;7154:1;7143:9;7139:17;7132:47;7196:131;7322:4;7196:131;:::i;:::-;7188:139;;6915:419;;;:::o;7340:180::-;7388:77;7385:1;7378:88;7485:4;7482:1;7475:15;7509:4;7506:1;7499:15;7526:102;7568:8;7615:5;7612:1;7608:13;7587:34;;7526:102;;;:::o;7634:848::-;7695:5;7702:4;7726:6;7717:15;;7750:5;7741:14;;7764:712;7785:1;7775:8;7772:15;7764:712;;;7880:4;7875:3;7871:14;7865:4;7862:24;7859:50;;;7889:18;;:::i;:::-;7859:50;7939:1;7929:8;7925:16;7922:451;;;8354:4;8347:5;8343:16;8334:25;;7922:451;8404:4;8398;8394:15;8386:23;;8434:32;8457:8;8434:32;:::i;:::-;8422:44;;7764:712;;;7634:848;;;;;;;:::o;8488:1073::-;8542:5;8733:8;8723:40;;8754:1;8745:10;;8756:5;;8723:40;8782:4;8772:36;;8799:1;8790:10;;8801:5;;8772:36;8868:4;8916:1;8911:27;;;;8952:1;8947:191;;;;8861:277;;8911:27;8929:1;8920:10;;8931:5;;;8947:191;8992:3;8982:8;8979:17;8976:43;;;8999:18;;:::i;:::-;8976:43;9048:8;9045:1;9041:16;9032:25;;9083:3;9076:5;9073:14;9070:40;;;9090:18;;:::i;:::-;9070:40;9123:5;;;8861:277;;9247:2;9237:8;9234:16;9228:3;9222:4;9219:13;9215:36;9197:2;9187:8;9184:16;9179:2;9173:4;9170:12;9166:35;9150:111;9147:246;;;9303:8;9297:4;9293:19;9284:28;;9338:3;9331:5;9328:14;9325:40;;;9345:18;;:::i;:::-;9325:40;9378:5;;9147:246;9418:42;9456:3;9446:8;9440:4;9437:1;9418:42;:::i;:::-;9403:57;;;;9492:4;9487:3;9483:14;9476:5;9473:25;9470:51;;;9501:18;;:::i;:::-;9470:51;9550:4;9543:5;9539:16;9530:25;;8488:1073;;;;;;:::o;9567:281::-;9625:5;9649:23;9667:4;9649:23;:::i;:::-;9641:31;;9693:25;9709:8;9693:25;:::i;:::-;9681:37;;9737:104;9774:66;9764:8;9758:4;9737:104;:::i;:::-;9728:113;;9567:281;;;;:::o;9854:410::-;9894:7;9917:20;9935:1;9917:20;:::i;:::-;9912:25;;9951:20;9969:1;9951:20;:::i;:::-;9946:25;;10006:1;10003;9999:9;10028:30;10046:11;10028:30;:::i;:::-;10017:41;;10207:1;10198:7;10194:15;10191:1;10188:22;10168:1;10161:9;10141:83;10118:139;;10237:18;;:::i;:::-;10118:139;9902:362;9854:410;;;;:::o;10270:171::-;10410:23;10406:1;10398:6;10394:14;10387:47;10270:171;:::o;10447:366::-;10589:3;10610:67;10674:2;10669:3;10610:67;:::i;:::-;10603:74;;10686:93;10775:3;10686:93;:::i;:::-;10804:2;10799:3;10795:12;10788:19;;10447:366;;;:::o;10819:419::-;10985:4;11023:2;11012:9;11008:18;11000:26;;11072:9;11066:4;11062:20;11058:1;11047:9;11043:17;11036:47;11100:131;11226:4;11100:131;:::i;:::-;11092:139;;10819:419;;;:::o;11244:147::-;11345:11;11382:3;11367:18;;11244:147;;;;:::o;11397:114::-;;:::o;11517:398::-;11676:3;11697:83;11778:1;11773:3;11697:83;:::i;:::-;11690:90;;11789:93;11878:3;11789:93;:::i;:::-;11907:1;11902:3;11898:11;11891:18;;11517:398;;;:::o;11921:379::-;12105:3;12127:147;12270:3;12127:147;:::i;:::-;12120:154;;12291:3;12284:10;;11921:379;;;:::o;12306:180::-;12446:32;12442:1;12434:6;12430:14;12423:56;12306:180;:::o;12492:366::-;12634:3;12655:67;12719:2;12714:3;12655:67;:::i;:::-;12648:74;;12731:93;12820:3;12731:93;:::i;:::-;12849:2;12844:3;12840:12;12833:19;;12492:366;;;:::o;12864:419::-;13030:4;13068:2;13057:9;13053:18;13045:26;;13117:9;13111:4;13107:20;13103:1;13092:9;13088:17;13081:47;13145:131;13271:4;13145:131;:::i;:::-;13137:139;;12864:419;;;:::o;13289:170::-;13429:22;13425:1;13417:6;13413:14;13406:46;13289:170;:::o;13465:366::-;13607:3;13628:67;13692:2;13687:3;13628:67;:::i;:::-;13621:74;;13704:93;13793:3;13704:93;:::i;:::-;13822:2;13817:3;13813:12;13806:19;;13465:366;;;:::o;13837:419::-;14003:4;14041:2;14030:9;14026:18;14018:26;;14090:9;14084:4;14080:20;14076:1;14065:9;14061:17;14054:47;14118:131;14244:4;14118:131;:::i;:::-;14110:139;;13837:419;;;:::o;14262:173::-;14402:25;14398:1;14390:6;14386:14;14379:49;14262:173;:::o;14441:366::-;14583:3;14604:67;14668:2;14663:3;14604:67;:::i;:::-;14597:74;;14680:93;14769:3;14680:93;:::i;:::-;14798:2;14793:3;14789:12;14782:19;;14441:366;;;:::o;14813:419::-;14979:4;15017:2;15006:9;15002:18;14994:26;;15066:9;15060:4;15056:20;15052:1;15041:9;15037:17;15030:47;15094:131;15220:4;15094:131;:::i;:::-;15086:139;;14813:419;;;:::o;15238:85::-;15283:7;15312:5;15301:16;;15238:85;;;:::o;15329:60::-;15357:3;15378:5;15371:12;;15329:60;;;:::o;15395:158::-;15453:9;15486:61;15504:42;15513:32;15539:5;15513:32;:::i;:::-;15504:42;:::i;:::-;15486:61;:::i;:::-;15473:74;;15395:158;;;:::o;15559:147::-;15654:45;15693:5;15654:45;:::i;:::-;15649:3;15642:58;15559:147;;:::o;15712:807::-;15961:4;15999:3;15988:9;15984:19;15976:27;;16013:71;16081:1;16070:9;16066:17;16057:6;16013:71;:::i;:::-;16094:72;16162:2;16151:9;16147:18;16138:6;16094:72;:::i;:::-;16176:80;16252:2;16241:9;16237:18;16228:6;16176:80;:::i;:::-;16266;16342:2;16331:9;16327:18;16318:6;16266:80;:::i;:::-;16356:73;16424:3;16413:9;16409:19;16400:6;16356:73;:::i;:::-;16439;16507:3;16496:9;16492:19;16483:6;16439:73;:::i;:::-;15712:807;;;;;;;;;:::o;16525:143::-;16582:5;16613:6;16607:13;16598:22;;16629:33;16656:5;16629:33;:::i;:::-;16525:143;;;;:::o;16674:663::-;16762:6;16770;16778;16827:2;16815:9;16806:7;16802:23;16798:32;16795:119;;;16833:79;;:::i;:::-;16795:119;16953:1;16978:64;17034:7;17025:6;17014:9;17010:22;16978:64;:::i;:::-;16968:74;;16924:128;17091:2;17117:64;17173:7;17164:6;17153:9;17149:22;17117:64;:::i;:::-;17107:74;;17062:129;17230:2;17256:64;17312:7;17303:6;17292:9;17288:22;17256:64;:::i;:::-;17246:74;;17201:129;16674:663;;;;;:::o;17343:223::-;17483:34;17479:1;17471:6;17467:14;17460:58;17552:6;17547:2;17539:6;17535:15;17528:31;17343:223;:::o;17572:366::-;17714:3;17735:67;17799:2;17794:3;17735:67;:::i;:::-;17728:74;;17811:93;17900:3;17811:93;:::i;:::-;17929:2;17924:3;17920:12;17913:19;;17572:366;;;:::o;17944:419::-;18110:4;18148:2;18137:9;18133:18;18125:26;;18197:9;18191:4;18187:20;18183:1;18172:9;18168:17;18161:47;18225:131;18351:4;18225:131;:::i;:::-;18217:139;;17944:419;;;:::o;18369:221::-;18509:34;18505:1;18497:6;18493:14;18486:58;18578:4;18573:2;18565:6;18561:15;18554:29;18369:221;:::o;18596:366::-;18738:3;18759:67;18823:2;18818:3;18759:67;:::i;:::-;18752:74;;18835:93;18924:3;18835:93;:::i;:::-;18953:2;18948:3;18944:12;18937:19;;18596:366;;;:::o;18968:419::-;19134:4;19172:2;19161:9;19157:18;19149:26;;19221:9;19215:4;19211:20;19207:1;19196:9;19192:17;19185:47;19249:131;19375:4;19249:131;:::i;:::-;19241:139;;18968:419;;;:::o;19393:224::-;19533:34;19529:1;19521:6;19517:14;19510:58;19602:7;19597:2;19589:6;19585:15;19578:32;19393:224;:::o;19623:366::-;19765:3;19786:67;19850:2;19845:3;19786:67;:::i;:::-;19779:74;;19862:93;19951:3;19862:93;:::i;:::-;19980:2;19975:3;19971:12;19964:19;;19623:366;;;:::o;19995:419::-;20161:4;20199:2;20188:9;20184:18;20176:26;;20248:9;20242:4;20238:20;20234:1;20223:9;20219:17;20212:47;20276:131;20402:4;20276:131;:::i;:::-;20268:139;;19995:419;;;:::o;20420:222::-;20560:34;20556:1;20548:6;20544:14;20537:58;20629:5;20624:2;20616:6;20612:15;20605:30;20420:222;:::o;20648:366::-;20790:3;20811:67;20875:2;20870:3;20811:67;:::i;:::-;20804:74;;20887:93;20976:3;20887:93;:::i;:::-;21005:2;21000:3;20996:12;20989:19;;20648:366;;;:::o;21020:419::-;21186:4;21224:2;21213:9;21209:18;21201:26;;21273:9;21267:4;21263:20;21259:1;21248:9;21244:17;21237:47;21301:131;21427:4;21301:131;:::i;:::-;21293:139;;21020:419;;;:::o;21445:228::-;21585:34;21581:1;21573:6;21569:14;21562:58;21654:11;21649:2;21641:6;21637:15;21630:36;21445:228;:::o;21679:366::-;21821:3;21842:67;21906:2;21901:3;21842:67;:::i;:::-;21835:74;;21918:93;22007:3;21918:93;:::i;:::-;22036:2;22031:3;22027:12;22020:19;;21679:366;;;:::o;22051:419::-;22217:4;22255:2;22244:9;22240:18;22232:26;;22304:9;22298:4;22294:20;22290:1;22279:9;22275:17;22268:47;22332:131;22458:4;22332:131;:::i;:::-;22324:139;;22051:419;;;:::o;22476:175::-;22616:27;22612:1;22604:6;22600:14;22593:51;22476:175;:::o;22657:366::-;22799:3;22820:67;22884:2;22879:3;22820:67;:::i;:::-;22813:74;;22896:93;22985:3;22896:93;:::i;:::-;23014:2;23009:3;23005:12;22998:19;;22657:366;;;:::o;23029:419::-;23195:4;23233:2;23222:9;23218:18;23210:26;;23282:9;23276:4;23272:20;23268:1;23257:9;23253:17;23246:47;23310:131;23436:4;23310:131;:::i;:::-;23302:139;;23029:419;;;:::o;23454:191::-;23494:3;23513:20;23531:1;23513:20;:::i;:::-;23508:25;;23547:20;23565:1;23547:20;:::i;:::-;23542:25;;23590:1;23587;23583:9;23576:16;;23611:3;23608:1;23605:10;23602:36;;;23618:18;;:::i;:::-;23602:36;23454:191;;;;:::o;23651:176::-;23791:28;23787:1;23779:6;23775:14;23768:52;23651:176;:::o;23833:366::-;23975:3;23996:67;24060:2;24055:3;23996:67;:::i;:::-;23989:74;;24072:93;24161:3;24072:93;:::i;:::-;24190:2;24185:3;24181:12;24174:19;;23833:366;;;:::o;24205:419::-;24371:4;24409:2;24398:9;24394:18;24386:26;;24458:9;24452:4;24448:20;24444:1;24433:9;24429:17;24422:47;24486:131;24612:4;24486:131;:::i;:::-;24478:139;;24205:419;;;:::o;24630:233::-;24669:3;24692:24;24710:5;24692:24;:::i;:::-;24683:33;;24738:66;24731:5;24728:77;24725:103;;24808:18;;:::i;:::-;24725:103;24855:1;24848:5;24844:13;24837:20;;24630:233;;;:::o;24869:173::-;25009:25;25005:1;24997:6;24993:14;24986:49;24869:173;:::o;25048:366::-;25190:3;25211:67;25275:2;25270:3;25211:67;:::i;:::-;25204:74;;25287:93;25376:3;25287:93;:::i;:::-;25405:2;25400:3;25396:12;25389:19;;25048:366;;;:::o;25420:419::-;25586:4;25624:2;25613:9;25609:18;25601:26;;25673:9;25667:4;25663:20;25659:1;25648:9;25644:17;25637:47;25701:131;25827:4;25701:131;:::i;:::-;25693:139;;25420:419;;;:::o;25845:194::-;25885:4;25905:20;25923:1;25905:20;:::i;:::-;25900:25;;25939:20;25957:1;25939:20;:::i;:::-;25934:25;;25983:1;25980;25976:9;25968:17;;26007:1;26001:4;25998:11;25995:37;;;26012:18;;:::i;:::-;25995:37;25845:194;;;;:::o;26045:180::-;26093:77;26090:1;26083:88;26190:4;26187:1;26180:15;26214:4;26211:1;26204:15;26231:185;26271:1;26288:20;26306:1;26288:20;:::i;:::-;26283:25;;26322:20;26340:1;26322:20;:::i;:::-;26317:25;;26361:1;26351:35;;26366:18;;:::i;:::-;26351:35;26408:1;26405;26401:9;26396:14;;26231:185;;;;:::o;26422:220::-;26562:34;26558:1;26550:6;26546:14;26539:58;26631:3;26626:2;26618:6;26614:15;26607:28;26422:220;:::o;26648:366::-;26790:3;26811:67;26875:2;26870:3;26811:67;:::i;:::-;26804:74;;26887:93;26976:3;26887:93;:::i;:::-;27005:2;27000:3;26996:12;26989:19;;26648:366;;;:::o;27020:419::-;27186:4;27224:2;27213:9;27209:18;27201:26;;27273:9;27267:4;27263:20;27259:1;27248:9;27244:17;27237:47;27301:131;27427:4;27301:131;:::i;:::-;27293:139;;27020:419;;;:::o;27445:177::-;27585:29;27581:1;27573:6;27569:14;27562:53;27445:177;:::o;27628:366::-;27770:3;27791:67;27855:2;27850:3;27791:67;:::i;:::-;27784:74;;27867:93;27956:3;27867:93;:::i;:::-;27985:2;27980:3;27976:12;27969:19;;27628:366;;;:::o;28000:419::-;28166:4;28204:2;28193:9;28189:18;28181:26;;28253:9;28247:4;28243:20;28239:1;28228:9;28224:17;28217:47;28281:131;28407:4;28281:131;:::i;:::-;28273:139;;28000:419;;;:::o;28425:180::-;28473:77;28470:1;28463:88;28570:4;28567:1;28560:15;28594:4;28591:1;28584:15;28611:180;28659:77;28656:1;28649:88;28756:4;28753:1;28746:15;28780:4;28777:1;28770:15;28797:143;28854:5;28885:6;28879:13;28870:22;;28901:33;28928:5;28901:33;:::i;:::-;28797:143;;;;:::o;28946:351::-;29016:6;29065:2;29053:9;29044:7;29040:23;29036:32;29033:119;;;29071:79;;:::i;:::-;29033:119;29191:1;29216:64;29272:7;29263:6;29252:9;29248:22;29216:64;:::i;:::-;29206:74;;29162:128;28946:351;;;;:::o;29303:114::-;29370:6;29404:5;29398:12;29388:22;;29303:114;;;:::o;29423:184::-;29522:11;29556:6;29551:3;29544:19;29596:4;29591:3;29587:14;29572:29;;29423:184;;;;:::o;29613:132::-;29680:4;29703:3;29695:11;;29733:4;29728:3;29724:14;29716:22;;29613:132;;;:::o;29751:108::-;29828:24;29846:5;29828:24;:::i;:::-;29823:3;29816:37;29751:108;;:::o;29865:179::-;29934:10;29955:46;29997:3;29989:6;29955:46;:::i;:::-;30033:4;30028:3;30024:14;30010:28;;29865:179;;;;:::o;30050:113::-;30120:4;30152;30147:3;30143:14;30135:22;;30050:113;;;:::o;30199:732::-;30318:3;30347:54;30395:5;30347:54;:::i;:::-;30417:86;30496:6;30491:3;30417:86;:::i;:::-;30410:93;;30527:56;30577:5;30527:56;:::i;:::-;30606:7;30637:1;30622:284;30647:6;30644:1;30641:13;30622:284;;;30723:6;30717:13;30750:63;30809:3;30794:13;30750:63;:::i;:::-;30743:70;;30836:60;30889:6;30836:60;:::i;:::-;30826:70;;30682:224;30669:1;30666;30662:9;30657:14;;30622:284;;;30626:14;30922:3;30915:10;;30323:608;;;30199:732;;;;:::o;30937:831::-;31200:4;31238:3;31227:9;31223:19;31215:27;;31252:71;31320:1;31309:9;31305:17;31296:6;31252:71;:::i;:::-;31333:80;31409:2;31398:9;31394:18;31385:6;31333:80;:::i;:::-;31460:9;31454:4;31450:20;31445:2;31434:9;31430:18;31423:48;31488:108;31591:4;31582:6;31488:108;:::i;:::-;31480:116;;31606:72;31674:2;31663:9;31659:18;31650:6;31606:72;:::i;:::-;31688:73;31756:3;31745:9;31741:19;31732:6;31688:73;:::i;:::-;30937:831;;;;;;;;:::o

Swarm Source

ipfs://902d2fcd72c8497db39aa4cc8d5269bba08a6f934b9758871058ef52fd5b7b6c
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.