ETH Price: $3,262.52 (+2.89%)
Gas: 2 Gwei

Token

BlueETH (BlueETH)
 

Overview

Max Total Supply

1,000,000,000 BlueETH

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
21,369,166.46036885 BlueETH

Value
$0.00
0x9fb387d742d221b72c79589a8680e877179fb7ad
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:
BlueETH

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: BlueETH.sol
// SPDX-License-Identifier: MIT
/** 
BlueETH + VOLUMIZER
For every sell our volumizer sells and buys back - creating tremendous volume

TG:  https://t.me/blueeth_erc
Website:  https://www.blueeth.xyz/
X: https://twitter.com/blueeth_erc
**/

pragma solidity ^0.8.25;

import {IERC20} from "./IERC20.sol";
import {Ownable} from "./Ownable.sol";
import {Context} from "./Context.sol";
import {SafeMath} from "./SafeMath.sol";
import {IUniswapV2Router02} from "./IUniswapV2Router02.sol";
import {IUniswapV2Factory} from "./IUniswapV2Factory.sol";
import {BlueETH_Volume} from "./BlueETH_Volume.sol";

contract BlueETH is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    address payable private _feeWallet;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals;
    string private constant _name = "BlueETH";
    string private constant _symbol = "BlueETH";

    uint256 private _totalTrade = 0;
    // Reset tax to 2/2 after 100 Tx
    uint256 private _resetTaxTrigger = 100;
    uint256 private _finalBuytax = 2; 
    uint256 private _finalSelltax = 2; 

    uint256 private _initialBuytax = 10; 
    uint256 private _initialSelltax = 10; 

    uint256 public _maxTxAmount = _tTotal.mul(5).div(100);
    uint256 public _maxWalletSize = _tTotal.mul(5).div(100);
    uint256 public _taxSwapThreshold = _tTotal.mul(25).div(100000);

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private TradeOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;
    BlueETH_Volume public volumize;

    bool private volumizeEnable = true;

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

    constructor () {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        
        volumize = new BlueETH_Volume(msg.sender, address(this), address(uniswapV2Router));

        _feeWallet = payable(_msgSender());

        _balances[_feeWallet] = (_tTotal * 95) / 100;
        _balances[address(volumize)] = (_tTotal * 5) / 100;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeWallet] = true;
        _isExcludedFromFee[address(volumize)] = true;

        emit Transfer(address(0), _feeWallet, (_tTotal * 95) / 100);
        emit Transfer(address(0), address(volumize), (_tTotal * 5) / 100);
    }

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

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

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

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

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

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

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 taxAmount = 0;
        uint256 currentBuyTax = _initialBuytax;
        uint256 currentSellTax = _initialSelltax;

        if (from != owner() && to != owner()
        && from != address(volumize) && to != address(volumize)) {
            
            if(_totalTrade > _resetTaxTrigger){
                currentBuyTax = _finalBuytax;
                currentSellTax = _finalSelltax;
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul(currentBuyTax).div(100);
                _totalTrade++;
            }

            if(to == uniswapV2Pair && from != address(this)){
                if(! _isExcludedFromFee[from])
                    taxAmount = amount.mul(currentSellTax).div(100);
                if(volumizeEnable)
                    volumize.addVolume();
                _totalTrade++;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to  == uniswapV2Pair 
            && swapEnabled 
            && contractTokenBalance > _taxSwapThreshold) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                sendETHToFee(contractETHBalance);
            }
        }

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

    function removeLimit() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;

        // Trigger to reset tax to its final value on 2/2
        _resetTaxTrigger = 1000;
    }

    function clearClog() external {
        require(_msgSender() == _feeWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0){
          sendETHToFee(ethBalance);
        }
    }

    function manualSend() external {
        uint256 ethBalance = address(this).balance;
        sendETHToFee(ethBalance);
    }

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

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

    receive() external payable {}
}

File 2 of 8: BlueETH_Volume.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.25;

import {IERC20} from "./IERC20.sol";
import {IUniswapV2Router02} from "./IUniswapV2Router02.sol";

contract BlueETH_Volume {
    address private owner;
    IERC20 private token;
    uint256 private numberOfBuys = 2;
    bool private volumizeEnable = true;
    IUniswapV2Router02 private uniswapRouter; 

    modifier onlyOwner() {
        require(msg.sender == owner, "Not the owner");
        _;
    }

    modifier onlyToken() {
        require(msg.sender == address(token), "Not the token");
        _;
    }

    constructor(address _owner, address _token, address _uniswapRouter) {
        owner = _owner;
        token = IERC20(_token);
        uniswapRouter = IUniswapV2Router02(_uniswapRouter);
    }

    function buy() private  {
        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0, "No ETH to swap");
        
        uint256 buyAmount = ethBalance / numberOfBuys;
        address[] memory path = new address[](2);
        path[0] = uniswapRouter.WETH();
        path[1] = address(token);

        for (uint256 i = 0; i < numberOfBuys; i++) {
            uniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: buyAmount}(
                0,
                path,
                address(this),
                block.timestamp
            );
        }
    }

    function sell() private  {
        uint256 tokenAmount = token.balanceOf(address(this));
        require(tokenAmount > 0, "less than 0");
        address[] memory path = new address[](2);
        path[0] = address(token);
        path[1] = uniswapRouter.WETH();
        token.approve(address(uniswapRouter), type(uint256).max);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addVolume() external onlyToken{
        sell();
        buy();
    }

    function clearClog() external onlyOwner{
        uint256 tokenAmount = token.balanceOf(address(this));
        if(tokenAmount > 0){
          sell();
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0){
          payable(owner).transfer(ethBalance);
        }
    }

    function setNumberOfBuy(uint256 value) external onlyOwner{
        numberOfBuys = value;
    }

    function toggleVolumize() external onlyOwner{
        volumizeEnable = !volumizeEnable;
    }

    receive() external payable {
    }
}

File 3 of 8: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

File 4 of 8: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function decimals() external view returns (uint8); 
}

File 5 of 8: IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

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

File 6 of 8: IUniswapV2Router02.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2;

interface IUniswapV2Router02 {
    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 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;
}

File 7 of 8: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "./Context.sol";

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

}

File 8 of 8: SafeMath.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

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

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

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

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

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

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

}

