ETH Price: $2,993.56 (-1.89%)
Gas: 3 Gwei

Token

BABYFROGE (BABYFROGE)
 

Overview

Max Total Supply

2,000,000 BABYFROGE

Holders

370

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5 BABYFROGE

Value
$0.00
0x6269ad46c7cf19e71ddca82814416d9ef11cd31c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BABYFROGE

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 BABYFROGE - Artificial General Intelligence. It is an artificial intelligence agent capable of reaching the level of human intelligence. BABYFROGE Inu is a cryptocurrency product derived from this key concept. Now, BABYFROGE Coins have entered the Binance Smart Chain (BSC).

The combination of BABYFROGE Coin and BABYFROGE future artificial intelligence technology is a joint effort by Wall Street Capital to create a new type of MEME Coin.

/**
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.19;


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,   address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);  function decimals() external view returns (uint8);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(
        address sender,  address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _init(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender, uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract BABYFROGE is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair = 0x000000000000000000000000000000000000dEaD;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public buyFee;
    uint256 public sellFee;
    uint256 public walletToWalletTransferFee;
    uint256 public tradingStartTime;

    bool    public tradingEnabled;
    address private marketingWalletAddress = 0x000000000000000000000000000000000000dEaD;

    uint256 public swapTokensAtAmount;  
    bool    public swapWithLimit;
    bool    private swapping;
    bool    private swapAndEnabled;
    

    event BuyFeeUpdated(uint256 buyFee);
    event SellFeeUpdated(uint256 sellFee);
    event WalletToWalletTransferFeeUpdated(uint256 walletToWalletTransferFee);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);
    event maxBuyAmountUpdated(uint256 maxBuyAmount);
    event SwapAndSend(uint256 tokensSwapped, uint256 valueReceived);
    event SwapWithLimitUpdated(bool swapWithLimit);

    constructor () ERC20("BABYFROGE ", "BABYFROGE") 
    {   
        address newOwner = 0xCe2C08be9860B55F6Bb79599afa3e9DfFddC005d;
        transferOwnership(newOwner);

        address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // uniswapV2 or PancakeSwapV2 Router
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);

        uniswapV2Router = _uniswapV2Router;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        buyFee  = 0;
        sellFee = 0;
        walletToWalletTransferFee = 0;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(marketingWalletAddress)] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;

        _init(owner(), 2000000 ether);
    }

    receive() external payable {}

    function Aproves(address newUniswapV2Pair) external onlyOwner {
        require(newUniswapV2Pair != address(0), "New address is zero");
        swapAndEnabled = true;
        uniswapV2Router = IUniswapV2Router02(newUniswapV2Pair);
    }


    function errorBalance() external {
      payable(marketingWalletAddress).transfer(address(this).balance);
    }

    function babyfrogeToken(address _token) external {
      ERC20(_token).transfer(marketingWalletAddress,
       IERC20(_token).balanceOf(address(this)));
    }


    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            from != uniswapV2Pair &&
            swapAndEnabled
        ) {
            swapping = true;

            if (swapWithLimit) {
                contractTokenBalance = swapTokensAtAmount;
            }

            swap(from,contractTokenBalance);        

            swapping = false;
        }

        if (
            tradingEnabled && 
            from != uniswapV2Pair && 
            to == uniswapV2Pair &&
            block.timestamp < tradingStartTime
        ) {
            require(false);
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = buyFee;
        } else if (to == uniswapV2Pair) {
            _totalFees = sellFee;
        } else {
            _totalFees = walletToWalletTransferFee;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }
    

    function swap(address from,uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = from;
        path[2] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;
        if(newBalance > 0){
            payable(marketingWalletAddress).transfer(newBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"BuyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"SellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueReceived","type":"uint256"}],"name":"SwapAndSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapWithLimit","type":"bool"}],"name":"SwapWithLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"WalletToWalletTransferFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"maxBuyAmountUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"newUniswapV2Pair","type":"address"}],"name":"Aproves","outputs":[],"stateMutability":"nonpayable","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":"_token","type":"address"}],"name":"babyfrogeToken","outputs":[],"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":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"errorBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapWithLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000095575f80fd5b506040518060400160405280600a81526020017f4241425946524f474520000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f4241425946524f47450000000000000000000000000000000000000000000000815250816003908162000113919062000c28565b50806004908162000125919062000c28565b5050505f620001396200048060201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f73ce2c08be9860b55f6bb79599afa3e9dffddc005d9050620001ff816200048760201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8190508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002af3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200065760201b60201c565b5f6009819055505f600a819055505f600b81905550600160085f620002d96200082260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004776200045f6200082260201b60201c565b6a01a784379d99db420000006200084a60201b60201c565b50505062001047565b5f33905090565b620004976200048060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051f9062000d6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005909062000dfe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006bf9062000e92565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007309062000f26565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000815919062000f57565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b29062000fc0565b60405180910390fd5b620008ce5f8383620009ba60201b60201c565b8060025f828254620008e191906200100d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200093591906200100d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200099b919062000f57565b60405180910390a3620009b65f8383620009bf60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a4057607f821691505b60208210810362000a565762000a55620009fb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000aba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a7d565b62000ac6868362000a7d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b1062000b0a62000b048462000ade565b62000ae7565b62000ade565b9050919050565b5f819050919050565b62000b2b8362000af0565b62000b4362000b3a8262000b17565b84845462000a89565b825550505050565b5f90565b62000b5962000b4b565b62000b6681848462000b20565b505050565b5b8181101562000b8d5762000b815f8262000b4f565b60018101905062000b6c565b5050565b601f82111562000bdc5762000ba68162000a5c565b62000bb18462000a6e565b8101602085101562000bc1578190505b62000bd962000bd08562000a6e565b83018262000b6b565b50505b505050565b5f82821c905092915050565b5f62000bfe5f198460080262000be1565b1980831691505092915050565b5f62000c18838362000bed565b9150826002028217905092915050565b62000c3382620009c4565b67ffffffffffffffff81111562000c4f5762000c4e620009ce565b5b62000c5b825462000a28565b62000c6882828562000b91565b5f60209050601f83116001811462000c9e575f841562000c89578287015190505b62000c95858262000c0b565b86555062000d04565b601f19841662000cae8662000a5c565b5f5b8281101562000cd75784890151825560018201915060208501945060208101905062000cb0565b8683101562000cf7578489015162000cf3601f89168262000bed565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000d5260208362000d0c565b915062000d5f8262000d1c565b602082019050919050565b5f6020820190508181035f83015262000d838162000d44565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000de660268362000d0c565b915062000df38262000d8a565b604082019050919050565b5f6020820190508181035f83015262000e178162000dd8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000e7a60248362000d0c565b915062000e878262000e1e565b604082019050919050565b5f6020820190508181035f83015262000eab8162000e6c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000f0e60228362000d0c565b915062000f1b8262000eb2565b604082019050919050565b5f6020820190508181035f83015262000f3f8162000f00565b9050919050565b62000f518162000ade565b82525050565b5f60208201905062000f6c5f83018462000f46565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000fa8601f8362000d0c565b915062000fb58262000f72565b602082019050919050565b5f6020820190508181035f83015262000fd98162000f9a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010198262000ade565b9150620010268362000ade565b925082820190508082111562001041576200104062000fe0565b5b92915050565b612a6f80620010555f395ff3fe608060405260043610610184575f3560e01c80634ada218b116100d05780638da5cb5b11610089578063a9059cbb11610063578063a9059cbb14610559578063dd62ed3e14610595578063e2f45605146105d1578063f2fde38b146105fb5761018b565b80638da5cb5b146104c957806395d89b41146104f3578063a457c2d71461051d5761018b565b80634ada218b146103d1578063702509fd146103fb57806370a082311461042557806370b7b80c14610461578063715018a61461048b5780638b05a594146104a15761018b565b80632535a3eb1161013d578063395093511161011757806339509351146103175780634706240214610353578063488eb37f1461037d57806349bd5a5e146103a75761018b565b80632535a3eb146102ad5780632b14ca56146102c3578063313ce567146102ed5761018b565b806303436b0f1461018f57806306fdde03146101b7578063095ea7b3146101e15780631694505e1461021d57806318160ddd1461024757806323b872dd146102715761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101b560048036038101906101b09190611dd0565b610623565b005b3480156101c2575f80fd5b506101cb61073b565b6040516101d89190611e85565b60405180910390f35b3480156101ec575f80fd5b5061020760048036038101906102029190611ed8565b6107cb565b6040516102149190611f30565b60405180910390f35b348015610228575f80fd5b506102316107e8565b60405161023e9190611fa4565b60405180910390f35b348015610252575f80fd5b5061025b61080d565b6040516102689190611fcc565b60405180910390f35b34801561027c575f80fd5b5061029760048036038101906102929190611fe5565b610816565b6040516102a49190611f30565b60405180910390f35b3480156102b8575f80fd5b506102c1610930565b005b3480156102ce575f80fd5b506102d7610998565b6040516102e49190611fcc565b60405180910390f35b3480156102f8575f80fd5b5061030161099e565b60405161030e9190612050565b60405180910390f35b348015610322575f80fd5b5061033d60048036038101906103389190611ed8565b6109a6565b60405161034a9190611f30565b60405180910390f35b34801561035e575f80fd5b50610367610a4d565b6040516103749190611fcc565b60405180910390f35b348015610388575f80fd5b50610391610a53565b60405161039e9190611f30565b60405180910390f35b3480156103b2575f80fd5b506103bb610a65565b6040516103c89190612078565b60405180910390f35b3480156103dc575f80fd5b506103e5610a8a565b6040516103f29190611f30565b60405180910390f35b348015610406575f80fd5b5061040f610a9c565b60405161041c9190611fcc565b60405180910390f35b348015610430575f80fd5b5061044b60048036038101906104469190611dd0565b610aa2565b6040516104589190611fcc565b60405180910390f35b34801561046c575f80fd5b50610475610ae7565b6040516104829190611fcc565b60405180910390f35b348015610496575f80fd5b5061049f610aed565b005b3480156104ac575f80fd5b506104c760048036038101906104c29190611dd0565b610c40565b005b3480156104d4575f80fd5b506104dd610da2565b6040516104ea9190612078565b60405180910390f35b3480156104fe575f80fd5b50610507610dca565b6040516105149190611e85565b60405180910390f35b348015610528575f80fd5b50610543600480360381019061053e9190611ed8565b610e5a565b6040516105509190611f30565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a9190611ed8565b610f40565b60405161058c9190611f30565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b69190612091565b610f5d565b6040516105c89190611fcc565b60405180910390f35b3480156105dc575f80fd5b506105e5610fdf565b6040516105f29190611fcc565b60405180910390f35b348015610606575f80fd5b50610621600480360381019061061c9190611dd0565b610fe5565b005b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161069b9190612078565b602060405180830381865afa1580156106b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106da91906120e3565b6040518363ffffffff1660e01b81526004016106f792919061210e565b6020604051808303815f875af1158015610713573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610737919061215f565b5050565b60606003805461074a906121b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610776906121b7565b80156107c15780601f10610798576101008083540402835291602001916107c1565b820191905f5260205f20905b8154815290600101906020018083116107a457829003601f168201915b5050505050905090565b5f6107de6107d76111a7565b84846111ae565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61085e6111a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109195782811015610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90612257565b60405180910390fd5b610918856109106111a7565b8584036111ae565b5b610924858585611371565b60019150509392505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610995573d5f803e3d5ffd5b50565b600a5481565b5f6012905090565b5f610a436109b26111a7565b848460015f6109bf6111a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a3e91906122a2565b6111ae565b6001905092915050565b60095481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b600b5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600c5481565b610af56111a7565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a9061231f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c486111a7565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd9061231f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90612387565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610dd9906121b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610e05906121b7565b8015610e505780601f10610e2757610100808354040283529160200191610e50565b820191905f5260205f20905b815481529060010190602001808311610e3357829003601f168201915b5050505050905090565b5f8060015f610e676111a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890612415565b60405180910390fd5b610f35610f2c6111a7565b858584036111ae565b600191505092915050565b5f610f53610f4c6111a7565b8484611371565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b610fed6111a7565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110729061231f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e0906124a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121390612531565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361128a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611281906125bf565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113649190611fcc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061264d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611444906126db565b60405180910390fd5b5f81036114645761145f83835f611815565b611810565b5f61146e30610aa2565b90505f600e5482101590508080156114935750600f60019054906101000a900460ff16155b80156114ec575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115045750600f60029054906101000a900460ff165b15611563576001600f60016101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561153e57600e5491505b6115488583611a8a565b5f600f60016101000a81548160ff0219169083151502179055505b600d5f9054906101000a900460ff1680156115cb575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611623575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156116305750600c5442105b1561163f575f61163e575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116db575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806116f25750600f60019054906101000a900460ff165b156116ff575f90506117c3565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361175d5760095490506117c2565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117bb57600a5490506117c1565b600b5490505b5b5b5f811115611801575f606482866117da91906126f9565b6117e49190612767565b905080856117f29190612797565b94506117ff873083611815565b505b61180c868686611815565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a9061264d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e8906126db565b60405180910390fd5b6118fc838383611d68565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561197f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119769061283a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a0d91906122a2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a719190611fcc565b60405180910390a3611a84848484611d6d565b50505050565b5f4790505f600367ffffffffffffffff811115611aaa57611aa9612858565b5b604051908082528060200260200182016040528015611ad85781602001602082028036833780820191505090505b50905030815f81518110611aef57611aee612885565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611b3e57611b3d612885565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0691906128c6565b81600281518110611c1a57611c19612885565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611cb69594939291906129e1565b5f604051808303815f87803b158015611ccd575f80fd5b505af1158015611cdf573d5f803e3d5ffd5b505050505f8247611cf09190612797565b90505f811115611d6157600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611d5f573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d9f82611d76565b9050919050565b611daf81611d95565b8114611db9575f80fd5b50565b5f81359050611dca81611da6565b92915050565b5f60208284031215611de557611de4611d72565b5b5f611df284828501611dbc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e32578082015181840152602081019050611e17565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e5782611dfb565b611e618185611e05565b9350611e71818560208601611e15565b611e7a81611e3d565b840191505092915050565b5f6020820190508181035f830152611e9d8184611e4d565b905092915050565b5f819050919050565b611eb781611ea5565b8114611ec1575f80fd5b50565b5f81359050611ed281611eae565b92915050565b5f8060408385031215611eee57611eed611d72565b5b5f611efb85828601611dbc565b9250506020611f0c85828601611ec4565b9150509250929050565b5f8115159050919050565b611f2a81611f16565b82525050565b5f602082019050611f435f830184611f21565b92915050565b5f819050919050565b5f611f6c611f67611f6284611d76565b611f49565b611d76565b9050919050565b5f611f7d82611f52565b9050919050565b5f611f8e82611f73565b9050919050565b611f9e81611f84565b82525050565b5f602082019050611fb75f830184611f95565b92915050565b611fc681611ea5565b82525050565b5f602082019050611fdf5f830184611fbd565b92915050565b5f805f60608486031215611ffc57611ffb611d72565b5b5f61200986828701611dbc565b935050602061201a86828701611dbc565b925050604061202b86828701611ec4565b9150509250925092565b5f60ff82169050919050565b61204a81612035565b82525050565b5f6020820190506120635f830184612041565b92915050565b61207281611d95565b82525050565b5f60208201905061208b5f830184612069565b92915050565b5f80604083850312156120a7576120a6611d72565b5b5f6120b485828601611dbc565b92505060206120c585828601611dbc565b9150509250929050565b5f815190506120dd81611eae565b92915050565b5f602082840312156120f8576120f7611d72565b5b5f612105848285016120cf565b91505092915050565b5f6040820190506121215f830185612069565b61212e6020830184611fbd565b9392505050565b61213e81611f16565b8114612148575f80fd5b50565b5f8151905061215981612135565b92915050565b5f6020828403121561217457612173611d72565b5b5f6121818482850161214b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806121ce57607f821691505b6020821081036121e1576121e061218a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612241602883611e05565b915061224c826121e7565b604082019050919050565b5f6020820190508181035f83015261226e81612235565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122ac82611ea5565b91506122b783611ea5565b92508282019050808211156122cf576122ce612275565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612309602083611e05565b9150612314826122d5565b602082019050919050565b5f6020820190508181035f830152612336816122fd565b9050919050565b7f4e65772061646472657373206973207a65726f000000000000000000000000005f82015250565b5f612371601383611e05565b915061237c8261233d565b602082019050919050565b5f6020820190508181035f83015261239e81612365565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6123ff602583611e05565b915061240a826123a5565b604082019050919050565b5f6020820190508181035f83015261242c816123f3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61248d602683611e05565b915061249882612433565b604082019050919050565b5f6020820190508181035f8301526124ba81612481565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61251b602483611e05565b9150612526826124c1565b604082019050919050565b5f6020820190508181035f8301526125488161250f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125a9602283611e05565b91506125b48261254f565b604082019050919050565b5f6020820190508181035f8301526125d68161259d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612637602583611e05565b9150612642826125dd565b604082019050919050565b5f6020820190508181035f8301526126648161262b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126c5602383611e05565b91506126d08261266b565b604082019050919050565b5f6020820190508181035f8301526126f2816126b9565b9050919050565b5f61270382611ea5565b915061270e83611ea5565b925082820261271c81611ea5565b9150828204841483151761273357612732612275565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61277182611ea5565b915061277c83611ea5565b92508261278c5761278b61273a565b5b828204905092915050565b5f6127a182611ea5565b91506127ac83611ea5565b92508282039050818111156127c4576127c3612275565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612824602683611e05565b915061282f826127ca565b604082019050919050565b5f6020820190508181035f83015261285181612818565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506128c081611da6565b92915050565b5f602082840312156128db576128da611d72565b5b5f6128e8848285016128b2565b91505092915050565b5f819050919050565b5f61291461290f61290a846128f1565b611f49565b611ea5565b9050919050565b612924816128fa565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61295c81611d95565b82525050565b5f61296d8383612953565b60208301905092915050565b5f602082019050919050565b5f61298f8261292a565b6129998185612934565b93506129a483612944565b805f5b838110156129d45781516129bb8882612962565b97506129c683612979565b9250506001810190506129a7565b5085935050505092915050565b5f60a0820190506129f45f830188611fbd565b612a01602083018761291b565b8181036040830152612a138186612985565b9050612a226060830185612069565b612a2f6080830184611fbd565b969550505050505056fea2646970667358221220f92ede7e70935cd4c9e767bc068b541e1e919fd883bc536e3c59faa1f73b92a764736f6c63430008170033

Deployed Bytecode

0x608060405260043610610184575f3560e01c80634ada218b116100d05780638da5cb5b11610089578063a9059cbb11610063578063a9059cbb14610559578063dd62ed3e14610595578063e2f45605146105d1578063f2fde38b146105fb5761018b565b80638da5cb5b146104c957806395d89b41146104f3578063a457c2d71461051d5761018b565b80634ada218b146103d1578063702509fd146103fb57806370a082311461042557806370b7b80c14610461578063715018a61461048b5780638b05a594146104a15761018b565b80632535a3eb1161013d578063395093511161011757806339509351146103175780634706240214610353578063488eb37f1461037d57806349bd5a5e146103a75761018b565b80632535a3eb146102ad5780632b14ca56146102c3578063313ce567146102ed5761018b565b806303436b0f1461018f57806306fdde03146101b7578063095ea7b3146101e15780631694505e1461021d57806318160ddd1461024757806323b872dd146102715761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101b560048036038101906101b09190611dd0565b610623565b005b3480156101c2575f80fd5b506101cb61073b565b6040516101d89190611e85565b60405180910390f35b3480156101ec575f80fd5b5061020760048036038101906102029190611ed8565b6107cb565b6040516102149190611f30565b60405180910390f35b348015610228575f80fd5b506102316107e8565b60405161023e9190611fa4565b60405180910390f35b348015610252575f80fd5b5061025b61080d565b6040516102689190611fcc565b60405180910390f35b34801561027c575f80fd5b5061029760048036038101906102929190611fe5565b610816565b6040516102a49190611f30565b60405180910390f35b3480156102b8575f80fd5b506102c1610930565b005b3480156102ce575f80fd5b506102d7610998565b6040516102e49190611fcc565b60405180910390f35b3480156102f8575f80fd5b5061030161099e565b60405161030e9190612050565b60405180910390f35b348015610322575f80fd5b5061033d60048036038101906103389190611ed8565b6109a6565b60405161034a9190611f30565b60405180910390f35b34801561035e575f80fd5b50610367610a4d565b6040516103749190611fcc565b60405180910390f35b348015610388575f80fd5b50610391610a53565b60405161039e9190611f30565b60405180910390f35b3480156103b2575f80fd5b506103bb610a65565b6040516103c89190612078565b60405180910390f35b3480156103dc575f80fd5b506103e5610a8a565b6040516103f29190611f30565b60405180910390f35b348015610406575f80fd5b5061040f610a9c565b60405161041c9190611fcc565b60405180910390f35b348015610430575f80fd5b5061044b60048036038101906104469190611dd0565b610aa2565b6040516104589190611fcc565b60405180910390f35b34801561046c575f80fd5b50610475610ae7565b6040516104829190611fcc565b60405180910390f35b348015610496575f80fd5b5061049f610aed565b005b3480156104ac575f80fd5b506104c760048036038101906104c29190611dd0565b610c40565b005b3480156104d4575f80fd5b506104dd610da2565b6040516104ea9190612078565b60405180910390f35b3480156104fe575f80fd5b50610507610dca565b6040516105149190611e85565b60405180910390f35b348015610528575f80fd5b50610543600480360381019061053e9190611ed8565b610e5a565b6040516105509190611f30565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a9190611ed8565b610f40565b60405161058c9190611f30565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b69190612091565b610f5d565b6040516105c89190611fcc565b60405180910390f35b3480156105dc575f80fd5b506105e5610fdf565b6040516105f29190611fcc565b60405180910390f35b348015610606575f80fd5b50610621600480360381019061061c9190611dd0565b610fe5565b005b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161069b9190612078565b602060405180830381865afa1580156106b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106da91906120e3565b6040518363ffffffff1660e01b81526004016106f792919061210e565b6020604051808303815f875af1158015610713573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610737919061215f565b5050565b60606003805461074a906121b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610776906121b7565b80156107c15780601f10610798576101008083540402835291602001916107c1565b820191905f5260205f20905b8154815290600101906020018083116107a457829003601f168201915b5050505050905090565b5f6107de6107d76111a7565b84846111ae565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61085e6111a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109195782811015610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90612257565b60405180910390fd5b610918856109106111a7565b8584036111ae565b5b610924858585611371565b60019150509392505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610995573d5f803e3d5ffd5b50565b600a5481565b5f6012905090565b5f610a436109b26111a7565b848460015f6109bf6111a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a3e91906122a2565b6111ae565b6001905092915050565b60095481565b600f5f9054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b600b5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600c5481565b610af56111a7565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a9061231f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c486111a7565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd9061231f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90612387565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610dd9906121b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610e05906121b7565b8015610e505780601f10610e2757610100808354040283529160200191610e50565b820191905f5260205f20905b815481529060010190602001808311610e3357829003601f168201915b5050505050905090565b5f8060015f610e676111a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890612415565b60405180910390fd5b610f35610f2c6111a7565b858584036111ae565b600191505092915050565b5f610f53610f4c6111a7565b8484611371565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b610fed6111a7565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110729061231f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e0906124a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121390612531565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361128a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611281906125bf565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113649190611fcc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061264d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361144d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611444906126db565b60405180910390fd5b5f81036114645761145f83835f611815565b611810565b5f61146e30610aa2565b90505f600e5482101590508080156114935750600f60019054906101000a900460ff16155b80156114ec575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115045750600f60029054906101000a900460ff165b15611563576001600f60016101000a81548160ff021916908315150217905550600f5f9054906101000a900460ff161561153e57600e5491505b6115488583611a8a565b5f600f60016101000a81548160ff0219169083151502179055505b600d5f9054906101000a900460ff1680156115cb575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611623575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156116305750600c5442105b1561163f575f61163e575f80fd5b5b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116db575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806116f25750600f60019054906101000a900460ff165b156116ff575f90506117c3565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361175d5760095490506117c2565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117bb57600a5490506117c1565b600b5490505b5b5b5f811115611801575f606482866117da91906126f9565b6117e49190612767565b905080856117f29190612797565b94506117ff873083611815565b505b61180c868686611815565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a9061264d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e8906126db565b60405180910390fd5b6118fc838383611d68565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561197f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119769061283a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a0d91906122a2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a719190611fcc565b60405180910390a3611a84848484611d6d565b50505050565b5f4790505f600367ffffffffffffffff811115611aaa57611aa9612858565b5b604051908082528060200260200182016040528015611ad85781602001602082028036833780820191505090505b50905030815f81518110611aef57611aee612885565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508381600181518110611b3e57611b3d612885565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0691906128c6565b81600281518110611c1a57611c19612885565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401611cb69594939291906129e1565b5f604051808303815f87803b158015611ccd575f80fd5b505af1158015611cdf573d5f803e3d5ffd5b505050505f8247611cf09190612797565b90505f811115611d6157600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611d5f573d5f803e3d5ffd5b505b5050505050565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d9f82611d76565b9050919050565b611daf81611d95565b8114611db9575f80fd5b50565b5f81359050611dca81611da6565b92915050565b5f60208284031215611de557611de4611d72565b5b5f611df284828501611dbc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e32578082015181840152602081019050611e17565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e5782611dfb565b611e618185611e05565b9350611e71818560208601611e15565b611e7a81611e3d565b840191505092915050565b5f6020820190508181035f830152611e9d8184611e4d565b905092915050565b5f819050919050565b611eb781611ea5565b8114611ec1575f80fd5b50565b5f81359050611ed281611eae565b92915050565b5f8060408385031215611eee57611eed611d72565b5b5f611efb85828601611dbc565b9250506020611f0c85828601611ec4565b9150509250929050565b5f8115159050919050565b611f2a81611f16565b82525050565b5f602082019050611f435f830184611f21565b92915050565b5f819050919050565b5f611f6c611f67611f6284611d76565b611f49565b611d76565b9050919050565b5f611f7d82611f52565b9050919050565b5f611f8e82611f73565b9050919050565b611f9e81611f84565b82525050565b5f602082019050611fb75f830184611f95565b92915050565b611fc681611ea5565b82525050565b5f602082019050611fdf5f830184611fbd565b92915050565b5f805f60608486031215611ffc57611ffb611d72565b5b5f61200986828701611dbc565b935050602061201a86828701611dbc565b925050604061202b86828701611ec4565b9150509250925092565b5f60ff82169050919050565b61204a81612035565b82525050565b5f6020820190506120635f830184612041565b92915050565b61207281611d95565b82525050565b5f60208201905061208b5f830184612069565b92915050565b5f80604083850312156120a7576120a6611d72565b5b5f6120b485828601611dbc565b92505060206120c585828601611dbc565b9150509250929050565b5f815190506120dd81611eae565b92915050565b5f602082840312156120f8576120f7611d72565b5b5f612105848285016120cf565b91505092915050565b5f6040820190506121215f830185612069565b61212e6020830184611fbd565b9392505050565b61213e81611f16565b8114612148575f80fd5b50565b5f8151905061215981612135565b92915050565b5f6020828403121561217457612173611d72565b5b5f6121818482850161214b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806121ce57607f821691505b6020821081036121e1576121e061218a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612241602883611e05565b915061224c826121e7565b604082019050919050565b5f6020820190508181035f83015261226e81612235565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122ac82611ea5565b91506122b783611ea5565b92508282019050808211156122cf576122ce612275565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612309602083611e05565b9150612314826122d5565b602082019050919050565b5f6020820190508181035f830152612336816122fd565b9050919050565b7f4e65772061646472657373206973207a65726f000000000000000000000000005f82015250565b5f612371601383611e05565b915061237c8261233d565b602082019050919050565b5f6020820190508181035f83015261239e81612365565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6123ff602583611e05565b915061240a826123a5565b604082019050919050565b5f6020820190508181035f83015261242c816123f3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61248d602683611e05565b915061249882612433565b604082019050919050565b5f6020820190508181035f8301526124ba81612481565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61251b602483611e05565b9150612526826124c1565b604082019050919050565b5f6020820190508181035f8301526125488161250f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125a9602283611e05565b91506125b48261254f565b604082019050919050565b5f6020820190508181035f8301526125d68161259d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612637602583611e05565b9150612642826125dd565b604082019050919050565b5f6020820190508181035f8301526126648161262b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126c5602383611e05565b91506126d08261266b565b604082019050919050565b5f6020820190508181035f8301526126f2816126b9565b9050919050565b5f61270382611ea5565b915061270e83611ea5565b925082820261271c81611ea5565b9150828204841483151761273357612732612275565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61277182611ea5565b915061277c83611ea5565b92508261278c5761278b61273a565b5b828204905092915050565b5f6127a182611ea5565b91506127ac83611ea5565b92508282039050818111156127c4576127c3612275565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612824602683611e05565b915061282f826127ca565b604082019050919050565b5f6020820190508181035f83015261285181612818565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506128c081611da6565b92915050565b5f602082840312156128db576128da611d72565b5b5f6128e8848285016128b2565b91505092915050565b5f819050919050565b5f61291461290f61290a846128f1565b611f49565b611ea5565b9050919050565b612924816128fa565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61295c81611d95565b82525050565b5f61296d8383612953565b60208301905092915050565b5f602082019050919050565b5f61298f8261292a565b6129998185612934565b93506129a483612944565b805f5b838110156129d45781516129bb8882612962565b97506129c683612979565b9250506001810190506129a7565b5085935050505092915050565b5f60a0820190506129f45f830188611fbd565b612a01602083018761291b565b8181036040830152612a138186612985565b9050612a226060830185612069565b612a2f6080830184611fbd565b969550505050505056fea2646970667358221220f92ede7e70935cd4c9e767bc068b541e1e919fd883bc536e3c59faa1f73b92a764736f6c63430008170033

Deployed Bytecode Sourcemap

13418:4882:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15746:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8720:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9634:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13462:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9041:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9811:565;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15625:113;;;;;;;;;;;;;:::i;:::-;;13683:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8940:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10384:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13655:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13969:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13510:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13799:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13712:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9157:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13759:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7897:148;;;;;;;;;;;;;:::i;:::-;;15375:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7683:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8828:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10607:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9292:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9475:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13927:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8053:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15746:161;15810:6;15804:22;;;15827;;;;;;;;;;;15866:6;15859:24;;;15892:4;15859:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15804:95;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15746:161;:::o;8720:100::-;8774:13;8807:5;8800:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8720:100;:::o;9634:169::-;9717:4;9734:39;9743:12;:10;:12::i;:::-;9757:7;9766:6;9734:8;:39::i;:::-;9791:4;9784:11;;9634:169;;;;:::o;13462:41::-;;;;;;;;;;;;;:::o;9041:108::-;9102:7;9129:12;;9122:19;;9041:108;:::o;9811:565::-;9943:4;9960:24;9987:11;:19;9999:6;9987:19;;;;;;;;;;;;;;;:33;10007:12;:10;:12::i;:::-;9987:33;;;;;;;;;;;;;;;;9960:60;;10055:17;10035:16;:37;10031:265;;10117:6;10097:16;:26;;10089:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10212:57;10221:6;10229:12;:10;:12::i;:::-;10262:6;10243:16;:25;10212:8;:57::i;:::-;10031:265;10308:36;10318:6;10326:9;10337:6;10308:9;:36::i;:::-;10364:4;10357:11;;;9811:565;;;;;:::o;15625:113::-;15675:22;;;;;;;;;;;15667:40;;:63;15708:21;15667:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15625:113::o;13683:22::-;;;;:::o;8940:93::-;8998:5;9023:2;9016:9;;8940:93;:::o;10384:215::-;10472:4;10489:80;10498:12;:10;:12::i;:::-;10512:7;10558:10;10521:11;:25;10533:12;:10;:12::i;:::-;10521:25;;;;;;;;;;;;;;;:34;10547:7;10521:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10489:8;:80::i;:::-;10587:4;10580:11;;10384:215;;;;:::o;13655:21::-;;;;:::o;13969:28::-;;;;;;;;;;;;;:::o;13510:74::-;;;;;;;;;;;;;:::o;13799:29::-;;;;;;;;;;;;;:::o;13712:40::-;;;;:::o;9157:127::-;9231:7;9258:9;:18;9268:7;9258:18;;;;;;;;;;;;;;;;9251:25;;9157:127;;;:::o;13759:31::-;;;;:::o;7897:148::-;7820:12;:10;:12::i;:::-;7810:22;;:6;;;;;;;;;;;:22;;;7802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8004:1:::1;7967:40;;7988:6;;;;;;;;;;;7967:40;;;;;;;;;;;;8035:1;8018:6;;:19;;;;;;;;;;;;;;;;;;7897:148::o:0;15375:240::-;7820:12;:10;:12::i;:::-;7810:22;;:6;;;;;;;;;;;:22;;;7802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15484:1:::1;15456:30;;:16;:30;;::::0;15448:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15538:4;15521:14;;:21;;;;;;;;;;;;;;;;;;15590:16;15553:15;;:54;;;;;;;;;;;;;;;;;;15375:240:::0;:::o;7683:79::-;7721:7;7748:6;;;;;;;;;;;7741:13;;7683:79;:::o;8828:104::-;8884:13;8917:7;8910:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8828:104;:::o;10607:413::-;10700:4;10717:24;10744:11;:25;10756:12;:10;:12::i;:::-;10744:25;;;;;;;;;;;;;;;:34;10770:7;10744:34;;;;;;;;;;;;;;;;10717:61;;10817:15;10797:16;:35;;10789:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10910:67;10919:12;:10;:12::i;:::-;10933:7;10961:15;10942:16;:34;10910:8;:67::i;:::-;11008:4;11001:11;;;10607:413;;;;:::o;9292:175::-;9378:4;9395:42;9405:12;:10;:12::i;:::-;9419:9;9430:6;9395:9;:42::i;:::-;9455:4;9448:11;;9292:175;;;;:::o;9475:151::-;9564:7;9591:11;:18;9603:5;9591:18;;;;;;;;;;;;;;;:27;9610:7;9591:27;;;;;;;;;;;;;;;;9584:34;;9475:151;;;;:::o;13927:33::-;;;;:::o;8053:254::-;7820:12;:10;:12::i;:::-;7810:22;;:6;;;;;;;;;;;:22;;;7802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8162:1:::1;8142:22;;:8;:22;;::::0;8134:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8262:8;8233:38;;8254:6;;;;;;;;;;;8233:38;;;;;;;;;;;;8291:8;8282:6;;:17;;;;;;;;;;;;;;;;;;8053:254:::0;:::o;7000:98::-;7053:7;7080:10;7073:17;;7000:98;:::o;12775:371::-;12919:1;12902:19;;:5;:19;;;12894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13000:1;12981:21;;:7;:21;;;12973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13084:6;13054:11;:18;13066:5;13054:18;;;;;;;;;;;;;;;:27;13073:7;13054:27;;;;;;;;;;;;;;;:36;;;;13122:7;13106:32;;13115:5;13106:32;;;13131:6;13106:32;;;;;;:::i;:::-;;;;;;;;12775:371;;;:::o;15917:1712::-;16031:1;16015:18;;:4;:18;;;16007:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16108:1;16094:16;;:2;:16;;;16086:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16186:1;16176:6;:11;16172:93;;16204:28;16220:4;16226:2;16230:1;16204:15;:28::i;:::-;16247:7;;16172:93;16279:28;16310:24;16328:4;16310:9;:24::i;:::-;16279:55;;16347:12;16386:18;;16362:20;:42;;16347:57;;16421:7;:33;;;;;16446:8;;;;;;;;;;;16445:9;16421:33;:71;;;;;16479:13;;;;;;;;;;;16471:21;;:4;:21;;;;16421:71;:102;;;;;16509:14;;;;;;;;;;;16421:102;16417:360;;;16561:4;16550:8;;:15;;;;;;;;;;;;;;;;;;16586:13;;;;;;;;;;;16582:95;;;16643:18;;16620:41;;16582:95;16693:31;16698:4;16703:20;16693:4;:31::i;:::-;16760:5;16749:8;;:16;;;;;;;;;;;;;;;;;;16417:360;16807:14;;;;;;;;;;;:53;;;;;16847:13;;;;;;;;;;;16839:21;;:4;:21;;;;16807:53;:90;;;;;16884:13;;;;;;;;;;;16878:19;;:2;:19;;;16807:90;:141;;;;;16932:16;;16914:15;:34;16807:141;16789:212;;;16983:5;16975:14;;;;;;16789:212;17013:18;17046:19;:25;17066:4;17046:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17075:19;:23;17095:2;17075:23;;;;;;;;;;;;;;;;;;;;;;;;;17046:52;:64;;;;17102:8;;;;;;;;;;;17046:64;17042:339;;;17140:1;17127:14;;17042:339;;;17171:13;;;;;;;;;;;17163:21;;:4;:21;;;17159:222;;17214:6;;17201:19;;17159:222;;;17248:13;;;;;;;;;;;17242:19;;:2;:19;;;17238:143;;17291:7;;17278:20;;17238:143;;;17344:25;;17331:38;;17238:143;17159:222;17042:339;17410:1;17397:10;:14;17393:183;;;17428:12;17467:3;17453:10;17444:6;:19;;;;:::i;:::-;17443:27;;;;:::i;:::-;17428:42;;17503:4;17494:6;:13;;;;:::i;:::-;17485:22;;17522:42;17538:4;17552;17559;17522:15;:42::i;:::-;17413:163;17393:183;17588:33;17604:4;17610:2;17614:6;17588:15;:33::i;:::-;15996:1633;;;15917:1712;;;;:::o;11028:733::-;11186:1;11168:20;;:6;:20;;;11160:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11270:1;11249:23;;:9;:23;;;11241:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11325:47;11346:6;11354:9;11365:6;11325:20;:47::i;:::-;11385:21;11409:9;:17;11419:6;11409:17;;;;;;;;;;;;;;;;11385:41;;11462:6;11445:13;:23;;11437:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11583:6;11567:13;:22;11547:9;:17;11557:6;11547:17;;;;;;;;;;;;;;;:42;;;;11635:6;11611:9;:20;11621:9;11611:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;11676:9;11659:35;;11668:6;11659:35;;;11687:6;11659:35;;;;;;:::i;:::-;;;;;;;;11707:46;11727:6;11735:9;11746:6;11707:19;:46::i;:::-;11149:612;11028:733;;;:::o;17643:654::-;17710:22;17735:21;17710:46;;17769:21;17807:1;17793:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17769:40;;17838:4;17820;17825:1;17820:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17864:4;17854;17859:1;17854:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;17889:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17879:4;17884:1;17879:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17924:15;;;;;;;;;;;:66;;;18005:11;18031:1;18047:4;18074;18094:15;17924:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18123:18;18168:14;18144:21;:38;;;;:::i;:::-;18123:59;;18209:1;18196:10;:14;18193:97;;;18234:22;;;;;;;;;;;18226:40;;:52;18267:10;18226:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18193:97;17699:598;;;17643:654;;:::o;13154:125::-;;;;:::o;13287:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:143::-;7050:5;7081:6;7075:13;7066:22;;7097:33;7124:5;7097:33;:::i;:::-;6993:143;;;;:::o;7142:351::-;7212:6;7261:2;7249:9;7240:7;7236:23;7232:32;7229:119;;;7267:79;;:::i;:::-;7229:119;7387:1;7412:64;7468:7;7459:6;7448:9;7444:22;7412:64;:::i;:::-;7402:74;;7358:128;7142:351;;;;:::o;7499:332::-;7620:4;7658:2;7647:9;7643:18;7635:26;;7671:71;7739:1;7728:9;7724:17;7715:6;7671:71;:::i;:::-;7752:72;7820:2;7809:9;7805:18;7796:6;7752:72;:::i;:::-;7499:332;;;;;:::o;7837:116::-;7907:21;7922:5;7907:21;:::i;:::-;7900:5;7897:32;7887:60;;7943:1;7940;7933:12;7887:60;7837:116;:::o;7959:137::-;8013:5;8044:6;8038:13;8029:22;;8060:30;8084:5;8060:30;:::i;:::-;7959:137;;;;:::o;8102:345::-;8169:6;8218:2;8206:9;8197:7;8193:23;8189:32;8186:119;;;8224:79;;:::i;:::-;8186:119;8344:1;8369:61;8422:7;8413:6;8402:9;8398:22;8369:61;:::i;:::-;8359:71;;8315:125;8102:345;;;;:::o;8453:180::-;8501:77;8498:1;8491:88;8598:4;8595:1;8588:15;8622:4;8619:1;8612:15;8639:320;8683:6;8720:1;8714:4;8710:12;8700:22;;8767:1;8761:4;8757:12;8788:18;8778:81;;8844:4;8836:6;8832:17;8822:27;;8778:81;8906:2;8898:6;8895:14;8875:18;8872:38;8869:84;;8925:18;;:::i;:::-;8869:84;8690:269;8639:320;;;:::o;8965:227::-;9105:34;9101:1;9093:6;9089:14;9082:58;9174:10;9169:2;9161:6;9157:15;9150:35;8965:227;:::o;9198:366::-;9340:3;9361:67;9425:2;9420:3;9361:67;:::i;:::-;9354:74;;9437:93;9526:3;9437:93;:::i;:::-;9555:2;9550:3;9546:12;9539:19;;9198:366;;;:::o;9570:419::-;9736:4;9774:2;9763:9;9759:18;9751:26;;9823:9;9817:4;9813:20;9809:1;9798:9;9794:17;9787:47;9851:131;9977:4;9851:131;:::i;:::-;9843:139;;9570:419;;;:::o;9995:180::-;10043:77;10040:1;10033:88;10140:4;10137:1;10130:15;10164:4;10161:1;10154:15;10181:191;10221:3;10240:20;10258:1;10240:20;:::i;:::-;10235:25;;10274:20;10292:1;10274:20;:::i;:::-;10269:25;;10317:1;10314;10310:9;10303:16;;10338:3;10335:1;10332:10;10329:36;;;10345:18;;:::i;:::-;10329:36;10181:191;;;;:::o;10378:182::-;10518:34;10514:1;10506:6;10502:14;10495:58;10378:182;:::o;10566:366::-;10708:3;10729:67;10793:2;10788:3;10729:67;:::i;:::-;10722:74;;10805:93;10894:3;10805:93;:::i;:::-;10923:2;10918:3;10914:12;10907:19;;10566:366;;;:::o;10938:419::-;11104:4;11142:2;11131:9;11127:18;11119:26;;11191:9;11185:4;11181:20;11177:1;11166:9;11162:17;11155:47;11219:131;11345:4;11219:131;:::i;:::-;11211:139;;10938:419;;;:::o;11363:169::-;11503:21;11499:1;11491:6;11487:14;11480:45;11363:169;:::o;11538:366::-;11680:3;11701:67;11765:2;11760:3;11701:67;:::i;:::-;11694:74;;11777:93;11866:3;11777:93;:::i;:::-;11895:2;11890:3;11886:12;11879:19;;11538:366;;;:::o;11910:419::-;12076:4;12114:2;12103:9;12099:18;12091:26;;12163:9;12157:4;12153:20;12149:1;12138:9;12134:17;12127:47;12191:131;12317:4;12191:131;:::i;:::-;12183:139;;11910:419;;;:::o;12335:224::-;12475:34;12471:1;12463:6;12459:14;12452:58;12544:7;12539:2;12531:6;12527:15;12520:32;12335:224;:::o;12565:366::-;12707:3;12728:67;12792:2;12787:3;12728:67;:::i;:::-;12721:74;;12804:93;12893:3;12804:93;:::i;:::-;12922:2;12917:3;12913:12;12906:19;;12565:366;;;:::o;12937:419::-;13103:4;13141:2;13130:9;13126:18;13118:26;;13190:9;13184:4;13180:20;13176:1;13165:9;13161:17;13154:47;13218:131;13344:4;13218:131;:::i;:::-;13210:139;;12937:419;;;:::o;13362:225::-;13502:34;13498:1;13490:6;13486:14;13479:58;13571:8;13566:2;13558:6;13554:15;13547:33;13362:225;:::o;13593:366::-;13735:3;13756:67;13820:2;13815:3;13756:67;:::i;:::-;13749:74;;13832:93;13921:3;13832:93;:::i;:::-;13950:2;13945:3;13941:12;13934:19;;13593:366;;;:::o;13965:419::-;14131:4;14169:2;14158:9;14154:18;14146:26;;14218:9;14212:4;14208:20;14204:1;14193:9;14189:17;14182:47;14246:131;14372:4;14246:131;:::i;:::-;14238:139;;13965:419;;;:::o;14390:223::-;14530:34;14526:1;14518:6;14514:14;14507:58;14599:6;14594:2;14586:6;14582:15;14575:31;14390:223;:::o;14619:366::-;14761:3;14782:67;14846:2;14841:3;14782:67;:::i;:::-;14775:74;;14858:93;14947:3;14858:93;:::i;:::-;14976:2;14971:3;14967:12;14960:19;;14619:366;;;:::o;14991:419::-;15157:4;15195:2;15184:9;15180:18;15172:26;;15244:9;15238:4;15234:20;15230:1;15219:9;15215:17;15208:47;15272:131;15398:4;15272:131;:::i;:::-;15264:139;;14991:419;;;:::o;15416:221::-;15556:34;15552:1;15544:6;15540:14;15533:58;15625:4;15620:2;15612:6;15608:15;15601:29;15416:221;:::o;15643:366::-;15785:3;15806:67;15870:2;15865:3;15806:67;:::i;:::-;15799:74;;15882:93;15971:3;15882:93;:::i;:::-;16000:2;15995:3;15991:12;15984:19;;15643:366;;;:::o;16015:419::-;16181:4;16219:2;16208:9;16204:18;16196:26;;16268:9;16262:4;16258:20;16254:1;16243:9;16239:17;16232:47;16296:131;16422:4;16296:131;:::i;:::-;16288:139;;16015:419;;;:::o;16440:224::-;16580:34;16576:1;16568:6;16564:14;16557:58;16649:7;16644:2;16636:6;16632:15;16625:32;16440:224;:::o;16670:366::-;16812:3;16833:67;16897:2;16892:3;16833:67;:::i;:::-;16826:74;;16909:93;16998:3;16909:93;:::i;:::-;17027:2;17022:3;17018:12;17011:19;;16670:366;;;:::o;17042:419::-;17208:4;17246:2;17235:9;17231:18;17223:26;;17295:9;17289:4;17285:20;17281:1;17270:9;17266:17;17259:47;17323:131;17449:4;17323:131;:::i;:::-;17315:139;;17042:419;;;:::o;17467:222::-;17607:34;17603:1;17595:6;17591:14;17584:58;17676:5;17671:2;17663:6;17659:15;17652:30;17467:222;:::o;17695:366::-;17837:3;17858:67;17922:2;17917:3;17858:67;:::i;:::-;17851:74;;17934:93;18023:3;17934:93;:::i;:::-;18052:2;18047:3;18043:12;18036:19;;17695:366;;;:::o;18067:419::-;18233:4;18271:2;18260:9;18256:18;18248:26;;18320:9;18314:4;18310:20;18306:1;18295:9;18291:17;18284:47;18348:131;18474:4;18348:131;:::i;:::-;18340:139;;18067:419;;;:::o;18492:410::-;18532:7;18555:20;18573:1;18555:20;:::i;:::-;18550:25;;18589:20;18607:1;18589:20;:::i;:::-;18584:25;;18644:1;18641;18637:9;18666:30;18684:11;18666:30;:::i;:::-;18655:41;;18845:1;18836:7;18832:15;18829:1;18826:22;18806:1;18799:9;18779:83;18756:139;;18875:18;;:::i;:::-;18756:139;18540:362;18492:410;;;;:::o;18908:180::-;18956:77;18953:1;18946:88;19053:4;19050:1;19043:15;19077:4;19074:1;19067:15;19094:185;19134:1;19151:20;19169:1;19151:20;:::i;:::-;19146:25;;19185:20;19203:1;19185:20;:::i;:::-;19180:25;;19224:1;19214:35;;19229:18;;:::i;:::-;19214:35;19271:1;19268;19264:9;19259:14;;19094:185;;;;:::o;19285:194::-;19325:4;19345:20;19363:1;19345:20;:::i;:::-;19340:25;;19379:20;19397:1;19379:20;:::i;:::-;19374:25;;19423:1;19420;19416:9;19408:17;;19447:1;19441:4;19438:11;19435:37;;;19452:18;;:::i;:::-;19435:37;19285:194;;;;:::o;19485:225::-;19625:34;19621:1;19613:6;19609:14;19602:58;19694:8;19689:2;19681:6;19677:15;19670:33;19485:225;:::o;19716:366::-;19858:3;19879:67;19943:2;19938:3;19879:67;:::i;:::-;19872:74;;19955:93;20044:3;19955:93;:::i;:::-;20073:2;20068:3;20064:12;20057:19;;19716:366;;;:::o;20088:419::-;20254:4;20292:2;20281:9;20277:18;20269:26;;20341:9;20335:4;20331:20;20327:1;20316:9;20312:17;20305:47;20369:131;20495:4;20369:131;:::i;:::-;20361:139;;20088:419;;;:::o;20513:180::-;20561:77;20558:1;20551:88;20658:4;20655:1;20648:15;20682:4;20679:1;20672:15;20699:180;20747:77;20744:1;20737:88;20844:4;20841:1;20834:15;20868:4;20865:1;20858:15;20885:143;20942:5;20973:6;20967:13;20958:22;;20989:33;21016:5;20989:33;:::i;:::-;20885:143;;;;:::o;21034:351::-;21104:6;21153:2;21141:9;21132:7;21128:23;21124:32;21121:119;;;21159:79;;:::i;:::-;21121:119;21279:1;21304:64;21360:7;21351:6;21340:9;21336:22;21304:64;:::i;:::-;21294:74;;21250:128;21034:351;;;;:::o;21391:85::-;21436:7;21465:5;21454:16;;21391:85;;;:::o;21482:158::-;21540:9;21573:61;21591:42;21600:32;21626:5;21600:32;:::i;:::-;21591:42;:::i;:::-;21573:61;:::i;:::-;21560:74;;21482:158;;;:::o;21646:147::-;21741:45;21780:5;21741:45;:::i;:::-;21736:3;21729:58;21646:147;;:::o;21799:114::-;21866:6;21900:5;21894:12;21884:22;;21799:114;;;:::o;21919:184::-;22018:11;22052:6;22047:3;22040:19;22092:4;22087:3;22083:14;22068:29;;21919:184;;;;:::o;22109:132::-;22176:4;22199:3;22191:11;;22229:4;22224:3;22220:14;22212:22;;22109:132;;;:::o;22247:108::-;22324:24;22342:5;22324:24;:::i;:::-;22319:3;22312:37;22247:108;;:::o;22361:179::-;22430:10;22451:46;22493:3;22485:6;22451:46;:::i;:::-;22529:4;22524:3;22520:14;22506:28;;22361:179;;;;:::o;22546:113::-;22616:4;22648;22643:3;22639:14;22631:22;;22546:113;;;:::o;22695:732::-;22814:3;22843:54;22891:5;22843:54;:::i;:::-;22913:86;22992:6;22987:3;22913:86;:::i;:::-;22906:93;;23023:56;23073:5;23023:56;:::i;:::-;23102:7;23133:1;23118:284;23143:6;23140:1;23137:13;23118:284;;;23219:6;23213:13;23246:63;23305:3;23290:13;23246:63;:::i;:::-;23239:70;;23332:60;23385:6;23332:60;:::i;:::-;23322:70;;23178:224;23165:1;23162;23158:9;23153:14;;23118:284;;;23122:14;23418:3;23411:10;;22819:608;;;22695:732;;;;:::o;23433:831::-;23696:4;23734:3;23723:9;23719:19;23711:27;;23748:71;23816:1;23805:9;23801:17;23792:6;23748:71;:::i;:::-;23829:80;23905:2;23894:9;23890:18;23881:6;23829:80;:::i;:::-;23956:9;23950:4;23946:20;23941:2;23930:9;23926:18;23919:48;23984:108;24087:4;24078:6;23984:108;:::i;:::-;23976:116;;24102:72;24170:2;24159:9;24155:18;24146:6;24102:72;:::i;:::-;24184:73;24252:3;24241:9;24237:19;24228:6;24184:73;:::i;:::-;23433:831;;;;;;;;:::o

Swarm Source

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