ETH Price: $3,628.08 (-2.22%)

Token

ERC-20: Hoppai (HOPPAI)
 

Overview

Max Total Supply

888,888,888,888 HOPPAI

Holders

136

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 HOPPAI

Value
$0.00
0xd798a29f09a14be386f8b8c025d185423f007d5a
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:
HOPPAI

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-07-29
*/

// SPDX-License-Identifier: MIT
/**
X: https://x.com/Hoppai_Eth
TG: https://t.me/hoppai_eth
Web: https://Hoppai.meme

*/
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 HOPPAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExile;
    mapping (address => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 public _initialBuyTax=0;
    uint256 public _initialSellTax=0;
    uint256 public _finalBuyTax=0;
    uint256 public _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=1000;
    uint256 private _reduceSellTaxAt=1000;
    uint256 private _preventSwapBefore=175;
    uint256 private _buyCount= 0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 888888888888 * 10**_decimals;
    string private constant _name = unicode"Hoppai";
    string private constant _symbol = unicode"HOPPAI";
    uint256 public _maxTxAmount =   8988888888 * 10**_decimals;
    uint256 public _maxWalletSize = 8988888888 * 10**_decimals;
    uint256 public _taxSwapThreshold= 898888888 * 10**_decimals;
    uint256 public _maxTaxSwap= 89888888888 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public caBlockLimit = 3;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caLimit = true;

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

    constructor () {
        _taxWallet = payable(0xd6fF3cA7d9C87AF304F5a73557c8d6547F3133c5);
        _balances[_msgSender()] = _tTotal;
        isExile[owner()] = true;
        isExile[address(this)] = true;
        
        // Initialize Uniswap Router
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create Uniswap Pair
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;
        isExile[address(uniswapV2Pair)] = true;

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

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

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

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

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

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

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

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

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

    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()) {
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);

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

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

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

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

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

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

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

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

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

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

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

    function updateSwapSettings(uint256 newinitialBuyTax, uint256 newinitialSellTax, uint256 newReduBTax, uint256 newReduSTax, uint256 newPrevSwapBef) external onlyOwner {
        _initialBuyTax = newinitialBuyTax;
        _initialSellTax = newinitialSellTax;
        _reduceBuyTaxAt = newReduBTax;
        _reduceSellTaxAt = newReduSTax;
        _preventSwapBefore = newPrevSwapBef;
    }

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

    function exileW_Restriction() 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);
        // Add liquidity
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
        _initialBuyTax = 15;
        _initialSellTax = 40;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_finalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_initialBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_initialSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"caBlockLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exileW_Restriction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinitialBuyTax","type":"uint256"},{"internalType":"uint256","name":"newinitialSellTax","type":"uint256"},{"internalType":"uint256","name":"newReduBTax","type":"uint256"},{"internalType":"uint256","name":"newReduSTax","type":"uint256"},{"internalType":"uint256","name":"newPrevSwapBef","type":"uint256"}],"name":"updateSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6007555f6008555f6009555f600a556103e8600b556103e8600c5560af600d555f600e555f600f555f6010556012600a620000419190620008cc565b640217c78f386200005391906200091c565b6011556012600a620000669190620008cc565b640217c78f386200007891906200091c565b6012556012600a6200008b9190620008cc565b633593f4b86200009c91906200091c565b6013556012600a620000af9190620008cc565b6414edcb9838620000c191906200091c565b60145560036017555f60185f6101000a81548160ff0219169083151502179055505f601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff02191690831515021790555034801562000123575f80fd5b505f620001356200070c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073d6ff3ca7d9c87af304f5a73557c8d6547f3133c560055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620002359190620008cc565b64cef5e80e386200024791906200091c565b60015f6200025a6200070c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002ac6200071360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200040f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004359190620009cb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004e29190620009cb565b6040518363ffffffff1660e01b81526004016200050192919062000a0c565b6020604051808303815f875af11580156200051e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005449190620009cb565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200067f6200070c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620006dd9190620008cc565b64cef5e80e38620006ef91906200091c565b604051620006fe919062000a48565b60405180910390a362000a63565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620007c4578086048111156200079c576200079b6200073a565b5b6001851615620007ac5780820291505b8081029050620007bc8562000767565b94506200077c565b94509492505050565b5f82620007de5760019050620008b0565b81620007ed575f9050620008b0565b8160018114620008065760028114620008115762000847565b6001915050620008b0565b60ff8411156200082657620008256200073a565b5b8360020a91508482111562000840576200083f6200073a565b5b50620008b0565b5060208310610133831016604e8410600b8410161715620008815782820a9050838111156200087b576200087a6200073a565b5b620008b0565b62000890848484600162000773565b92509050818404811115620008aa57620008a96200073a565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620008d882620008b7565b9150620008e583620008c0565b9250620009147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007cd565b905092915050565b5f6200092882620008b7565b91506200093583620008b7565b92508282026200094581620008b7565b915082820484148315176200095f576200095e6200073a565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000995826200096a565b9050919050565b620009a78162000989565b8114620009b2575f80fd5b50565b5f81519050620009c5816200099c565b92915050565b5f60208284031215620009e357620009e262000966565b5b5f620009f284828501620009b5565b91505092915050565b62000a068162000989565b82525050565b5f60408201905062000a215f830185620009fb565b62000a306020830184620009fb565b9392505050565b62000a4281620008b7565b82525050565b5f60208201905062000a5d5f83018462000a37565b92915050565b6134688062000a715f395ff3fe6080604052600436106101ba575f3560e01c8063715018a6116100eb578063a9059cbb11610089578063cee3e84d11610063578063cee3e84d146105a9578063dd62ed3e146105d3578063e1b192581461060f578063f5b3c3bf14610639576101c1565b8063a9059cbb14610519578063baeb7a7d14610555578063bf474bed1461057f576101c1565b80638a8c523c116100c55780638a8c523c146104855780638da5cb5b1461049b5780638f9a55c0146104c557806395d89b41146104ef576101c1565b8063715018a61461041b5780637d1db4a51461043157806383aa62901461045b576101c1565b8063313ce567116101585780633ef94721116101325780633ef94721146103755780634381c3fa1461039f57806349bd5a5e146103b557806370a08231146103df576101c1565b8063313ce567146102f9578063331221d5146103235780633b7cdccd1461034b576101c1565b80630faee56f116101945780630faee56f1461024157806318160ddd1461026b57806323b872dd146102955780632c65469e146102d1576101c1565b80630150fe4c146101c557806306fdde03146101db578063095ea7b314610205576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610675565b005b3480156101e6575f80fd5b506101ef610770565b6040516101fc91906124dd565b60405180910390f35b348015610210575f80fd5b5061022b6004803603810190610226919061258e565b6107ad565b60405161023891906125e6565b60405180910390f35b34801561024c575f80fd5b506102556107ca565b604051610262919061260e565b60405180910390f35b348015610276575f80fd5b5061027f6107d0565b60405161028c919061260e565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612627565b6107f4565b6040516102c891906125e6565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f2919061258e565b6108c8565b005b348015610304575f80fd5b5061030d6109fd565b60405161031a9190612692565b60405180910390f35b34801561032e575f80fd5b50610349600480360381019061034491906126ab565b610a05565b005b348015610356575f80fd5b5061035f610ac3565b60405161036c919061260e565b60405180910390f35b348015610380575f80fd5b50610389610ac9565b604051610396919061260e565b60405180910390f35b3480156103aa575f80fd5b506103b3610acf565b005b3480156103c0575f80fd5b506103c9610c01565b6040516103d69190612731565b60405180910390f35b3480156103ea575f80fd5b506104056004803603810190610400919061274a565b610c26565b604051610412919061260e565b60405180910390f35b348015610426575f80fd5b5061042f610c6c565b005b34801561043c575f80fd5b50610445610dba565b604051610452919061260e565b60405180910390f35b348015610466575f80fd5b5061046f610dc0565b60405161047c919061260e565b60405180910390f35b348015610490575f80fd5b50610499610dc6565b005b3480156104a6575f80fd5b506104af6110d8565b6040516104bc9190612731565b60405180910390f35b3480156104d0575f80fd5b506104d96110ff565b6040516104e6919061260e565b60405180910390f35b3480156104fa575f80fd5b50610503611105565b60405161051091906124dd565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a919061258e565b611142565b60405161054c91906125e6565b60405180910390f35b348015610560575f80fd5b5061056961115f565b604051610576919061260e565b60405180910390f35b34801561058a575f80fd5b50610593611165565b6040516105a0919061260e565b60405180910390f35b3480156105b4575f80fd5b506105bd61116b565b6040516105ca91906125e6565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190612775565b61117e565b604051610606919061260e565b60405180910390f35b34801561061a575f80fd5b50610623611200565b604051610630919061260e565b60405180910390f35b348015610644575f80fd5b5061065f600480360381019061065a919061274a565b611206565b60405161066c91906125e6565b60405180910390f35b61067d611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610700906127fd565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561076d573d5f803e3d5ffd5b50565b60606040518060400160405280600681526020017f486f707061690000000000000000000000000000000000000000000000000000815250905090565b5f6107c06107b9611223565b848461122a565b6001905092915050565b60145481565b5f6012600a6107df9190612977565b64cef5e80e386107ef91906129c1565b905090565b5f6108008484846113ed565b6108bd8461080c611223565b6108b88560405180606001604052806028815260200161340b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61086f611223565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f309092919063ffffffff16565b61122a565b600190509392505050565b6108d0611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610953906127fd565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016109b8929190612a5d565b6020604051808303815f875af11580156109d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f89190612aae565b505050565b5f6012905090565b610a0d611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a90906127fd565b60405180910390fd5b846007819055508360088190555082600b8190555081600c8190555080600d819055505050505050565b60075481565b600a5481565b610ad7611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a906127fd565b60405180910390fd5b6012600a610b719190612977565b64cef5e80e38610b8191906129c1565b6011819055506012600a610b959190612977565b64cef5e80e38610ba591906129c1565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610bda9190612977565b64cef5e80e38610bea91906129c1565b604051610bf7919061260e565b60405180910390a1565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c74611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf7906127fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b60175481565b610dce611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906127fd565b60405180910390fd5b601660149054906101000a900460ff1615610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612b23565b60405180910390fd5b610ef33060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610ede9190612977565b64cef5e80e38610eee91906129c1565b61122a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f3b30610c26565b5f80610f456110d8565b426040518863ffffffff1660e01b8152600401610f6796959493929190612b7a565b60606040518083038185885af1158015610f83573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa89190612bed565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611048929190612c3d565b6020604051808303815f875af1158015611064573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110889190612aae565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550600f6007819055506028600881905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f484f505041490000000000000000000000000000000000000000000000000000815250905090565b5f61115561114e611223565b84846113ed565b6001905092915050565b60095481565b60135481565b601860029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90612cd4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612d62565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113e0919061260e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290612df0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090612e7e565b60405180910390fd5b5f811161150b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150290612f0c565b60405180910390fd5b5f6115146110d8565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561158257506115526110d8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c80576115c360646115b5600b54600e54116115a2576007546115a6565b6009545b85611f9290919063ffffffff16565b61200990919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611668575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116bb575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561179e57601154821115611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90612f74565b60405180910390fd5b6012548261171285610c26565b61171c9190612f92565b111561175d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117549061300f565b60405180910390fd5b43600160065461176d9190612f92565b11156117865761177c83612052565b15611785575f80fd5b5b600e5f8154809291906117989061302d565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561183c575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561189a576012548261184e85610c26565b6118589190612f92565b1115611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061300f565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561191c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119605761195d606461194f600c54600e541161193c57600854611940565b600a545b85611f9290919063ffffffff16565b61200990919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119fe575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a3657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3f575f90505b5f611a4930610c26565b9050601860029054906101000a900460ff168015611a73575060185f9054906101000a900460ff16155b8015611ac5575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611add5750601860019054906101000a900460ff165b8015611aea575060135481115b8015611af95750600d54600e54115b15611bad57601054431115611b10575f600f819055505b601754600f5410611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d906130be565b60405180910390fd5b611b73611b6e84611b6984601454612063565b612063565b61207b565b5f4790505f811115611b8957611b88476122e4565b5b600f5f815480929190611b9b9061302d565b91905055504360108190555050611c7e565b60185f9054906101000a900460ff16158015611c0f575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611c275750601860019054906101000a900460ff165b8015611c34575060135481115b8015611c435750600d54600e54115b15611c7d57611c65611c6084611c5b84601454612063565b612063565b61207b565b5f4790505f811115611c7b57611c7a476122e4565b5b505b5b505b5f811115611d7f57611cd88160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461234c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d76919061260e565b60405180910390a35b611dcf8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e72611e2682846123a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461234c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f1584866123a990919063ffffffff16565b604051611f22919061260e565b60405180910390a350505050565b5f838311158290611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e91906124dd565b60405180910390fd5b505f8385611f8591906130dc565b9050809150509392505050565b5f808303611fa2575f9050612003565b5f8284611faf91906129c1565b9050828482611fbe919061313c565b14611ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff5906131dc565b60405180910390fd5b809150505b92915050565b5f61204a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123f2565b905092915050565b5f80823b90505f8111915050919050565b5f8183116120715782612073565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156120b1576120b06131fa565b5b6040519080825280602002602001820160405280156120df5781602001602082028036833780820191505090505b50905030815f815181106120f6576120f5613227565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121be9190613268565b816001815181106121d2576121d1613227565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122383060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461122a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161229a95949392919061334a565b5f604051808303815f87803b1580156122b1575f80fd5b505af11580156122c3573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612348573d5f803e3d5ffd5b5050565b5f80828461235a9190612f92565b90508381101561239f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612396906133ec565b60405180910390fd5b8091505092915050565b5f6123ea83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f30565b905092915050565b5f8083118290612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f91906124dd565b60405180910390fd5b505f8385612446919061313c565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561248a57808201518184015260208101905061246f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124af82612453565b6124b9818561245d565b93506124c981856020860161246d565b6124d281612495565b840191505092915050565b5f6020820190508181035f8301526124f581846124a5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61252a82612501565b9050919050565b61253a81612520565b8114612544575f80fd5b50565b5f8135905061255581612531565b92915050565b5f819050919050565b61256d8161255b565b8114612577575f80fd5b50565b5f8135905061258881612564565b92915050565b5f80604083850312156125a4576125a36124fd565b5b5f6125b185828601612547565b92505060206125c28582860161257a565b9150509250929050565b5f8115159050919050565b6125e0816125cc565b82525050565b5f6020820190506125f95f8301846125d7565b92915050565b6126088161255b565b82525050565b5f6020820190506126215f8301846125ff565b92915050565b5f805f6060848603121561263e5761263d6124fd565b5b5f61264b86828701612547565b935050602061265c86828701612547565b925050604061266d8682870161257a565b9150509250925092565b5f60ff82169050919050565b61268c81612677565b82525050565b5f6020820190506126a55f830184612683565b92915050565b5f805f805f60a086880312156126c4576126c36124fd565b5b5f6126d18882890161257a565b95505060206126e28882890161257a565b94505060406126f38882890161257a565b93505060606127048882890161257a565b92505060806127158882890161257a565b9150509295509295909350565b61272b81612520565b82525050565b5f6020820190506127445f830184612722565b92915050565b5f6020828403121561275f5761275e6124fd565b5b5f61276c84828501612547565b91505092915050565b5f806040838503121561278b5761278a6124fd565b5b5f61279885828601612547565b92505060206127a985828601612547565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127e760208361245d565b91506127f2826127b3565b602082019050919050565b5f6020820190508181035f830152612814816127db565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561289d578086048111156128795761287861281b565b5b60018516156128885780820291505b808102905061289685612848565b945061285d565b94509492505050565b5f826128b55760019050612970565b816128c2575f9050612970565b81600181146128d857600281146128e257612911565b6001915050612970565b60ff8411156128f4576128f361281b565b5b8360020a91508482111561290b5761290a61281b565b5b50612970565b5060208310610133831016604e8410600b84101617156129465782820a9050838111156129415761294061281b565b5b612970565b6129538484846001612854565b9250905081840481111561296a5761296961281b565b5b81810290505b9392505050565b5f6129818261255b565b915061298c83612677565b92506129b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128a6565b905092915050565b5f6129cb8261255b565b91506129d68361255b565b92508282026129e48161255b565b915082820484148315176129fb576129fa61281b565b5b5092915050565b5f819050919050565b5f612a25612a20612a1b84612501565b612a02565b612501565b9050919050565b5f612a3682612a0b565b9050919050565b5f612a4782612a2c565b9050919050565b612a5781612a3d565b82525050565b5f604082019050612a705f830185612a4e565b612a7d60208301846125ff565b9392505050565b612a8d816125cc565b8114612a97575f80fd5b50565b5f81519050612aa881612a84565b92915050565b5f60208284031215612ac357612ac26124fd565b5b5f612ad084828501612a9a565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612b0d60178361245d565b9150612b1882612ad9565b602082019050919050565b5f6020820190508181035f830152612b3a81612b01565b9050919050565b5f819050919050565b5f612b64612b5f612b5a84612b41565b612a02565b61255b565b9050919050565b612b7481612b4a565b82525050565b5f60c082019050612b8d5f830189612722565b612b9a60208301886125ff565b612ba76040830187612b6b565b612bb46060830186612b6b565b612bc16080830185612722565b612bce60a08301846125ff565b979650505050505050565b5f81519050612be781612564565b92915050565b5f805f60608486031215612c0457612c036124fd565b5b5f612c1186828701612bd9565b9350506020612c2286828701612bd9565b9250506040612c3386828701612bd9565b9150509250925092565b5f604082019050612c505f830185612722565b612c5d60208301846125ff565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cbe60248361245d565b9150612cc982612c64565b604082019050919050565b5f6020820190508181035f830152612ceb81612cb2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d4c60228361245d565b9150612d5782612cf2565b604082019050919050565b5f6020820190508181035f830152612d7981612d40565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dda60258361245d565b9150612de582612d80565b604082019050919050565b5f6020820190508181035f830152612e0781612dce565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e6860238361245d565b9150612e7382612e0e565b604082019050919050565b5f6020820190508181035f830152612e9581612e5c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ef660298361245d565b9150612f0182612e9c565b604082019050919050565b5f6020820190508181035f830152612f2381612eea565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f5e60198361245d565b9150612f6982612f2a565b602082019050919050565b5f6020820190508181035f830152612f8b81612f52565b9050919050565b5f612f9c8261255b565b9150612fa78361255b565b9250828201905080821115612fbf57612fbe61281b565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ff9601a8361245d565b915061300482612fc5565b602082019050919050565b5f6020820190508181035f83015261302681612fed565b9050919050565b5f6130378261255b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130695761306861281b565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6130a8600f8361245d565b91506130b382613074565b602082019050919050565b5f6020820190508181035f8301526130d58161309c565b9050919050565b5f6130e68261255b565b91506130f18361255b565b92508282039050818111156131095761310861281b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131468261255b565b91506131518361255b565b9250826131615761316061310f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c660218361245d565b91506131d18261316c565b604082019050919050565b5f6020820190508181035f8301526131f3816131ba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061326281612531565b92915050565b5f6020828403121561327d5761327c6124fd565b5b5f61328a84828501613254565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132c581612520565b82525050565b5f6132d683836132bc565b60208301905092915050565b5f602082019050919050565b5f6132f882613293565b613302818561329d565b935061330d836132ad565b805f5b8381101561333d57815161332488826132cb565b975061332f836132e2565b925050600181019050613310565b5085935050505092915050565b5f60a08201905061335d5f8301886125ff565b61336a6020830187612b6b565b818103604083015261337c81866132ee565b905061338b6060830185612722565b61339860808301846125ff565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6133d6601b8361245d565b91506133e1826133a2565b602082019050919050565b5f6020820190508181035f830152613403816133ca565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e9aecb6f433a8c74645b85151f1d771dbda214ac940f9134d11119e5a7ba3be064736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063715018a6116100eb578063a9059cbb11610089578063cee3e84d11610063578063cee3e84d146105a9578063dd62ed3e146105d3578063e1b192581461060f578063f5b3c3bf14610639576101c1565b8063a9059cbb14610519578063baeb7a7d14610555578063bf474bed1461057f576101c1565b80638a8c523c116100c55780638a8c523c146104855780638da5cb5b1461049b5780638f9a55c0146104c557806395d89b41146104ef576101c1565b8063715018a61461041b5780637d1db4a51461043157806383aa62901461045b576101c1565b8063313ce567116101585780633ef94721116101325780633ef94721146103755780634381c3fa1461039f57806349bd5a5e146103b557806370a08231146103df576101c1565b8063313ce567146102f9578063331221d5146103235780633b7cdccd1461034b576101c1565b80630faee56f116101945780630faee56f1461024157806318160ddd1461026b57806323b872dd146102955780632c65469e146102d1576101c1565b80630150fe4c146101c557806306fdde03146101db578063095ea7b314610205576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610675565b005b3480156101e6575f80fd5b506101ef610770565b6040516101fc91906124dd565b60405180910390f35b348015610210575f80fd5b5061022b6004803603810190610226919061258e565b6107ad565b60405161023891906125e6565b60405180910390f35b34801561024c575f80fd5b506102556107ca565b604051610262919061260e565b60405180910390f35b348015610276575f80fd5b5061027f6107d0565b60405161028c919061260e565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612627565b6107f4565b6040516102c891906125e6565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f2919061258e565b6108c8565b005b348015610304575f80fd5b5061030d6109fd565b60405161031a9190612692565b60405180910390f35b34801561032e575f80fd5b50610349600480360381019061034491906126ab565b610a05565b005b348015610356575f80fd5b5061035f610ac3565b60405161036c919061260e565b60405180910390f35b348015610380575f80fd5b50610389610ac9565b604051610396919061260e565b60405180910390f35b3480156103aa575f80fd5b506103b3610acf565b005b3480156103c0575f80fd5b506103c9610c01565b6040516103d69190612731565b60405180910390f35b3480156103ea575f80fd5b506104056004803603810190610400919061274a565b610c26565b604051610412919061260e565b60405180910390f35b348015610426575f80fd5b5061042f610c6c565b005b34801561043c575f80fd5b50610445610dba565b604051610452919061260e565b60405180910390f35b348015610466575f80fd5b5061046f610dc0565b60405161047c919061260e565b60405180910390f35b348015610490575f80fd5b50610499610dc6565b005b3480156104a6575f80fd5b506104af6110d8565b6040516104bc9190612731565b60405180910390f35b3480156104d0575f80fd5b506104d96110ff565b6040516104e6919061260e565b60405180910390f35b3480156104fa575f80fd5b50610503611105565b60405161051091906124dd565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a919061258e565b611142565b60405161054c91906125e6565b60405180910390f35b348015610560575f80fd5b5061056961115f565b604051610576919061260e565b60405180910390f35b34801561058a575f80fd5b50610593611165565b6040516105a0919061260e565b60405180910390f35b3480156105b4575f80fd5b506105bd61116b565b6040516105ca91906125e6565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190612775565b61117e565b604051610606919061260e565b60405180910390f35b34801561061a575f80fd5b50610623611200565b604051610630919061260e565b60405180910390f35b348015610644575f80fd5b5061065f600480360381019061065a919061274a565b611206565b60405161066c91906125e6565b60405180910390f35b61067d611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610700906127fd565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561076d573d5f803e3d5ffd5b50565b60606040518060400160405280600681526020017f486f707061690000000000000000000000000000000000000000000000000000815250905090565b5f6107c06107b9611223565b848461122a565b6001905092915050565b60145481565b5f6012600a6107df9190612977565b64cef5e80e386107ef91906129c1565b905090565b5f6108008484846113ed565b6108bd8461080c611223565b6108b88560405180606001604052806028815260200161340b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61086f611223565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f309092919063ffffffff16565b61122a565b600190509392505050565b6108d0611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461095c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610953906127fd565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016109b8929190612a5d565b6020604051808303815f875af11580156109d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f89190612aae565b505050565b5f6012905090565b610a0d611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a90906127fd565b60405180910390fd5b846007819055508360088190555082600b8190555081600c8190555080600d819055505050505050565b60075481565b600a5481565b610ad7611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a906127fd565b60405180910390fd5b6012600a610b719190612977565b64cef5e80e38610b8191906129c1565b6011819055506012600a610b959190612977565b64cef5e80e38610ba591906129c1565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610bda9190612977565b64cef5e80e38610bea91906129c1565b604051610bf7919061260e565b60405180910390a1565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c74611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf7906127fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b60175481565b610dce611223565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906127fd565b60405180910390fd5b601660149054906101000a900460ff1615610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612b23565b60405180910390fd5b610ef33060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610ede9190612977565b64cef5e80e38610eee91906129c1565b61122a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f3b30610c26565b5f80610f456110d8565b426040518863ffffffff1660e01b8152600401610f6796959493929190612b7a565b60606040518083038185885af1158015610f83573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa89190612bed565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611048929190612c3d565b6020604051808303815f875af1158015611064573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110889190612aae565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550600f6007819055506028600881905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f484f505041490000000000000000000000000000000000000000000000000000815250905090565b5f61115561114e611223565b84846113ed565b6001905092915050565b60095481565b60135481565b601860029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90612cd4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612d62565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113e0919061260e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290612df0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090612e7e565b60405180910390fd5b5f811161150b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150290612f0c565b60405180910390fd5b5f6115146110d8565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561158257506115526110d8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c80576115c360646115b5600b54600e54116115a2576007546115a6565b6009545b85611f9290919063ffffffff16565b61200990919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611668575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116bb575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561179e57601154821115611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc90612f74565b60405180910390fd5b6012548261171285610c26565b61171c9190612f92565b111561175d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117549061300f565b60405180910390fd5b43600160065461176d9190612f92565b11156117865761177c83612052565b15611785575f80fd5b5b600e5f8154809291906117989061302d565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561183c575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561189a576012548261184e85610c26565b6118589190612f92565b1115611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061300f565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561191c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119605761195d606461194f600c54600e541161193c57600854611940565b600a545b85611f9290919063ffffffff16565b61200990919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119fe575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a3657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3f575f90505b5f611a4930610c26565b9050601860029054906101000a900460ff168015611a73575060185f9054906101000a900460ff16155b8015611ac5575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611add5750601860019054906101000a900460ff165b8015611aea575060135481115b8015611af95750600d54600e54115b15611bad57601054431115611b10575f600f819055505b601754600f5410611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d906130be565b60405180910390fd5b611b73611b6e84611b6984601454612063565b612063565b61207b565b5f4790505f811115611b8957611b88476122e4565b5b600f5f815480929190611b9b9061302d565b91905055504360108190555050611c7e565b60185f9054906101000a900460ff16158015611c0f575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611c275750601860019054906101000a900460ff165b8015611c34575060135481115b8015611c435750600d54600e54115b15611c7d57611c65611c6084611c5b84601454612063565b612063565b61207b565b5f4790505f811115611c7b57611c7a476122e4565b5b505b5b505b5f811115611d7f57611cd88160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461234c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d76919061260e565b60405180910390a35b611dcf8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e72611e2682846123a990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461234c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f1584866123a990919063ffffffff16565b604051611f22919061260e565b60405180910390a350505050565b5f838311158290611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e91906124dd565b60405180910390fd5b505f8385611f8591906130dc565b9050809150509392505050565b5f808303611fa2575f9050612003565b5f8284611faf91906129c1565b9050828482611fbe919061313c565b14611ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff5906131dc565b60405180910390fd5b809150505b92915050565b5f61204a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123f2565b905092915050565b5f80823b90505f8111915050919050565b5f8183116120715782612073565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156120b1576120b06131fa565b5b6040519080825280602002602001820160405280156120df5781602001602082028036833780820191505090505b50905030815f815181106120f6576120f5613227565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121be9190613268565b816001815181106121d2576121d1613227565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122383060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461122a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161229a95949392919061334a565b5f604051808303815f87803b1580156122b1575f80fd5b505af11580156122c3573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612348573d5f803e3d5ffd5b5050565b5f80828461235a9190612f92565b90508381101561239f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612396906133ec565b60405180910390fd5b8091505092915050565b5f6123ea83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f30565b905092915050565b5f8083118290612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f91906124dd565b60405180910390fd5b505f8385612446919061313c565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561248a57808201518184015260208101905061246f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124af82612453565b6124b9818561245d565b93506124c981856020860161246d565b6124d281612495565b840191505092915050565b5f6020820190508181035f8301526124f581846124a5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61252a82612501565b9050919050565b61253a81612520565b8114612544575f80fd5b50565b5f8135905061255581612531565b92915050565b5f819050919050565b61256d8161255b565b8114612577575f80fd5b50565b5f8135905061258881612564565b92915050565b5f80604083850312156125a4576125a36124fd565b5b5f6125b185828601612547565b92505060206125c28582860161257a565b9150509250929050565b5f8115159050919050565b6125e0816125cc565b82525050565b5f6020820190506125f95f8301846125d7565b92915050565b6126088161255b565b82525050565b5f6020820190506126215f8301846125ff565b92915050565b5f805f6060848603121561263e5761263d6124fd565b5b5f61264b86828701612547565b935050602061265c86828701612547565b925050604061266d8682870161257a565b9150509250925092565b5f60ff82169050919050565b61268c81612677565b82525050565b5f6020820190506126a55f830184612683565b92915050565b5f805f805f60a086880312156126c4576126c36124fd565b5b5f6126d18882890161257a565b95505060206126e28882890161257a565b94505060406126f38882890161257a565b93505060606127048882890161257a565b92505060806127158882890161257a565b9150509295509295909350565b61272b81612520565b82525050565b5f6020820190506127445f830184612722565b92915050565b5f6020828403121561275f5761275e6124fd565b5b5f61276c84828501612547565b91505092915050565b5f806040838503121561278b5761278a6124fd565b5b5f61279885828601612547565b92505060206127a985828601612547565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127e760208361245d565b91506127f2826127b3565b602082019050919050565b5f6020820190508181035f830152612814816127db565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561289d578086048111156128795761287861281b565b5b60018516156128885780820291505b808102905061289685612848565b945061285d565b94509492505050565b5f826128b55760019050612970565b816128c2575f9050612970565b81600181146128d857600281146128e257612911565b6001915050612970565b60ff8411156128f4576128f361281b565b5b8360020a91508482111561290b5761290a61281b565b5b50612970565b5060208310610133831016604e8410600b84101617156129465782820a9050838111156129415761294061281b565b5b612970565b6129538484846001612854565b9250905081840481111561296a5761296961281b565b5b81810290505b9392505050565b5f6129818261255b565b915061298c83612677565b92506129b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128a6565b905092915050565b5f6129cb8261255b565b91506129d68361255b565b92508282026129e48161255b565b915082820484148315176129fb576129fa61281b565b5b5092915050565b5f819050919050565b5f612a25612a20612a1b84612501565b612a02565b612501565b9050919050565b5f612a3682612a0b565b9050919050565b5f612a4782612a2c565b9050919050565b612a5781612a3d565b82525050565b5f604082019050612a705f830185612a4e565b612a7d60208301846125ff565b9392505050565b612a8d816125cc565b8114612a97575f80fd5b50565b5f81519050612aa881612a84565b92915050565b5f60208284031215612ac357612ac26124fd565b5b5f612ad084828501612a9a565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612b0d60178361245d565b9150612b1882612ad9565b602082019050919050565b5f6020820190508181035f830152612b3a81612b01565b9050919050565b5f819050919050565b5f612b64612b5f612b5a84612b41565b612a02565b61255b565b9050919050565b612b7481612b4a565b82525050565b5f60c082019050612b8d5f830189612722565b612b9a60208301886125ff565b612ba76040830187612b6b565b612bb46060830186612b6b565b612bc16080830185612722565b612bce60a08301846125ff565b979650505050505050565b5f81519050612be781612564565b92915050565b5f805f60608486031215612c0457612c036124fd565b5b5f612c1186828701612bd9565b9350506020612c2286828701612bd9565b9250506040612c3386828701612bd9565b9150509250925092565b5f604082019050612c505f830185612722565b612c5d60208301846125ff565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cbe60248361245d565b9150612cc982612c64565b604082019050919050565b5f6020820190508181035f830152612ceb81612cb2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d4c60228361245d565b9150612d5782612cf2565b604082019050919050565b5f6020820190508181035f830152612d7981612d40565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dda60258361245d565b9150612de582612d80565b604082019050919050565b5f6020820190508181035f830152612e0781612dce565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e6860238361245d565b9150612e7382612e0e565b604082019050919050565b5f6020820190508181035f830152612e9581612e5c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ef660298361245d565b9150612f0182612e9c565b604082019050919050565b5f6020820190508181035f830152612f2381612eea565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f5e60198361245d565b9150612f6982612f2a565b602082019050919050565b5f6020820190508181035f830152612f8b81612f52565b9050919050565b5f612f9c8261255b565b9150612fa78361255b565b9250828201905080821115612fbf57612fbe61281b565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ff9601a8361245d565b915061300482612fc5565b602082019050919050565b5f6020820190508181035f83015261302681612fed565b9050919050565b5f6130378261255b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130695761306861281b565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6130a8600f8361245d565b91506130b382613074565b602082019050919050565b5f6020820190508181035f8301526130d58161309c565b9050919050565b5f6130e68261255b565b91506130f18361255b565b92508282039050818111156131095761310861281b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131468261255b565b91506131518361255b565b9250826131615761316061310f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c660218361245d565b91506131d18261316c565b604082019050919050565b5f6020820190508181035f8301526131f3816131ba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061326281612531565b92915050565b5f6020828403121561327d5761327c6124fd565b5b5f61328a84828501613254565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132c581612520565b82525050565b5f6132d683836132bc565b60208301905092915050565b5f602082019050919050565b5f6132f882613293565b613302818561329d565b935061330d836132ad565b805f5b8381101561333d57815161332488826132cb565b975061332f836132e2565b925050600181019050613310565b5085935050505092915050565b5f60a08201905061335d5f8301886125ff565b61336a6020830187612b6b565b818103604083015261337c81866132ee565b905061338b6060830185612722565b61339860808301846125ff565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6133d6601b8361245d565b91506133e1826133a2565b602082019050919050565b5f6020820190508181035f830152613403816133ca565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e9aecb6f433a8c74645b85151f1d771dbda214ac940f9134d11119e5a7ba3be064736f6c63430008170033

