ETH Price: $3,095.89 (+0.92%)
Gas: 16 Gwei

Token

HODL (Hodl)
 

Overview

Max Total Supply

1,000,000,000 Hodl

Holders

129

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.415387168608809178 Hodl

Value
$0.00
0x0c40bb77dc1144fd99eed98e1d6d76203508bf2c
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:
HODL

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-19
*/

/**
*/

/*
TG: https://t.me/hodlhodlhodlhodl
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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

abstract contract Ownable is Context {

    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

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

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
error ERC20TransferFailed();
error ERC20ZeroTransfer();
error PaymentFailed();

contract HODL is Context, IERC20, Ownable {

    using SafeMath for uint256;

    address private developmentWallet;

    uint256 initalBuyTax  = 15;
    uint256 initalSellTax = 25;
    uint256 finalBuyTax   = 0;
    uint256 finalSellTax   = 0;
    
    string private _name = "HODL";
    string private _symbol = "Hodl";
    uint8 private _decimals = 18; 

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;

    // Max Tx amount on buy and sell
    uint256 public maxBuyAmount = _totalSupply.mul(2).div(100);            // 2%   max buy tx
    uint256 public maxSellAmount = _totalSupply.mul(5).div(1000);          // 0.5% max sell tx

    uint256 public maxWalletLimit = _totalSupply.mul(2).div(100);          // 2%   max wallet limit
    
    uint256 public swapThreshold = _totalSupply.mul(1).div(100);    // 1%   swap protection

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

    mapping (address => bool) public isPair;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxWallet;
    mapping(address => uint256) public _holderCooldownTimer; 

    bool swapEnabled = true;
    bool swapbylimit = true;
    bool DumpProtected = true;

    uint public buyTax;    
    uint public sellTax;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    uint256 public cooldownTime  = 30 minutes;
    bool inSwap;   

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        developmentWallet = msg.sender;

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = IDexSwapFactory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;

        buyTax = initalBuyTax;    
        sellTax = initalSellTax;  

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[address(dexPair)] = true;
        _isExcludedFromMaxWallet[address(_dexRouter)] = true;
        _isExcludedFromMaxWallet[address(0xdead)] = true;
        _isExcludedFromMaxWallet[address(msg.sender)] = true;
        
        isPair[address(dexPair)] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

    function decimals() external view returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view returns (uint256) {
        return _totalSupply;
    }

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: Exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        if (sender == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (recipient == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if(amount == 0) {
            revert ERC20ZeroTransfer();
        }
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!isExcludedFromFee[sender] && !isExcludedFromFee[recipient]) {
                
                bool restricted;

                if (isPair[recipient]) {   //sell
                    require(
                        amount <= maxSellAmount,
                        "maxSellAmount Exceeded!"
                    );
                    restricted = true;
                } 
                else if (isPair[sender]) {  // buy
                    require(
                        amount <= maxBuyAmount,
                        "maxBuyAmount Exceeded!"
                    );
                    restricted = false;
                }
                else {
                    restricted = true;
                }

                if (!_isExcludedFromMaxWallet[recipient]) {
                    require(
                        amount + balanceOf(recipient) <= maxWalletLimit,
                        "Max Wallet Exceeded!"
                    );
                }

                if(restricted && DumpProtected) {
                    require(
                          _holderCooldownTimer[tx.origin] < block.timestamp,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderCooldownTimer[tx.origin] = block.timestamp + cooldownTime;
                }

            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isPair[sender] && 
                swapEnabled &&
                !isExcludedFromFee[sender] &&
                !isExcludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isPair[sender] || isPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isPair[sender]) { 
                feeAmount = amount.mul(buyTax).div(100);
            } 
            else if(isPair[recipient]) { 
                feeAmount = amount.mul(sellTax).div(100);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function swapBack(uint contractBalance) internal swapping {
        if(swapbylimit) contractBalance = swapThreshold;
        swapTokensForEth(contractBalance,developmentWallet);
    }

    function swapTokensForEth(uint256 tokenAmount, address _recipient) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(_recipient), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external { 
        require(msg.sender == developmentWallet,"Unauthorized!");
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        if(!os) revert PaymentFailed();
    }

    function rescueTokens(address _token,address recipient,uint _amount) external {
        require(msg.sender == developmentWallet,"Unauthorized!");
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        if(!success) revert ERC20TransferFailed();
    }

    function setTxLimit(uint onBuy, uint onSell) external onlyOwner {   
        maxBuyAmount = onBuy * 10**_decimals;
        maxSellAmount  = onSell * 10**_decimals;
    }

    function setMaxWalletLimit(uint _newLimit) external onlyOwner {   
        maxWalletLimit = _newLimit * 10**_decimals;
    }

    function excludeFromMaxWallet(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromMaxWallet[account] = excluded;
    }

    function setFee(uint _buySide, uint _sellSide) external onlyOwner {    
        buyTax = _buySide;
        sellTax = _sellSide;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }
    
    function setDevelopmentWallet(address _newWallet) external onlyOwner {
        developmentWallet = _newWallet;
    }

    function setSwapBackSettings(uint _threshold, bool _enabled, bool _dProtection, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
        DumpProtected = _dProtection;
        swapThreshold = _threshold * 10 ** _decimals;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ERC20TransferFailed","type":"error"},{"inputs":[],"name":"ERC20ZeroTransfer","type":"error"},{"inputs":[],"name":"PaymentFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_holderCooldownTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buySide","type":"uint256"},{"internalType":"uint256","name":"_sellSide","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_dProtection","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"onBuy","type":"uint256"},{"internalType":"uint256","name":"onSell","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600f60025560196003555f6004555f6005556040518060400160405280600481526020017f484f444c00000000000000000000000000000000000000000000000000000000815250600690816200005c919062000cf4565b506040518060400160405280600481526020017f486f646c0000000000000000000000000000000000000000000000000000000081525060079081620000a3919062000cf4565b50601260085f6101000a81548160ff021916908360ff16021790555060085f9054906101000a900460ff16600a620000dc919062000f61565b633b9aca00620000ed919062000fb1565b6009556200011d60646200010e60026009546200089160201b90919060201c565b6200091160201b90919060201c565b600a556200014e6103e86200013f60056009546200089160201b90919060201c565b6200091160201b90919060201c565b600b556200017e60646200016f60026009546200089160201b90919060201c565b6200091160201b90919060201c565b600c55620001ae60646200019f60016009546200089160201b90919060201c565b6200091160201b90919060201c565b600d55600160145f6101000a81548160ff0219169083151502179055506001601460016101000a81548160ff0219169083151502179055506001601460026101000a81548160ff02191690831515021790555061070860195534801562000213575f80fd5b5062000234620002286200096260201b60201c565b6200096960201b60201c565b3360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002fc919062001060565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000362573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000388919062001060565b6040518363ffffffff1660e01b8152600401620003a7929190620010a1565b6020604051808303815f875af1158015620003c4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ea919062001060565b60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254601581905550600354601681905550600160115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600954600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620008829190620010dd565b60405180910390a3506200129c565b5f808303620008a3575f90506200090b565b5f8284620008b2919062000fb1565b9050828482620008c3919062001125565b1462000906576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008fd90620011e0565b60405180910390fd5b809150505b92915050565b5f6200095a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a2a60201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808311829062000a73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6a91906200127a565b60405180910390fd5b505f838562000a83919062001125565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b0c57607f821691505b60208210810362000b225762000b2162000ac7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b49565b62000b92868362000b49565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000bdc62000bd662000bd08462000baa565b62000bb3565b62000baa565b9050919050565b5f819050919050565b62000bf78362000bbc565b62000c0f62000c068262000be3565b84845462000b55565b825550505050565b5f90565b62000c2562000c17565b62000c3281848462000bec565b505050565b5b8181101562000c595762000c4d5f8262000c1b565b60018101905062000c38565b5050565b601f82111562000ca85762000c728162000b28565b62000c7d8462000b3a565b8101602085101562000c8d578190505b62000ca562000c9c8562000b3a565b83018262000c37565b50505b505050565b5f82821c905092915050565b5f62000cca5f198460080262000cad565b1980831691505092915050565b5f62000ce4838362000cb9565b9150826002028217905092915050565b62000cff8262000a90565b67ffffffffffffffff81111562000d1b5762000d1a62000a9a565b5b62000d27825462000af4565b62000d3482828562000c5d565b5f60209050601f83116001811462000d6a575f841562000d55578287015190505b62000d61858262000cd7565b86555062000dd0565b601f19841662000d7a8662000b28565b5f5b8281101562000da35784890151825560018201915060208501945060208101905062000d7c565b8683101562000dc3578489015162000dbf601f89168262000cb9565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000e625780860481111562000e3a5762000e3962000dd8565b5b600185161562000e4a5780820291505b808102905062000e5a8562000e05565b945062000e1a565b94509492505050565b5f8262000e7c576001905062000f4e565b8162000e8b575f905062000f4e565b816001811462000ea4576002811462000eaf5762000ee5565b600191505062000f4e565b60ff84111562000ec45762000ec362000dd8565b5b8360020a91508482111562000ede5762000edd62000dd8565b5b5062000f4e565b5060208310610133831016604e8410600b841016171562000f1f5782820a90508381111562000f195762000f1862000dd8565b5b62000f4e565b62000f2e848484600162000e11565b9250905081840481111562000f485762000f4762000dd8565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000f6d8262000baa565b915062000f7a8362000f55565b925062000fa97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e6b565b905092915050565b5f62000fbd8262000baa565b915062000fca8362000baa565b925082820262000fda8162000baa565b9150828204841483151762000ff45762000ff362000dd8565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200102a8262000fff565b9050919050565b6200103c816200101e565b811462001047575f80fd5b50565b5f815190506200105a8162001031565b92915050565b5f6020828403121562001078576200107762000ffb565b5b5f62001087848285016200104a565b91505092915050565b6200109b816200101e565b82525050565b5f604082019050620010b65f83018562001090565b620010c5602083018462001090565b9392505050565b620010d78162000baa565b82525050565b5f602082019050620010f25f830184620010cc565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011318262000baa565b91506200113e8362000baa565b925082620011515762001150620010f8565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f620011c86021836200115c565b9150620011d5826200116c565b604082019050919050565b5f6020820190508181035f830152620011f981620011ba565b9050919050565b5f5b838110156200121f57808201518184015260208101905062001202565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620012468262000a90565b6200125281856200115c565b93506200126481856020860162001200565b6200126f816200122a565b840191505092915050565b5f6020820190508181035f8301526200129481846200123a565b905092915050565b6139ce80620012aa5f395ff3fe6080604052600436106101fc575f3560e01c806372ac24861161010c578063cea9d26f1161009f578063df8408fe1161006e578063df8408fe14610737578063e5e31b131461075f578063e6b2603b1461079b578063f242ab41146107b1578063f2fde38b146107db57610203565b8063cea9d26f1461066f578063d1d7d7ef14610697578063d2fcc001146106d3578063dd62ed3e146106fb57610203565b8063a9059cbb116100db578063a9059cbb146105a3578063b319c6b7146105df578063bfd70bba14610609578063cc1776d31461064557610203565b806372ac2486146104fd57806388e765ff146105255780638da5cb5b1461054f57806395d89b411461057957610203565b8063313ce5671161018f57806366a88d961161015e57806366a88d961461042f57806366d602ae1461045957806370a0823114610483578063715018a6146104bf578063728d41c9146104d557610203565b8063313ce567146103775780634f7041a5146103a157806352f7c988146103cb5780635342acb4146103f357610203565b80631786a094116101cb5780631786a094146102c157806318160ddd146102e95780631faf723b1461031357806323b872dd1461033b57610203565b80630445b6671461020757806306fdde03146102315780630758d9241461025b578063095ea7b31461028557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b610803565b6040516102289190612b10565b60405180910390f35b34801561023c575f80fd5b50610245610809565b6040516102529190612bb3565b60405180910390f35b348015610266575f80fd5b5061026f610899565b60405161027c9190612c4d565b60405180910390f35b348015610290575f80fd5b506102ab60048036038101906102a69190612ccf565b6108be565b6040516102b89190612d27565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612d6a565b6108db565b005b3480156102f4575f80fd5b506102fd6109d6565b60405161030a9190612b10565b60405180910390f35b34801561031e575f80fd5b5061033960048036038101906103349190612dce565b6109df565b005b348015610346575f80fd5b50610361600480360381019061035c9190612e0c565b610ab7565b60405161036e9190612d27565b60405180910390f35b348015610382575f80fd5b5061038b610ba9565b6040516103989190612e77565b60405180910390f35b3480156103ac575f80fd5b506103b5610bbe565b6040516103c29190612b10565b60405180910390f35b3480156103d6575f80fd5b506103f160048036038101906103ec9190612dce565b610bc4565b005b3480156103fe575f80fd5b5061041960048036038101906104149190612e90565b610c52565b6040516104269190612d27565b60405180910390f35b34801561043a575f80fd5b50610443610c6f565b6040516104509190612b10565b60405180910390f35b348015610464575f80fd5b5061046d610c75565b60405161047a9190612b10565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190612e90565b610c7b565b6040516104b69190612b10565b60405180910390f35b3480156104ca575f80fd5b506104d3610cc1565b005b3480156104e0575f80fd5b506104fb60048036038101906104f69190612ebb565b610d48565b005b348015610508575f80fd5b50610523600480360381019061051e9190612e90565b610df3565b005b348015610530575f80fd5b50610539610eb2565b6040516105469190612b10565b60405180910390f35b34801561055a575f80fd5b50610563610eb8565b6040516105709190612ef5565b60405180910390f35b348015610584575f80fd5b5061058d610edf565b60405161059a9190612bb3565b60405180910390f35b3480156105ae575f80fd5b506105c960048036038101906105c49190612ccf565b610f6f565b6040516105d69190612d27565b60405180910390f35b3480156105ea575f80fd5b506105f3610f8d565b6040516106009190612b10565b60405180910390f35b348015610614575f80fd5b5061062f600480360381019061062a9190612e90565b610f93565b60405161063c9190612b10565b60405180910390f35b348015610650575f80fd5b50610659610fa8565b6040516106669190612b10565b60405180910390f35b34801561067a575f80fd5b5061069560048036038101906106909190612e0c565b610fae565b005b3480156106a2575f80fd5b506106bd60048036038101906106b89190612e90565b611171565b6040516106ca9190612d27565b60405180910390f35b3480156106de575f80fd5b506106f960048036038101906106f49190612f0e565b61118e565b005b348015610706575f80fd5b50610721600480360381019061071c9190612f4c565b611262565b60405161072e9190612b10565b60405180910390f35b348015610742575f80fd5b5061075d60048036038101906107589190612f0e565b6112e4565b005b34801561076a575f80fd5b5061078560048036038101906107809190612e90565b6113b8565b6040516107929190612d27565b60405180910390f35b3480156107a6575f80fd5b506107af6113d5565b005b3480156107bc575f80fd5b506107c5611506565b6040516107d29190612ef5565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc9190612e90565b61152b565b005b600d5481565b60606006805461081890612fb7565b80601f016020809104026020016040519081016040528092919081815260200182805461084490612fb7565b801561088f5780601f106108665761010080835404028352916020019161088f565b820191905f5260205f20905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6108d16108ca611621565b8484611628565b6001905092915050565b6108e3611621565b73ffffffffffffffffffffffffffffffffffffffff16610901610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90613031565b60405180910390fd5b8260145f6101000a81548160ff02191690831515021790555080601460016101000a81548160ff02191690831515021790555081601460026101000a81548160ff02191690831515021790555060085f9054906101000a900460ff16600a6109bf91906131ab565b846109ca91906131f5565b600d8190555050505050565b5f600954905090565b6109e7611621565b73ffffffffffffffffffffffffffffffffffffffff16610a05610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5290613031565b60405180910390fd5b60085f9054906101000a900460ff16600a610a7691906131ab565b82610a8191906131f5565b600a8190555060085f9054906101000a900460ff16600a610aa291906131ab565b81610aad91906131f5565b600b819055505050565b5f610ac38484846117ef565b50610b9e84610ad0611621565b610b99856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e63650000000000000000815250600f5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b50611621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b611628565b600190509392505050565b5f60085f9054906101000a900460ff16905090565b60155481565b610bcc611621565b73ffffffffffffffffffffffffffffffffffffffff16610bea610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3790613031565b60405180910390fd5b81601581905550806016819055505050565b6011602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b600b5481565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc9611621565b73ffffffffffffffffffffffffffffffffffffffff16610ce7610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490613031565b60405180910390fd5b610d465f612047565b565b610d50611621565b73ffffffffffffffffffffffffffffffffffffffff16610d6e610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613031565b60405180910390fd5b60085f9054906101000a900460ff16600a610ddf91906131ab565b81610dea91906131f5565b600c8190555050565b610dfb611621565b73ffffffffffffffffffffffffffffffffffffffff16610e19610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690613031565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060078054610eee90612fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1a90612fb7565b8015610f655780601f10610f3c57610100808354040283529160200191610f65565b820191905f5260205f20905b815481529060010190602001808311610f4857829003601f168201915b5050505050905090565b5f610f82610f7b611621565b84846117ef565b506001905092915050565b60195481565b6013602052805f5260405f205f915090505481565b60165481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490613280565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff16838360405160240161106892919061329e565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110f29190613309565b5f604051808303815f865af19150503d805f811461112b576040519150601f19603f3d011682016040523d82523d5f602084013e611130565b606091505b505090508061116b576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6012602052805f5260405f205f915054906101000a900460ff1681565b611196611621565b73ffffffffffffffffffffffffffffffffffffffff166111b4610eb8565b73ffffffffffffffffffffffffffffffffffffffff161461120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190613031565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112ec611621565b73ffffffffffffffffffffffffffffffffffffffff1661130a610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790613031565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90613280565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161148990613342565b5f6040518083038185875af1925050503d805f81146114c3576040519150601f19603f3d011682016040523d82523d5f602084013e6114c8565b606091505b5050905080611503576040517ff499da2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611533611621565b73ffffffffffffffffffffffffffffffffffffffff16611551610eb8565b73ffffffffffffffffffffffffffffffffffffffff16146115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90613031565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c906133c6565b60405180910390fd5b61161e81612047565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611698575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161168f9190612ef5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611708575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116ff9190612ef5565b60405180910390fd5b80600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e29190612b10565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611860575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016118579190612ef5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d0575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016118c79190612ef5565b60405180910390fd5b5f8203611909576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a5f9054906101000a900460ff161561192f57611928848484612108565b9050611fde565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119cd575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca8575f60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a7057600b54831115611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e9061342e565b60405180910390fd5b60019050611b12565b60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b0c57600a54831115611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90613496565b60405180910390fd5b5f9050611b11565b600190505b5b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611bb957600c54611b6c85610c7b565b84611b7791906134b4565b1115611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90613531565b60405180910390fd5b5b808015611bd25750601460029054906101000a900460ff165b15611ca6574260135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d906135e5565b60405180910390fd5b60195442611c6491906134b4565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505b5f611cb230610c7b565b90505f600d548210159050808015611cd65750601a5f9054906101000a900460ff16155b8015611d29575060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d40575060145f9054906101000a900460ff165b8015611d93575060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611de6575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611df557611df4826122d2565b5b611e7c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611ec8878761234e565b611edc57611ed78787876124aa565b611ede565b845b9050611f3081600e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fce9190612b10565b60405180910390a3600193505050505b9392505050565b5f83831115829061202c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120239190612bb3565b60405180910390fd5b505f838561203a9190613603565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f612190826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061222182600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122bf9190612b10565b60405180910390a3600190509392505050565b6001601a5f6101000a81548160ff021916908315150217905550601460019054906101000a900460ff161561230757600d5490505b6123328160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661271e565b5f601a5f6101000a81548160ff02191690831515021790555050565b5f60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806123ea575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156123f857600190506124a4565b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612493575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156124a0575f90506124a4565b5f90505b92915050565b5f8060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561252a5761252360646125156015548661298e90919063ffffffff16565b612a0590919063ffffffff16565b90506125a5565b60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125a4576125a160646125936016548661298e90919063ffffffff16565b612a0590919063ffffffff16565b90505b5b5f8111156126a4576125fd81600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161269b9190612b10565b60405180910390a35b6126b78184612a4e90919063ffffffff16565b9150509392505050565b5f8082846126cf91906134b4565b905083811015612714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270b90613680565b60405180910390fd5b8091505092915050565b5f600267ffffffffffffffff81111561273a5761273961369e565b5b6040519080825280602002602001820160405280156127685781602001602082028036833780820191505090505b50905030815f8151811061277f5761277e6136cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612823573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612847919061370c565b8160018151811061285b5761285a6136cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128c13060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611628565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8486426040518663ffffffff1660e01b8152600401612923959493929190613827565b5f604051808303815f87803b15801561293a575f80fd5b505af115801561294c573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7838260405161298192919061387f565b60405180910390a1505050565b5f80830361299e575f90506129ff565b5f82846129ab91906131f5565b90508284826129ba91906138da565b146129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f19061397a565b60405180910390fd5b809150505b92915050565b5f612a4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a97565b905092915050565b5f612a8f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fe5565b905092915050565b5f8083118290612add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad49190612bb3565b60405180910390fd5b505f8385612aeb91906138da565b9050809150509392505050565b5f819050919050565b612b0a81612af8565b82525050565b5f602082019050612b235f830184612b01565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b60578082015181840152602081019050612b45565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b8582612b29565b612b8f8185612b33565b9350612b9f818560208601612b43565b612ba881612b6b565b840191505092915050565b5f6020820190508181035f830152612bcb8184612b7b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612c15612c10612c0b84612bd3565b612bf2565b612bd3565b9050919050565b5f612c2682612bfb565b9050919050565b5f612c3782612c1c565b9050919050565b612c4781612c2d565b82525050565b5f602082019050612c605f830184612c3e565b92915050565b5f80fd5b5f612c7482612bd3565b9050919050565b612c8481612c6a565b8114612c8e575f80fd5b50565b5f81359050612c9f81612c7b565b92915050565b612cae81612af8565b8114612cb8575f80fd5b50565b5f81359050612cc981612ca5565b92915050565b5f8060408385031215612ce557612ce4612c66565b5b5f612cf285828601612c91565b9250506020612d0385828601612cbb565b9150509250929050565b5f8115159050919050565b612d2181612d0d565b82525050565b5f602082019050612d3a5f830184612d18565b92915050565b612d4981612d0d565b8114612d53575f80fd5b50565b5f81359050612d6481612d40565b92915050565b5f805f8060808587031215612d8257612d81612c66565b5b5f612d8f87828801612cbb565b9450506020612da087828801612d56565b9350506040612db187828801612d56565b9250506060612dc287828801612d56565b91505092959194509250565b5f8060408385031215612de457612de3612c66565b5b5f612df185828601612cbb565b9250506020612e0285828601612cbb565b9150509250929050565b5f805f60608486031215612e2357612e22612c66565b5b5f612e3086828701612c91565b9350506020612e4186828701612c91565b9250506040612e5286828701612cbb565b9150509250925092565b5f60ff82169050919050565b612e7181612e5c565b82525050565b5f602082019050612e8a5f830184612e68565b92915050565b5f60208284031215612ea557612ea4612c66565b5b5f612eb284828501612c91565b91505092915050565b5f60208284031215612ed057612ecf612c66565b5b5f612edd84828501612cbb565b91505092915050565b612eef81612c6a565b82525050565b5f602082019050612f085f830184612ee6565b92915050565b5f8060408385031215612f2457612f23612c66565b5b5f612f3185828601612c91565b9250506020612f4285828601612d56565b9150509250929050565b5f8060408385031215612f6257612f61612c66565b5b5f612f6f85828601612c91565b9250506020612f8085828601612c91565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612fce57607f821691505b602082108103612fe157612fe0612f8a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61301b602083612b33565b915061302682612fe7565b602082019050919050565b5f6020820190508181035f8301526130488161300f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130d1578086048111156130ad576130ac61304f565b5b60018516156130bc5780820291505b80810290506130ca8561307c565b9450613091565b94509492505050565b5f826130e957600190506131a4565b816130f6575f90506131a4565b816001811461310c576002811461311657613145565b60019150506131a4565b60ff8411156131285761312761304f565b5b8360020a91508482111561313f5761313e61304f565b5b506131a4565b5060208310610133831016604e8410600b841016171561317a5782820a9050838111156131755761317461304f565b5b6131a4565b6131878484846001613088565b9250905081840481111561319e5761319d61304f565b5b81810290505b9392505050565b5f6131b582612af8565b91506131c083612e5c565b92506131ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130da565b905092915050565b5f6131ff82612af8565b915061320a83612af8565b925082820261321881612af8565b9150828204841483151761322f5761322e61304f565b5b5092915050565b7f556e617574686f72697a656421000000000000000000000000000000000000005f82015250565b5f61326a600d83612b33565b915061327582613236565b602082019050919050565b5f6020820190508181035f8301526132978161325e565b9050919050565b5f6040820190506132b15f830185612ee6565b6132be6020830184612b01565b9392505050565b5f81519050919050565b5f81905092915050565b5f6132e3826132c5565b6132ed81856132cf565b93506132fd818560208601612b43565b80840191505092915050565b5f61331482846132d9565b915081905092915050565b50565b5f61332d5f836132cf565b91506133388261331f565b5f82019050919050565b5f61334c82613322565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133b0602683612b33565b91506133bb82613356565b604082019050919050565b5f6020820190508181035f8301526133dd816133a4565b9050919050565b7f6d617853656c6c416d6f756e74204578636565646564210000000000000000005f82015250565b5f613418601783612b33565b9150613423826133e4565b602082019050919050565b5f6020820190508181035f8301526134458161340c565b9050919050565b7f6d6178427579416d6f756e7420457863656564656421000000000000000000005f82015250565b5f613480601683612b33565b915061348b8261344c565b602082019050919050565b5f6020820190508181035f8301526134ad81613474565b9050919050565b5f6134be82612af8565b91506134c983612af8565b92508282019050808211156134e1576134e061304f565b5b92915050565b7f4d61782057616c6c6574204578636565646564210000000000000000000000005f82015250565b5f61351b601483612b33565b9150613526826134e7565b602082019050919050565b5f6020820190508181035f8301526135488161350f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6135cf604983612b33565b91506135da8261354f565b606082019050919050565b5f6020820190508181035f8301526135fc816135c3565b9050919050565b5f61360d82612af8565b915061361883612af8565b92508282039050818111156136305761362f61304f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61366a601b83612b33565b915061367582613636565b602082019050919050565b5f6020820190508181035f8301526136978161365e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061370681612c7b565b92915050565b5f6020828403121561372157613720612c66565b5b5f61372e848285016136f8565b91505092915050565b5f819050919050565b5f61375a61375561375084613737565b612bf2565b612af8565b9050919050565b61376a81613740565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137a281612c6a565b82525050565b5f6137b38383613799565b60208301905092915050565b5f602082019050919050565b5f6137d582613770565b6137df818561377a565b93506137ea8361378a565b805f5b8381101561381a57815161380188826137a8565b975061380c836137bf565b9250506001810190506137ed565b5085935050505092915050565b5f60a08201905061383a5f830188612b01565b6138476020830187613761565b818103604083015261385981866137cb565b90506138686060830185612ee6565b6138756080830184612b01565b9695505050505050565b5f6040820190506138925f830185612b01565b81810360208301526138a481846137cb565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138e482612af8565b91506138ef83612af8565b9250826138ff576138fe6138ad565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613964602183612b33565b915061396f8261390a565b604082019050919050565b5f6020820190508181035f83015261399181613958565b905091905056fea2646970667358221220e235ddc6c87f7720eae5ab720a3e1578c803463ffed0cc4d5905dd554f04fa7664736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c806372ac24861161010c578063cea9d26f1161009f578063df8408fe1161006e578063df8408fe14610737578063e5e31b131461075f578063e6b2603b1461079b578063f242ab41146107b1578063f2fde38b146107db57610203565b8063cea9d26f1461066f578063d1d7d7ef14610697578063d2fcc001146106d3578063dd62ed3e146106fb57610203565b8063a9059cbb116100db578063a9059cbb146105a3578063b319c6b7146105df578063bfd70bba14610609578063cc1776d31461064557610203565b806372ac2486146104fd57806388e765ff146105255780638da5cb5b1461054f57806395d89b411461057957610203565b8063313ce5671161018f57806366a88d961161015e57806366a88d961461042f57806366d602ae1461045957806370a0823114610483578063715018a6146104bf578063728d41c9146104d557610203565b8063313ce567146103775780634f7041a5146103a157806352f7c988146103cb5780635342acb4146103f357610203565b80631786a094116101cb5780631786a094146102c157806318160ddd146102e95780631faf723b1461031357806323b872dd1461033b57610203565b80630445b6671461020757806306fdde03146102315780630758d9241461025b578063095ea7b31461028557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b610803565b6040516102289190612b10565b60405180910390f35b34801561023c575f80fd5b50610245610809565b6040516102529190612bb3565b60405180910390f35b348015610266575f80fd5b5061026f610899565b60405161027c9190612c4d565b60405180910390f35b348015610290575f80fd5b506102ab60048036038101906102a69190612ccf565b6108be565b6040516102b89190612d27565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612d6a565b6108db565b005b3480156102f4575f80fd5b506102fd6109d6565b60405161030a9190612b10565b60405180910390f35b34801561031e575f80fd5b5061033960048036038101906103349190612dce565b6109df565b005b348015610346575f80fd5b50610361600480360381019061035c9190612e0c565b610ab7565b60405161036e9190612d27565b60405180910390f35b348015610382575f80fd5b5061038b610ba9565b6040516103989190612e77565b60405180910390f35b3480156103ac575f80fd5b506103b5610bbe565b6040516103c29190612b10565b60405180910390f35b3480156103d6575f80fd5b506103f160048036038101906103ec9190612dce565b610bc4565b005b3480156103fe575f80fd5b5061041960048036038101906104149190612e90565b610c52565b6040516104269190612d27565b60405180910390f35b34801561043a575f80fd5b50610443610c6f565b6040516104509190612b10565b60405180910390f35b348015610464575f80fd5b5061046d610c75565b60405161047a9190612b10565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190612e90565b610c7b565b6040516104b69190612b10565b60405180910390f35b3480156104ca575f80fd5b506104d3610cc1565b005b3480156104e0575f80fd5b506104fb60048036038101906104f69190612ebb565b610d48565b005b348015610508575f80fd5b50610523600480360381019061051e9190612e90565b610df3565b005b348015610530575f80fd5b50610539610eb2565b6040516105469190612b10565b60405180910390f35b34801561055a575f80fd5b50610563610eb8565b6040516105709190612ef5565b60405180910390f35b348015610584575f80fd5b5061058d610edf565b60405161059a9190612bb3565b60405180910390f35b3480156105ae575f80fd5b506105c960048036038101906105c49190612ccf565b610f6f565b6040516105d69190612d27565b60405180910390f35b3480156105ea575f80fd5b506105f3610f8d565b6040516106009190612b10565b60405180910390f35b348015610614575f80fd5b5061062f600480360381019061062a9190612e90565b610f93565b60405161063c9190612b10565b60405180910390f35b348015610650575f80fd5b50610659610fa8565b6040516106669190612b10565b60405180910390f35b34801561067a575f80fd5b5061069560048036038101906106909190612e0c565b610fae565b005b3480156106a2575f80fd5b506106bd60048036038101906106b89190612e90565b611171565b6040516106ca9190612d27565b60405180910390f35b3480156106de575f80fd5b506106f960048036038101906106f49190612f0e565b61118e565b005b348015610706575f80fd5b50610721600480360381019061071c9190612f4c565b611262565b60405161072e9190612b10565b60405180910390f35b348015610742575f80fd5b5061075d60048036038101906107589190612f0e565b6112e4565b005b34801561076a575f80fd5b5061078560048036038101906107809190612e90565b6113b8565b6040516107929190612d27565b60405180910390f35b3480156107a6575f80fd5b506107af6113d5565b005b3480156107bc575f80fd5b506107c5611506565b6040516107d29190612ef5565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc9190612e90565b61152b565b005b600d5481565b60606006805461081890612fb7565b80601f016020809104026020016040519081016040528092919081815260200182805461084490612fb7565b801561088f5780601f106108665761010080835404028352916020019161088f565b820191905f5260205f20905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6108d16108ca611621565b8484611628565b6001905092915050565b6108e3611621565b73ffffffffffffffffffffffffffffffffffffffff16610901610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90613031565b60405180910390fd5b8260145f6101000a81548160ff02191690831515021790555080601460016101000a81548160ff02191690831515021790555081601460026101000a81548160ff02191690831515021790555060085f9054906101000a900460ff16600a6109bf91906131ab565b846109ca91906131f5565b600d8190555050505050565b5f600954905090565b6109e7611621565b73ffffffffffffffffffffffffffffffffffffffff16610a05610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5290613031565b60405180910390fd5b60085f9054906101000a900460ff16600a610a7691906131ab565b82610a8191906131f5565b600a8190555060085f9054906101000a900460ff16600a610aa291906131ab565b81610aad91906131f5565b600b819055505050565b5f610ac38484846117ef565b50610b9e84610ad0611621565b610b99856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e63650000000000000000815250600f5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b50611621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b611628565b600190509392505050565b5f60085f9054906101000a900460ff16905090565b60155481565b610bcc611621565b73ffffffffffffffffffffffffffffffffffffffff16610bea610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3790613031565b60405180910390fd5b81601581905550806016819055505050565b6011602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b600b5481565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc9611621565b73ffffffffffffffffffffffffffffffffffffffff16610ce7610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490613031565b60405180910390fd5b610d465f612047565b565b610d50611621565b73ffffffffffffffffffffffffffffffffffffffff16610d6e610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613031565b60405180910390fd5b60085f9054906101000a900460ff16600a610ddf91906131ab565b81610dea91906131f5565b600c8190555050565b610dfb611621565b73ffffffffffffffffffffffffffffffffffffffff16610e19610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690613031565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060078054610eee90612fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1a90612fb7565b8015610f655780601f10610f3c57610100808354040283529160200191610f65565b820191905f5260205f20905b815481529060010190602001808311610f4857829003601f168201915b5050505050905090565b5f610f82610f7b611621565b84846117ef565b506001905092915050565b60195481565b6013602052805f5260405f205f915090505481565b60165481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490613280565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff16838360405160240161106892919061329e565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110f29190613309565b5f604051808303815f865af19150503d805f811461112b576040519150601f19603f3d011682016040523d82523d5f602084013e611130565b606091505b505090508061116b576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6012602052805f5260405f205f915054906101000a900460ff1681565b611196611621565b73ffffffffffffffffffffffffffffffffffffffff166111b4610eb8565b73ffffffffffffffffffffffffffffffffffffffff161461120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190613031565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112ec611621565b73ffffffffffffffffffffffffffffffffffffffff1661130a610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790613031565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90613280565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161148990613342565b5f6040518083038185875af1925050503d805f81146114c3576040519150601f19603f3d011682016040523d82523d5f602084013e6114c8565b606091505b5050905080611503576040517ff499da2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611533611621565b73ffffffffffffffffffffffffffffffffffffffff16611551610eb8565b73ffffffffffffffffffffffffffffffffffffffff16146115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90613031565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c906133c6565b60405180910390fd5b61161e81612047565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611698575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161168f9190612ef5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611708575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116ff9190612ef5565b60405180910390fd5b80600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e29190612b10565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611860575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016118579190612ef5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d0575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016118c79190612ef5565b60405180910390fd5b5f8203611909576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a5f9054906101000a900460ff161561192f57611928848484612108565b9050611fde565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119cd575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca8575f60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a7057600b54831115611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e9061342e565b60405180910390fd5b60019050611b12565b60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b0c57600a54831115611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90613496565b60405180910390fd5b5f9050611b11565b600190505b5b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611bb957600c54611b6c85610c7b565b84611b7791906134b4565b1115611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90613531565b60405180910390fd5b5b808015611bd25750601460029054906101000a900460ff165b15611ca6574260135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d906135e5565b60405180910390fd5b60195442611c6491906134b4565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505b5f611cb230610c7b565b90505f600d548210159050808015611cd65750601a5f9054906101000a900460ff16155b8015611d29575060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d40575060145f9054906101000a900460ff165b8015611d93575060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611de6575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611df557611df4826122d2565b5b611e7c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611ec8878761234e565b611edc57611ed78787876124aa565b611ede565b845b9050611f3081600e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fce9190612b10565b60405180910390a3600193505050505b9392505050565b5f83831115829061202c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120239190612bb3565b60405180910390fd5b505f838561203a9190613603565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f612190826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061222182600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122bf9190612b10565b60405180910390a3600190509392505050565b6001601a5f6101000a81548160ff021916908315150217905550601460019054906101000a900460ff161561230757600d5490505b6123328160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661271e565b5f601a5f6101000a81548160ff02191690831515021790555050565b5f60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806123ea575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156123f857600190506124a4565b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612493575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156124a0575f90506124a4565b5f90505b92915050565b5f8060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561252a5761252360646125156015548661298e90919063ffffffff16565b612a0590919063ffffffff16565b90506125a5565b60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125a4576125a160646125936016548661298e90919063ffffffff16565b612a0590919063ffffffff16565b90505b5b5f8111156126a4576125fd81600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161269b9190612b10565b60405180910390a35b6126b78184612a4e90919063ffffffff16565b9150509392505050565b5f8082846126cf91906134b4565b905083811015612714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270b90613680565b60405180910390fd5b8091505092915050565b5f600267ffffffffffffffff81111561273a5761273961369e565b5b6040519080825280602002602001820160405280156127685781602001602082028036833780820191505090505b50905030815f8151811061277f5761277e6136cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612823573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612847919061370c565b8160018151811061285b5761285a6136cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128c13060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611628565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8486426040518663ffffffff1660e01b8152600401612923959493929190613827565b5f604051808303815f87803b15801561293a575f80fd5b505af115801561294c573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7838260405161298192919061387f565b60405180910390a1505050565b5f80830361299e575f90506129ff565b5f82846129ab91906131f5565b90508284826129ba91906138da565b146129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f19061397a565b60405180910390fd5b809150505b92915050565b5f612a4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a97565b905092915050565b5f612a8f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fe5565b905092915050565b5f8083118290612add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad49190612bb3565b60405180910390fd5b505f8385612aeb91906138da565b9050809150509392505050565b5f819050919050565b612b0a81612af8565b82525050565b5f602082019050612b235f830184612b01565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b60578082015181840152602081019050612b45565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b8582612b29565b612b8f8185612b33565b9350612b9f818560208601612b43565b612ba881612b6b565b840191505092915050565b5f6020820190508181035f830152612bcb8184612b7b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612c15612c10612c0b84612bd3565b612bf2565b612bd3565b9050919050565b5f612c2682612bfb565b9050919050565b5f612c3782612c1c565b9050919050565b612c4781612c2d565b82525050565b5f602082019050612c605f830184612c3e565b92915050565b5f80fd5b5f612c7482612bd3565b9050919050565b612c8481612c6a565b8114612c8e575f80fd5b50565b5f81359050612c9f81612c7b565b92915050565b612cae81612af8565b8114612cb8575f80fd5b50565b5f81359050612cc981612ca5565b92915050565b5f8060408385031215612ce557612ce4612c66565b5b5f612cf285828601612c91565b9250506020612d0385828601612cbb565b9150509250929050565b5f8115159050919050565b612d2181612d0d565b82525050565b5f602082019050612d3a5f830184612d18565b92915050565b612d4981612d0d565b8114612d53575f80fd5b50565b5f81359050612d6481612d40565b92915050565b5f805f8060808587031215612d8257612d81612c66565b5b5f612d8f87828801612cbb565b9450506020612da087828801612d56565b9350506040612db187828801612d56565b9250506060612dc287828801612d56565b91505092959194509250565b5f8060408385031215612de457612de3612c66565b5b5f612df185828601612cbb565b9250506020612e0285828601612cbb565b9150509250929050565b5f805f60608486031215612e2357612e22612c66565b5b5f612e3086828701612c91565b9350506020612e4186828701612c91565b9250506040612e5286828701612cbb565b9150509250925092565b5f60ff82169050919050565b612e7181612e5c565b82525050565b5f602082019050612e8a5f830184612e68565b92915050565b5f60208284031215612ea557612ea4612c66565b5b5f612eb284828501612c91565b91505092915050565b5f60208284031215612ed057612ecf612c66565b5b5f612edd84828501612cbb565b91505092915050565b612eef81612c6a565b82525050565b5f602082019050612f085f830184612ee6565b92915050565b5f8060408385031215612f2457612f23612c66565b5b5f612f3185828601612c91565b9250506020612f4285828601612d56565b9150509250929050565b5f8060408385031215612f6257612f61612c66565b5b5f612f6f85828601612c91565b9250506020612f8085828601612c91565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612fce57607f821691505b602082108103612fe157612fe0612f8a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61301b602083612b33565b915061302682612fe7565b602082019050919050565b5f6020820190508181035f8301526130488161300f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130d1578086048111156130ad576130ac61304f565b5b60018516156130bc5780820291505b80810290506130ca8561307c565b9450613091565b94509492505050565b5f826130e957600190506131a4565b816130f6575f90506131a4565b816001811461310c576002811461311657613145565b60019150506131a4565b60ff8411156131285761312761304f565b5b8360020a91508482111561313f5761313e61304f565b5b506131a4565b5060208310610133831016604e8410600b841016171561317a5782820a9050838111156131755761317461304f565b5b6131a4565b6131878484846001613088565b9250905081840481111561319e5761319d61304f565b5b81810290505b9392505050565b5f6131b582612af8565b91506131c083612e5c565b92506131ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130da565b905092915050565b5f6131ff82612af8565b915061320a83612af8565b925082820261321881612af8565b9150828204841483151761322f5761322e61304f565b5b5092915050565b7f556e617574686f72697a656421000000000000000000000000000000000000005f82015250565b5f61326a600d83612b33565b915061327582613236565b602082019050919050565b5f6020820190508181035f8301526132978161325e565b9050919050565b5f6040820190506132b15f830185612ee6565b6132be6020830184612b01565b9392505050565b5f81519050919050565b5f81905092915050565b5f6132e3826132c5565b6132ed81856132cf565b93506132fd818560208601612b43565b80840191505092915050565b5f61331482846132d9565b915081905092915050565b50565b5f61332d5f836132cf565b91506133388261331f565b5f82019050919050565b5f61334c82613322565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133b0602683612b33565b91506133bb82613356565b604082019050919050565b5f6020820190508181035f8301526133dd816133a4565b9050919050565b7f6d617853656c6c416d6f756e74204578636565646564210000000000000000005f82015250565b5f613418601783612b33565b9150613423826133e4565b602082019050919050565b5f6020820190508181035f8301526134458161340c565b9050919050565b7f6d6178427579416d6f756e7420457863656564656421000000000000000000005f82015250565b5f613480601683612b33565b915061348b8261344c565b602082019050919050565b5f6020820190508181035f8301526134ad81613474565b9050919050565b5f6134be82612af8565b91506134c983612af8565b92508282019050808211156134e1576134e061304f565b5b92915050565b7f4d61782057616c6c6574204578636565646564210000000000000000000000005f82015250565b5f61351b601483612b33565b9150613526826134e7565b602082019050919050565b5f6020820190508181035f8301526135488161350f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6135cf604983612b33565b91506135da8261354f565b606082019050919050565b5f6020820190508181035f8301526135fc816135c3565b9050919050565b5f61360d82612af8565b915061361883612af8565b92508282039050818111156136305761362f61304f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61366a601b83612b33565b915061367582613636565b602082019050919050565b5f6020820190508181035f8301526136978161365e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061370681612c7b565b92915050565b5f6020828403121561372157613720612c66565b5b5f61372e848285016136f8565b91505092915050565b5f819050919050565b5f61375a61375561375084613737565b612bf2565b612af8565b9050919050565b61376a81613740565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137a281612c6a565b82525050565b5f6137b38383613799565b60208301905092915050565b5f602082019050919050565b5f6137d582613770565b6137df818561377a565b93506137ea8361378a565b805f5b8381101561381a57815161380188826137a8565b975061380c836137bf565b9250506001810190506137ed565b5085935050505092915050565b5f60a08201905061383a5f830188612b01565b6138476020830187613761565b818103604083015261385981866137cb565b90506138686060830185612ee6565b6138756080830184612b01565b9695505050505050565b5f6040820190506138925f830185612b01565b81810360208301526138a481846137cb565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138e482612af8565b91506138ef83612af8565b9250826138ff576138fe6138ad565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613964602183612b33565b915061396f8261390a565b604082019050919050565b5f6020820190508181035f83015261399181613958565b905091905056fea2646970667358221220e235ddc6c87f7720eae5ab720a3e1578c803463ffed0cc4d5905dd554f04fa7664736f6c63430008160033

Deployed Bytecode Sourcemap

4406:11324:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5190:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7167:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5791:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7817:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15420:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7450:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14529:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8574:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7357:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5734:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15016:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5454:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5083:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4985;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7551:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1896:94;;;;;;;;;;;;;:::i;:::-;;14709:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15294:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4890:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1587:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7260:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8406:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5860:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5575:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5763:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14191:330;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5511:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14843:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7673:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15160:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5408:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13952:231;;;;;;;;;;;;;:::i;:::-;;5829:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1998:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5190:59;;;;:::o;7167:85::-;7206:13;7239:5;7232:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7167:85;:::o;5791:31::-;;;;;;;;;;;;;:::o;7817:154::-;7885:4;7902:39;7911:12;:10;:12::i;:::-;7925:7;7934:6;7902:8;:39::i;:::-;7959:4;7952:11;;7817:154;;;;:::o;15420:305::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15582:8:::1;15568:11;;:22;;;;;;;;;;;;;;;;;;15615:8;15601:11;;:22;;;;;;;;;;;;;;;;;;15650:12;15634:13;;:28;;;;;;;;;;;;;;;;;;15708:9;;;;;;;;;;;15702:2;:15;;;;:::i;:::-;15689:10;:28;;;;:::i;:::-;15673:13;:44;;;;15420:305:::0;;;;:::o;7450:93::-;7496:7;7523:12;;7516:19;;7450:93;:::o;14529:172::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14634:9:::1;;;;;;;;;;;14630:2;:13;;;;:::i;:::-;14622:5;:21;;;;:::i;:::-;14607:12;:36;;;;14684:9;;;;;;;;;;;14680:2;:13;;;;:::i;:::-;14671:6;:22;;;;:::i;:::-;14654:13;:39;;;;14529:172:::0;;:::o;8574:290::-;8665:4;8682:36;8692:6;8700:9;8711:6;8682:9;:36::i;:::-;;8729:105;8738:6;8746:12;:10;:12::i;:::-;8760:73;8798:6;8760:73;;;;;;;;;;;;;;;;;:11;:19;8772:6;8760:19;;;;;;;;;;;;;;;:33;8780:12;:10;:12::i;:::-;8760:33;;;;;;;;;;;;;;;;:37;;:73;;;;;:::i;:::-;8729:8;:105::i;:::-;8852:4;8845:11;;8574:290;;;;;:::o;7357:85::-;7400:5;7425:9;;;;;;;;;;;7418:16;;7357:85;:::o;5734:18::-;;;;:::o;15016:136::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15106:8:::1;15097:6;:17;;;;15135:9;15125:7;:19;;;;15016:136:::0;;:::o;5454:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;5083:60::-;;;;:::o;4985:::-;;;;:::o;7551:114::-;7608:7;7634:9;:18;7644:7;7634:18;;;;;;;;;;;;;;;;7627:25;;7551:114;;;:::o;1896:94::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1961:21:::1;1979:1;1961:9;:21::i;:::-;1896:94::o:0;14709:126::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14818:9:::1;;;;;;;;;;;14814:2;:13;;;;:::i;:::-;14802:9;:25;;;;:::i;:::-;14785:14;:42;;;;14709:126:::0;:::o;15294:118::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15394:10:::1;15374:17;;:30;;;;;;;;;;;;;;;;;;15294:118:::0;:::o;4890:58::-;;;;:::o;1587:87::-;1633:7;1660:6;;;;;;;;;;;1653:13;;1587:87;:::o;7260:89::-;7301:13;7334:7;7327:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7260:89;:::o;8406:160::-;8477:4;8494:42;8504:12;:10;:12::i;:::-;8518:9;8529:6;8494:9;:42::i;:::-;;8554:4;8547:11;;8406:160;;;;:::o;5860:41::-;;;;:::o;5575:55::-;;;;;;;;;;;;;;;;;:::o;5763:19::-;;;;:::o;14191:330::-;14302:17;;;;;;;;;;;14288:31;;:10;:31;;;14280:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14348:12;14374:6;14366:20;;14441:9;14452:7;14387:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14366:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14347:114;;;14476:7;14472:41;;14492:21;;;;;;;;;;;;;;14472:41;14269:252;14191:330;;;:::o;5511:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;14843:165::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14992:8:::1;14956:24;:33;14981:7;14956:33;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14843:165:::0;;:::o;7673:136::-;7747:7;7774:11;:18;7786:5;7774:18;;;;;;;;;;;;;;;:27;7793:7;7774:27;;;;;;;;;;;;;;;;7767:34;;7673:136;;;;:::o;15160:122::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15267:7:::1;15241:17;:23;15259:4;15241:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15160:122:::0;;:::o;5408:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;13952:231::-;14018:17;;;;;;;;;;;14004:31;;:10;:31;;;13996:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14064:7;14084:10;14076:24;;14108:21;14076:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:71;;;14149:2;14145:30;;14160:15;;;;;;;;;;;;;;14145:30;13984:199;13952:231::o;5829:22::-;;;;;;;;;;;;;:::o;1998:229::-;1819:12;:10;:12::i;:::-;1808:23;;:7;:5;:7::i;:::-;:23;;;1800:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2121:1:::1;2101:22;;:8;:22;;::::0;2079:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2200:19;2210:8;2200:9;:19::i;:::-;1998:229:::0;:::o;152:98::-;205:7;232:10;225:17;;152:98;:::o;7979:382::-;8085:1;8068:19;;:5;:19;;;8064:91;;8140:1;8111:32;;;;;;;;;;;:::i;:::-;;;;;;;;8064:91;8188:1;8169:21;;:7;:21;;;8165:92;;8242:1;8214:31;;;;;;;;;;;:::i;:::-;;;;;;;;8165:92;8299:6;8269:11;:18;8281:5;8269:18;;;;;;;;;;;;;;;:27;8288:7;8269:27;;;;;;;;;;;;;;;:36;;;;8337:7;8321:32;;8330:5;8321:32;;;8346:6;8321:32;;;;;;:::i;:::-;;;;;;;;7979:382;;;:::o;8872:2825::-;8959:4;8998:1;8980:20;;:6;:20;;;8976:90;;9051:1;9024:30;;;;;;;;;;;:::i;:::-;;;;;;;;8976:90;9101:1;9080:23;;:9;:23;;;9076:95;;9156:1;9127:32;;;;;;;;;;;:::i;:::-;;;;;;;;9076:95;9194:1;9184:6;:11;9181:69;;9219:19;;;;;;;;;;;;;;9181:69;9270:6;;;;;;;;;;;9266:2422;;;9300:41;9315:6;9323:9;9334:6;9300:14;:41::i;:::-;9293:48;;;;9266:2422;9390:17;:25;9408:6;9390:25;;;;;;;;;;;;;;;;;;;;;;;;;9389:26;:59;;;;;9420:17;:28;9438:9;9420:28;;;;;;;;;;;;;;;;;;;;;;;;;9419:29;9389:59;9385:1407;;;9487:15;9527:6;:17;9534:9;9527:17;;;;;;;;;;;;;;;;;;;;;;;;;9523:596;;;9622:13;;9612:6;:23;;9578:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;9746:4;9733:17;;9523:596;;;9798:6;:14;9805:6;9798:14;;;;;;;;;;;;;;;;;;;;;;;;;9794:325;;;9889:12;;9879:6;:22;;9845:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;10011:5;9998:18;;9794:325;;;10095:4;10082:17;;9794:325;9523:596;10144:24;:35;10169:9;10144:35;;;;;;;;;;;;;;;;;;;;;;;;;10139:238;;10271:14;;10247:20;10257:9;10247;:20::i;:::-;10238:6;:29;;;;:::i;:::-;:47;;10204:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;10139:238;10400:10;:27;;;;;10414:13;;;;;;;;;;;10400:27;10397:378;;;10522:15;10488:20;:31;10509:9;10488:31;;;;;;;;;;;;;;;;:49;10452:214;;;;;;;;;;;;:::i;:::-;;;;;;;;;10743:12;;10725:15;:30;;;;:::i;:::-;10691:20;:31;10712:9;10691:31;;;;;;;;;;;;;;;:64;;;;10397:378;9450:1342;9385:1407;10808:28;10839:24;10857:4;10839:9;:24::i;:::-;10808:55;;10878:28;10933:13;;10909:20;:37;;10878:68;;10985:23;:52;;;;;11031:6;;;;;;;;;;;11030:7;10985:52;:89;;;;;11060:6;:14;11067:6;11060:14;;;;;;;;;;;;;;;;;;;;;;;;;11059:15;10985:89;:122;;;;;11096:11;;;;;;;;;;;10985:122;:169;;;;;11129:17;:25;11147:6;11129:25;;;;;;;;;;;;;;;;;;;;;;;;;11128:26;10985:169;:219;;;;;11176:17;:28;11194:9;11176:28;;;;;;;;;;;;;;;;;;;;;;;;;11175:29;10985:219;10963:326;;;11243:30;11252:20;11243:8;:30::i;:::-;10963:326;11337:53;11359:6;11337:53;;;;;;;;;;;;;;;;;:9;:17;11347:6;11337:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11317:9;:17;11327:6;11317:17;;;;;;;;;;;;;;;:73;;;;11407:19;11429:34;11446:6;11453:9;11429:16;:34::i;:::-;:80;;11475:34;11483:6;11491:9;11502:6;11475:7;:34::i;:::-;11429:80;;;11466:6;11429:80;11407:102;;11549:37;11574:11;11549:9;:20;11559:9;11549:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;11526:9;:20;11536:9;11526:20;;;;;;;;;;;;;;;:60;;;;11625:9;11608:40;;11617:6;11608:40;;;11636:11;11608:40;;;;;;:::i;:::-;;;;;;;;11670:4;11663:11;;;;;8872:2825;;;;;;:::o;2774:192::-;2860:7;2893:1;2888;:6;;2896:12;2880:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2920:9;2936:1;2932;:5;;;;:::i;:::-;2920:17;;2957:1;2950:8;;;2774:192;;;;;:::o;2235:173::-;2291:16;2310:6;;;;;;;;;;;2291:25;;2336:8;2327:6;;:17;;;;;;;;;;;;;;;;;;2391:8;2360:40;;2381:8;2360:40;;;;;;;;;;;;2280:128;2235:173;:::o;11705:330::-;11798:4;11835:53;11857:6;11835:53;;;;;;;;;;;;;;;;;:9;:17;11845:6;11835:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11815:9;:17;11825:6;11815:17;;;;;;;;;;;;;;;:73;;;;11922:32;11947:6;11922:9;:20;11932:9;11922:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11899:9;:20;11909:9;11899:20;;;;;;;;;;;;;;;:55;;;;11987:9;11970:35;;11979:6;11970:35;;;11998:6;11970:35;;;;;;:::i;:::-;;;;;;;;12023:4;12016:11;;11705:330;;;;;:::o;13076:186::-;5971:4;5962:6;;:13;;;;;;;;;;;;;;;;;;13148:11:::1;;;;;;;;;;;13145:47;;;13179:13;;13161:31;;13145:47;13203:51;13220:15;13236:17;;;;;;;;;;;13203:16;:51::i;:::-;6007:5:::0;5998:6;;:14;;;;;;;;;;;;;;;;;;13076:186;:::o;12047:357::-;12131:4;12151:17;:25;12169:6;12151:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;12180:17;:28;12198:9;12180:28;;;;;;;;;;;;;;;;;;;;;;;;;12151:57;12148:249;;;12232:4;12225:11;;;;12148:249;12267:6;:14;12274:6;12267:14;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;12285:6;:17;12292:9;12285:17;;;;;;;;;;;;;;;;;;;;;;;;;12267:35;12263:134;;;12326:5;12319:12;;;;12263:134;12380:5;12373:12;;12047:357;;;;;:::o;12412:656::-;12498:7;12528:14;12585:6;:14;12592:6;12585:14;;;;;;;;;;;;;;;;;;;;;;;;;12582:212;;;12633:27;12656:3;12633:18;12644:6;;12633;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;12621:39;;12582:212;;;12699:6;:17;12706:9;12699:17;;;;;;;;;;;;;;;;;;;;;;;;;12696:98;;;12750:28;12774:3;12750:19;12761:7;;12750:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;12738:40;;12696:98;12582:212;12825:1;12813:9;:13;12810:185;;;12874:39;12903:9;12874;:24;12892:4;12874:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12847:9;:24;12865:4;12847:24;;;;;;;;;;;;;;;:66;;;;12962:4;12937:42;;12946:6;12937:42;;;12969:9;12937:42;;;;;;:::i;:::-;;;;;;;;12810:185;13018:21;13029:9;13018:6;:10;;:21;;;;:::i;:::-;13011:28;;;12412:656;;;;;:::o;2441:181::-;2499:7;2519:9;2535:1;2531;:5;;;;:::i;:::-;2519:17;;2560:1;2555;:6;;2547:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2613:1;2606:8;;;2441:181;;;;:::o;13270:674::-;13416:21;13454:1;13440:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13416:40;;13485:4;13467;13472:1;13467:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13511:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13501:4;13506:1;13501:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;13540:56;13557:4;13572:9;;;;;;;;;;;13584:11;13540:8;:56::i;:::-;13635:9;;;;;;;;;;;:60;;;13710:11;13736:1;13780:4;13807:10;13849:15;13635:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13901:35;13918:11;13931:4;13901:35;;;;;;;:::i;:::-;;;;;;;;13345:599;13270:674;;:::o;2974:250::-;3032:7;3061:1;3056;:6;3052:47;;3086:1;3079:8;;;;3052:47;3111:9;3127:1;3123;:5;;;;:::i;:::-;3111:17;;3156:1;3151;3147;:5;;;;:::i;:::-;:10;3139:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3215:1;3208:8;;;2974:250;;;;;:::o;3232:132::-;3290:7;3317:39;3321:1;3324;3317:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3310:46;;3232:132;;;;:::o;2630:136::-;2688:7;2715:43;2719:1;2722;2715:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2708:50;;2630:136;;;;:::o;3372:278::-;3458:7;3490:1;3486;:5;3493:12;3478:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3517:9;3533:1;3529;:5;;;;:::i;:::-;3517:17;;3641:1;3634:8;;;3372:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:126::-;1821:7;1861:42;1854:5;1850:54;1839:65;;1784:126;;;:::o;1916:60::-;1944:3;1965:5;1958:12;;1916:60;;;:::o;1982:142::-;2032:9;2065:53;2083:34;2092:24;2110:5;2092:24;:::i;:::-;2083:34;:::i;:::-;2065:53;:::i;:::-;2052:66;;1982:142;;;:::o;2130:126::-;2180:9;2213:37;2244:5;2213:37;:::i;:::-;2200:50;;2130:126;;;:::o;2262:148::-;2334:9;2367:37;2398:5;2367:37;:::i;:::-;2354:50;;2262:148;;;:::o;2416:175::-;2525:59;2578:5;2525:59;:::i;:::-;2520:3;2513:72;2416:175;;:::o;2597:266::-;2712:4;2750:2;2739:9;2735:18;2727:26;;2763:93;2853:1;2842:9;2838:17;2829:6;2763:93;:::i;:::-;2597:266;;;;:::o;2950:117::-;3059:1;3056;3049:12;3196:96;3233:7;3262:24;3280:5;3262:24;:::i;:::-;3251:35;;3196:96;;;:::o;3298:122::-;3371:24;3389:5;3371:24;:::i;:::-;3364:5;3361:35;3351:63;;3410:1;3407;3400:12;3351:63;3298:122;:::o;3426:139::-;3472:5;3510:6;3497:20;3488:29;;3526:33;3553:5;3526:33;:::i;:::-;3426:139;;;;:::o;3571:122::-;3644:24;3662:5;3644:24;:::i;:::-;3637:5;3634:35;3624:63;;3683:1;3680;3673:12;3624:63;3571:122;:::o;3699:139::-;3745:5;3783:6;3770:20;3761:29;;3799:33;3826:5;3799:33;:::i;:::-;3699:139;;;;:::o;3844:474::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:53;4293:7;4284:6;4273:9;4269:22;4248:53;:::i;:::-;4238:63;;4193:118;3844:474;;;;;:::o;4324:90::-;4358:7;4401:5;4394:13;4387:21;4376:32;;4324:90;;;:::o;4420:109::-;4501:21;4516:5;4501:21;:::i;:::-;4496:3;4489:34;4420:109;;:::o;4535:210::-;4622:4;4660:2;4649:9;4645:18;4637:26;;4673:65;4735:1;4724:9;4720:17;4711:6;4673:65;:::i;:::-;4535:210;;;;:::o;4751:116::-;4821:21;4836:5;4821:21;:::i;:::-;4814:5;4811:32;4801:60;;4857:1;4854;4847:12;4801:60;4751:116;:::o;4873:133::-;4916:5;4954:6;4941:20;4932:29;;4970:30;4994:5;4970:30;:::i;:::-;4873:133;;;;:::o;5012:747::-;5089:6;5097;5105;5113;5162:3;5150:9;5141:7;5137:23;5133:33;5130:120;;;5169:79;;:::i;:::-;5130:120;5289:1;5314:53;5359:7;5350:6;5339:9;5335:22;5314:53;:::i;:::-;5304:63;;5260:117;5416:2;5442:50;5484:7;5475:6;5464:9;5460:22;5442:50;:::i;:::-;5432:60;;5387:115;5541:2;5567:50;5609:7;5600:6;5589:9;5585:22;5567:50;:::i;:::-;5557:60;;5512:115;5666:2;5692:50;5734:7;5725:6;5714:9;5710:22;5692:50;:::i;:::-;5682:60;;5637:115;5012:747;;;;;;;:::o;5765:474::-;5833:6;5841;5890:2;5878:9;5869:7;5865:23;5861:32;5858:119;;;5896:79;;:::i;:::-;5858:119;6016:1;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5987:117;6143:2;6169:53;6214:7;6205:6;6194:9;6190:22;6169:53;:::i;:::-;6159:63;;6114:118;5765:474;;;;;:::o;6245:619::-;6322:6;6330;6338;6387:2;6375:9;6366:7;6362:23;6358:32;6355:119;;;6393:79;;:::i;:::-;6355:119;6513:1;6538:53;6583:7;6574:6;6563:9;6559:22;6538:53;:::i;:::-;6528:63;;6484:117;6640:2;6666:53;6711:7;6702:6;6691:9;6687:22;6666:53;:::i;:::-;6656:63;;6611:118;6768:2;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6739:118;6245:619;;;;;:::o;6870:86::-;6905:7;6945:4;6938:5;6934:16;6923:27;;6870:86;;;:::o;6962:112::-;7045:22;7061:5;7045:22;:::i;:::-;7040:3;7033:35;6962:112;;:::o;7080:214::-;7169:4;7207:2;7196:9;7192:18;7184:26;;7220:67;7284:1;7273:9;7269:17;7260:6;7220:67;:::i;:::-;7080:214;;;;:::o;7300:329::-;7359:6;7408:2;7396:9;7387:7;7383:23;7379:32;7376:119;;;7414:79;;:::i;:::-;7376:119;7534:1;7559:53;7604:7;7595:6;7584:9;7580:22;7559:53;:::i;:::-;7549:63;;7505:117;7300:329;;;;:::o;7635:::-;7694:6;7743:2;7731:9;7722:7;7718:23;7714:32;7711:119;;;7749:79;;:::i;:::-;7711:119;7869:1;7894:53;7939:7;7930:6;7919:9;7915:22;7894:53;:::i;:::-;7884:63;;7840:117;7635:329;;;;:::o;7970:118::-;8057:24;8075:5;8057:24;:::i;:::-;8052:3;8045:37;7970:118;;:::o;8094:222::-;8187:4;8225:2;8214:9;8210:18;8202:26;;8238:71;8306:1;8295:9;8291:17;8282:6;8238:71;:::i;:::-;8094:222;;;;:::o;8322:468::-;8387:6;8395;8444:2;8432:9;8423:7;8419:23;8415:32;8412:119;;;8450:79;;:::i;:::-;8412:119;8570:1;8595:53;8640:7;8631:6;8620:9;8616:22;8595:53;:::i;:::-;8585:63;;8541:117;8697:2;8723:50;8765:7;8756:6;8745:9;8741:22;8723:50;:::i;:::-;8713:60;;8668:115;8322:468;;;;;:::o;8796:474::-;8864:6;8872;8921:2;8909:9;8900:7;8896:23;8892:32;8889:119;;;8927:79;;:::i;:::-;8889:119;9047:1;9072:53;9117:7;9108:6;9097:9;9093:22;9072:53;:::i;:::-;9062:63;;9018:117;9174:2;9200:53;9245:7;9236:6;9225:9;9221:22;9200:53;:::i;:::-;9190:63;;9145:118;8796:474;;;;;:::o;9276:180::-;9324:77;9321:1;9314:88;9421:4;9418:1;9411:15;9445:4;9442:1;9435:15;9462:320;9506:6;9543:1;9537:4;9533:12;9523:22;;9590:1;9584:4;9580:12;9611:18;9601:81;;9667:4;9659:6;9655:17;9645:27;;9601:81;9729:2;9721:6;9718:14;9698:18;9695:38;9692:84;;9748:18;;:::i;:::-;9692:84;9513:269;9462:320;;;:::o;9788:182::-;9928:34;9924:1;9916:6;9912:14;9905:58;9788:182;:::o;9976:366::-;10118:3;10139:67;10203:2;10198:3;10139:67;:::i;:::-;10132:74;;10215:93;10304:3;10215:93;:::i;:::-;10333:2;10328:3;10324:12;10317:19;;9976:366;;;:::o;10348:419::-;10514:4;10552:2;10541:9;10537:18;10529:26;;10601:9;10595:4;10591:20;10587:1;10576:9;10572:17;10565:47;10629:131;10755:4;10629:131;:::i;:::-;10621:139;;10348:419;;;:::o;10773:180::-;10821:77;10818:1;10811:88;10918:4;10915:1;10908:15;10942:4;10939:1;10932:15;10959:102;11001:8;11048:5;11045:1;11041:13;11020:34;;10959:102;;;:::o;11067:848::-;11128:5;11135:4;11159:6;11150:15;;11183:5;11174:14;;11197:712;11218:1;11208:8;11205:15;11197:712;;;11313:4;11308:3;11304:14;11298:4;11295:24;11292:50;;;11322:18;;:::i;:::-;11292:50;11372:1;11362:8;11358:16;11355:451;;;11787:4;11780:5;11776:16;11767:25;;11355:451;11837:4;11831;11827:15;11819:23;;11867:32;11890:8;11867:32;:::i;:::-;11855:44;;11197:712;;;11067:848;;;;;;;:::o;11921:1073::-;11975:5;12166:8;12156:40;;12187:1;12178:10;;12189:5;;12156:40;12215:4;12205:36;;12232:1;12223:10;;12234:5;;12205:36;12301:4;12349:1;12344:27;;;;12385:1;12380:191;;;;12294:277;;12344:27;12362:1;12353:10;;12364:5;;;12380:191;12425:3;12415:8;12412:17;12409:43;;;12432:18;;:::i;:::-;12409:43;12481:8;12478:1;12474:16;12465:25;;12516:3;12509:5;12506:14;12503:40;;;12523:18;;:::i;:::-;12503:40;12556:5;;;12294:277;;12680:2;12670:8;12667:16;12661:3;12655:4;12652:13;12648:36;12630:2;12620:8;12617:16;12612:2;12606:4;12603:12;12599:35;12583:111;12580:246;;;12736:8;12730:4;12726:19;12717:28;;12771:3;12764:5;12761:14;12758:40;;;12778:18;;:::i;:::-;12758:40;12811:5;;12580:246;12851:42;12889:3;12879:8;12873:4;12870:1;12851:42;:::i;:::-;12836:57;;;;12925:4;12920:3;12916:14;12909:5;12906:25;12903:51;;;12934:18;;:::i;:::-;12903:51;12983:4;12976:5;12972:16;12963:25;;11921:1073;;;;;;:::o;13000:281::-;13058:5;13082:23;13100:4;13082:23;:::i;:::-;13074:31;;13126:25;13142:8;13126:25;:::i;:::-;13114:37;;13170:104;13207:66;13197:8;13191:4;13170:104;:::i;:::-;13161:113;;13000:281;;;;:::o;13287:410::-;13327:7;13350:20;13368:1;13350:20;:::i;:::-;13345:25;;13384:20;13402:1;13384:20;:::i;:::-;13379:25;;13439:1;13436;13432:9;13461:30;13479:11;13461:30;:::i;:::-;13450:41;;13640:1;13631:7;13627:15;13624:1;13621:22;13601:1;13594:9;13574:83;13551:139;;13670:18;;:::i;:::-;13551:139;13335:362;13287:410;;;;:::o;13703:163::-;13843:15;13839:1;13831:6;13827:14;13820:39;13703:163;:::o;13872:366::-;14014:3;14035:67;14099:2;14094:3;14035:67;:::i;:::-;14028:74;;14111:93;14200:3;14111:93;:::i;:::-;14229:2;14224:3;14220:12;14213:19;;13872:366;;;:::o;14244:419::-;14410:4;14448:2;14437:9;14433:18;14425:26;;14497:9;14491:4;14487:20;14483:1;14472:9;14468:17;14461:47;14525:131;14651:4;14525:131;:::i;:::-;14517:139;;14244:419;;;:::o;14669:332::-;14790:4;14828:2;14817:9;14813:18;14805:26;;14841:71;14909:1;14898:9;14894:17;14885:6;14841:71;:::i;:::-;14922:72;14990:2;14979:9;14975:18;14966:6;14922:72;:::i;:::-;14669:332;;;;;:::o;15007:98::-;15058:6;15092:5;15086:12;15076:22;;15007:98;;;:::o;15111:147::-;15212:11;15249:3;15234:18;;15111:147;;;;:::o;15264:386::-;15368:3;15396:38;15428:5;15396:38;:::i;:::-;15450:88;15531:6;15526:3;15450:88;:::i;:::-;15443:95;;15547:65;15605:6;15600:3;15593:4;15586:5;15582:16;15547:65;:::i;:::-;15637:6;15632:3;15628:16;15621:23;;15372:278;15264:386;;;;:::o;15656:271::-;15786:3;15808:93;15897:3;15888:6;15808:93;:::i;:::-;15801:100;;15918:3;15911:10;;15656:271;;;;:::o;15933:114::-;;:::o;16053:398::-;16212:3;16233:83;16314:1;16309:3;16233:83;:::i;:::-;16226:90;;16325:93;16414:3;16325:93;:::i;:::-;16443:1;16438:3;16434:11;16427:18;;16053:398;;;:::o;16457:379::-;16641:3;16663:147;16806:3;16663:147;:::i;:::-;16656:154;;16827:3;16820:10;;16457:379;;;:::o;16842:225::-;16982:34;16978:1;16970:6;16966:14;16959:58;17051:8;17046:2;17038:6;17034:15;17027:33;16842:225;:::o;17073:366::-;17215:3;17236:67;17300:2;17295:3;17236:67;:::i;:::-;17229:74;;17312:93;17401:3;17312:93;:::i;:::-;17430:2;17425:3;17421:12;17414:19;;17073:366;;;:::o;17445:419::-;17611:4;17649:2;17638:9;17634:18;17626:26;;17698:9;17692:4;17688:20;17684:1;17673:9;17669:17;17662:47;17726:131;17852:4;17726:131;:::i;:::-;17718:139;;17445:419;;;:::o;17870:173::-;18010:25;18006:1;17998:6;17994:14;17987:49;17870:173;:::o;18049:366::-;18191:3;18212:67;18276:2;18271:3;18212:67;:::i;:::-;18205:74;;18288:93;18377:3;18288:93;:::i;:::-;18406:2;18401:3;18397:12;18390:19;;18049:366;;;:::o;18421:419::-;18587:4;18625:2;18614:9;18610:18;18602:26;;18674:9;18668:4;18664:20;18660:1;18649:9;18645:17;18638:47;18702:131;18828:4;18702:131;:::i;:::-;18694:139;;18421:419;;;:::o;18846:172::-;18986:24;18982:1;18974:6;18970:14;18963:48;18846:172;:::o;19024:366::-;19166:3;19187:67;19251:2;19246:3;19187:67;:::i;:::-;19180:74;;19263:93;19352:3;19263:93;:::i;:::-;19381:2;19376:3;19372:12;19365:19;;19024:366;;;:::o;19396:419::-;19562:4;19600:2;19589:9;19585:18;19577:26;;19649:9;19643:4;19639:20;19635:1;19624:9;19620:17;19613:47;19677:131;19803:4;19677:131;:::i;:::-;19669:139;;19396:419;;;:::o;19821:191::-;19861:3;19880:20;19898:1;19880:20;:::i;:::-;19875:25;;19914:20;19932:1;19914:20;:::i;:::-;19909:25;;19957:1;19954;19950:9;19943:16;;19978:3;19975:1;19972:10;19969:36;;;19985:18;;:::i;:::-;19969:36;19821:191;;;;:::o;20018:170::-;20158:22;20154:1;20146:6;20142:14;20135:46;20018:170;:::o;20194:366::-;20336:3;20357:67;20421:2;20416:3;20357:67;:::i;:::-;20350:74;;20433:93;20522:3;20433:93;:::i;:::-;20551:2;20546:3;20542:12;20535:19;;20194:366;;;:::o;20566:419::-;20732:4;20770:2;20759:9;20755:18;20747:26;;20819:9;20813:4;20809:20;20805:1;20794:9;20790:17;20783:47;20847:131;20973:4;20847:131;:::i;:::-;20839:139;;20566:419;;;:::o;20991:297::-;21131:34;21127:1;21119:6;21115:14;21108:58;21200:34;21195:2;21187:6;21183:15;21176:59;21269:11;21264:2;21256:6;21252:15;21245:36;20991:297;:::o;21294:366::-;21436:3;21457:67;21521:2;21516:3;21457:67;:::i;:::-;21450:74;;21533:93;21622:3;21533:93;:::i;:::-;21651:2;21646:3;21642:12;21635:19;;21294:366;;;:::o;21666:419::-;21832:4;21870:2;21859:9;21855:18;21847:26;;21919:9;21913:4;21909:20;21905:1;21894:9;21890:17;21883:47;21947:131;22073:4;21947:131;:::i;:::-;21939:139;;21666:419;;;:::o;22091:194::-;22131:4;22151:20;22169:1;22151:20;:::i;:::-;22146:25;;22185:20;22203:1;22185:20;:::i;:::-;22180:25;;22229:1;22226;22222:9;22214:17;;22253:1;22247:4;22244:11;22241:37;;;22258:18;;:::i;:::-;22241:37;22091:194;;;;:::o;22291:177::-;22431:29;22427:1;22419:6;22415:14;22408:53;22291:177;:::o;22474:366::-;22616:3;22637:67;22701:2;22696:3;22637:67;:::i;:::-;22630:74;;22713:93;22802:3;22713:93;:::i;:::-;22831:2;22826:3;22822:12;22815:19;;22474:366;;;:::o;22846:419::-;23012:4;23050:2;23039:9;23035:18;23027:26;;23099:9;23093:4;23089:20;23085:1;23074:9;23070:17;23063:47;23127:131;23253:4;23127:131;:::i;:::-;23119:139;;22846:419;;;:::o;23271:180::-;23319:77;23316:1;23309:88;23416:4;23413:1;23406:15;23440:4;23437:1;23430:15;23457:180;23505:77;23502:1;23495:88;23602:4;23599:1;23592:15;23626:4;23623:1;23616:15;23643:143;23700:5;23731:6;23725:13;23716:22;;23747:33;23774:5;23747:33;:::i;:::-;23643:143;;;;:::o;23792:351::-;23862:6;23911:2;23899:9;23890:7;23886:23;23882:32;23879:119;;;23917:79;;:::i;:::-;23879:119;24037:1;24062:64;24118:7;24109:6;24098:9;24094:22;24062:64;:::i;:::-;24052:74;;24008:128;23792:351;;;;:::o;24149:85::-;24194:7;24223:5;24212:16;;24149:85;;;:::o;24240:158::-;24298:9;24331:61;24349:42;24358:32;24384:5;24358:32;:::i;:::-;24349:42;:::i;:::-;24331:61;:::i;:::-;24318:74;;24240:158;;;:::o;24404:147::-;24499:45;24538:5;24499:45;:::i;:::-;24494:3;24487:58;24404:147;;:::o;24557:114::-;24624:6;24658:5;24652:12;24642:22;;24557:114;;;:::o;24677:184::-;24776:11;24810:6;24805:3;24798:19;24850:4;24845:3;24841:14;24826:29;;24677:184;;;;:::o;24867:132::-;24934:4;24957:3;24949:11;;24987:4;24982:3;24978:14;24970:22;;24867:132;;;:::o;25005:108::-;25082:24;25100:5;25082:24;:::i;:::-;25077:3;25070:37;25005:108;;:::o;25119:179::-;25188:10;25209:46;25251:3;25243:6;25209:46;:::i;:::-;25287:4;25282:3;25278:14;25264:28;;25119:179;;;;:::o;25304:113::-;25374:4;25406;25401:3;25397:14;25389:22;;25304:113;;;:::o;25453:732::-;25572:3;25601:54;25649:5;25601:54;:::i;:::-;25671:86;25750:6;25745:3;25671:86;:::i;:::-;25664:93;;25781:56;25831:5;25781:56;:::i;:::-;25860:7;25891:1;25876:284;25901:6;25898:1;25895:13;25876:284;;;25977:6;25971:13;26004:63;26063:3;26048:13;26004:63;:::i;:::-;25997:70;;26090:60;26143:6;26090:60;:::i;:::-;26080:70;;25936:224;25923:1;25920;25916:9;25911:14;;25876:284;;;25880:14;26176:3;26169:10;;25577:608;;;25453:732;;;;:::o;26191:831::-;26454:4;26492:3;26481:9;26477:19;26469:27;;26506:71;26574:1;26563:9;26559:17;26550:6;26506:71;:::i;:::-;26587:80;26663:2;26652:9;26648:18;26639:6;26587:80;:::i;:::-;26714:9;26708:4;26704:20;26699:2;26688:9;26684:18;26677:48;26742:108;26845:4;26836:6;26742:108;:::i;:::-;26734:116;;26860:72;26928:2;26917:9;26913:18;26904:6;26860:72;:::i;:::-;26942:73;27010:3;26999:9;26995:19;26986:6;26942:73;:::i;:::-;26191:831;;;;;;;;:::o;27028:483::-;27199:4;27237:2;27226:9;27222:18;27214:26;;27250:71;27318:1;27307:9;27303:17;27294:6;27250:71;:::i;:::-;27368:9;27362:4;27358:20;27353:2;27342:9;27338:18;27331:48;27396:108;27499:4;27490:6;27396:108;:::i;:::-;27388:116;;27028:483;;;;;:::o;27517:180::-;27565:77;27562:1;27555:88;27662:4;27659:1;27652:15;27686:4;27683:1;27676:15;27703:185;27743:1;27760:20;27778:1;27760:20;:::i;:::-;27755:25;;27794:20;27812:1;27794:20;:::i;:::-;27789:25;;27833:1;27823:35;;27838:18;;:::i;:::-;27823:35;27880:1;27877;27873:9;27868:14;;27703:185;;;;:::o;27894:220::-;28034:34;28030:1;28022:6;28018:14;28011:58;28103:3;28098:2;28090:6;28086:15;28079:28;27894:220;:::o;28120:366::-;28262:3;28283:67;28347:2;28342:3;28283:67;:::i;:::-;28276:74;;28359:93;28448:3;28359:93;:::i;:::-;28477:2;28472:3;28468:12;28461:19;;28120:366;;;:::o;28492:419::-;28658:4;28696:2;28685:9;28681:18;28673:26;;28745:9;28739:4;28735:20;28731:1;28720:9;28716:17;28709:47;28773:131;28899:4;28773:131;:::i;:::-;28765:139;;28492:419;;;:::o

Swarm Source

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