ETH Price: $3,650.20 (+1.97%)

Token

Privago AI (PVGO)
 

Overview

Max Total Supply

200,000,000 PVGO

Holders

776

Total Transfers

-

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$23,278.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Enhance your online security and anonymity while browsing the internet and conducting crypto transactions.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PrivagoAI

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
Privago AI
Virtual Private Network Service That Is Built On A Decentralized Architecture

Website: https://privago.ai
Telegram: https://t.me/privago
Twitter: https://x.com/privagoai
Medium: https://privago.medium.com
*/

pragma solidity 0.8.25;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

/**
 * @title Privago Token
 * @author Privago Dev
 * @notice This contract implements the Privago token (PVGO) with buy and sell taxes, max wallet and transaction limits, and trading restrictions.
 */
contract PrivagoAI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private isExcludedFromTax;
    
    address private _taxWallet;
    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=25;

    string private constant _name = "Privago AI";
    string private constant _symbol = "PVGO";

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 200000000  * 10**_decimals;
    
    uint256 public _maxWalletAmount = 1000000  * 10**_decimals;
    uint256 public _maxTxAmount = 1000000  * 10**_decimals;
    uint256 public _maxSwapAmount = 1000000  * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private swapLimitOn = true;
    bool private tradingOpen;
    bool private inSwap = false;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

    /**
     * @notice Constructor function
     * @param taxWalletAddress The address of the wallet to receive tax amounts
     */
    constructor (address taxWalletAddress) {
        _taxWallet = taxWalletAddress;
        uint256 tokenAmount = _tTotal.mul(16).div(100);
        isExcludedFromTax[taxWalletAddress] = true;
        _balances[_msgSender()] = _tTotal.sub(tokenAmount);
        _balances[address(this)] = tokenAmount;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    /**
     * @notice Returns the name of the token
     * @return The name of the token
     */
    function name() public pure returns (string memory) {
        return _name;
    }

    /**
     * @notice Returns the symbol of the token
     * @return The symbol of the token
     */
    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    /**
     * @notice Approves `spender` to spend `amount` tokens on behalf of the caller
     * @param spender The address of the spender
     * @param amount The amount of tokens to approve
     * @return A boolean indicating whether the approval succeeded
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @notice Returns the number of decimal places used by the token
     * @return The number of decimal places
     */
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    /**
     * @notice Transfers `amount` tokens from `sender` to `recipient` if the caller has sufficient allowance
     * @param sender The address of the sender
     * @param recipient The address of the recipient
     * @param amount The amount of tokens to transfer
     * @return A boolean indicating whether the transfer succeeded
     */
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @notice Returns the total supply of tokens
     * @return The total supply of tokens
     */
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    /**
     * @notice Returns the token balance of `account`
     * @param account The address to query the balance of
     * @return The token balance of `account`
     */
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    /**
     * @notice Transfers `amount` tokens from the caller to `recipient`
     * @param recipient The address of the recipient
     * @param amount The amount of tokens to transfer
     * @return A boolean indicating whether the transfer succeeded
     */
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @notice Returns the amount of tokens that `spender` is allowed to spend on behalf of `owner`
     * @param owner The address of the token owner
     * @param spender The address of the spender
     * @return The amount of tokens `spender` is allowed to spend on behalf of `owner`
     */
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @notice Approves `spender` to spend `amount` tokens on behalf of `owner`
     * @param owner The address of the token owner
     * @param spender The address of the spender
     * @param amount The amount of tokens to approve
     */
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @notice Transfers `amount` tokens from `from` to `to`, applying buy or sell taxes if applicable
     * @param from The address of the sender
     * @param to The address of the recipient
     * @param amount The amount of tokens to transfer
     */
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(tradingOpen,"Trading is not started");
            require(amount <= _maxTxAmount, "Transfer amount exceeds maxTxSize");
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul(_initialBuyTax).div(100);
            } else if (to == uniswapV2Pair){
                taxAmount = amount.mul(_initialSellTax).div(100);
                uint256 contractTokenBalance = balanceOf(address(this));
                if (!inSwap && to == uniswapV2Pair) {
                    if (swapLimitOn) {
                        uint256 getMinValue = (contractTokenBalance > _maxSwapAmount)?_maxSwapAmount:contractTokenBalance;
                        swapTokensForEth((amount > getMinValue)?getMinValue:amount);
                    } else {
                        swapTokensForEth(contractTokenBalance);
                    }
                }
            } else {
                taxAmount = 0;
            }
        }
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    /**
     * @notice Swaps `tokenAmount` tokens for ETH on Uniswap
     * @param tokenAmount The amount of tokens to swap
     */
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(tokenAmount>_maxTxAmount) {
            tokenAmount = _maxTxAmount;
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            _taxWallet,
            block.timestamp
        );
    }

    /**
     * @notice Sends `amount` of ETH to the tax wallet
     * @param amount The amount of ETH to send
     */
    function sendETHToFee(uint256 amount) private {
        payable(_taxWallet).transfer(amount);
    }

    /**
     * @notice Sets a new buy tax percentage
     * @param taxPercent The new buy tax percentage
     */
    function setNewBuyTaxAmount(uint256 taxPercent) external onlyOwner {
        _initialBuyTax = taxPercent;
    }

    /**
     * @notice Sets a new sell tax percentage
     * @param taxPercent The new sell tax percentage
     */
    function setNewSellTaxAmount(uint256 taxPercent) external onlyOwner {
        _initialSellTax = taxPercent;
    }

    /**
     * @notice Sets a new maximum wallet amount
     * @param amount The new maximum wallet amount
     */
    function setNewMaxWalletAmount(uint256 amount) external onlyOwner {
        _maxWalletAmount = amount * 10**_decimals;
    }

    /**
     * @notice Sets a new maximum transaction amount
     * @param amount The new maximum transaction amount
     */
    function setNewMaxTransactionAmount(uint256 amount) external onlyOwner {
        _maxTxAmount = amount * 10**_decimals;
    }

    /**
     * @notice Sets a new maximum swap amount
     * @param amount The new maximum swap amount
     */
    function setNewMaxSwapAmount(uint256 amount) external onlyOwner {
        _maxSwapAmount = amount * 10**_decimals;
    }

    /**
     * @notice Opens trading
     */
    function openTrading() external onlyOwner {
        require(!tradingOpen,"trading is already open");
        tradingOpen = true;
    }

    /**
     * @notice Rescues any ETH stuck in the contract
     */
    function rescueEth() external {
        require(_msgSender() == _taxWallet);
        uint256 ethBalance = address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    /**
     * @notice Rescues any ERC20 tokens stuck in the contract
     * @param tokenContractAddress The address of the token contract
     * @param toRescueAddress The address to send the rescued tokens to
     * @param amount The amount of tokens to rescue
     */
    function rescueTokens(address tokenContractAddress, address toRescueAddress, uint256 amount) external {
        require(_msgSender()==_taxWallet);
        require(tokenContractAddress != address(this), "Not allowed to rescue self");
        uint256 initial = IERC20(tokenContractAddress).balanceOf(address(this));
        require(initial >= amount, "Not enough token available");
        IERC20(tokenContractAddress).transfer(toRescueAddress, amount);
    }

    /**
     * @notice Removes all limits
     */
    function removeAllLimit() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletAmount=_tTotal;
        swapLimitOn = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    /**
     * @notice Forces a swap of all tokens in the contract
     */
    function forceSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenAmount=balanceOf(address(this));
        if(tokenAmount>0){
          swapTokensForEth(tokenAmount);
        }
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"taxWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContractAddress","type":"address"},{"internalType":"address","name":"toRescueAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercent","type":"uint256"}],"name":"setNewBuyTaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNewMaxSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNewMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNewMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxPercent","type":"uint256"}],"name":"setNewSellTaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601460055560196006556012600a61001c9190610b30565b620f424061002a9190610b7a565b6007556012600a61003b9190610b30565b620f42406100499190610b7a565b6008556012600a61005a9190610b30565b620f42406100689190610b7a565b6009556001600b60146101000a81548160ff0219169083151502179055505f600b60166101000a81548160ff0219169083151502179055503480156100ab575f80fd5b50604051613f26380380613f2683398181016040528101906100cd9190610c19565b5f6100dc61061d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6101fc60646101ee60106012600a6101d19190610b30565b630bebc2006101e09190610b7a565b61062460201b90919060201c565b61069b60201b90919060201c565b9050600160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610282816012600a6102659190610b30565b630bebc2006102749190610b7a565b6106ea60201b90919060201c565b60025f61029361061d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103b430600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a61039a9190610b30565b630bebc2006103a99190610b7a565b61073960201b60201c565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104429190610c19565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ec9190610c19565b6040518363ffffffff1660e01b8152600401610509929190610c53565b6020604051808303815f875af1158015610525573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105499190610c19565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061059661061d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6105f29190610b30565b630bebc2006106019190610b7a565b60405161060e9190610c89565b60405180910390a35050610f6c565b5f33905090565b5f808303610634575f9050610695565b5f82846106419190610b7a565b90508284826106509190610ccf565b14610690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068790610d7f565b60405180910390fd5b809150505b92915050565b5f6106e283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506108fc60201b60201c565b905092915050565b5f61073183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061095d60201b60201c565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e90610e0d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c90610e9b565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108ef9190610c89565b60405180910390a3505050565b5f8083118290610942576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109399190610f19565b60405180910390fd5b505f83856109509190610ccf565b9050809150509392505050565b5f8383111582906109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b9190610f19565b60405180910390fd5b505f83856109b29190610f39565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610a4157808604811115610a1d57610a1c6109bf565b5b6001851615610a2c5780820291505b8081029050610a3a856109ec565b9450610a01565b94509492505050565b5f82610a595760019050610b14565b81610a66575f9050610b14565b8160018114610a7c5760028114610a8657610ab5565b6001915050610b14565b60ff841115610a9857610a976109bf565b5b8360020a915084821115610aaf57610aae6109bf565b5b50610b14565b5060208310610133831016604e8410600b8410161715610aea5782820a905083811115610ae557610ae46109bf565b5b610b14565b610af784848460016109f8565b92509050818404811115610b0e57610b0d6109bf565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610b3a82610b1b565b9150610b4583610b24565b9250610b727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610a4a565b905092915050565b5f610b8482610b1b565b9150610b8f83610b1b565b9250828202610b9d81610b1b565b91508282048414831517610bb457610bb36109bf565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610be882610bbf565b9050919050565b610bf881610bde565b8114610c02575f80fd5b50565b5f81519050610c1381610bef565b92915050565b5f60208284031215610c2e57610c2d610bbb565b5b5f610c3b84828501610c05565b91505092915050565b610c4d81610bde565b82525050565b5f604082019050610c665f830185610c44565b610c736020830184610c44565b9392505050565b610c8381610b1b565b82525050565b5f602082019050610c9c5f830184610c7a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610cd982610b1b565b9150610ce483610b1b565b925082610cf457610cf3610ca2565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f610d69602183610cff565b9150610d7482610d0f565b604082019050919050565b5f6020820190508181035f830152610d9681610d5d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610df7602483610cff565b9150610e0282610d9d565b604082019050919050565b5f6020820190508181035f830152610e2481610deb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610e85602283610cff565b9150610e9082610e2b565b604082019050919050565b5f6020820190508181035f830152610eb281610e79565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610eeb82610eb9565b610ef58185610cff565b9350610f05818560208601610ec3565b610f0e81610ed1565b840191505092915050565b5f6020820190508181035f830152610f318184610ee1565b905092915050565b5f610f4382610b1b565b9150610f4e83610b1b565b9250828203905081811115610f6657610f656109bf565b5b92915050565b612fad80610f795f395ff3fe60806040526004361061014e575f3560e01c8063a9059cbb116100b5578063d5e1cbff1161006e578063d5e1cbff14610451578063dd62ed3e14610467578063df778d26146104a3578063dfa416ed146104b9578063e06bd4a5146104e1578063e402fcc61461050b57610155565b8063a9059cbb14610371578063c9567bf9146103ad578063cce8e7e5146103c3578063ce31a06b146103eb578063cea9d26f14610401578063d38a61711461042957610155565b806370a082311161010757806370a0823114610279578063715018a6146102b55780637d1db4a5146102cb5780638da5cb5b146102f557806395d89b411461031f578063a0ff16671461034957610155565b806306fdde0314610159578063095ea7b31461018357806318160ddd146101bf57806323b872dd146101e9578063313ce567146102255780636c0a24eb1461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610533565b60405161017a91906120bc565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a4919061216d565b610570565b6040516101b691906121c5565b60405180910390f35b3480156101ca575f80fd5b506101d361058d565b6040516101e091906121ed565b60405180910390f35b3480156101f4575f80fd5b5061020f600480360381019061020a9190612206565b6105b0565b60405161021c91906121c5565b60405180910390f35b348015610230575f80fd5b50610239610684565b6040516102469190612271565b60405180910390f35b34801561025a575f80fd5b5061026361068c565b60405161027091906121ed565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a919061228a565b610692565b6040516102ac91906121ed565b60405180910390f35b3480156102c0575f80fd5b506102c96106d8565b005b3480156102d6575f80fd5b506102df610826565b6040516102ec91906121ed565b60405180910390f35b348015610300575f80fd5b5061030961082c565b60405161031691906122c4565b60405180910390f35b34801561032a575f80fd5b50610333610853565b60405161034091906120bc565b60405180910390f35b348015610354575f80fd5b5061036f600480360381019061036a91906122dd565b610890565b005b34801561037c575f80fd5b506103976004803603810190610392919061216d565b610946565b6040516103a491906121c5565b60405180910390f35b3480156103b8575f80fd5b506103c1610963565b005b3480156103ce575f80fd5b506103e960048036038101906103e491906122dd565b610a64565b005b3480156103f6575f80fd5b506103ff610b02565b005b34801561040c575f80fd5b5061042760048036038101906104229190612206565b610b7a565b005b348015610434575f80fd5b5061044f600480360381019061044a91906122dd565b610d87565b005b34801561045c575f80fd5b50610465610e3d565b005b348015610472575f80fd5b5061048d60048036038101906104889190612308565b610f86565b60405161049a91906121ed565b60405180910390f35b3480156104ae575f80fd5b506104b7611008565b005b3480156104c4575f80fd5b506104df60048036038101906104da91906122dd565b611088565b005b3480156104ec575f80fd5b506104f5611126565b60405161050291906121ed565b60405180910390f35b348015610516575f80fd5b50610531600480360381019061052c91906122dd565b61112c565b005b60606040518060400160405280600a81526020017f5072697661676f20414900000000000000000000000000000000000000000000815250905090565b5f61058361057c6111e2565b84846111e9565b6001905092915050565b5f6012600a61059c91906124a2565b630bebc2006105ab91906124ec565b905090565b5f6105bc8484846113ac565b610679846105c86111e2565b61067485604051806060016040528060288152602001612f506028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61062b6111e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b169092919063ffffffff16565b6111e9565b600190509392505050565b5f6012905090565b60075481565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106e06111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076390612577565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5056474f00000000000000000000000000000000000000000000000000000000815250905090565b6108986111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b90612577565b60405180910390fd5b6012600a61093291906124a2565b8161093d91906124ec565b60088190555050565b5f6109596109526111e2565b84846113ac565b6001905092915050565b61096b6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee90612577565b60405180910390fd5b600b60159054906101000a900460ff1615610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e906125df565b60405180910390fd5b6001600b60156101000a81548160ff021916908315150217905550565b610a6c6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612577565b60405180910390fd5b8060058190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b426111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610b61575f80fd5b5f4790505f811115610b7757610b7681611b78565b5b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bba6111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610bd9575f80fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90612647565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c8191906122c4565b602060405180830381865afa158015610c9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc09190612679565b905081811015610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc906126ee565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610d4092919061270c565b6020604051808303815f875af1158015610d5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d80919061275d565b5050505050565b610d8f6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290612577565b60405180910390fd5b6012600a610e2991906124a2565b81610e3491906124ec565b60078190555050565b610e456111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890612577565b60405180910390fd5b6012600a610edf91906124a2565b630bebc200610eee91906124ec565b6008819055506012600a610f0291906124a2565b630bebc200610f1191906124ec565b6007819055505f600b60146101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610f6091906124a2565b630bebc200610f6f91906124ec565b604051610f7c91906121ed565b60405180910390a1565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110486111e2565b73ffffffffffffffffffffffffffffffffffffffff1614611067575f80fd5b5f61107130610692565b90505f8111156110855761108481611be0565b5b50565b6110906111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612577565b60405180910390fd5b8060068190555050565b60095481565b6111346111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790612577565b60405180910390fd5b6012600a6111ce91906124a2565b816111d991906124ec565b60098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e906127f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90612886565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139f91906121ed565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190612914565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f906129a2565b60405180910390fd5b5f81116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190612a30565b60405180910390fd5b5f6114d361082c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611541575061151161082c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561186657600b60159054906101000a900460ff16611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90612a98565b60405180910390fd5b6008548211156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190612b26565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116835750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561170f576007548261169585610692565b61169f9190612b44565b11156116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790612bc1565b60405180910390fd5b61170860646116fa60055485611e8590919063ffffffff16565b611efc90919063ffffffff16565b9050611865565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118605761178b606461177d60065485611e8590919063ffffffff16565b611efc90919063ffffffff16565b90505f61179730610692565b9050600b60169054906101000a900460ff161580156118025750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561185a57600b60149054906101000a900460ff161561184f575f600954821161182c5781611830565b6009545b90506118498185116118425784611844565b815b611be0565b50611859565b61185881611be0565b5b5b50611864565b5f90505b5b5b5f811115611965576118be8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f4590919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161195c91906121ed565b60405180910390a35b6119b58260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fa290919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611a58611a0c8284611fa290919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f4590919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611afb8486611fa290919063ffffffff16565b604051611b0891906121ed565b60405180910390a350505050565b5f838311158290611b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5491906120bc565b60405180910390fd5b505f8385611b6b9190612bdf565b9050809150509392505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bdc573d5f803e3d5ffd5b5050565b6001600b60166101000a81548160ff0219169083151502179055505f810315611e6857600854811115611c135760085490505b5f600267ffffffffffffffff811115611c2f57611c2e612c12565b5b604051908082528060200260200182016040528015611c5d5781602001602082028036833780820191505090505b50905030815f81518110611c7457611c73612c3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3c9190612c80565b81600181518110611d5057611d4f612c3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611db630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e9565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611e39959493929190612da4565b5f604051808303815f87803b158015611e50575f80fd5b505af1158015611e62573d5f803e3d5ffd5b50505050505b5f600b60166101000a81548160ff02191690831515021790555050565b5f808303611e95575f9050611ef6565b5f8284611ea291906124ec565b9050828482611eb19190612e29565b14611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890612ec9565b60405180910390fd5b809150505b92915050565b5f611f3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611feb565b905092915050565b5f808284611f539190612b44565b905083811015611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f90612f31565b60405180910390fd5b8091505092915050565b5f611fe383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b905092915050565b5f8083118290612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202891906120bc565b60405180910390fd5b505f838561203f9190612e29565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61208e8261204c565b6120988185612056565b93506120a8818560208601612066565b6120b181612074565b840191505092915050565b5f6020820190508181035f8301526120d48184612084565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612109826120e0565b9050919050565b612119816120ff565b8114612123575f80fd5b50565b5f8135905061213481612110565b92915050565b5f819050919050565b61214c8161213a565b8114612156575f80fd5b50565b5f8135905061216781612143565b92915050565b5f8060408385031215612183576121826120dc565b5b5f61219085828601612126565b92505060206121a185828601612159565b9150509250929050565b5f8115159050919050565b6121bf816121ab565b82525050565b5f6020820190506121d85f8301846121b6565b92915050565b6121e78161213a565b82525050565b5f6020820190506122005f8301846121de565b92915050565b5f805f6060848603121561221d5761221c6120dc565b5b5f61222a86828701612126565b935050602061223b86828701612126565b925050604061224c86828701612159565b9150509250925092565b5f60ff82169050919050565b61226b81612256565b82525050565b5f6020820190506122845f830184612262565b92915050565b5f6020828403121561229f5761229e6120dc565b5b5f6122ac84828501612126565b91505092915050565b6122be816120ff565b82525050565b5f6020820190506122d75f8301846122b5565b92915050565b5f602082840312156122f2576122f16120dc565b5b5f6122ff84828501612159565b91505092915050565b5f806040838503121561231e5761231d6120dc565b5b5f61232b85828601612126565b925050602061233c85828601612126565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156123c8578086048111156123a4576123a3612346565b5b60018516156123b35780820291505b80810290506123c185612373565b9450612388565b94509492505050565b5f826123e0576001905061249b565b816123ed575f905061249b565b8160018114612403576002811461240d5761243c565b600191505061249b565b60ff84111561241f5761241e612346565b5b8360020a91508482111561243657612435612346565b5b5061249b565b5060208310610133831016604e8410600b84101617156124715782820a90508381111561246c5761246b612346565b5b61249b565b61247e848484600161237f565b9250905081840481111561249557612494612346565b5b81810290505b9392505050565b5f6124ac8261213a565b91506124b783612256565b92506124e47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123d1565b905092915050565b5f6124f68261213a565b91506125018361213a565b925082820261250f8161213a565b9150828204841483151761252657612525612346565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612561602083612056565b915061256c8261252d565b602082019050919050565b5f6020820190508181035f83015261258e81612555565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6125c9601783612056565b91506125d482612595565b602082019050919050565b5f6020820190508181035f8301526125f6816125bd565b9050919050565b7f4e6f7420616c6c6f77656420746f207265736375652073656c660000000000005f82015250565b5f612631601a83612056565b915061263c826125fd565b602082019050919050565b5f6020820190508181035f83015261265e81612625565b9050919050565b5f8151905061267381612143565b92915050565b5f6020828403121561268e5761268d6120dc565b5b5f61269b84828501612665565b91505092915050565b7f4e6f7420656e6f75676820746f6b656e20617661696c61626c650000000000005f82015250565b5f6126d8601a83612056565b91506126e3826126a4565b602082019050919050565b5f6020820190508181035f830152612705816126cc565b9050919050565b5f60408201905061271f5f8301856122b5565b61272c60208301846121de565b9392505050565b61273c816121ab565b8114612746575f80fd5b50565b5f8151905061275781612733565b92915050565b5f60208284031215612772576127716120dc565b5b5f61277f84828501612749565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6127e2602483612056565b91506127ed82612788565b604082019050919050565b5f6020820190508181035f83015261280f816127d6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612870602283612056565b915061287b82612816565b604082019050919050565b5f6020820190508181035f83015261289d81612864565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6128fe602583612056565b9150612909826128a4565b604082019050919050565b5f6020820190508181035f83015261292b816128f2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61298c602383612056565b915061299782612932565b604082019050919050565b5f6020820190508181035f8301526129b981612980565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612a1a602983612056565b9150612a25826129c0565b604082019050919050565b5f6020820190508181035f830152612a4781612a0e565b9050919050565b7f54726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f612a82601683612056565b9150612a8d82612a4e565b602082019050919050565b5f6020820190508181035f830152612aaf81612a76565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206d6178547853697a5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b10602183612056565b9150612b1b82612ab6565b604082019050919050565b5f6020820190508181035f830152612b3d81612b04565b9050919050565b5f612b4e8261213a565b9150612b598361213a565b9250828201905080821115612b7157612b70612346565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612bab601a83612056565b9150612bb682612b77565b602082019050919050565b5f6020820190508181035f830152612bd881612b9f565b9050919050565b5f612be98261213a565b9150612bf48361213a565b9250828203905081811115612c0c57612c0b612346565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612c7a81612110565b92915050565b5f60208284031215612c9557612c946120dc565b5b5f612ca284828501612c6c565b91505092915050565b5f819050919050565b5f819050919050565b5f612cd7612cd2612ccd84612cab565b612cb4565b61213a565b9050919050565b612ce781612cbd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d1f816120ff565b82525050565b5f612d308383612d16565b60208301905092915050565b5f602082019050919050565b5f612d5282612ced565b612d5c8185612cf7565b9350612d6783612d07565b805f5b83811015612d97578151612d7e8882612d25565b9750612d8983612d3c565b925050600181019050612d6a565b5085935050505092915050565b5f60a082019050612db75f8301886121de565b612dc46020830187612cde565b8181036040830152612dd68186612d48565b9050612de560608301856122b5565b612df260808301846121de565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e338261213a565b9150612e3e8361213a565b925082612e4e57612e4d612dfc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612eb3602183612056565b9150612ebe82612e59565b604082019050919050565b5f6020820190508181035f830152612ee081612ea7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612f1b601b83612056565b9150612f2682612ee7565b602082019050919050565b5f6020820190508181035f830152612f4881612f0f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122029354aea8cd86592f15054fc0d62d90b78e1694e64fcc89587c5a21b0fa1fbda64736f6c63430008190033000000000000000000000000692599139537d7c386d06dc9318c1807b4e5f916