Deployed Bytecode Sourcemap

3564:9503:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11390:115;;;;;;;;;;;;;:::i;:::-;;5909:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6742:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4758:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6186:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6911:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11912:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6095:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11513:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3943:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4056:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12072:168;;;;;;;;;;;;;:::i;:::-;;4871:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6289:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2647:148;;;;;;;;;;;;;:::i;:::-;;4562:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4937:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12348:679;;;;;;;;;;;;;:::i;:::-;;2433:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4627:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6000:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6416:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4020:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4692:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5048:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6591:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3981:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3825:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11390:115;2570:12;:10;:12::i;:::-;2560:22;;:6;;;;;;;;;;:22;;;2552:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11454:10:::1;;;;;;;;;;;11446:28;;:51;11475:21;11446:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11390:115::o:0;5909:83::-;5946:13;5979:5;;;;;;;;;;;;;;;;;5972:12;;5909:83;:::o;6742:161::-;6817:4;6834:39;6843:12;:10;:12::i;:::-;6857:7;6866:6;6834:8;:39::i;:::-;6891:4;6884:11;;6742:161;;;;:::o;4758:55::-;;;;:::o;6186:95::-;6239:7;4373:2;4432;:13;;;;:::i;:::-;4417:12;:28;;;;:::i;:::-;6259:14;;6186:95;:::o;6911:313::-;7009:4;7026:36;7036:6;7044:9;7055:6;7026:9;:36::i;:::-;7073:121;7082:6;7090:12;:10;:12::i;:::-;7104:89;7142:6;7104:89;;;;;;;;;;;;;;;;;:11;:19;7116:6;7104:19;;;;;;;;;;;;;;;:33;7124:12;:10;:12::i;:::-;7104:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7073:8;:121::i;:::-;7212:4;7205:11;;6911:313;;;;;:::o;11912:152::-;2570:12;:10;:12::i;:::-;2560:22;;:6;;;;;;;;;;:22;;;2552:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12015:10:::1;12008:27;;;12036:10;;;;;;;;;;;12048:7;12008:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11912:152:::0;;:::o;6095:83::-;6136:5;4373:2;6154:16;;6095:83;:::o;11513:391::-;2570:12;:10;:12::i;:::-;2560:22;;:6;;;;;;;;;;:22;;;2552:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11707:16:::1;11690:14;:33;;;;11752:17;11734:15;:35;;;;11798:11;11780:15;:29;;;;11839:11;11820:16;:30;;;;11882:14;11861:18;:35;;;;11513:391:::0;;;;;:::o;3943:31::-;;;;:::o;4056:30::-;;;;:::o;12072:168::-;2570:12;:10;:12::i;:::-;2560:22;;:6;;;;;;;;;;:22;;;2552:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4373:2:::1;4432;:13;;;;:::i;:::-;4417:12;:28;;;;:::i;:::-;12132:12;:22;;;;4373:2;4432;:13;;;;:::i;:::-;4417:12;:28;;;;:::i;:::-;12165:14;:24;;;;12205:27;4373:2;4432;:13;;;;:::i;:::-;4417:12;:28;;;;:::i;:::-;12205:27;;;;;;:::i;:::-;;;;;;;;12072:168::o:0;4871:28::-;;;;;;;;;;;;;:::o;6289:119::-;6355:7;6382:9;:18;6392:7;6382:18;;;;;;;;;;;;;;;;6375:25;;6289:119;;;:::o;2647:148::-;2570:12;:10;:12::i;:::-;2560:22;;:6;;;;;;;;;;:22;;;2552:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2754:1:::1;2717:40;;2738:6;::::0;::::1;;;;;;;;2717:40;;;;;;;;;;;;2785:1;2768:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2647:148::o:0;4562:58::-;;;;:::o;4937:31::-;;;;:::o;12348:679::-;2570:12;:10;:12::i;:::-;2560:22;;:6;;;;;;;;;;:22;;;2552:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12414:11:::1;;;;;;;;;;;12413:12;12405:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12464:58;12481:4;12496:15;;;;;;;;;;;4373:2;4432;:13;;;;:::i;:::-;4417:12;:28;;;;:::i;:::-;12464:8;:58::i;:::-;12559:15;;;;;;;;;;;:31;;;12598:21;12643:4;12663:24;12681:4;12663:9;:24::i;:::-;12702:1;12718::::0;12734:7:::1;:5;:7::i;:::-;12756:15;12559:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12800:13;;;;;;;;;;;12793:29;;;12831:15;;;;;;;;;;;12849:14;12793:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12889:4;12875:11;;:18;;;;;;;;;;;;;;;;;;12918:4;12904:11;;:18;;;;;;;;;;;;;;;;;;12946:12;12933:10;:25;;;;12986:2;12969:14;:19;;;;13017:2;12999:15;:20;;;;12348:679::o:0;2433:79::-;2471:7;2498:6;;;;;;;;;;;2491:13;;2433:79;:::o;4627:58::-;;;;:::o;6000:87::-;6039:13;6072:7;;;;;;;;;;;;;;;;;6065:14;;6000:87;:::o;6416:167::-;6494:4;6511:42;6521:12;:10;:12::i;:::-;6535:9;6546:6;6511:9;:42::i;:::-;6571:4;6564:11;;6416:167;;;;:::o;4020:29::-;;;;:::o;4692:59::-;;;;:::o;5048:26::-;;;;;;;;;;;;;:::o;6591:143::-;6672:7;6699:11;:18;6711:5;6699:18;;;;;;;;;;;;;;;:27;6718:7;6699:27;;;;;;;;;;;;;;;;6692:34;;6591:143;;;;:::o;3981:32::-;;;;:::o;3825:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;188:98::-;241:7;268:10;261:17;;188:98;:::o;7232:335::-;7342:1;7325:19;;:5;:19;;;7317:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7423:1;7404:21;;:7;:21;;;7396:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7505:6;7475:11;:18;7487:5;7475:18;;;;;;;;;;;;;;;:27;7494:7;7475:27;;;;;;;;;;;;;;;:36;;;;7543:7;7527:32;;7536:5;7527:32;;;7552:6;7527:32;;;;;;:::i;:::-;;;;;;;;7232:335;;;:::o;7575:2998::-;7679:1;7663:18;;:4;:18;;;7655:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7756:1;7742:16;;:2;:16;;;7734:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7826:1;7817:6;:10;7809:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7884:17;7930:7;:5;:7::i;:::-;7922:15;;:4;:15;;;;:32;;;;;7947:7;:5;:7::i;:::-;7941:13;;:2;:13;;;;7922:32;7918:2284;;;7983:82;8061:3;7983:73;8007:15;;7995:9;;:27;7994:61;;8041:14;;7994:61;;;8026:12;;7994:61;7983:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;7971:94;;8086:10;:16;8097:4;8086:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8120:15;;;;;;;;;;;8106:30;;:2;:30;;;;8086:50;:66;;;;;8141:7;:11;8149:2;8141:11;;;;;;;;;;;;;;;;;;;;;;;;;8140:12;8086:66;8082:417;;;8191:12;;8181:6;:22;;8173:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8286:14;;8276:6;8260:13;8270:2;8260:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8252:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8373:12;8369:1;8356:10;;:14;;;;:::i;:::-;:29;8352:102;;;8419:14;8430:2;8419:10;:14::i;:::-;8418:15;8410:24;;;;;;8352:102;8472:9;;:11;;;;;;;;;:::i;:::-;;;;;;8082:417;8520:10;:14;8531:2;8520:14;;;;;;;;;;;;;;;;;;;;;;;;;8519:15;:31;;;;;8539:7;:11;8547:2;8539:11;;;;;;;;;;;;;;;;;;;;;;;;;8538:12;8519:31;8515:151;;;8605:14;;8595:6;8579:13;8589:2;8579:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8571:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8515:151;8686:10;:14;8697:2;8686:14;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;8720:4;8704:21;;:4;:21;;;;8686:39;8682:177;;;8758:85;8839:3;8758:76;8782:16;;8770:9;;:28;8769:64;;8818:15;;8769:64;;;8802:13;;8769:64;8758:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;8746:97;;8682:177;8880:10;:16;8891:4;8880:16;;;;;;;;;;;;;;;;;;;;;;;;;8879:17;:36;;;;;8901:10;:14;8912:2;8901:14;;;;;;;;;;;;;;;;;;;;;;;;;8900:15;8879:36;:61;;;;;8935:4;8919:21;;:4;:21;;;;8879:61;8875:115;;;8973:1;8961:13;;8875:115;9006:28;9037:24;9055:4;9037:9;:24::i;:::-;9006:55;;9080:7;;;;;;;;;;;:18;;;;;9092:6;;;;;;;;;;;9091:7;9080:18;:36;;;;;9102:10;:14;9113:2;9102:14;;;;;;;;;;;;;;;;;;;;;;;;;9080:36;:51;;;;;9120:11;;;;;;;;;;;9080:51;:95;;;;;9158:17;;9135:20;:40;9080:95;:129;;;;;9191:18;;9179:9;;:30;9080:129;9076:1115;;;9249:13;;9234:12;:28;9230:90;;;9299:1;9287:9;:13;;;;9230:90;9358:12;;9346:9;;:24;9338:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;9409:69;9426:51;9430:6;9438:38;9442:20;9464:11;;9438:3;:38::i;:::-;9426:3;:51::i;:::-;9409:16;:69::i;:::-;9497:26;9526:21;9497:50;;9591:1;9570:18;:22;9566:106;;;9617:35;9630:21;9617:12;:35::i;:::-;9566:106;9690:9;;:11;;;;;;;;;:::i;:::-;;;;;;9736:12;9720:13;:28;;;;9211:553;9076:1115;;;9775:6;;;;;;;;;;;9774:7;:25;;;;;9785:10;:14;9796:2;9785:14;;;;;;;;;;;;;;;;;;;;;;;;;9774:25;:40;;;;;9803:11;;;;;;;;;;;9774:40;:84;;;;;9841:17;;9818:20;:40;9774:84;:118;;;;;9874:18;;9862:9;;:30;9774:118;9770:421;;;9913:69;9930:51;9934:6;9942:38;9946:20;9968:11;;9942:3;:38::i;:::-;9930:3;:51::i;:::-;9913:16;:69::i;:::-;10001:26;10030:21;10001:50;;10095:1;10074:18;:22;10070:106;;;10121:35;10134:21;10121:12;:35::i;:::-;10070:106;9894:297;9770:421;9076:1115;7956:2246;7918:2284;10230:1;10218:9;:13;10214:172;;;10275:39;10304:9;10275;:24;10293:4;10275:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10248:9;:24;10266:4;10248:24;;;;;;;;;;;;;;;:66;;;;10357:4;10334:40;;10343:4;10334:40;;;10364:9;10334:40;;;;;;:::i;:::-;;;;;;;;10214:172;10414:27;10434:6;10414:9;:15;10424:4;10414:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10396:9;:15;10406:4;10396:15;;;;;;;;;;;;;;;:45;;;;10468:40;10486:21;10497:9;10486:6;:10;;:21;;;;:::i;:::-;10468:9;:13;10478:2;10468:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10452:9;:13;10462:2;10452:13;;;;;;;;;;;;;;;:56;;;;10539:2;10524:41;;10533:4;10524:41;;;10543:21;10554:9;10543:6;:10;;:21;;;;:::i;:::-;10524:41;;;;;;:::i;:::-;;;;;;;;7644:2929;7575:2998;;;:::o;1325:190::-;1411:7;1444:1;1439;:6;;1447:12;1431:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1471:9;1487:1;1483;:5;;;;:::i;:::-;1471:17;;1506:1;1499:8;;;1325:190;;;;;:::o;1523:246::-;1581:7;1610:1;1605;:6;1601:47;;1635:1;1628:8;;;;1601:47;1658:9;1674:1;1670;:5;;;;:::i;:::-;1658:17;;1703:1;1698;1694;:5;;;;:::i;:::-;:10;1686:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1760:1;1753:8;;;1523:246;;;;;:::o;1777:132::-;1835:7;1862:39;1866:1;1869;1862:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1855:46;;1777:132;;;;:::o;10696:195::-;10755:4;10772:12;10839:7;10827:20;10819:28;;10882:1;10875:4;:8;10868:15;;;10696:195;;;:::o;10581:107::-;10638:7;10670:1;10666;:5;10665:15;;10679:1;10665:15;;;10675:1;10665:15;10658:22;;10581:107;;;;:::o;10899:483::-;5174:4;5165:6;;:13;;;;;;;;;;;;;;;;;;10977:21:::1;11015:1;11001:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10977:40;;11046:4;11028;11033:1;11028:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11072:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11062:4;11067:1;11062:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11105:62;11122:4;11137:15;;;;;;;;;;;11155:11;11105:8;:62::i;:::-;11178:15;;;;;;;;;;;:66;;;11259:11;11285:1;11301:4;11328;11348:15;11178:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10966:416;5210:5:::0;5201:6;;:14;;;;;;;;;;;;;;;;;;10899:483;:::o;12248:92::-;12305:10;;;;;;;;;;;:19;;:27;12325:6;12305:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12248:92;:::o;994:179::-;1052:7;1072:9;1088:1;1084;:5;;;;:::i;:::-;1072:17;;1113:1;1108;:6;;1100:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1164:1;1157:8;;;994:179;;;;:::o;1181:136::-;1239:7;1266:43;1270:1;1273;1266:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1259:50;;1181:136;;;;:::o;1917:189::-;2003:7;2035:1;2031;:5;2038:12;2023:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2062:9;2078:1;2074;:5;;;;:::i;:::-;2062:17;;2097:1;2090:8;;;1917:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:911::-;4948:6;4956;4964;4972;4980;5029:3;5017:9;5008:7;5004:23;5000:33;4997:120;;;5036:79;;:::i;:::-;4997:120;5156:1;5181:53;5226:7;5217:6;5206:9;5202:22;5181:53;:::i;:::-;5171:63;;5127:117;5283:2;5309:53;5354:7;5345:6;5334:9;5330:22;5309:53;:::i;:::-;5299:63;;5254:118;5411:2;5437:53;5482:7;5473:6;5462:9;5458:22;5437:53;:::i;:::-;5427:63;;5382:118;5539:2;5565:53;5610:7;5601:6;5590:9;5586:22;5565:53;:::i;:::-;5555:63;;5510:118;5667:3;5694:53;5739:7;5730:6;5719:9;5715:22;5694:53;:::i;:::-;5684:63;;5638:119;4853:911;;;;;;;;:::o;5770:118::-;5857:24;5875:5;5857:24;:::i;:::-;5852:3;5845:37;5770:118;;:::o;5894:222::-;5987:4;6025:2;6014:9;6010:18;6002:26;;6038:71;6106:1;6095:9;6091:17;6082:6;6038:71;:::i;:::-;5894:222;;;;:::o;6122:329::-;6181:6;6230:2;6218:9;6209:7;6205:23;6201:32;6198:119;;;6236:79;;:::i;:::-;6198:119;6356:1;6381:53;6426:7;6417:6;6406:9;6402:22;6381:53;:::i;:::-;6371:63;;6327:117;6122:329;;;;:::o;6457:474::-;6525:6;6533;6582:2;6570:9;6561:7;6557:23;6553:32;6550:119;;;6588:79;;:::i;:::-;6550:119;6708:1;6733:53;6778:7;6769:6;6758:9;6754:22;6733:53;:::i;:::-;6723:63;;6679:117;6835:2;6861:53;6906:7;6897:6;6886:9;6882:22;6861:53;:::i;:::-;6851:63;;6806:118;6457:474;;;;;:::o;6937:182::-;7077:34;7073:1;7065:6;7061:14;7054:58;6937:182;:::o;7125:366::-;7267:3;7288:67;7352:2;7347:3;7288:67;:::i;:::-;7281:74;;7364:93;7453:3;7364:93;:::i;:::-;7482:2;7477:3;7473:12;7466:19;;7125:366;;;:::o;7497:419::-;7663:4;7701:2;7690:9;7686:18;7678:26;;7750:9;7744:4;7740:20;7736:1;7725:9;7721:17;7714:47;7778:131;7904:4;7778:131;:::i;:::-;7770:139;;7497:419;;;:::o;7922:180::-;7970:77;7967:1;7960:88;8067:4;8064:1;8057:15;8091:4;8088:1;8081:15;8108:102;8150:8;8197:5;8194:1;8190:13;8169:34;;8108:102;;;:::o;8216:848::-;8277:5;8284:4;8308:6;8299:15;;8332:5;8323:14;;8346:712;8367:1;8357:8;8354:15;8346:712;;;8462:4;8457:3;8453:14;8447:4;8444:24;8441:50;;;8471:18;;:::i;:::-;8441:50;8521:1;8511:8;8507:16;8504:451;;;8936:4;8929:5;8925:16;8916:25;;8504:451;8986:4;8980;8976:15;8968:23;;9016:32;9039:8;9016:32;:::i;:::-;9004:44;;8346:712;;;8216:848;;;;;;;:::o;9070:1073::-;9124:5;9315:8;9305:40;;9336:1;9327:10;;9338:5;;9305:40;9364:4;9354:36;;9381:1;9372:10;;9383:5;;9354:36;9450:4;9498:1;9493:27;;;;9534:1;9529:191;;;;9443:277;;9493:27;9511:1;9502:10;;9513:5;;;9529:191;9574:3;9564:8;9561:17;9558:43;;;9581:18;;:::i;:::-;9558:43;9630:8;9627:1;9623:16;9614:25;;9665:3;9658:5;9655:14;9652:40;;;9672:18;;:::i;:::-;9652:40;9705:5;;;9443:277;;9829:2;9819:8;9816:16;9810:3;9804:4;9801:13;9797:36;9779:2;9769:8;9766:16;9761:2;9755:4;9752:12;9748:35;9732:111;9729:246;;;9885:8;9879:4;9875:19;9866:28;;9920:3;9913:5;9910:14;9907:40;;;9927:18;;:::i;:::-;9907:40;9960:5;;9729:246;10000:42;10038:3;10028:8;10022:4;10019:1;10000:42;:::i;:::-;9985:57;;;;10074:4;10069:3;10065:14;10058:5;10055:25;10052:51;;;10083:18;;:::i;:::-;10052:51;10132:4;10125:5;10121:16;10112:25;;9070:1073;;;;;;:::o;10149:281::-;10207:5;10231:23;10249:4;10231:23;:::i;:::-;10223:31;;10275:25;10291:8;10275:25;:::i;:::-;10263:37;;10319:104;10356:66;10346:8;10340:4;10319:104;:::i;:::-;10310:113;;10149:281;;;;:::o;10436:410::-;10476:7;10499:20;10517:1;10499:20;:::i;:::-;10494:25;;10533:20;10551:1;10533:20;:::i;:::-;10528:25;;10588:1;10585;10581:9;10610:30;10628:11;10610:30;:::i;:::-;10599:41;;10789:1;10780:7;10776:15;10773:1;10770:22;10750:1;10743:9;10723:83;10700:139;;10819:18;;:::i;:::-;10700:139;10484:362;10436:410;;;;:::o;10852:60::-;10880:3;10901:5;10894:12;;10852:60;;;:::o;10918:142::-;10968:9;11001:53;11019:34;11028:24;11046:5;11028:24;:::i;:::-;11019:34;:::i;:::-;11001:53;:::i;:::-;10988:66;;10918:142;;;:::o;11066:126::-;11116:9;11149:37;11180:5;11149:37;:::i;:::-;11136:50;;11066:126;;;:::o;11198:134::-;11256:9;11289:37;11320:5;11289:37;:::i;:::-;11276:50;;11198:134;;;:::o;11338:147::-;11433:45;11472:5;11433:45;:::i;:::-;11428:3;11421:58;11338:147;;:::o;11491:348::-;11620:4;11658:2;11647:9;11643:18;11635:26;;11671:79;11747:1;11736:9;11732:17;11723:6;11671:79;:::i;:::-;11760:72;11828:2;11817:9;11813:18;11804:6;11760:72;:::i;:::-;11491:348;;;;;:::o;11845:116::-;11915:21;11930:5;11915:21;:::i;:::-;11908:5;11905:32;11895:60;;11951:1;11948;11941:12;11895:60;11845:116;:::o;11967:137::-;12021:5;12052:6;12046:13;12037:22;;12068:30;12092:5;12068:30;:::i;:::-;11967:137;;;;:::o;12110:345::-;12177:6;12226:2;12214:9;12205:7;12201:23;12197:32;12194:119;;;12232:79;;:::i;:::-;12194:119;12352:1;12377:61;12430:7;12421:6;12410:9;12406:22;12377:61;:::i;:::-;12367:71;;12323:125;12110:345;;;;:::o;12461:173::-;12601:25;12597:1;12589:6;12585:14;12578:49;12461:173;:::o;12640:366::-;12782:3;12803:67;12867:2;12862:3;12803:67;:::i;:::-;12796:74;;12879:93;12968:3;12879:93;:::i;:::-;12997:2;12992:3;12988:12;12981:19;;12640:366;;;:::o;13012:419::-;13178:4;13216:2;13205:9;13201:18;13193:26;;13265:9;13259:4;13255:20;13251:1;13240:9;13236:17;13229:47;13293:131;13419:4;13293:131;:::i;:::-;13285:139;;13012:419;;;:::o;13437:85::-;13482:7;13511:5;13500:16;;13437:85;;;:::o;13528:158::-;13586:9;13619:61;13637:42;13646:32;13672:5;13646:32;:::i;:::-;13637:42;:::i;:::-;13619:61;:::i;:::-;13606:74;;13528:158;;;:::o;13692:147::-;13787:45;13826:5;13787:45;:::i;:::-;13782:3;13775:58;13692:147;;:::o;13845:807::-;14094:4;14132:3;14121:9;14117:19;14109:27;;14146:71;14214:1;14203:9;14199:17;14190:6;14146:71;:::i;:::-;14227:72;14295:2;14284:9;14280:18;14271:6;14227:72;:::i;:::-;14309:80;14385:2;14374:9;14370:18;14361:6;14309:80;:::i;:::-;14399;14475:2;14464:9;14460:18;14451:6;14399:80;:::i;:::-;14489:73;14557:3;14546:9;14542:19;14533:6;14489:73;:::i;:::-;14572;14640:3;14629:9;14625:19;14616:6;14572:73;:::i;:::-;13845:807;;;;;;;;;:::o;14658:143::-;14715:5;14746:6;14740:13;14731:22;;14762:33;14789:5;14762:33;:::i;:::-;14658:143;;;;:::o;14807:663::-;14895:6;14903;14911;14960:2;14948:9;14939:7;14935:23;14931:32;14928:119;;;14966:79;;:::i;:::-;14928:119;15086:1;15111:64;15167:7;15158:6;15147:9;15143:22;15111:64;:::i;:::-;15101:74;;15057:128;15224:2;15250:64;15306:7;15297:6;15286:9;15282:22;15250:64;:::i;:::-;15240:74;;15195:129;15363:2;15389:64;15445:7;15436:6;15425:9;15421:22;15389:64;:::i;:::-;15379:74;;15334:129;14807:663;;;;;:::o;15476:332::-;15597:4;15635:2;15624:9;15620:18;15612:26;;15648:71;15716:1;15705:9;15701:17;15692:6;15648:71;:::i;:::-;15729:72;15797:2;15786:9;15782:18;15773:6;15729:72;:::i;:::-;15476:332;;;;;:::o;15814:223::-;15954:34;15950:1;15942:6;15938:14;15931:58;16023:6;16018:2;16010:6;16006:15;15999:31;15814:223;:::o;16043:366::-;16185:3;16206:67;16270:2;16265:3;16206:67;:::i;:::-;16199:74;;16282:93;16371:3;16282:93;:::i;:::-;16400:2;16395:3;16391:12;16384:19;;16043:366;;;:::o;16415:419::-;16581:4;16619:2;16608:9;16604:18;16596:26;;16668:9;16662:4;16658:20;16654:1;16643:9;16639:17;16632:47;16696:131;16822:4;16696:131;:::i;:::-;16688:139;;16415:419;;;:::o;16840:221::-;16980:34;16976:1;16968:6;16964:14;16957:58;17049:4;17044:2;17036:6;17032:15;17025:29;16840:221;:::o;17067:366::-;17209:3;17230:67;17294:2;17289:3;17230:67;:::i;:::-;17223:74;;17306:93;17395:3;17306:93;:::i;:::-;17424:2;17419:3;17415:12;17408:19;;17067:366;;;:::o;17439:419::-;17605:4;17643:2;17632:9;17628:18;17620:26;;17692:9;17686:4;17682:20;17678:1;17667:9;17663:17;17656:47;17720:131;17846:4;17720:131;:::i;:::-;17712:139;;17439:419;;;:::o;17864:224::-;18004:34;18000:1;17992:6;17988:14;17981:58;18073:7;18068:2;18060:6;18056:15;18049:32;17864:224;:::o;18094:366::-;18236:3;18257:67;18321:2;18316:3;18257:67;:::i;:::-;18250:74;;18333:93;18422:3;18333:93;:::i;:::-;18451:2;18446:3;18442:12;18435:19;;18094:366;;;:::o;18466:419::-;18632:4;18670:2;18659:9;18655:18;18647:26;;18719:9;18713:4;18709:20;18705:1;18694:9;18690:17;18683:47;18747:131;18873:4;18747:131;:::i;:::-;18739:139;;18466:419;;;:::o;18891:222::-;19031:34;19027:1;19019:6;19015:14;19008:58;19100:5;19095:2;19087:6;19083:15;19076:30;18891:222;:::o;19119:366::-;19261:3;19282:67;19346:2;19341:3;19282:67;:::i;:::-;19275:74;;19358:93;19447:3;19358:93;:::i;:::-;19476:2;19471:3;19467:12;19460:19;;19119:366;;;:::o;19491:419::-;19657:4;19695:2;19684:9;19680:18;19672:26;;19744:9;19738:4;19734:20;19730:1;19719:9;19715:17;19708:47;19772:131;19898:4;19772:131;:::i;:::-;19764:139;;19491:419;;;:::o;19916:228::-;20056:34;20052:1;20044:6;20040:14;20033:58;20125:11;20120:2;20112:6;20108:15;20101:36;19916:228;:::o;20150:366::-;20292:3;20313:67;20377:2;20372:3;20313:67;:::i;:::-;20306:74;;20389:93;20478:3;20389:93;:::i;:::-;20507:2;20502:3;20498:12;20491:19;;20150:366;;;:::o;20522:419::-;20688:4;20726:2;20715:9;20711:18;20703:26;;20775:9;20769:4;20765:20;20761:1;20750:9;20746:17;20739:47;20803:131;20929:4;20803:131;:::i;:::-;20795:139;;20522:419;;;:::o;20947:175::-;21087:27;21083:1;21075:6;21071:14;21064:51;20947:175;:::o;21128:366::-;21270:3;21291:67;21355:2;21350:3;21291:67;:::i;:::-;21284:74;;21367:93;21456:3;21367:93;:::i;:::-;21485:2;21480:3;21476:12;21469:19;;21128:366;;;:::o;21500:419::-;21666:4;21704:2;21693:9;21689:18;21681:26;;21753:9;21747:4;21743:20;21739:1;21728:9;21724:17;21717:47;21781:131;21907:4;21781:131;:::i;:::-;21773:139;;21500:419;;;:::o;21925:191::-;21965:3;21984:20;22002:1;21984:20;:::i;:::-;21979:25;;22018:20;22036:1;22018:20;:::i;:::-;22013:25;;22061:1;22058;22054:9;22047:16;;22082:3;22079:1;22076:10;22073:36;;;22089:18;;:::i;:::-;22073:36;21925:191;;;;:::o;22122:176::-;22262:28;22258:1;22250:6;22246:14;22239:52;22122:176;:::o;22304:366::-;22446:3;22467:67;22531:2;22526:3;22467:67;:::i;:::-;22460:74;;22543:93;22632:3;22543:93;:::i;:::-;22661:2;22656:3;22652:12;22645:19;;22304:366;;;:::o;22676:419::-;22842:4;22880:2;22869:9;22865:18;22857:26;;22929:9;22923:4;22919:20;22915:1;22904:9;22900:17;22893:47;22957:131;23083:4;22957:131;:::i;:::-;22949:139;;22676:419;;;:::o;23101:233::-;23140:3;23163:24;23181:5;23163:24;:::i;:::-;23154:33;;23209:66;23202:5;23199:77;23196:103;;23279:18;;:::i;:::-;23196:103;23326:1;23319:5;23315:13;23308:20;;23101:233;;;:::o;23340:165::-;23480:17;23476:1;23468:6;23464:14;23457:41;23340:165;:::o;23511:366::-;23653:3;23674:67;23738:2;23733:3;23674:67;:::i;:::-;23667:74;;23750:93;23839:3;23750:93;:::i;:::-;23868:2;23863:3;23859:12;23852:19;;23511:366;;;:::o;23883:419::-;24049:4;24087:2;24076:9;24072:18;24064:26;;24136:9;24130:4;24126:20;24122:1;24111:9;24107:17;24100:47;24164:131;24290:4;24164:131;:::i;:::-;24156:139;;23883:419;;;:::o;24308:194::-;24348:4;24368:20;24386:1;24368:20;:::i;:::-;24363:25;;24402:20;24420:1;24402:20;:::i;:::-;24397:25;;24446:1;24443;24439:9;24431:17;;24470:1;24464:4;24461:11;24458:37;;;24475:18;;:::i;:::-;24458:37;24308:194;;;;:::o;24508:180::-;24556:77;24553:1;24546:88;24653:4;24650:1;24643:15;24677:4;24674:1;24667:15;24694:185;24734:1;24751:20;24769:1;24751:20;:::i;:::-;24746:25;;24785:20;24803:1;24785:20;:::i;:::-;24780:25;;24824:1;24814:35;;24829:18;;:::i;:::-;24814:35;24871:1;24868;24864:9;24859:14;;24694:185;;;;:::o;24885:220::-;25025:34;25021:1;25013:6;25009:14;25002:58;25094:3;25089:2;25081:6;25077:15;25070:28;24885:220;:::o;25111:366::-;25253:3;25274:67;25338:2;25333:3;25274:67;:::i;:::-;25267:74;;25350:93;25439:3;25350:93;:::i;:::-;25468:2;25463:3;25459:12;25452:19;;25111:366;;;:::o;25483:419::-;25649:4;25687:2;25676:9;25672:18;25664:26;;25736:9;25730:4;25726:20;25722:1;25711:9;25707:17;25700:47;25764:131;25890:4;25764:131;:::i;:::-;25756:139;;25483:419;;;:::o;25908:180::-;25956:77;25953:1;25946:88;26053:4;26050:1;26043:15;26077:4;26074:1;26067:15;26094:180;26142:77;26139:1;26132:88;26239:4;26236:1;26229:15;26263:4;26260:1;26253:15;26280:143;26337:5;26368:6;26362:13;26353:22;;26384:33;26411:5;26384:33;:::i;:::-;26280:143;;;;:::o;26429:351::-;26499:6;26548:2;26536:9;26527:7;26523:23;26519:32;26516:119;;;26554:79;;:::i;:::-;26516:119;26674:1;26699:64;26755:7;26746:6;26735:9;26731:22;26699:64;:::i;:::-;26689:74;;26645:128;26429:351;;;;:::o;26786:114::-;26853:6;26887:5;26881:12;26871:22;;26786:114;;;:::o;26906:184::-;27005:11;27039:6;27034:3;27027:19;27079:4;27074:3;27070:14;27055:29;;26906:184;;;;:::o;27096:132::-;27163:4;27186:3;27178:11;;27216:4;27211:3;27207:14;27199:22;;27096:132;;;:::o;27234:108::-;27311:24;27329:5;27311:24;:::i;:::-;27306:3;27299:37;27234:108;;:::o;27348:179::-;27417:10;27438:46;27480:3;27472:6;27438:46;:::i;:::-;27516:4;27511:3;27507:14;27493:28;;27348:179;;;;:::o;27533:113::-;27603:4;27635;27630:3;27626:14;27618:22;;27533:113;;;:::o;27682:732::-;27801:3;27830:54;27878:5;27830:54;:::i;:::-;27900:86;27979:6;27974:3;27900:86;:::i;:::-;27893:93;;28010:56;28060:5;28010:56;:::i;:::-;28089:7;28120:1;28105:284;28130:6;28127:1;28124:13;28105:284;;;28206:6;28200:13;28233:63;28292:3;28277:13;28233:63;:::i;:::-;28226:70;;28319:60;28372:6;28319:60;:::i;:::-;28309:70;;28165:224;28152:1;28149;28145:9;28140:14;;28105:284;;;28109:14;28405:3;28398:10;;27806:608;;;27682:732;;;;:::o;28420:831::-;28683:4;28721:3;28710:9;28706:19;28698:27;;28735:71;28803:1;28792:9;28788:17;28779:6;28735:71;:::i;:::-;28816:80;28892:2;28881:9;28877:18;28868:6;28816:80;:::i;:::-;28943:9;28937:4;28933:20;28928:2;28917:9;28913:18;28906:48;28971:108;29074:4;29065:6;28971:108;:::i;:::-;28963:116;;29089:72;29157:2;29146:9;29142:18;29133:6;29089:72;:::i;:::-;29171:73;29239:3;29228:9;29224:19;29215:6;29171:73;:::i;:::-;28420:831;;;;;;;;:::o;29257:177::-;29397:29;29393:1;29385:6;29381:14;29374:53;29257:177;:::o;29440:366::-;29582:3;29603:67;29667:2;29662:3;29603:67;:::i;:::-;29596:74;;29679:93;29768:3;29679:93;:::i;:::-;29797:2;29792:3;29788:12;29781:19;;29440:366;;;:::o;29812:419::-;29978:4;30016:2;30005:9;30001:18;29993:26;;30065:9;30059:4;30055:20;30051:1;30040:9;30036:17;30029:47;30093:131;30219:4;30093:131;:::i;:::-;30085:139;;29812:419;;;:::o

Swarm Source

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