Contract 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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearClog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"volumize","outputs":[{"internalType":"contract BlueETH_Volume","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600555606460065560026007556002600855600a600955600a8055610063606461005560056009600a6100389190610bb4565b633b9aca006100479190610bfe565b61090860201b90919060201c565b61097f60201b90919060201c565b600b556100a9606461009b60056009600a61007e9190610bb4565b633b9aca0061008d9190610bfe565b61090860201b90919060201c565b61097f60201b90919060201c565b600c556100f1620186a06100e360196009600a6100c69190610bb4565b633b9aca006100d59190610bfe565b61090860201b90919060201c565b61097f60201b90919060201c565b600d556001600f60146101000a81548160ff0219169083151502179055505f600f60156101000a81548160ff0219169083151502179055506001600f60166101000a81548160ff0219169083151502179055506001601060146101000a81548160ff02191690831515021790555034801561016a575f80fd5b505f61017a6109ce60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f89190610c9d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561037e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a29190610c9d565b6040518363ffffffff1660e01b81526004016103bf929190610cd7565b6020604051808303815f875af11580156103db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ff9190610c9d565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503330600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161046e90610a36565b61047a93929190610cfe565b604051809103905ff080158015610493573d5f803e3d5ffd5b5060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104e16109ce60201b60201c565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064605f6009600a6105329190610bb4565b633b9aca006105419190610bfe565b61054b9190610bfe565b6105559190610d60565b60015f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550606460056009600a6105c99190610bb4565b633b9aca006105d89190610bfe565b6105e29190610bfe565b6105ec9190610d60565b60015f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064605f6009600a6108119190610bb4565b633b9aca006108209190610bfe565b61082a9190610bfe565b6108349190610d60565b6040516108419190610d9f565b60405180910390a360105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef606460056009600a6108cb9190610bb4565b633b9aca006108da9190610bfe565b6108e49190610bfe565b6108ee9190610d60565b6040516108fb9190610d9f565b60405180910390a3610ed6565b5f808303610918575f9050610979565b5f82846109259190610bfe565b90508284826109349190610d60565b14610974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096b90610e38565b60405180910390fd5b809150505b92915050565b5f6109c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506109d560201b60201c565b905092915050565b5f33905090565b5f8083118290610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a129190610eb6565b60405180910390fd5b505f8385610a299190610d60565b9050809150509392505050565b6112cb8061363e83390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610ac557808604811115610aa157610aa0610a43565b5b6001851615610ab05780820291505b8081029050610abe85610a70565b9450610a85565b94509492505050565b5f82610add5760019050610b98565b81610aea575f9050610b98565b8160018114610b005760028114610b0a57610b39565b6001915050610b98565b60ff841115610b1c57610b1b610a43565b5b8360020a915084821115610b3357610b32610a43565b5b50610b98565b5060208310610133831016604e8410600b8410161715610b6e5782820a905083811115610b6957610b68610a43565b5b610b98565b610b7b8484846001610a7c565b92509050818404811115610b9257610b91610a43565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610bbe82610b9f565b9150610bc983610ba8565b9250610bf67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610ace565b905092915050565b5f610c0882610b9f565b9150610c1383610b9f565b9250828202610c2181610b9f565b91508282048414831517610c3857610c37610a43565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6c82610c43565b9050919050565b610c7c81610c62565b8114610c86575f80fd5b50565b5f81519050610c9781610c73565b92915050565b5f60208284031215610cb257610cb1610c3f565b5b5f610cbf84828501610c89565b91505092915050565b610cd181610c62565b82525050565b5f604082019050610cea5f830185610cc8565b610cf76020830184610cc8565b9392505050565b5f606082019050610d115f830186610cc8565b610d1e6020830185610cc8565b610d2b6040830184610cc8565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610d6a82610b9f565b9150610d7583610b9f565b925082610d8557610d84610d33565b5b828204905092915050565b610d9981610b9f565b82525050565b5f602082019050610db25f830184610d90565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f610e22602183610db8565b9150610e2d82610dc8565b604082019050919050565b5f6020820190508181035f830152610e4f81610e16565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610e8882610e56565b610e928185610db8565b9350610ea2818560208601610e60565b610eab81610e6e565b840191505092915050565b5f6020820190508181035f830152610ece8184610e7e565b905092915050565b61275b80610ee35f395ff3fe60806040526004361061010c575f3560e01c80637c534ca91161009457806395d89b411161006357806395d89b4114610333578063a9059cbb1461035d578063bf474bed14610399578063dd62ed3e146103c3578063f4293890146103ff57610113565b80637c534ca91461028b5780637d1db4a5146102b55780638da5cb5b146102df5780638f9a55c01461030957610113565b8063313ce567116100db578063313ce567146101e3578063359c8d841461020d578063622565891461022357806370a0823114610239578063715018a61461027557610113565b806306fdde0314610117578063095ea7b31461014157806318160ddd1461017d57806323b872dd146101a757610113565b3661011357005b5f80fd5b348015610122575f80fd5b5061012b610415565b6040516101389190611a64565b60405180910390f35b34801561014c575f80fd5b5061016760048036038101906101629190611b15565b610452565b6040516101749190611b6d565b60405180910390f35b348015610188575f80fd5b5061019161046f565b60405161019e9190611b95565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611bae565b610492565b6040516101da9190611b6d565b60405180910390f35b3480156101ee575f80fd5b506101f7610566565b6040516102049190611c19565b60405180910390f35b348015610218575f80fd5b5061022161056e565b005b34801561022e575f80fd5b50610237610605565b005b348015610244575f80fd5b5061025f600480360381019061025a9190611c32565b6106ea565b60405161026c9190611b95565b60405180910390f35b348015610280575f80fd5b50610289610730565b005b348015610296575f80fd5b5061029f61087e565b6040516102ac9190611cb8565b60405180910390f35b3480156102c0575f80fd5b506102c96108a3565b6040516102d69190611b95565b60405180910390f35b3480156102ea575f80fd5b506102f36108a9565b6040516103009190611ce0565b60405180910390f35b348015610314575f80fd5b5061031d6108d0565b60405161032a9190611b95565b60405180910390f35b34801561033e575f80fd5b506103476108d6565b6040516103549190611a64565b60405180910390f35b348015610368575f80fd5b50610383600480360381019061037e9190611b15565b610913565b6040516103909190611b6d565b60405180910390f35b3480156103a4575f80fd5b506103ad610930565b6040516103ba9190611b95565b60405180910390f35b3480156103ce575f80fd5b506103e960048036038101906103e49190611cf9565b610936565b6040516103f69190611b95565b60405180910390f35b34801561040a575f80fd5b506104136109b8565b005b60606040518060400160405280600781526020017f426c756545544800000000000000000000000000000000000000000000000000815250905090565b5f61046561045e6109c8565b84846109cf565b6001905092915050565b5f6009600a61047e9190611e93565b633b9aca0061048d9190611edd565b905090565b5f61049e848484610b92565b61055b846104aa6109c8565b610556856040518060600160405280602881526020016126fe6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61050d6109c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114f89092919063ffffffff16565b6109cf565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105ae6109c8565b73ffffffffffffffffffffffffffffffffffffffff16146105cd575f80fd5b5f6105d7306106ea565b90505f8111156105eb576105ea8161155a565b5b5f4790505f81111561060157610600816117c5565b5b5050565b61060d6109c8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069090611f68565b60405180910390fd5b6009600a6106a79190611e93565b633b9aca006106b69190611edd565b600b819055506009600a6106ca9190611e93565b633b9aca006106d99190611edd565b600c819055506103e8600681905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107386109c8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bb90611f68565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606040518060400160405280600781526020017f426c756545544800000000000000000000000000000000000000000000000000815250905090565b5f61092661091f6109c8565b8484610b92565b6001905092915050565b600d5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f4790506109c5816117c5565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490611ff6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290612084565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b859190611b95565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790612112565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c65906121a0565b60405180910390fd5b5f8111610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca79061222e565b60405180910390fd5b5f8060095490505f600a549050610cc56108a9565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610d335750610d036108a9565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d8c575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015610de5575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611246576006546005541115610e0157600754915060085490505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015610eaa5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610efd575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610fdf57600b54841115610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90612296565b60405180910390fd5b600c5484610f54876106ea565b610f5e91906122b4565b1115610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690612331565b60405180910390fd5b610fc56064610fb7848761182d90919063ffffffff16565b6118a490919063ffffffff16565b925060055f815480929190610fd99061234f565b91905055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561106757503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561118d5760035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166110e3576110e060646110d2838761182d90919063ffffffff16565b6118a490919063ffffffff16565b92505b601060149054906101000a900460ff16156111755760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663317b48376040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561115e575f80fd5b505af1158015611170573d5f803e3d5ffd5b505050505b60055f8154809291906111879061234f565b91905055505b5f611197306106ea565b9050600f60159054906101000a900460ff161580156112025750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b801561121a5750600f60169054906101000a900460ff165b80156112275750600d5481115b15611244576112358161155a565b5f479050611242816117c5565b505b505b5f8311156113455761129e8360015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118ed90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161133c9190611b95565b60405180910390a35b6113958460015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461194a90919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506114386113ec848661194a90919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118ed90919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114db868861194a90919063ffffffff16565b6040516114e89190611b95565b60405180910390a3505050505050565b5f83831115829061153f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115369190611a64565b60405180910390fd5b505f838561154d9190612396565b9050809150509392505050565b6001600f60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611591576115906123c9565b5b6040519080825280602002602001820160405280156115bf5781602001602082028036833780820191505090505b50905030815f815181106115d6576115d56123f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561167a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169e9190612437565b816001815181106116b2576116b16123f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061171830600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846109cf565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161177a959493929190612552565b5f604051808303815f87803b158015611791575f80fd5b505af11580156117a3573d5f803e3d5ffd5b50505050505f600f60156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611829573d5f803e3d5ffd5b5050565b5f80830361183d575f905061189e565b5f828461184a9190611edd565b905082848261185991906125d7565b14611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090612677565b60405180910390fd5b809150505b92915050565b5f6118e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611993565b905092915050565b5f8082846118fb91906122b4565b905083811015611940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611937906126df565b60405180910390fd5b8091505092915050565b5f61198b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114f8565b905092915050565b5f80831182906119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d09190611a64565b60405180910390fd5b505f83856119e791906125d7565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a36826119f4565b611a4081856119fe565b9350611a50818560208601611a0e565b611a5981611a1c565b840191505092915050565b5f6020820190508181035f830152611a7c8184611a2c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ab182611a88565b9050919050565b611ac181611aa7565b8114611acb575f80fd5b50565b5f81359050611adc81611ab8565b92915050565b5f819050919050565b611af481611ae2565b8114611afe575f80fd5b50565b5f81359050611b0f81611aeb565b92915050565b5f8060408385031215611b2b57611b2a611a84565b5b5f611b3885828601611ace565b9250506020611b4985828601611b01565b9150509250929050565b5f8115159050919050565b611b6781611b53565b82525050565b5f602082019050611b805f830184611b5e565b92915050565b611b8f81611ae2565b82525050565b5f602082019050611ba85f830184611b86565b92915050565b5f805f60608486031215611bc557611bc4611a84565b5b5f611bd286828701611ace565b9350506020611be386828701611ace565b9250506040611bf486828701611b01565b9150509250925092565b5f60ff82169050919050565b611c1381611bfe565b82525050565b5f602082019050611c2c5f830184611c0a565b92915050565b5f60208284031215611c4757611c46611a84565b5b5f611c5484828501611ace565b91505092915050565b5f819050919050565b5f611c80611c7b611c7684611a88565b611c5d565b611a88565b9050919050565b5f611c9182611c66565b9050919050565b5f611ca282611c87565b9050919050565b611cb281611c98565b82525050565b5f602082019050611ccb5f830184611ca9565b92915050565b611cda81611aa7565b82525050565b5f602082019050611cf35f830184611cd1565b92915050565b5f8060408385031215611d0f57611d0e611a84565b5b5f611d1c85828601611ace565b9250506020611d2d85828601611ace565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611db957808604811115611d9557611d94611d37565b5b6001851615611da45780820291505b8081029050611db285611d64565b9450611d79565b94509492505050565b5f82611dd15760019050611e8c565b81611dde575f9050611e8c565b8160018114611df45760028114611dfe57611e2d565b6001915050611e8c565b60ff841115611e1057611e0f611d37565b5b8360020a915084821115611e2757611e26611d37565b5b50611e8c565b5060208310610133831016604e8410600b8410161715611e625782820a905083811115611e5d57611e5c611d37565b5b611e8c565b611e6f8484846001611d70565b92509050818404811115611e8657611e85611d37565b5b81810290505b9392505050565b5f611e9d82611ae2565b9150611ea883611bfe565b9250611ed57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611dc2565b905092915050565b5f611ee782611ae2565b9150611ef283611ae2565b9250828202611f0081611ae2565b91508282048414831517611f1757611f16611d37565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611f526020836119fe565b9150611f5d82611f1e565b602082019050919050565b5f6020820190508181035f830152611f7f81611f46565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611fe06024836119fe565b9150611feb82611f86565b604082019050919050565b5f6020820190508181035f83015261200d81611fd4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61206e6022836119fe565b915061207982612014565b604082019050919050565b5f6020820190508181035f83015261209b81612062565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6120fc6025836119fe565b9150612107826120a2565b604082019050919050565b5f6020820190508181035f830152612129816120f0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61218a6023836119fe565b915061219582612130565b604082019050919050565b5f6020820190508181035f8301526121b78161217e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6122186029836119fe565b9150612223826121be565b604082019050919050565b5f6020820190508181035f8301526122458161220c565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6122806019836119fe565b915061228b8261224c565b602082019050919050565b5f6020820190508181035f8301526122ad81612274565b9050919050565b5f6122be82611ae2565b91506122c983611ae2565b92508282019050808211156122e1576122e0611d37565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61231b601a836119fe565b9150612326826122e7565b602082019050919050565b5f6020820190508181035f8301526123488161230f565b9050919050565b5f61235982611ae2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361238b5761238a611d37565b5b600182019050919050565b5f6123a082611ae2565b91506123ab83611ae2565b92508282039050818111156123c3576123c2611d37565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061243181611ab8565b92915050565b5f6020828403121561244c5761244b611a84565b5b5f61245984828501612423565b91505092915050565b5f819050919050565b5f61248561248061247b84612462565b611c5d565b611ae2565b9050919050565b6124958161246b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6124cd81611aa7565b82525050565b5f6124de83836124c4565b60208301905092915050565b5f602082019050919050565b5f6125008261249b565b61250a81856124a5565b9350612515836124b5565b805f5b8381101561254557815161252c88826124d3565b9750612537836124ea565b925050600181019050612518565b5085935050505092915050565b5f60a0820190506125655f830188611b86565b612572602083018761248c565b818103604083015261258481866124f6565b90506125936060830185611cd1565b6125a06080830184611b86565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6125e182611ae2565b91506125ec83611ae2565b9250826125fc576125fb6125aa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6126616021836119fe565b915061266c82612607565b604082019050919050565b5f6020820190508181035f83015261268e81612655565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6126c9601b836119fe565b91506126d482612695565b602082019050919050565b5f6020820190508181035f8301526126f6816126bd565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208eeb89af4bf0648bab6d8645e044bd96bb8bde71927b115671c005fbc78a4ae064736f6c63430008190033608060405260028055600160035f6101000a81548160ff02191690831515021790555034801561002d575f80fd5b506040516112cb3803806112cb833981810160405281019061004f9190610175565b825f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506101c5565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101448261011b565b9050919050565b6101548161013a565b811461015e575f80fd5b50565b5f8151905061016f8161014b565b92915050565b5f805f6060848603121561018c5761018b610117565b5b5f61019986828701610161565b93505060206101aa86828701610161565b92505060406101bb86828701610161565b9150509250925092565b6110f9806101d25f395ff3fe608060405260043610610042575f3560e01c8063317b48371461004d578063359c8d8414610063578063a200e24f14610079578063c0c8eb9b1461008f57610049565b3661004957005b5f80fd5b348015610058575f80fd5b506100616100b7565b005b34801561006e575f80fd5b50610077610158565b005b348015610084575f80fd5b5061008d610306565b005b34801561009a575f80fd5b506100b560048036038101906100b09190610b14565b6103bd565b005b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013d90610b99565b60405180910390fd5b61014e610454565b61015661083e565b565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101dc90610c01565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102409190610c5e565b602060405180830381865afa15801561025b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027f9190610c8b565b90505f81111561029257610291610454565b5b5f4790505f811115610302575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610300573d5f803e3d5ffd5b505b5050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038a90610c01565b60405180910390fd5b60035f9054906101000a900460ff161560035f6101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044190610c01565b60405180910390fd5b8060028190555050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104af9190610c5e565b602060405180830381865afa1580156104ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ee9190610c8b565b90505f8111610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990610d00565b60405180910390fd5b5f600267ffffffffffffffff81111561054e5761054d610d1e565b5b60405190808252806020026020018201604052801561057c5781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f815181106105b4576105b3610d4b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610659573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067d9190610da2565b8160018151811061069157610690610d4b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610769929190610ddc565b6020604051808303815f875af1158015610785573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a99190610e38565b50600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161080d959493929190610f5c565b5f604051808303815f87803b158015610824575f80fd5b505af1158015610836573d5f803e3d5ffd5b505050505050565b5f4790505f8111610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b90610ffe565b60405180910390fd5b5f600254826108939190611049565b90505f600267ffffffffffffffff8111156108b1576108b0610d1e565b5b6040519080825280602002602001820160405280156108df5781602001602082028036833780820191505090505b509050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109719190610da2565b815f8151811061098457610983610d4b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106109f4576109f3610d4b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f5b600254811015610ad757600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95845f8530426040518663ffffffff1660e01b8152600401610a9c9493929190611079565b5f604051808303818588803b158015610ab3575f80fd5b505af1158015610ac5573d5f803e3d5ffd5b50505050508080600101915050610a30565b50505050565b5f80fd5b5f819050919050565b610af381610ae1565b8114610afd575f80fd5b50565b5f81359050610b0e81610aea565b92915050565b5f60208284031215610b2957610b28610add565b5b5f610b3684828501610b00565b91505092915050565b5f82825260208201905092915050565b7f4e6f742074686520746f6b656e000000000000000000000000000000000000005f82015250565b5f610b83600d83610b3f565b9150610b8e82610b4f565b602082019050919050565b5f6020820190508181035f830152610bb081610b77565b9050919050565b7f4e6f7420746865206f776e6572000000000000000000000000000000000000005f82015250565b5f610beb600d83610b3f565b9150610bf682610bb7565b602082019050919050565b5f6020820190508181035f830152610c1881610bdf565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c4882610c1f565b9050919050565b610c5881610c3e565b82525050565b5f602082019050610c715f830184610c4f565b92915050565b5f81519050610c8581610aea565b92915050565b5f60208284031215610ca057610c9f610add565b5b5f610cad84828501610c77565b91505092915050565b7f6c657373207468616e20300000000000000000000000000000000000000000005f82015250565b5f610cea600b83610b3f565b9150610cf582610cb6565b602082019050919050565b5f6020820190508181035f830152610d1781610cde565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610d8181610c3e565b8114610d8b575f80fd5b50565b5f81519050610d9c81610d78565b92915050565b5f60208284031215610db757610db6610add565b5b5f610dc484828501610d8e565b91505092915050565b610dd681610ae1565b82525050565b5f604082019050610def5f830185610c4f565b610dfc6020830184610dcd565b9392505050565b5f8115159050919050565b610e1781610e03565b8114610e21575f80fd5b50565b5f81519050610e3281610e0e565b92915050565b5f60208284031215610e4d57610e4c610add565b5b5f610e5a84828501610e24565b91505092915050565b5f819050919050565b5f819050919050565b5f610e8f610e8a610e8584610e63565b610e6c565b610ae1565b9050919050565b610e9f81610e75565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610ed781610c3e565b82525050565b5f610ee88383610ece565b60208301905092915050565b5f602082019050919050565b5f610f0a82610ea5565b610f148185610eaf565b9350610f1f83610ebf565b805f5b83811015610f4f578151610f368882610edd565b9750610f4183610ef4565b925050600181019050610f22565b5085935050505092915050565b5f60a082019050610f6f5f830188610dcd565b610f7c6020830187610e96565b8181036040830152610f8e8186610f00565b9050610f9d6060830185610c4f565b610faa6080830184610dcd565b9695505050505050565b7f4e6f2045544820746f20737761700000000000000000000000000000000000005f82015250565b5f610fe8600e83610b3f565b9150610ff382610fb4565b602082019050919050565b5f6020820190508181035f83015261101581610fdc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61105382610ae1565b915061105e83610ae1565b92508261106e5761106d61101c565b5b828204905092915050565b5f60808201905061108c5f830187610e96565b818103602083015261109e8186610f00565b90506110ad6040830185610c4f565b6110ba6060830184610dcd565b9594505050505056fea26469706673582212207fe3bc6ff4049f02a066eafc4a277299e0fd43da703d32486ddff6871fa26bfa64736f6c63430008190033

Deployed Bytecode

0x60806040526004361061010c575f3560e01c80637c534ca91161009457806395d89b411161006357806395d89b4114610333578063a9059cbb1461035d578063bf474bed14610399578063dd62ed3e146103c3578063f4293890146103ff57610113565b80637c534ca91461028b5780637d1db4a5146102b55780638da5cb5b146102df5780638f9a55c01461030957610113565b8063313ce567116100db578063313ce567146101e3578063359c8d841461020d578063622565891461022357806370a0823114610239578063715018a61461027557610113565b806306fdde0314610117578063095ea7b31461014157806318160ddd1461017d57806323b872dd146101a757610113565b3661011357005b5f80fd5b348015610122575f80fd5b5061012b610415565b6040516101389190611a64565b60405180910390f35b34801561014c575f80fd5b5061016760048036038101906101629190611b15565b610452565b6040516101749190611b6d565b60405180910390f35b348015610188575f80fd5b5061019161046f565b60405161019e9190611b95565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611bae565b610492565b6040516101da9190611b6d565b60405180910390f35b3480156101ee575f80fd5b506101f7610566565b6040516102049190611c19565b60405180910390f35b348015610218575f80fd5b5061022161056e565b005b34801561022e575f80fd5b50610237610605565b005b348015610244575f80fd5b5061025f600480360381019061025a9190611c32565b6106ea565b60405161026c9190611b95565b60405180910390f35b348015610280575f80fd5b50610289610730565b005b348015610296575f80fd5b5061029f61087e565b6040516102ac9190611cb8565b60405180910390f35b3480156102c0575f80fd5b506102c96108a3565b6040516102d69190611b95565b60405180910390f35b3480156102ea575f80fd5b506102f36108a9565b6040516103009190611ce0565b60405180910390f35b348015610314575f80fd5b5061031d6108d0565b60405161032a9190611b95565b60405180910390f35b34801561033e575f80fd5b506103476108d6565b6040516103549190611a64565b60405180910390f35b348015610368575f80fd5b50610383600480360381019061037e9190611b15565b610913565b6040516103909190611b6d565b60405180910390f35b3480156103a4575f80fd5b506103ad610930565b6040516103ba9190611b95565b60405180910390f35b3480156103ce575f80fd5b506103e960048036038101906103e49190611cf9565b610936565b6040516103f69190611b95565b60405180910390f35b34801561040a575f80fd5b506104136109b8565b005b60606040518060400160405280600781526020017f426c756545544800000000000000000000000000000000000000000000000000815250905090565b5f61046561045e6109c8565b84846109cf565b6001905092915050565b5f6009600a61047e9190611e93565b633b9aca0061048d9190611edd565b905090565b5f61049e848484610b92565b61055b846104aa6109c8565b610556856040518060600160405280602881526020016126fe6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61050d6109c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114f89092919063ffffffff16565b6109cf565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105ae6109c8565b73ffffffffffffffffffffffffffffffffffffffff16146105cd575f80fd5b5f6105d7306106ea565b90505f8111156105eb576105ea8161155a565b5b5f4790505f81111561060157610600816117c5565b5b5050565b61060d6109c8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069090611f68565b60405180910390fd5b6009600a6106a79190611e93565b633b9aca006106b69190611edd565b600b819055506009600a6106ca9190611e93565b633b9aca006106d99190611edd565b600c819055506103e8600681905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107386109c8565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bb90611f68565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606040518060400160405280600781526020017f426c756545544800000000000000000000000000000000000000000000000000815250905090565b5f61092661091f6109c8565b8484610b92565b6001905092915050565b600d5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f4790506109c5816117c5565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490611ff6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290612084565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b859190611b95565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790612112565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c65906121a0565b60405180910390fd5b5f8111610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca79061222e565b60405180910390fd5b5f8060095490505f600a549050610cc56108a9565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610d335750610d036108a9565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610d8c575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015610de5575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611246576006546005541115610e0157600754915060085490505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015610eaa5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015610efd575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610fdf57600b54841115610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90612296565b60405180910390fd5b600c5484610f54876106ea565b610f5e91906122b4565b1115610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690612331565b60405180910390fd5b610fc56064610fb7848761182d90919063ffffffff16565b6118a490919063ffffffff16565b925060055f815480929190610fd99061234f565b91905055505b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561106757503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561118d5760035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166110e3576110e060646110d2838761182d90919063ffffffff16565b6118a490919063ffffffff16565b92505b601060149054906101000a900460ff16156111755760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663317b48376040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561115e575f80fd5b505af1158015611170573d5f803e3d5ffd5b505050505b60055f8154809291906111879061234f565b91905055505b5f611197306106ea565b9050600f60159054906101000a900460ff161580156112025750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b801561121a5750600f60169054906101000a900460ff165b80156112275750600d5481115b15611244576112358161155a565b5f479050611242816117c5565b505b505b5f8311156113455761129e8360015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118ed90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161133c9190611b95565b60405180910390a35b6113958460015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461194a90919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506114386113ec848661194a90919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118ed90919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114db868861194a90919063ffffffff16565b6040516114e89190611b95565b60405180910390a3505050505050565b5f83831115829061153f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115369190611a64565b60405180910390fd5b505f838561154d9190612396565b9050809150509392505050565b6001600f60156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611591576115906123c9565b5b6040519080825280602002602001820160405280156115bf5781602001602082028036833780820191505090505b50905030815f815181106115d6576115d56123f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561167a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169e9190612437565b816001815181106116b2576116b16123f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061171830600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846109cf565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161177a959493929190612552565b5f604051808303815f87803b158015611791575f80fd5b505af11580156117a3573d5f803e3d5ffd5b50505050505f600f60156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611829573d5f803e3d5ffd5b5050565b5f80830361183d575f905061189e565b5f828461184a9190611edd565b905082848261185991906125d7565b14611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090612677565b60405180910390fd5b809150505b92915050565b5f6118e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611993565b905092915050565b5f8082846118fb91906122b4565b905083811015611940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611937906126df565b60405180910390fd5b8091505092915050565b5f61198b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114f8565b905092915050565b5f80831182906119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d09190611a64565b60405180910390fd5b505f83856119e791906125d7565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a36826119f4565b611a4081856119fe565b9350611a50818560208601611a0e565b611a5981611a1c565b840191505092915050565b5f6020820190508181035f830152611a7c8184611a2c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ab182611a88565b9050919050565b611ac181611aa7565b8114611acb575f80fd5b50565b5f81359050611adc81611ab8565b92915050565b5f819050919050565b611af481611ae2565b8114611afe575f80fd5b50565b5f81359050611b0f81611aeb565b92915050565b5f8060408385031215611b2b57611b2a611a84565b5b5f611b3885828601611ace565b9250506020611b4985828601611b01565b9150509250929050565b5f8115159050919050565b611b6781611b53565b82525050565b5f602082019050611b805f830184611b5e565b92915050565b611b8f81611ae2565b82525050565b5f602082019050611ba85f830184611b86565b92915050565b5f805f60608486031215611bc557611bc4611a84565b5b5f611bd286828701611ace565b9350506020611be386828701611ace565b9250506040611bf486828701611b01565b9150509250925092565b5f60ff82169050919050565b611c1381611bfe565b82525050565b5f602082019050611c2c5f830184611c0a565b92915050565b5f60208284031215611c4757611c46611a84565b5b5f611c5484828501611ace565b91505092915050565b5f819050919050565b5f611c80611c7b611c7684611a88565b611c5d565b611a88565b9050919050565b5f611c9182611c66565b9050919050565b5f611ca282611c87565b9050919050565b611cb281611c98565b82525050565b5f602082019050611ccb5f830184611ca9565b92915050565b611cda81611aa7565b82525050565b5f602082019050611cf35f830184611cd1565b92915050565b5f8060408385031215611d0f57611d0e611a84565b5b5f611d1c85828601611ace565b9250506020611d2d85828601611ace565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611db957808604811115611d9557611d94611d37565b5b6001851615611da45780820291505b8081029050611db285611d64565b9450611d79565b94509492505050565b5f82611dd15760019050611e8c565b81611dde575f9050611e8c565b8160018114611df45760028114611dfe57611e2d565b6001915050611e8c565b60ff841115611e1057611e0f611d37565b5b8360020a915084821115611e2757611e26611d37565b5b50611e8c565b5060208310610133831016604e8410600b8410161715611e625782820a905083811115611e5d57611e5c611d37565b5b611e8c565b611e6f8484846001611d70565b92509050818404811115611e8657611e85611d37565b5b81810290505b9392505050565b5f611e9d82611ae2565b9150611ea883611bfe565b9250611ed57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611dc2565b905092915050565b5f611ee782611ae2565b9150611ef283611ae2565b9250828202611f0081611ae2565b91508282048414831517611f1757611f16611d37565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611f526020836119fe565b9150611f5d82611f1e565b602082019050919050565b5f6020820190508181035f830152611f7f81611f46565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611fe06024836119fe565b9150611feb82611f86565b604082019050919050565b5f6020820190508181035f83015261200d81611fd4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61206e6022836119fe565b915061207982612014565b604082019050919050565b5f6020820190508181035f83015261209b81612062565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6120fc6025836119fe565b9150612107826120a2565b604082019050919050565b5f6020820190508181035f830152612129816120f0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61218a6023836119fe565b915061219582612130565b604082019050919050565b5f6020820190508181035f8301526121b78161217e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6122186029836119fe565b9150612223826121be565b604082019050919050565b5f6020820190508181035f8301526122458161220c565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6122806019836119fe565b915061228b8261224c565b602082019050919050565b5f6020820190508181035f8301526122ad81612274565b9050919050565b5f6122be82611ae2565b91506122c983611ae2565b92508282019050808211156122e1576122e0611d37565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61231b601a836119fe565b9150612326826122e7565b602082019050919050565b5f6020820190508181035f8301526123488161230f565b9050919050565b5f61235982611ae2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361238b5761238a611d37565b5b600182019050919050565b5f6123a082611ae2565b91506123ab83611ae2565b92508282039050818111156123c3576123c2611d37565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061243181611ab8565b92915050565b5f6020828403121561244c5761244b611a84565b5b5f61245984828501612423565b91505092915050565b5f819050919050565b5f61248561248061247b84612462565b611c5d565b611ae2565b9050919050565b6124958161246b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6124cd81611aa7565b82525050565b5f6124de83836124c4565b60208301905092915050565b5f602082019050919050565b5f6125008261249b565b61250a81856124a5565b9350612515836124b5565b805f5b8381101561254557815161252c88826124d3565b9750612537836124ea565b925050600181019050612518565b5085935050505092915050565b5f60a0820190506125655f830188611b86565b612572602083018761248c565b818103604083015261258481866124f6565b90506125936060830185611cd1565b6125a06080830184611b86565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6125e182611ae2565b91506125ec83611ae2565b9250826125fc576125fb6125aa565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6126616021836119fe565b915061266c82612607565b604082019050919050565b5f6020820190508181035f83015261268e81612655565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6126c9601b836119fe565b91506126d482612695565b602082019050919050565b5f6020820190508181035f8301526126f6816126bd565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208eeb89af4bf0648bab6d8645e044bd96bb8bde71927b115671c005fbc78a4ae064736f6c63430008190033

Deployed Bytecode Sourcemap

617:7430:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2823:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3656:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3100:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3825:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3009:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6924:357;;;;;;;;;;;;;:::i;:::-;;6703:213;;;;;;;;;;;;;:::i;:::-;;3203:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;707:148:6;;;;;;;;;;;;;:::i;:::-;;1828:30:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1442:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;493:79:6;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1502:55:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2914:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3330:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1564:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3505:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7289:127;;;;;;;;;;;;;:::i;:::-;;2823:83;2860:13;2893:5;;;;;;;;;;;;;;;;;2886:12;;2823:83;:::o;3656:161::-;3731:4;3748:39;3757:12;:10;:12::i;:::-;3771:7;3780:6;3748:8;:39::i;:::-;3805:4;3798:11;;3656:161;;;;:::o;3100:95::-;3153:7;970:1;1029:2;:13;;;;:::i;:::-;1013;:29;;;;:::i;:::-;3173:14;;3100:95;:::o;3825:313::-;3923:4;3940:36;3950:6;3958:9;3969:6;3940:9;:36::i;:::-;3987:121;3996:6;4004:12;:10;:12::i;:::-;4018:89;4056:6;4018:89;;;;;;;;;;;;;;;;;:11;:19;4030:6;4018:19;;;;;;;;;;;;;;;:33;4038:12;:10;:12::i;:::-;4018:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3987:8;:121::i;:::-;4126:4;4119:11;;3825:313;;;;;:::o;3009:83::-;3050:5;970:1;3068:16;;3009:83;:::o;6924:357::-;6989:10;;;;;;;;;;;6973:26;;:12;:10;:12::i;:::-;:26;;;6965:35;;;;;;7011:20;7034:24;7052:4;7034:9;:24::i;:::-;7011:47;;7087:1;7072:12;:16;7069:75;;;7102:30;7119:12;7102:16;:30::i;:::-;7069:75;7154:18;7175:21;7154:42;;7223:1;7210:10;:14;7207:67;;;7238:24;7251:10;7238:12;:24::i;:::-;7207:67;6954:327;;6924:357::o;6703:213::-;630:12:6;:10;:12::i;:::-;620:22;;:6;;;;;;;;;;:22;;;612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;970:1:0::1;1029:2;:13;;;;:::i;:::-;1013;:29;;;;:::i;:::-;6756:12;:22;;;;970:1;1029:2;:13;;;;:::i;:::-;1013;:29;;;;:::i;:::-;6789:14;:24;;;;6904:4;6885:16;:23;;;;6703:213::o:0;3203:119::-;3269:7;3296:9;:18;3306:7;3296:18;;;;;;;;;;;;;;;;3289:25;;3203:119;;;:::o;707:148:6:-;630:12;:10;:12::i;:::-;620:22;;:6;;;;;;;;;;:22;;;612:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;814:1:::1;777:40;;798:6;::::0;::::1;;;;;;;;777:40;;;;;;;;;;;;845:1;828:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;707:148::o:0;1828:30:0:-;;;;;;;;;;;;;:::o;1442:53::-;;;;:::o;493:79:6:-;531:7;558:6;;;;;;;;;;;551:13;;493:79;:::o;1502:55:0:-;;;;:::o;2914:87::-;2953:13;2986:7;;;;;;;;;;;;;;;;;2979:14;;2914:87;:::o;3330:167::-;3408:4;3425:42;3435:12;:10;:12::i;:::-;3449:9;3460:6;3425:9;:42::i;:::-;3485:4;3478:11;;3330:167;;;;:::o;1564:62::-;;;;:::o;3505:143::-;3586:7;3613:11;:18;3625:5;3613:18;;;;;;;;;;;;;;;:27;3632:7;3613:27;;;;;;;;;;;;;;;;3606:34;;3505:143;;;;:::o;7289:127::-;7331:18;7352:21;7331:42;;7384:24;7397:10;7384:12;:24::i;:::-;7320:96;7289:127::o;672:98:2:-;725:7;752:10;745:17;;672:98;:::o;4146:335:0:-;4256:1;4239:19;;:5;:19;;;4231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4337:1;4318:21;;:7;:21;;;4310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4419:6;4389:11;:18;4401:5;4389:18;;;;;;;;;;;;;;;:27;4408:7;4389:27;;;;;;;;;;;;;;;:36;;;;4457:7;4441:32;;4450:5;4441:32;;;4466:6;4441:32;;;;;;:::i;:::-;;;;;;;;4146:335;;;:::o;4489:2206::-;4593:1;4577:18;;:4;:18;;;4569:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4670:1;4656:16;;:2;:16;;;4648:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4740:1;4731:6;:10;4723:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4800:17;4832:21;4856:14;;4832:38;;4881:22;4906:15;;4881:40;;4946:7;:5;:7::i;:::-;4938:15;;:4;:15;;;;:32;;;;;4963:7;:5;:7::i;:::-;4957:13;;:2;:13;;;;4938:32;:70;;;;;4999:8;;;;;;;;;;;4983:25;;:4;:25;;;;4938:70;:97;;;;;5026:8;;;;;;;;;;;5012:23;;:2;:23;;;;4938:97;4934:1396;;;5083:16;;5069:11;;:30;5066:146;;;5135:12;;5119:28;;5183:13;;5166:30;;5066:146;5240:13;;;;;;;;;;;5232:21;;:4;:21;;;:55;;;;;5271:15;;;;;;;;;;;5257:30;;:2;:30;;;;5232:55;:83;;;;;5293:18;:22;5312:2;5293:22;;;;;;;;;;;;;;;;;;;;;;;;;5291:24;5232:83;5228:379;;;5354:12;;5344:6;:22;;5336:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5449:14;;5439:6;5423:13;5433:2;5423:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;5415:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5525:34;5555:3;5525:25;5536:13;5525:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;5513:46;;5578:11;;:13;;;;;;;;;:::i;:::-;;;;;;5228:379;5632:13;;;;;;;;;;;5626:19;;:2;:19;;;:44;;;;;5665:4;5649:21;;:4;:21;;;;5626:44;5623:293;;;5695:18;:24;5714:4;5695:24;;;;;;;;;;;;;;;;;;;;;;;;;5690:99;;5754:35;5785:3;5754:26;5765:14;5754:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;5742:47;;5690:99;5811:14;;;;;;;;;;;5808:60;;;5848:8;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5808:60;5887:11;;:13;;;;;;;;;:::i;:::-;;;;;;5623:293;5932:28;5963:24;5981:4;5963:9;:24::i;:::-;5932:55;;6007:6;;;;;;;;;;;6006:7;:31;;;;;6024:13;;;;;;;;;;;6017:20;;:2;:20;;;6006:31;:60;;;;;6055:11;;;;;;;;;;;6006:60;:118;;;;;6107:17;;6084:20;:40;6006:118;6002:317;;;6145:38;6162:20;6145:16;:38::i;:::-;6202:26;6231:21;6202:50;;6271:32;6284:18;6271:12;:32::i;:::-;6126:193;6002:317;5037:1293;4934:1396;6357:1;6345:9;:13;6342:166;;;6399:39;6428:9;6399;:24;6417:4;6399:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;6372:9;:24;6390:4;6372:24;;;;;;;;;;;;;;;:66;;;;6479:4;6456:40;;6465:4;6456:40;;;6486:9;6456:40;;;;;;:::i;:::-;;;;;;;;6342:166;6536:27;6556:6;6536:9;:15;6546:4;6536:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;6518:9;:15;6528:4;6518:15;;;;;;;;;;;;;;;:45;;;;6590:40;6608:21;6619:9;6608:6;:10;;:21;;;;:::i;:::-;6590:9;:13;6600:2;6590:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;6574:9;:13;6584:2;6574:13;;;;;;;;;;;;;;;:56;;;;6661:2;6646:41;;6655:4;6646:41;;;6665:21;6676:9;6665:6;:10;;:21;;;;:::i;:::-;6646:41;;;;;;:::i;:::-;;;;;;;;4558:2137;;;4489:2206;;;:::o;497:190:7:-;583:7;616:1;611;:6;;619:12;603:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;643:9;659:1;655;:5;;;;:::i;:::-;643:17;;678:1;671:8;;;497:190;;;;;:::o;7424:483:0:-;1951:4;1942:6;;:13;;;;;;;;;;;;;;;;;;7502:21:::1;7540:1;7526:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7502:40;;7571:4;7553;7558:1;7553:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;7597:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7587:4;7592:1;7587:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;7630:62;7647:4;7662:15;;;;;;;;;;;7680:11;7630:8;:62::i;:::-;7703:15;;;;;;;;;;;:66;;;7784:11;7810:1;7826:4;7853;7873:15;7703:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7491:416;1987:5:::0;1978:6;;:14;;;;;;;;;;;;;;;;;;7424:483;:::o;7915:92::-;7972:10;;;;;;;;;;;:19;;:27;7992:6;7972:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7915:92;:::o;695:246:7:-;753:7;782:1;777;:6;773:47;;807:1;800:8;;;;773:47;830:9;846:1;842;:5;;;;:::i;:::-;830:17;;875:1;870;866;:5;;;;:::i;:::-;:10;858:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;932:1;925:8;;;695:246;;;;;:::o;949:132::-;1007:7;1034:39;1038:1;1041;1034:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1027:46;;949:132;;;;:::o;166:179::-;224:7;244:9;260:1;256;:5;;;;:::i;:::-;244:17;;285:1;280;:6;;272:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;336:1;329:8;;;166:179;;;;:::o;353:136::-;411:7;438:43;442:1;445;438:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;431:50;;353:136;;;;:::o;1089:189::-;1175:7;1207:1;1203;:5;1210:12;1195:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1234:9;1250:1;1246;:5;;;;:::i;:::-;1234:17;;1269:1;1262:8;;;1089:189;;;;;:::o;7:99:8:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:60::-;5109:3;5130:5;5123:12;;5081:60;;;:::o;5147:142::-;5197:9;5230:53;5248:34;5257:24;5275:5;5257:24;:::i;:::-;5248:34;:::i;:::-;5230:53;:::i;:::-;5217:66;;5147:142;;;:::o;5295:134::-;5353:9;5386:37;5417:5;5386:37;:::i;:::-;5373:50;;5295:134;;;:::o;5435:165::-;5516:9;5549:45;5588:5;5549:45;:::i;:::-;5536:58;;5435:165;;;:::o;5606:193::-;5724:68;5786:5;5724:68;:::i;:::-;5719:3;5712:81;5606:193;;:::o;5805:284::-;5929:4;5967:2;5956:9;5952:18;5944:26;;5980:102;6079:1;6068:9;6064:17;6055:6;5980:102;:::i;:::-;5805:284;;;;:::o;6095:118::-;6182:24;6200:5;6182:24;:::i;:::-;6177:3;6170:37;6095:118;;:::o;6219:222::-;6312:4;6350:2;6339:9;6335:18;6327:26;;6363:71;6431:1;6420:9;6416:17;6407:6;6363:71;:::i;:::-;6219:222;;;;:::o;6447:474::-;6515:6;6523;6572:2;6560:9;6551:7;6547:23;6543:32;6540:119;;;6578:79;;:::i;:::-;6540:119;6698:1;6723:53;6768:7;6759:6;6748:9;6744:22;6723:53;:::i;:::-;6713:63;;6669:117;6825:2;6851:53;6896:7;6887:6;6876:9;6872:22;6851:53;:::i;:::-;6841:63;;6796:118;6447:474;;;;;:::o;6927:180::-;6975:77;6972:1;6965:88;7072:4;7069:1;7062:15;7096:4;7093:1;7086:15;7113:102;7155:8;7202:5;7199:1;7195:13;7174:34;;7113:102;;;:::o;7221:848::-;7282:5;7289:4;7313:6;7304:15;;7337:5;7328:14;;7351:712;7372:1;7362:8;7359:15;7351:712;;;7467:4;7462:3;7458:14;7452:4;7449:24;7446:50;;;7476:18;;:::i;:::-;7446:50;7526:1;7516:8;7512:16;7509:451;;;7941:4;7934:5;7930:16;7921:25;;7509:451;7991:4;7985;7981:15;7973:23;;8021:32;8044:8;8021:32;:::i;:::-;8009:44;;7351:712;;;7221:848;;;;;;;:::o;8075:1073::-;8129:5;8320:8;8310:40;;8341:1;8332:10;;8343:5;;8310:40;8369:4;8359:36;;8386:1;8377:10;;8388:5;;8359:36;8455:4;8503:1;8498:27;;;;8539:1;8534:191;;;;8448:277;;8498:27;8516:1;8507:10;;8518:5;;;8534:191;8579:3;8569:8;8566:17;8563:43;;;8586:18;;:::i;:::-;8563:43;8635:8;8632:1;8628:16;8619:25;;8670:3;8663:5;8660:14;8657:40;;;8677:18;;:::i;:::-;8657:40;8710:5;;;8448:277;;8834:2;8824:8;8821:16;8815:3;8809:4;8806:13;8802:36;8784:2;8774:8;8771:16;8766:2;8760:4;8757:12;8753:35;8737:111;8734:246;;;8890:8;8884:4;8880:19;8871:28;;8925:3;8918:5;8915:14;8912:40;;;8932:18;;:::i;:::-;8912:40;8965:5;;8734:246;9005:42;9043:3;9033:8;9027:4;9024:1;9005:42;:::i;:::-;8990:57;;;;9079:4;9074:3;9070:14;9063:5;9060:25;9057:51;;;9088:18;;:::i;:::-;9057:51;9137:4;9130:5;9126:16;9117:25;;8075:1073;;;;;;:::o;9154:281::-;9212:5;9236:23;9254:4;9236:23;:::i;:::-;9228:31;;9280:25;9296:8;9280:25;:::i;:::-;9268:37;;9324:104;9361:66;9351:8;9345:4;9324:104;:::i;:::-;9315:113;;9154:281;;;;:::o;9441:410::-;9481:7;9504:20;9522:1;9504:20;:::i;:::-;9499:25;;9538:20;9556:1;9538:20;:::i;:::-;9533:25;;9593:1;9590;9586:9;9615:30;9633:11;9615:30;:::i;:::-;9604:41;;9794:1;9785:7;9781:15;9778:1;9775:22;9755:1;9748:9;9728:83;9705:139;;9824:18;;:::i;:::-;9705:139;9489:362;9441:410;;;;:::o;9857:182::-;9997:34;9993:1;9985:6;9981:14;9974:58;9857:182;:::o;10045:366::-;10187:3;10208:67;10272:2;10267:3;10208:67;:::i;:::-;10201:74;;10284:93;10373:3;10284:93;:::i;:::-;10402:2;10397:3;10393:12;10386:19;;10045:366;;;:::o;10417:419::-;10583:4;10621:2;10610:9;10606:18;10598:26;;10670:9;10664:4;10660:20;10656:1;10645:9;10641:17;10634:47;10698:131;10824:4;10698:131;:::i;:::-;10690:139;;10417:419;;;:::o;10842:223::-;10982:34;10978:1;10970:6;10966:14;10959:58;11051:6;11046:2;11038:6;11034:15;11027:31;10842:223;:::o;11071:366::-;11213:3;11234:67;11298:2;11293:3;11234:67;:::i;:::-;11227:74;;11310:93;11399:3;11310:93;:::i;:::-;11428:2;11423:3;11419:12;11412:19;;11071:366;;;:::o;11443:419::-;11609:4;11647:2;11636:9;11632:18;11624:26;;11696:9;11690:4;11686:20;11682:1;11671:9;11667:17;11660:47;11724:131;11850:4;11724:131;:::i;:::-;11716:139;;11443:419;;;:::o;11868:221::-;12008:34;12004:1;11996:6;11992:14;11985:58;12077:4;12072:2;12064:6;12060:15;12053:29;11868:221;:::o;12095:366::-;12237:3;12258:67;12322:2;12317:3;12258:67;:::i;:::-;12251:74;;12334:93;12423:3;12334:93;:::i;:::-;12452:2;12447:3;12443:12;12436:19;;12095:366;;;:::o;12467:419::-;12633:4;12671:2;12660:9;12656:18;12648:26;;12720:9;12714:4;12710:20;12706:1;12695:9;12691:17;12684:47;12748:131;12874:4;12748:131;:::i;:::-;12740:139;;12467:419;;;:::o;12892:224::-;13032:34;13028:1;13020:6;13016:14;13009:58;13101:7;13096:2;13088:6;13084:15;13077:32;12892:224;:::o;13122:366::-;13264:3;13285:67;13349:2;13344:3;13285:67;:::i;:::-;13278:74;;13361:93;13450:3;13361:93;:::i;:::-;13479:2;13474:3;13470:12;13463:19;;13122:366;;;:::o;13494:419::-;13660:4;13698:2;13687:9;13683:18;13675:26;;13747:9;13741:4;13737:20;13733:1;13722:9;13718:17;13711:47;13775:131;13901:4;13775:131;:::i;:::-;13767:139;;13494:419;;;:::o;13919:222::-;14059:34;14055:1;14047:6;14043:14;14036:58;14128:5;14123:2;14115:6;14111:15;14104:30;13919:222;:::o;14147:366::-;14289:3;14310:67;14374:2;14369:3;14310:67;:::i;:::-;14303:74;;14386:93;14475:3;14386:93;:::i;:::-;14504:2;14499:3;14495:12;14488:19;;14147:366;;;:::o;14519:419::-;14685:4;14723:2;14712:9;14708:18;14700:26;;14772:9;14766:4;14762:20;14758:1;14747:9;14743:17;14736:47;14800:131;14926:4;14800:131;:::i;:::-;14792:139;;14519:419;;;:::o;14944:228::-;15084:34;15080:1;15072:6;15068:14;15061:58;15153:11;15148:2;15140:6;15136:15;15129:36;14944:228;:::o;15178:366::-;15320:3;15341:67;15405:2;15400:3;15341:67;:::i;:::-;15334:74;;15417:93;15506:3;15417:93;:::i;:::-;15535:2;15530:3;15526:12;15519:19;;15178:366;;;:::o;15550:419::-;15716:4;15754:2;15743:9;15739:18;15731:26;;15803:9;15797:4;15793:20;15789:1;15778:9;15774:17;15767:47;15831:131;15957:4;15831:131;:::i;:::-;15823:139;;15550:419;;;:::o;15975:175::-;16115:27;16111:1;16103:6;16099:14;16092:51;15975:175;:::o;16156:366::-;16298:3;16319:67;16383:2;16378:3;16319:67;:::i;:::-;16312:74;;16395:93;16484:3;16395:93;:::i;:::-;16513:2;16508:3;16504:12;16497:19;;16156:366;;;:::o;16528:419::-;16694:4;16732:2;16721:9;16717:18;16709:26;;16781:9;16775:4;16771:20;16767:1;16756:9;16752:17;16745:47;16809:131;16935:4;16809:131;:::i;:::-;16801:139;;16528:419;;;:::o;16953:191::-;16993:3;17012:20;17030:1;17012:20;:::i;:::-;17007:25;;17046:20;17064:1;17046:20;:::i;:::-;17041:25;;17089:1;17086;17082:9;17075:16;;17110:3;17107:1;17104:10;17101:36;;;17117:18;;:::i;:::-;17101:36;16953:191;;;;:::o;17150:176::-;17290:28;17286:1;17278:6;17274:14;17267:52;17150:176;:::o;17332:366::-;17474:3;17495:67;17559:2;17554:3;17495:67;:::i;:::-;17488:74;;17571:93;17660:3;17571:93;:::i;:::-;17689:2;17684:3;17680:12;17673:19;;17332:366;;;:::o;17704:419::-;17870:4;17908:2;17897:9;17893:18;17885:26;;17957:9;17951:4;17947:20;17943:1;17932:9;17928:17;17921:47;17985:131;18111:4;17985:131;:::i;:::-;17977:139;;17704:419;;;:::o;18129:233::-;18168:3;18191:24;18209:5;18191:24;:::i;:::-;18182:33;;18237:66;18230:5;18227:77;18224:103;;18307:18;;:::i;:::-;18224:103;18354:1;18347:5;18343:13;18336:20;;18129:233;;;:::o;18368:194::-;18408:4;18428:20;18446:1;18428:20;:::i;:::-;18423:25;;18462:20;18480:1;18462:20;:::i;:::-;18457:25;;18506:1;18503;18499:9;18491:17;;18530:1;18524:4;18521:11;18518:37;;;18535:18;;:::i;:::-;18518:37;18368:194;;;;:::o;18568:180::-;18616:77;18613:1;18606:88;18713:4;18710:1;18703:15;18737:4;18734:1;18727:15;18754:180;18802:77;18799:1;18792:88;18899:4;18896:1;18889:15;18923:4;18920:1;18913:15;18940:143;18997:5;19028:6;19022:13;19013:22;;19044:33;19071:5;19044:33;:::i;:::-;18940:143;;;;:::o;19089:351::-;19159:6;19208:2;19196:9;19187:7;19183:23;19179:32;19176:119;;;19214:79;;:::i;:::-;19176:119;19334:1;19359:64;19415:7;19406:6;19395:9;19391:22;19359:64;:::i;:::-;19349:74;;19305:128;19089:351;;;;:::o;19446:85::-;19491:7;19520:5;19509:16;;19446:85;;;:::o;19537:158::-;19595:9;19628:61;19646:42;19655:32;19681:5;19655:32;:::i;:::-;19646:42;:::i;:::-;19628:61;:::i;:::-;19615:74;;19537:158;;;:::o;19701:147::-;19796:45;19835:5;19796:45;:::i;:::-;19791:3;19784:58;19701:147;;:::o;19854:114::-;19921:6;19955:5;19949:12;19939:22;;19854:114;;;:::o;19974:184::-;20073:11;20107:6;20102:3;20095:19;20147:4;20142:3;20138:14;20123:29;;19974:184;;;;:::o;20164:132::-;20231:4;20254:3;20246:11;;20284:4;20279:3;20275:14;20267:22;;20164:132;;;:::o;20302:108::-;20379:24;20397:5;20379:24;:::i;:::-;20374:3;20367:37;20302:108;;:::o;20416:179::-;20485:10;20506:46;20548:3;20540:6;20506:46;:::i;:::-;20584:4;20579:3;20575:14;20561:28;;20416:179;;;;:::o;20601:113::-;20671:4;20703;20698:3;20694:14;20686:22;;20601:113;;;:::o;20750:732::-;20869:3;20898:54;20946:5;20898:54;:::i;:::-;20968:86;21047:6;21042:3;20968:86;:::i;:::-;20961:93;;21078:56;21128:5;21078:56;:::i;:::-;21157:7;21188:1;21173:284;21198:6;21195:1;21192:13;21173:284;;;21274:6;21268:13;21301:63;21360:3;21345:13;21301:63;:::i;:::-;21294:70;;21387:60;21440:6;21387:60;:::i;:::-;21377:70;;21233:224;21220:1;21217;21213:9;21208:14;;21173:284;;;21177:14;21473:3;21466:10;;20874:608;;;20750:732;;;;:::o;21488:831::-;21751:4;21789:3;21778:9;21774:19;21766:27;;21803:71;21871:1;21860:9;21856:17;21847:6;21803:71;:::i;:::-;21884:80;21960:2;21949:9;21945:18;21936:6;21884:80;:::i;:::-;22011:9;22005:4;22001:20;21996:2;21985:9;21981:18;21974:48;22039:108;22142:4;22133:6;22039:108;:::i;:::-;22031:116;;22157:72;22225:2;22214:9;22210:18;22201:6;22157:72;:::i;:::-;22239:73;22307:3;22296:9;22292:19;22283:6;22239:73;:::i;:::-;21488:831;;;;;;;;:::o;22325:180::-;22373:77;22370:1;22363:88;22470:4;22467:1;22460:15;22494:4;22491:1;22484:15;22511:185;22551:1;22568:20;22586:1;22568:20;:::i;:::-;22563:25;;22602:20;22620:1;22602:20;:::i;:::-;22597:25;;22641:1;22631:35;;22646:18;;:::i;:::-;22631:35;22688:1;22685;22681:9;22676:14;;22511:185;;;;:::o;22702:220::-;22842:34;22838:1;22830:6;22826:14;22819:58;22911:3;22906:2;22898:6;22894:15;22887:28;22702:220;:::o;22928:366::-;23070:3;23091:67;23155:2;23150:3;23091:67;:::i;:::-;23084:74;;23167:93;23256:3;23167:93;:::i;:::-;23285:2;23280:3;23276:12;23269:19;;22928:366;;;:::o;23300:419::-;23466:4;23504:2;23493:9;23489:18;23481:26;;23553:9;23547:4;23543:20;23539:1;23528:9;23524:17;23517:47;23581:131;23707:4;23581:131;:::i;:::-;23573:139;;23300:419;;;:::o;23725:177::-;23865:29;23861:1;23853:6;23849:14;23842:53;23725:177;:::o;23908:366::-;24050:3;24071:67;24135:2;24130:3;24071:67;:::i;:::-;24064:74;;24147:93;24236:3;24147:93;:::i;:::-;24265:2;24260:3;24256:12;24249:19;;23908:366;;;:::o;24280:419::-;24446:4;24484:2;24473:9;24469:18;24461:26;;24533:9;24527:4;24523:20;24519:1;24508:9;24504:17;24497:47;24561:131;24687:4;24561:131;:::i;:::-;24553:139;;24280:419;;;:::o

Swarm Source

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