Deployed Bytecode

0x60806040526004361061014e575f3560e01c8063a9059cbb116100b5578063d5e1cbff1161006e578063d5e1cbff14610451578063dd62ed3e14610467578063df778d26146104a3578063dfa416ed146104b9578063e06bd4a5146104e1578063e402fcc61461050b57610155565b8063a9059cbb14610371578063c9567bf9146103ad578063cce8e7e5146103c3578063ce31a06b146103eb578063cea9d26f14610401578063d38a61711461042957610155565b806370a082311161010757806370a0823114610279578063715018a6146102b55780637d1db4a5146102cb5780638da5cb5b146102f557806395d89b411461031f578063a0ff16671461034957610155565b806306fdde0314610159578063095ea7b31461018357806318160ddd146101bf57806323b872dd146101e9578063313ce567146102255780636c0a24eb1461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610533565b60405161017a91906120bc565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a4919061216d565b610570565b6040516101b691906121c5565b60405180910390f35b3480156101ca575f80fd5b506101d361058d565b6040516101e091906121ed565b60405180910390f35b3480156101f4575f80fd5b5061020f600480360381019061020a9190612206565b6105b0565b60405161021c91906121c5565b60405180910390f35b348015610230575f80fd5b50610239610684565b6040516102469190612271565b60405180910390f35b34801561025a575f80fd5b5061026361068c565b60405161027091906121ed565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a919061228a565b610692565b6040516102ac91906121ed565b60405180910390f35b3480156102c0575f80fd5b506102c96106d8565b005b3480156102d6575f80fd5b506102df610826565b6040516102ec91906121ed565b60405180910390f35b348015610300575f80fd5b5061030961082c565b60405161031691906122c4565b60405180910390f35b34801561032a575f80fd5b50610333610853565b60405161034091906120bc565b60405180910390f35b348015610354575f80fd5b5061036f600480360381019061036a91906122dd565b610890565b005b34801561037c575f80fd5b506103976004803603810190610392919061216d565b610946565b6040516103a491906121c5565b60405180910390f35b3480156103b8575f80fd5b506103c1610963565b005b3480156103ce575f80fd5b506103e960048036038101906103e491906122dd565b610a64565b005b3480156103f6575f80fd5b506103ff610b02565b005b34801561040c575f80fd5b5061042760048036038101906104229190612206565b610b7a565b005b348015610434575f80fd5b5061044f600480360381019061044a91906122dd565b610d87565b005b34801561045c575f80fd5b50610465610e3d565b005b348015610472575f80fd5b5061048d60048036038101906104889190612308565b610f86565b60405161049a91906121ed565b60405180910390f35b3480156104ae575f80fd5b506104b7611008565b005b3480156104c4575f80fd5b506104df60048036038101906104da91906122dd565b611088565b005b3480156104ec575f80fd5b506104f5611126565b60405161050291906121ed565b60405180910390f35b348015610516575f80fd5b50610531600480360381019061052c91906122dd565b61112c565b005b60606040518060400160405280600a81526020017f5072697661676f20414900000000000000000000000000000000000000000000815250905090565b5f61058361057c6111e2565b84846111e9565b6001905092915050565b5f6012600a61059c91906124a2565b630bebc2006105ab91906124ec565b905090565b5f6105bc8484846113ac565b610679846105c86111e2565b61067485604051806060016040528060288152602001612f506028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61062b6111e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b169092919063ffffffff16565b6111e9565b600190509392505050565b5f6012905090565b60075481565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106e06111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076390612577565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5056474f00000000000000000000000000000000000000000000000000000000815250905090565b6108986111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b90612577565b60405180910390fd5b6012600a61093291906124a2565b8161093d91906124ec565b60088190555050565b5f6109596109526111e2565b84846113ac565b6001905092915050565b61096b6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee90612577565b60405180910390fd5b600b60159054906101000a900460ff1615610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e906125df565b60405180910390fd5b6001600b60156101000a81548160ff021916908315150217905550565b610a6c6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612577565b60405180910390fd5b8060058190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b426111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610b61575f80fd5b5f4790505f811115610b7757610b7681611b78565b5b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bba6111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610bd9575f80fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90612647565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c8191906122c4565b602060405180830381865afa158015610c9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc09190612679565b905081811015610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc906126ee565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610d4092919061270c565b6020604051808303815f875af1158015610d5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d80919061275d565b5050505050565b610d8f6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290612577565b60405180910390fd5b6012600a610e2991906124a2565b81610e3491906124ec565b60078190555050565b610e456111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890612577565b60405180910390fd5b6012600a610edf91906124a2565b630bebc200610eee91906124ec565b6008819055506012600a610f0291906124a2565b630bebc200610f1191906124ec565b6007819055505f600b60146101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610f6091906124a2565b630bebc200610f6f91906124ec565b604051610f7c91906121ed565b60405180910390a1565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110486111e2565b73ffffffffffffffffffffffffffffffffffffffff1614611067575f80fd5b5f61107130610692565b90505f8111156110855761108481611be0565b5b50565b6110906111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612577565b60405180910390fd5b8060068190555050565b60095481565b6111346111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790612577565b60405180910390fd5b6012600a6111ce91906124a2565b816111d991906124ec565b60098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e906127f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90612886565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139f91906121ed565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190612914565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f906129a2565b60405180910390fd5b5f81116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190612a30565b60405180910390fd5b5f6114d361082c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611541575061151161082c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561186657600b60159054906101000a900460ff16611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90612a98565b60405180910390fd5b6008548211156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190612b26565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116835750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561170f576007548261169585610692565b61169f9190612b44565b11156116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790612bc1565b60405180910390fd5b61170860646116fa60055485611e8590919063ffffffff16565b611efc90919063ffffffff16565b9050611865565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118605761178b606461177d60065485611e8590919063ffffffff16565b611efc90919063ffffffff16565b90505f61179730610692565b9050600b60169054906101000a900460ff161580156118025750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561185a57600b60149054906101000a900460ff161561184f575f600954821161182c5781611830565b6009545b90506118498185116118425784611844565b815b611be0565b50611859565b61185881611be0565b5b5b50611864565b5f90505b5b5b5f811115611965576118be8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f4590919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161195c91906121ed565b60405180910390a35b6119b58260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fa290919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611a58611a0c8284611fa290919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f4590919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611afb8486611fa290919063ffffffff16565b604051611b0891906121ed565b60405180910390a350505050565b5f838311158290611b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5491906120bc565b60405180910390fd5b505f8385611b6b9190612bdf565b9050809150509392505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bdc573d5f803e3d5ffd5b5050565b6001600b60166101000a81548160ff0219169083151502179055505f810315611e6857600854811115611c135760085490505b5f600267ffffffffffffffff811115611c2f57611c2e612c12565b5b604051908082528060200260200182016040528015611c5d5781602001602082028036833780820191505090505b50905030815f81518110611c7457611c73612c3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3c9190612c80565b81600181518110611d5057611d4f612c3f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611db630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e9565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611e39959493929190612da4565b5f604051808303815f87803b158015611e50575f80fd5b505af1158015611e62573d5f803e3d5ffd5b50505050505b5f600b60166101000a81548160ff02191690831515021790555050565b5f808303611e95575f9050611ef6565b5f8284611ea291906124ec565b9050828482611eb19190612e29565b14611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890612ec9565b60405180910390fd5b809150505b92915050565b5f611f3d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611feb565b905092915050565b5f808284611f539190612b44565b905083811015611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f90612f31565b60405180910390fd5b8091505092915050565b5f611fe383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b905092915050565b5f8083118290612031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202891906120bc565b60405180910390fd5b505f838561203f9190612e29565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61208e8261204c565b6120988185612056565b93506120a8818560208601612066565b6120b181612074565b840191505092915050565b5f6020820190508181035f8301526120d48184612084565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612109826120e0565b9050919050565b612119816120ff565b8114612123575f80fd5b50565b5f8135905061213481612110565b92915050565b5f819050919050565b61214c8161213a565b8114612156575f80fd5b50565b5f8135905061216781612143565b92915050565b5f8060408385031215612183576121826120dc565b5b5f61219085828601612126565b92505060206121a185828601612159565b9150509250929050565b5f8115159050919050565b6121bf816121ab565b82525050565b5f6020820190506121d85f8301846121b6565b92915050565b6121e78161213a565b82525050565b5f6020820190506122005f8301846121de565b92915050565b5f805f6060848603121561221d5761221c6120dc565b5b5f61222a86828701612126565b935050602061223b86828701612126565b925050604061224c86828701612159565b9150509250925092565b5f60ff82169050919050565b61226b81612256565b82525050565b5f6020820190506122845f830184612262565b92915050565b5f6020828403121561229f5761229e6120dc565b5b5f6122ac84828501612126565b91505092915050565b6122be816120ff565b82525050565b5f6020820190506122d75f8301846122b5565b92915050565b5f602082840312156122f2576122f16120dc565b5b5f6122ff84828501612159565b91505092915050565b5f806040838503121561231e5761231d6120dc565b5b5f61232b85828601612126565b925050602061233c85828601612126565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156123c8578086048111156123a4576123a3612346565b5b60018516156123b35780820291505b80810290506123c185612373565b9450612388565b94509492505050565b5f826123e0576001905061249b565b816123ed575f905061249b565b8160018114612403576002811461240d5761243c565b600191505061249b565b60ff84111561241f5761241e612346565b5b8360020a91508482111561243657612435612346565b5b5061249b565b5060208310610133831016604e8410600b84101617156124715782820a90508381111561246c5761246b612346565b5b61249b565b61247e848484600161237f565b9250905081840481111561249557612494612346565b5b81810290505b9392505050565b5f6124ac8261213a565b91506124b783612256565b92506124e47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846123d1565b905092915050565b5f6124f68261213a565b91506125018361213a565b925082820261250f8161213a565b9150828204841483151761252657612525612346565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612561602083612056565b915061256c8261252d565b602082019050919050565b5f6020820190508181035f83015261258e81612555565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6125c9601783612056565b91506125d482612595565b602082019050919050565b5f6020820190508181035f8301526125f6816125bd565b9050919050565b7f4e6f7420616c6c6f77656420746f207265736375652073656c660000000000005f82015250565b5f612631601a83612056565b915061263c826125fd565b602082019050919050565b5f6020820190508181035f83015261265e81612625565b9050919050565b5f8151905061267381612143565b92915050565b5f6020828403121561268e5761268d6120dc565b5b5f61269b84828501612665565b91505092915050565b7f4e6f7420656e6f75676820746f6b656e20617661696c61626c650000000000005f82015250565b5f6126d8601a83612056565b91506126e3826126a4565b602082019050919050565b5f6020820190508181035f830152612705816126cc565b9050919050565b5f60408201905061271f5f8301856122b5565b61272c60208301846121de565b9392505050565b61273c816121ab565b8114612746575f80fd5b50565b5f8151905061275781612733565b92915050565b5f60208284031215612772576127716120dc565b5b5f61277f84828501612749565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6127e2602483612056565b91506127ed82612788565b604082019050919050565b5f6020820190508181035f83015261280f816127d6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612870602283612056565b915061287b82612816565b604082019050919050565b5f6020820190508181035f83015261289d81612864565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6128fe602583612056565b9150612909826128a4565b604082019050919050565b5f6020820190508181035f83015261292b816128f2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61298c602383612056565b915061299782612932565b604082019050919050565b5f6020820190508181035f8301526129b981612980565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612a1a602983612056565b9150612a25826129c0565b604082019050919050565b5f6020820190508181035f830152612a4781612a0e565b9050919050565b7f54726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f612a82601683612056565b9150612a8d82612a4e565b602082019050919050565b5f6020820190508181035f830152612aaf81612a76565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206d6178547853697a5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b10602183612056565b9150612b1b82612ab6565b604082019050919050565b5f6020820190508181035f830152612b3d81612b04565b9050919050565b5f612b4e8261213a565b9150612b598361213a565b9250828201905080821115612b7157612b70612346565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612bab601a83612056565b9150612bb682612b77565b602082019050919050565b5f6020820190508181035f830152612bd881612b9f565b9050919050565b5f612be98261213a565b9150612bf48361213a565b9250828203905081811115612c0c57612c0b612346565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612c7a81612110565b92915050565b5f60208284031215612c9557612c946120dc565b5b5f612ca284828501612c6c565b91505092915050565b5f819050919050565b5f819050919050565b5f612cd7612cd2612ccd84612cab565b612cb4565b61213a565b9050919050565b612ce781612cbd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d1f816120ff565b82525050565b5f612d308383612d16565b60208301905092915050565b5f602082019050919050565b5f612d5282612ced565b612d5c8185612cf7565b9350612d6783612d07565b805f5b83811015612d97578151612d7e8882612d25565b9750612d8983612d3c565b925050600181019050612d6a565b5085935050505092915050565b5f60a082019050612db75f8301886121de565b612dc46020830187612cde565b8181036040830152612dd68186612d48565b9050612de560608301856122b5565b612df260808301846121de565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e338261213a565b9150612e3e8361213a565b925082612e4e57612e4d612dfc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612eb3602183612056565b9150612ebe82612e59565b604082019050919050565b5f6020820190508181035f830152612ee081612ea7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612f1b601b83612056565b9150612f2682612ee7565b602082019050919050565b5f6020820190508181035f830152612f4881612f0f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122029354aea8cd86592f15054fc0d62d90b78e1694e64fcc89587c5a21b0fa1fbda64736f6c63430008190033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000692599139537d7c386d06dc9318c1807b4e5f916

-----Decoded View---------------
Arg [0] : taxWalletAddress (address): 0x692599139537D7C386D06dC9318C1807B4E5F916

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000692599139537d7c386d06dc9318c1807b4e5f916


Deployed Bytecode Sourcemap

3915:11855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5958:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6524:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7704:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7271:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6827:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4531:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7986:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2789:148;;;;;;;;;;;;;:::i;:::-;;4596:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2575:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6155:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13564:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8381:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13992:137;;;;;;;;;;;;;:::i;:::-;;12819:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14209:212;;;;;;;;;;;;;:::i;:::-;;14706:463;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13301:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15230:194;;;;;;;;;;;;;:::i;:::-;;8865:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15510:218;;;;;;;;;;;;;:::i;:::-;;13059:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4657:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13814:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5958:83;5995:13;6028:5;;;;;;;;;;;;;;;;;6021:12;;5958:83;:::o;6524:161::-;6599:4;6616:39;6625:12;:10;:12::i;:::-;6639:7;6648:6;6616:8;:39::i;:::-;6673:4;6666:11;;6524:161;;;;:::o;7704:95::-;7757:7;4448:2;4505;:13;;;;:::i;:::-;4492:9;:26;;;;:::i;:::-;7777:14;;7704:95;:::o;7271:313::-;7369:4;7386:36;7396:6;7404:9;7415:6;7386:9;:36::i;:::-;7433:121;7442:6;7450:12;:10;:12::i;:::-;7464:89;7502:6;7464:89;;;;;;;;;;;;;;;;;:11;:19;7476:6;7464:19;;;;;;;;;;;;;;;:33;7484:12;:10;:12::i;:::-;7464:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7433:8;:121::i;:::-;7572:4;7565:11;;7271:313;;;;;:::o;6827:83::-;6868:5;4448:2;6886:16;;6827:83;:::o;4531:58::-;;;;:::o;7986:119::-;8052:7;8079:9;:18;8089:7;8079:18;;;;;;;;;;;;;;;;8072:25;;7986:119;;;:::o;2789:148::-;2712:12;:10;:12::i;:::-;2702:22;;:6;;;;;;;;;;:22;;;2694:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2896:1:::1;2859:40;;2880:6;::::0;::::1;;;;;;;;2859:40;;;;;;;;;;;;2927:1;2910:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2789:148::o:0;4596:54::-;;;;:::o;2575:79::-;2613:7;2640:6;;;;;;;;;;;2633:13;;2575:79;:::o;6155:87::-;6194:13;6227:7;;;;;;;;;;;;;;;;;6220:14;;6155:87;:::o;13564:127::-;2712:12;:10;:12::i;:::-;2702:22;;:6;;;;;;;;;;:22;;;2694:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4448:2:::1;13670;:13;;;;:::i;:::-;13661:6;:22;;;;:::i;:::-;13646:12;:37;;;;13564:127:::0;:::o;8381:167::-;8459:4;8476:42;8486:12;:10;:12::i;:::-;8500:9;8511:6;8476:9;:42::i;:::-;8536:4;8529:11;;8381:167;;;;:::o;13992:137::-;2712:12;:10;:12::i;:::-;2702:22;;:6;;;;;;;;;;:22;;;2694:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14054:11:::1;;;;;;;;;;;14053:12;14045:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14117:4;14103:11;;:18;;;;;;;;;;;;;;;;;;13992:137::o:0;12819:113::-;2712:12;:10;:12::i;:::-;2702:22;;:6;;;;;;;;;;:22;;;2694:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12914:10:::1;12897:14;:27;;;;12819:113:::0;:::o;14209:212::-;14274:10;;;;;;;;;;;14258:26;;:12;:10;:12::i;:::-;:26;;;14250:35;;;;;;14296:18;14317:21;14296:42;;14363:1;14352:10;:12;14349:65;;;14378:24;14391:10;14378:12;:24::i;:::-;14349:65;14239:182;14209:212::o;14706:463::-;14841:10;;;;;;;;;;;14827:24;;:12;:10;:12::i;:::-;:24;;;14819:33;;;;;;14903:4;14871:37;;:20;:37;;;14863:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14950:15;14975:20;14968:38;;;15015:4;14968:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14950:71;;15051:6;15040:7;:17;;15032:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15106:20;15099:37;;;15137:15;15154:6;15099:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14808:361;14706:463;;;:::o;13301:126::-;2712:12;:10;:12::i;:::-;2702:22;;:6;;;;;;;;;;:22;;;2694:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4448:2:::1;13406;:13;;;;:::i;:::-;13397:6;:22;;;;:::i;:::-;13378:16;:41;;;;13301:126:::0;:::o;15230:194::-;2712:12;:10;:12::i;:::-;2702:22;;:6;;;;;;;;;;:22;;;2694:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4448:2:::1;4505;:13;;;;:::i;:::-;4492:9;:26;;;;:::i;:::-;15286:12;:22;;;;4448:2;4505;:13;;;;:::i;:::-;4492:9;:26;;;;:::i;:::-;15319:16;:24;;;;15368:5;15354:11;;:19;;;;;;;;;;;;;;;;;;15389:27;4448:2;4505;:13;;;;:::i;:::-;4492:9;:26;;;;:::i;:::-;15389:27;;;;;;:::i;:::-;;;;;;;;15230:194::o:0;8865:143::-;8946:7;8973:11;:18;8985:5;8973:18;;;;;;;;;;;;;;;:27;8992:7;8973:27;;;;;;;;;;;;;;;;8966:34;;8865:143;;;;:::o;15510:218::-;15573:10;;;;;;;;;;;15559:24;;:12;:10;:12::i;:::-;:24;;;15551:33;;;;;;15595:19;15615:24;15633:4;15615:9;:24::i;:::-;15595:44;;15665:1;15653:11;:13;15650:71;;;15680:29;15697:11;15680:16;:29::i;:::-;15650:71;15540:188;15510:218::o;13059:115::-;2712:12;:10;:12::i;:::-;2702:22;;:6;;;;;;;;;;:22;;;2694:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13156:10:::1;13138:15;:28;;;;13059:115:::0;:::o;4657:56::-;;;;:::o;13814:122::-;2712:12;:10;:12::i;:::-;2702:22;;:6;;;;;;;;;;:22;;;2694:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4448:2:::1;13915;:13;;;;:::i;:::-;13906:6;:22;;;;:::i;:::-;13889:14;:39;;;;13814:122:::0;:::o;330:98::-;383:7;410:10;403:17;;330:98;:::o;9271:335::-;9381:1;9364:19;;:5;:19;;;9356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9462:1;9443:21;;:7;:21;;;9435:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9544:6;9514:11;:18;9526:5;9514:18;;;;;;;;;;;;;;;:27;9533:7;9514:27;;;;;;;;;;;;;;;:36;;;;9582:7;9566:32;;9575:5;9566:32;;;9591:6;9566:32;;;;;;:::i;:::-;;;;;;;;9271:335;;;:::o;9884:1826::-;9988:1;9972:18;;:4;:18;;;9964:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10065:1;10051:16;;:2;:16;;;10043:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10135:1;10126:6;:10;10118:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10193:17;10235:7;:5;:7::i;:::-;10227:15;;:4;:15;;;;:32;;;;;10252:7;:5;:7::i;:::-;10246:13;;:2;:13;;;;10227:32;10223:1133;;;10284:11;;;;;;;;;;;10276:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;10354:12;;10344:6;:22;;10336:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10431:13;;;;;;;;;;;10423:21;;:4;:21;;;:55;;;;;10462:15;;;;;;;;;;;10448:30;;:2;:30;;;;10423:55;10419:926;;;10533:16;;10523:6;10507:13;10517:2;10507:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;10499:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10611:35;10642:3;10611:26;10622:14;;10611:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;10599:47;;10419:926;;;10678:13;;;;;;;;;;;10672:19;;:2;:19;;;10668:677;;10723:36;10755:3;10723:27;10734:15;;10723:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;10711:48;;10778:28;10809:24;10827:4;10809:9;:24::i;:::-;10778:55;;10857:6;;;;;;;;;;;10856:7;:30;;;;;10873:13;;;;;;;;;;;10867:19;;:2;:19;;;10856:30;10852:424;;;10915:11;;;;;;;;;;;10911:346;;;10955:19;11001:14;;10978:20;:37;10977:75;;11032:20;10977:75;;;11017:14;;10977:75;10955:97;;11079:59;11106:11;11097:6;:20;11096:41;;11131:6;11096:41;;;11119:11;11096:41;11079:16;:59::i;:::-;10928:234;10911:346;;;11195:38;11212:20;11195:16;:38::i;:::-;10911:346;10852:424;10692:599;10668:677;;;11328:1;11316:13;;10668:677;10419:926;10223:1133;11379:1;11369:9;:11;11366:161;;;11419:39;11448:9;11419;:24;11437:4;11419:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11394:9;:24;11412:4;11394:24;;;;;;;;;;;;;;;:64;;;;11499:4;11476:39;;11485:4;11476:39;;;11505:9;11476:39;;;;;;:::i;:::-;;;;;;;;11366:161;11553:27;11573:6;11553:9;:15;11563:4;11553:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11537:9;:15;11547:4;11537:15;;;;;;;;;;;;;;;:43;;;;11605:40;11623:21;11634:9;11623:6;:10;;:21;;;;:::i;:::-;11605:9;:13;11615:2;11605:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11591:9;:13;11601:2;11591:13;;;;;;;;;;;;;;;:54;;;;11676:2;11661:41;;11670:4;11661:41;;;11680:21;11691:9;11680:6;:10;;:21;;;;:::i;:::-;11661:41;;;;;;:::i;:::-;;;;;;;;9953:1757;9884:1826;;;:::o;1467:190::-;1553:7;1586:1;1581;:6;;1589:12;1573:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1613:9;1629:1;1625;:5;;;;:::i;:::-;1613:17;;1648:1;1641:8;;;1467:190;;;;;:::o;12593:101::-;12658:10;;;;;;;;;;;12650:28;;:36;12679:6;12650:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12593:101;:::o;11854:609::-;4953:4;4944:6;;:13;;;;;;;;;;;;;;;;;;11948:1:::1;11935:11;:14:::0;11932:27;11951:7:::1;11932:27;11984:12;;11972:11;:24;11969:82;;;12027:12;;12013:26;;11969:82;12061:21;12099:1;12085:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12061:40;;12130:4;12112;12117:1;12112:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12156:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12146:4;12151:1;12146:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12189:62;12206:4;12221:15;;;;;;;;;;;12239:11;12189:8;:62::i;:::-;12262:15;;;;;;;;;;;:66;;;12343:11;12369:1;12385:4;12404:10;;;;;;;;;;;12429:15;12262:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11921:542;4968:1;4989:5:::0;4980:6;;:14;;;;;;;;;;;;;;;;;;11854:609;:::o;1665:246::-;1723:7;1752:1;1747;:6;1743:47;;1777:1;1770:8;;;;1743:47;1800:9;1816:1;1812;:5;;;;:::i;:::-;1800:17;;1845:1;1840;1836;:5;;;;:::i;:::-;:10;1828:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1902:1;1895:8;;;1665:246;;;;;:::o;1919:132::-;1977:7;2004:39;2008:1;2011;2004:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1997:46;;1919:132;;;;:::o;1136:179::-;1194:7;1214:9;1230:1;1226;:5;;;;:::i;:::-;1214:17;;1255:1;1250;:6;;1242:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1306:1;1299:8;;;1136:179;;;;:::o;1323:136::-;1381:7;1408:43;1412:1;1415;1408:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1401:50;;1323:136;;;;:::o;2059:189::-;2145:7;2177:1;2173;:5;2180:12;2165:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2204:9;2220:1;2216;:5;;;;:::i;:::-;2204:17;;2239:1;2232:8;;;2059:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:329::-;5492:6;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5433:329;;;;:::o;5768:474::-;5836:6;5844;5893:2;5881:9;5872:7;5868:23;5864:32;5861:119;;;5899:79;;:::i;:::-;5861:119;6019:1;6044:53;6089:7;6080:6;6069:9;6065:22;6044:53;:::i;:::-;6034:63;;5990:117;6146:2;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6117:118;5768:474;;;;;:::o;6248:180::-;6296:77;6293:1;6286:88;6393:4;6390:1;6383:15;6417:4;6414:1;6407:15;6434:102;6476:8;6523:5;6520:1;6516:13;6495:34;;6434:102;;;:::o;6542:848::-;6603:5;6610:4;6634:6;6625:15;;6658:5;6649:14;;6672:712;6693:1;6683:8;6680:15;6672:712;;;6788:4;6783:3;6779:14;6773:4;6770:24;6767:50;;;6797:18;;:::i;:::-;6767:50;6847:1;6837:8;6833:16;6830:451;;;7262:4;7255:5;7251:16;7242:25;;6830:451;7312:4;7306;7302:15;7294:23;;7342:32;7365:8;7342:32;:::i;:::-;7330:44;;6672:712;;;6542:848;;;;;;;:::o;7396:1073::-;7450:5;7641:8;7631:40;;7662:1;7653:10;;7664:5;;7631:40;7690:4;7680:36;;7707:1;7698:10;;7709:5;;7680:36;7776:4;7824:1;7819:27;;;;7860:1;7855:191;;;;7769:277;;7819:27;7837:1;7828:10;;7839:5;;;7855:191;7900:3;7890:8;7887:17;7884:43;;;7907:18;;:::i;:::-;7884:43;7956:8;7953:1;7949:16;7940:25;;7991:3;7984:5;7981:14;7978:40;;;7998:18;;:::i;:::-;7978:40;8031:5;;;7769:277;;8155:2;8145:8;8142:16;8136:3;8130:4;8127:13;8123:36;8105:2;8095:8;8092:16;8087:2;8081:4;8078:12;8074:35;8058:111;8055:246;;;8211:8;8205:4;8201:19;8192:28;;8246:3;8239:5;8236:14;8233:40;;;8253:18;;:::i;:::-;8233:40;8286:5;;8055:246;8326:42;8364:3;8354:8;8348:4;8345:1;8326:42;:::i;:::-;8311:57;;;;8400:4;8395:3;8391:14;8384:5;8381:25;8378:51;;;8409:18;;:::i;:::-;8378:51;8458:4;8451:5;8447:16;8438:25;;7396:1073;;;;;;:::o;8475:281::-;8533:5;8557:23;8575:4;8557:23;:::i;:::-;8549:31;;8601:25;8617:8;8601:25;:::i;:::-;8589:37;;8645:104;8682:66;8672:8;8666:4;8645:104;:::i;:::-;8636:113;;8475:281;;;;:::o;8762:410::-;8802:7;8825:20;8843:1;8825:20;:::i;:::-;8820:25;;8859:20;8877:1;8859:20;:::i;:::-;8854:25;;8914:1;8911;8907:9;8936:30;8954:11;8936:30;:::i;:::-;8925:41;;9115:1;9106:7;9102:15;9099:1;9096:22;9076:1;9069:9;9049:83;9026:139;;9145:18;;:::i;:::-;9026:139;8810:362;8762:410;;;;:::o;9178:182::-;9318:34;9314:1;9306:6;9302:14;9295:58;9178:182;:::o;9366:366::-;9508:3;9529:67;9593:2;9588:3;9529:67;:::i;:::-;9522:74;;9605:93;9694:3;9605:93;:::i;:::-;9723:2;9718:3;9714:12;9707:19;;9366:366;;;:::o;9738:419::-;9904:4;9942:2;9931:9;9927:18;9919:26;;9991:9;9985:4;9981:20;9977:1;9966:9;9962:17;9955:47;10019:131;10145:4;10019:131;:::i;:::-;10011:139;;9738:419;;;:::o;10163:173::-;10303:25;10299:1;10291:6;10287:14;10280:49;10163:173;:::o;10342:366::-;10484:3;10505:67;10569:2;10564:3;10505:67;:::i;:::-;10498:74;;10581:93;10670:3;10581:93;:::i;:::-;10699:2;10694:3;10690:12;10683:19;;10342:366;;;:::o;10714:419::-;10880:4;10918:2;10907:9;10903:18;10895:26;;10967:9;10961:4;10957:20;10953:1;10942:9;10938:17;10931:47;10995:131;11121:4;10995:131;:::i;:::-;10987:139;;10714:419;;;:::o;11139:176::-;11279:28;11275:1;11267:6;11263:14;11256:52;11139:176;:::o;11321:366::-;11463:3;11484:67;11548:2;11543:3;11484:67;:::i;:::-;11477:74;;11560:93;11649:3;11560:93;:::i;:::-;11678:2;11673:3;11669:12;11662:19;;11321:366;;;:::o;11693:419::-;11859:4;11897:2;11886:9;11882:18;11874:26;;11946:9;11940:4;11936:20;11932:1;11921:9;11917:17;11910:47;11974:131;12100:4;11974:131;:::i;:::-;11966:139;;11693:419;;;:::o;12118:143::-;12175:5;12206:6;12200:13;12191:22;;12222:33;12249:5;12222:33;:::i;:::-;12118:143;;;;:::o;12267:351::-;12337:6;12386:2;12374:9;12365:7;12361:23;12357:32;12354:119;;;12392:79;;:::i;:::-;12354:119;12512:1;12537:64;12593:7;12584:6;12573:9;12569:22;12537:64;:::i;:::-;12527:74;;12483:128;12267:351;;;;:::o;12624:176::-;12764:28;12760:1;12752:6;12748:14;12741:52;12624:176;:::o;12806:366::-;12948:3;12969:67;13033:2;13028:3;12969:67;:::i;:::-;12962:74;;13045:93;13134:3;13045:93;:::i;:::-;13163:2;13158:3;13154:12;13147:19;;12806:366;;;:::o;13178:419::-;13344:4;13382:2;13371:9;13367:18;13359:26;;13431:9;13425:4;13421:20;13417:1;13406:9;13402:17;13395:47;13459:131;13585:4;13459:131;:::i;:::-;13451:139;;13178:419;;;:::o;13603:332::-;13724:4;13762:2;13751:9;13747:18;13739:26;;13775:71;13843:1;13832:9;13828:17;13819:6;13775:71;:::i;:::-;13856:72;13924:2;13913:9;13909:18;13900:6;13856:72;:::i;:::-;13603:332;;;;;:::o;13941:116::-;14011:21;14026:5;14011:21;:::i;:::-;14004:5;14001:32;13991:60;;14047:1;14044;14037:12;13991:60;13941:116;:::o;14063:137::-;14117:5;14148:6;14142:13;14133:22;;14164:30;14188:5;14164:30;:::i;:::-;14063:137;;;;:::o;14206:345::-;14273:6;14322:2;14310:9;14301:7;14297:23;14293:32;14290:119;;;14328:79;;:::i;:::-;14290:119;14448:1;14473:61;14526:7;14517:6;14506:9;14502:22;14473:61;:::i;:::-;14463:71;;14419:125;14206:345;;;;:::o;14557:223::-;14697:34;14693:1;14685:6;14681:14;14674:58;14766:6;14761:2;14753:6;14749:15;14742:31;14557:223;:::o;14786:366::-;14928:3;14949:67;15013:2;15008:3;14949:67;:::i;:::-;14942:74;;15025:93;15114:3;15025:93;:::i;:::-;15143:2;15138:3;15134:12;15127:19;;14786:366;;;:::o;15158:419::-;15324:4;15362:2;15351:9;15347:18;15339:26;;15411:9;15405:4;15401:20;15397:1;15386:9;15382:17;15375:47;15439:131;15565:4;15439:131;:::i;:::-;15431:139;;15158:419;;;:::o;15583:221::-;15723:34;15719:1;15711:6;15707:14;15700:58;15792:4;15787:2;15779:6;15775:15;15768:29;15583:221;:::o;15810:366::-;15952:3;15973:67;16037:2;16032:3;15973:67;:::i;:::-;15966:74;;16049:93;16138:3;16049:93;:::i;:::-;16167:2;16162:3;16158:12;16151:19;;15810:366;;;:::o;16182:419::-;16348:4;16386:2;16375:9;16371:18;16363:26;;16435:9;16429:4;16425:20;16421:1;16410:9;16406:17;16399:47;16463:131;16589:4;16463:131;:::i;:::-;16455:139;;16182:419;;;:::o;16607:224::-;16747:34;16743:1;16735:6;16731:14;16724:58;16816:7;16811:2;16803:6;16799:15;16792:32;16607:224;:::o;16837:366::-;16979:3;17000:67;17064:2;17059:3;17000:67;:::i;:::-;16993:74;;17076:93;17165:3;17076:93;:::i;:::-;17194:2;17189:3;17185:12;17178:19;;16837:366;;;:::o;17209:419::-;17375:4;17413:2;17402:9;17398:18;17390:26;;17462:9;17456:4;17452:20;17448:1;17437:9;17433:17;17426:47;17490:131;17616:4;17490:131;:::i;:::-;17482:139;;17209:419;;;:::o;17634:222::-;17774:34;17770:1;17762:6;17758:14;17751:58;17843:5;17838:2;17830:6;17826:15;17819:30;17634:222;:::o;17862:366::-;18004:3;18025:67;18089:2;18084:3;18025:67;:::i;:::-;18018:74;;18101:93;18190:3;18101:93;:::i;:::-;18219:2;18214:3;18210:12;18203:19;;17862:366;;;:::o;18234:419::-;18400:4;18438:2;18427:9;18423:18;18415:26;;18487:9;18481:4;18477:20;18473:1;18462:9;18458:17;18451:47;18515:131;18641:4;18515:131;:::i;:::-;18507:139;;18234:419;;;:::o;18659:228::-;18799:34;18795:1;18787:6;18783:14;18776:58;18868:11;18863:2;18855:6;18851:15;18844:36;18659:228;:::o;18893:366::-;19035:3;19056:67;19120:2;19115:3;19056:67;:::i;:::-;19049:74;;19132:93;19221:3;19132:93;:::i;:::-;19250:2;19245:3;19241:12;19234:19;;18893:366;;;:::o;19265:419::-;19431:4;19469:2;19458:9;19454:18;19446:26;;19518:9;19512:4;19508:20;19504:1;19493:9;19489:17;19482:47;19546:131;19672:4;19546:131;:::i;:::-;19538:139;;19265:419;;;:::o;19690:172::-;19830:24;19826:1;19818:6;19814:14;19807:48;19690:172;:::o;19868:366::-;20010:3;20031:67;20095:2;20090:3;20031:67;:::i;:::-;20024:74;;20107:93;20196:3;20107:93;:::i;:::-;20225:2;20220:3;20216:12;20209:19;;19868:366;;;:::o;20240:419::-;20406:4;20444:2;20433:9;20429:18;20421:26;;20493:9;20487:4;20483:20;20479:1;20468:9;20464:17;20457:47;20521:131;20647:4;20521:131;:::i;:::-;20513:139;;20240:419;;;:::o;20665:220::-;20805:34;20801:1;20793:6;20789:14;20782:58;20874:3;20869:2;20861:6;20857:15;20850:28;20665:220;:::o;20891:366::-;21033:3;21054:67;21118:2;21113:3;21054:67;:::i;:::-;21047:74;;21130:93;21219:3;21130:93;:::i;:::-;21248:2;21243:3;21239:12;21232:19;;20891:366;;;:::o;21263:419::-;21429:4;21467:2;21456:9;21452:18;21444:26;;21516:9;21510:4;21506:20;21502:1;21491:9;21487:17;21480:47;21544:131;21670:4;21544:131;:::i;:::-;21536:139;;21263:419;;;:::o;21688:191::-;21728:3;21747:20;21765:1;21747:20;:::i;:::-;21742:25;;21781:20;21799:1;21781:20;:::i;:::-;21776:25;;21824:1;21821;21817:9;21810:16;;21845:3;21842:1;21839:10;21836:36;;;21852:18;;:::i;:::-;21836:36;21688:191;;;;:::o;21885:176::-;22025:28;22021:1;22013:6;22009:14;22002:52;21885:176;:::o;22067:366::-;22209:3;22230:67;22294:2;22289:3;22230:67;:::i;:::-;22223:74;;22306:93;22395:3;22306:93;:::i;:::-;22424:2;22419:3;22415:12;22408:19;;22067:366;;;:::o;22439:419::-;22605:4;22643:2;22632:9;22628:18;22620:26;;22692:9;22686:4;22682:20;22678:1;22667:9;22663:17;22656:47;22720:131;22846:4;22720:131;:::i;:::-;22712:139;;22439:419;;;:::o;22864:194::-;22904:4;22924:20;22942:1;22924:20;:::i;:::-;22919:25;;22958:20;22976:1;22958:20;:::i;:::-;22953:25;;23002:1;22999;22995:9;22987:17;;23026:1;23020:4;23017:11;23014:37;;;23031:18;;:::i;:::-;23014:37;22864:194;;;;:::o;23064:180::-;23112:77;23109:1;23102:88;23209:4;23206:1;23199:15;23233:4;23230:1;23223:15;23250:180;23298:77;23295:1;23288:88;23395:4;23392:1;23385:15;23419:4;23416:1;23409:15;23436:143;23493:5;23524:6;23518:13;23509:22;;23540:33;23567:5;23540:33;:::i;:::-;23436:143;;;;:::o;23585:351::-;23655:6;23704:2;23692:9;23683:7;23679:23;23675:32;23672:119;;;23710:79;;:::i;:::-;23672:119;23830:1;23855:64;23911:7;23902:6;23891:9;23887:22;23855:64;:::i;:::-;23845:74;;23801:128;23585:351;;;;:::o;23942:85::-;23987:7;24016:5;24005:16;;23942:85;;;:::o;24033:60::-;24061:3;24082:5;24075:12;;24033:60;;;:::o;24099:158::-;24157:9;24190:61;24208:42;24217:32;24243:5;24217:32;:::i;:::-;24208:42;:::i;:::-;24190:61;:::i;:::-;24177:74;;24099:158;;;:::o;24263:147::-;24358:45;24397:5;24358:45;:::i;:::-;24353:3;24346:58;24263:147;;:::o;24416:114::-;24483:6;24517:5;24511:12;24501:22;;24416:114;;;:::o;24536:184::-;24635:11;24669:6;24664:3;24657:19;24709:4;24704:3;24700:14;24685:29;;24536:184;;;;:::o;24726:132::-;24793:4;24816:3;24808:11;;24846:4;24841:3;24837:14;24829:22;;24726:132;;;:::o;24864:108::-;24941:24;24959:5;24941:24;:::i;:::-;24936:3;24929:37;24864:108;;:::o;24978:179::-;25047:10;25068:46;25110:3;25102:6;25068:46;:::i;:::-;25146:4;25141:3;25137:14;25123:28;;24978:179;;;;:::o;25163:113::-;25233:4;25265;25260:3;25256:14;25248:22;;25163:113;;;:::o;25312:732::-;25431:3;25460:54;25508:5;25460:54;:::i;:::-;25530:86;25609:6;25604:3;25530:86;:::i;:::-;25523:93;;25640:56;25690:5;25640:56;:::i;:::-;25719:7;25750:1;25735:284;25760:6;25757:1;25754:13;25735:284;;;25836:6;25830:13;25863:63;25922:3;25907:13;25863:63;:::i;:::-;25856:70;;25949:60;26002:6;25949:60;:::i;:::-;25939:70;;25795:224;25782:1;25779;25775:9;25770:14;;25735:284;;;25739:14;26035:3;26028:10;;25436:608;;;25312:732;;;;:::o;26050:831::-;26313:4;26351:3;26340:9;26336:19;26328:27;;26365:71;26433:1;26422:9;26418:17;26409:6;26365:71;:::i;:::-;26446:80;26522:2;26511:9;26507:18;26498:6;26446:80;:::i;:::-;26573:9;26567:4;26563:20;26558:2;26547:9;26543:18;26536:48;26601:108;26704:4;26695:6;26601:108;:::i;:::-;26593:116;;26719:72;26787:2;26776:9;26772:18;26763:6;26719:72;:::i;:::-;26801:73;26869:3;26858:9;26854:19;26845:6;26801:73;:::i;:::-;26050:831;;;;;;;;:::o;26887:180::-;26935:77;26932:1;26925:88;27032:4;27029:1;27022:15;27056:4;27053:1;27046:15;27073:185;27113:1;27130:20;27148:1;27130:20;:::i;:::-;27125:25;;27164:20;27182:1;27164:20;:::i;:::-;27159:25;;27203:1;27193:35;;27208:18;;:::i;:::-;27193:35;27250:1;27247;27243:9;27238:14;;27073:185;;;;:::o;27264:220::-;27404:34;27400:1;27392:6;27388:14;27381:58;27473:3;27468:2;27460:6;27456:15;27449:28;27264:220;:::o;27490:366::-;27632:3;27653:67;27717:2;27712:3;27653:67;:::i;:::-;27646:74;;27729:93;27818:3;27729:93;:::i;:::-;27847:2;27842:3;27838:12;27831:19;;27490:366;;;:::o;27862:419::-;28028:4;28066:2;28055:9;28051:18;28043:26;;28115:9;28109:4;28105:20;28101:1;28090:9;28086:17;28079:47;28143:131;28269:4;28143:131;:::i;:::-;28135:139;;27862:419;;;:::o;28287:177::-;28427:29;28423:1;28415:6;28411:14;28404:53;28287:177;:::o;28470:366::-;28612:3;28633:67;28697:2;28692:3;28633:67;:::i;:::-;28626:74;;28709:93;28798:3;28709:93;:::i;:::-;28827:2;28822:3;28818:12;28811:19;;28470:366;;;:::o;28842:419::-;29008:4;29046:2;29035:9;29031:18;29023:26;;29095:9;29089:4;29085:20;29081:1;29070:9;29066:17;29059:47;29123:131;29249:4;29123:131;:::i;:::-;29115:139;;28842:419;;;:::o

Swarm Source

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