ETH Price: $3,483.65 (+0.93%)

Token

Troll Inc. (TROLLS)
 

Overview

Max Total Supply

100,000,000 TROLLS

Holders

394

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
112,015.237366611617841463 TROLLS

Value
$0.00
0x7b265f5f697a30728f1d9e63f3495754a10bb253
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:
Troll

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 512 runs

Other Settings:
default evmVersion
File 1 of 1 : Troll.sol
// https://twitter.com/trollinceth
// https://t.me/trollinceth
// http://trollinc.io
//

// SPDX-License-Identifier: MIT

pragma solidity 0.8.12;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

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


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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


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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

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

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract Troll is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 10_000 * 10e18;
    uint256 public maxTxAmount = 2_000_000 * 10**18;
    uint256 public maxWalletAmount = 2_000_000 * 10**18;
    
    address public marketingWallet = 0x8a2eA879aCe38F2eE506085Ed3657cBeae53692b;
    address public devWallet = 0x8a2eA879aCe38F2eE506085Ed3657cBeae53692b;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(12,0,3);
    Taxes public sellTaxes = Taxes(32,0,8);
    uint256 public totTax = 15;
    uint256 public totSellTax = 40;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Troll Inc.", "TROLLS") {
        _mint(msg.sender, 1e8 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
  
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
 
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        

        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

                    uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setBuyTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _dev);
        totTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updatePeppaWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
    function addBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
    }
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // fallbacks
    receive() external payable {}
    
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 512
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

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":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatePeppaWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060095569152d02c7e14af6800000600a556a01a784379d99db42000000600b556a01a784379d99db42000000600c55738a2ea879ace38f2ee506085ed3657cbeae53692b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738a2ea879ace38f2ee506085ed3657cbeae53692b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060600160405280600c8152602001600081526020016003815250600f600082015181600001556020820151816001015560408201518160020155505060405180606001604052806020815260200160008152602001600881525060126000820151816000015560208201518160010155604082015181600201555050600f60155560286016553480156200017657600080fd5b506040518060400160405280600a81526020017f54726f6c6c20496e632e000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f54524f4c4c5300000000000000000000000000000000000000000000000000008152508160039080519060200190620001fb92919062000868565b5080600490805190602001906200021492919062000868565b505050620002376200022b6200062760201b60201c565b6200062f60201b60201c565b62000277336200024c620006f560201b60201c565b600a6200025a919062000ab2565b6305f5e1006200026b919062000b03565b620006fe60201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000336573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035c919062000bce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ea919062000bce565b6040518363ffffffff1660e01b81526004016200040992919062000c11565b6020604051808303816000875af115801562000429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044f919062000bce565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000db1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007689062000c9f565b60405180910390fd5b62000785600083836200086360201b60201c565b806002600082825462000799919062000cc1565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007f0919062000cc1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000857919062000d2f565b60405180910390a35050565b505050565b828054620008769062000d7b565b90600052602060002090601f0160209004810192826200089a5760008555620008e6565b82601f10620008b557805160ff1916838001178555620008e6565b82800160010185558215620008e6579182015b82811115620008e5578251825591602001919060010190620008c8565b5b509050620008f59190620008f9565b5090565b5b8082111562000914576000816000905550600101620008fa565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009a6578086048111156200097e576200097d62000918565b5b60018516156200098e5780820291505b80810290506200099e8562000947565b94506200095e565b94509492505050565b600082620009c1576001905062000a94565b81620009d1576000905062000a94565b8160018114620009ea5760028114620009f55762000a2b565b600191505062000a94565b60ff84111562000a0a5762000a0962000918565b5b8360020a91508482111562000a245762000a2362000918565b5b5062000a94565b5060208310610133831016604e8410600b841016171562000a655782820a90508381111562000a5f5762000a5e62000918565b5b62000a94565b62000a74848484600162000954565b9250905081840481111562000a8e5762000a8d62000918565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000abf8262000a9b565b915062000acc8362000aa5565b925062000afb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009af565b905092915050565b600062000b108262000a9b565b915062000b1d8362000a9b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b595762000b5862000918565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b968262000b69565b9050919050565b62000ba88162000b89565b811462000bb457600080fd5b50565b60008151905062000bc88162000b9d565b92915050565b60006020828403121562000be75762000be662000b64565b5b600062000bf78482850162000bb7565b91505092915050565b62000c0b8162000b89565b82525050565b600060408201905062000c28600083018562000c00565b62000c37602083018462000c00565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c87601f8362000c3e565b915062000c948262000c4f565b602082019050919050565b6000602082019050818103600083015262000cba8162000c78565b9050919050565b600062000cce8262000a9b565b915062000cdb8362000a9b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d135762000d1262000918565b5b828201905092915050565b62000d298162000a9b565b82525050565b600060208201905062000d46600083018462000d1e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d9457607f821691505b6020821081141562000dab5762000daa62000d4c565b5b50919050565b6146cc8062000dc16000396000f3fe6080604052600436106102c65760003560e01c806382aa7c681161017f578063a9059cbb116100e1578063dd62ed3e1161008a578063f2fde38b11610064578063f2fde38b14610a40578063f66895a314610a69578063f887ea4014610a96576102cd565b8063dd62ed3e146109b1578063e01af92c146109ee578063e545fd6d14610a17576102cd565b8063c18bc195116100bb578063c18bc19514610922578063d34628cc1461094b578063dbe66ca014610974576102cd565b8063a9059cbb14610891578063aa4bde28146108ce578063aacebbe3146108f9576102cd565b806395d89b41116101435780639f55efb91161011d5780639f55efb914610800578063a457c2d714610829578063a8aa1b3114610866576102cd565b806395d89b41146107835780639d0014b1146107ae5780639e252f00146107d7576102cd565b806382aa7c68146106b05780638c0b5e22146106d95780638cd4426d146107045780638da5cb5b1461072d5780638ea5220f14610758576102cd565b8063313ce567116102285780636256d181116101ec578063715018a6116101c6578063715018a614610641578063728f8eea1461065857806375f0a87414610685576102cd565b80636256d181146105b05780636ddd1713146105d957806370a0823114610604576102cd565b8063313ce567146104c957806339509351146104f457806340b28c2f146105315780634ada218b1461055a57806350c9a88f14610585576102cd565b80631870517a1161028a57806326b5d32f1161026457806326b5d32f1461044a578063274a533c14610473578063293b7ef41461049e576102cd565b80631870517a146103b95780632253163d146103e257806323b872dd1461040d576102cd565b80630445b667146102d257806306fdde03146102fd5780630873321414610328578063095ea7b31461035157806318160ddd1461038e576102cd565b366102cd57005b600080fd5b3480156102de57600080fd5b506102e7610ac1565b6040516102f49190613189565b60405180910390f35b34801561030957600080fd5b50610312610ac7565b60405161031f919061323d565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a919061329f565b610b59565b005b34801561035d57600080fd5b5061037860048036038101906103739190613350565b610c35565b60405161038591906133ab565b60405180910390f35b34801561039a57600080fd5b506103a3610c53565b6040516103b09190613189565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db919061329f565b610c5d565b005b3480156103ee57600080fd5b506103f7610d39565b6040516104049190613189565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f91906133c6565b610d3f565b60405161044191906133ab565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c919061329f565b610e40565b005b34801561047f57600080fd5b50610488610fcd565b6040516104959190613189565b60405180910390f35b3480156104aa57600080fd5b506104b3610fd3565b6040516104c09190613189565b60405180910390f35b3480156104d557600080fd5b506104de610fd9565b6040516104eb9190613435565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190613350565b610fe2565b60405161052891906133ab565b60405180910390f35b34801561053d57600080fd5b506105586004803603810190610553919061348e565b61108e565b005b34801561056657600080fd5b5061056f611190565b60405161057c91906133ab565b60405180910390f35b34801561059157600080fd5b5061059a6111a3565b6040516105a79190613189565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d291906134ce565b6111a9565b005b3480156105e557600080fd5b506105ee611242565b6040516105fb91906133ab565b60405180910390f35b34801561061057600080fd5b5061062b600480360381019061062691906134fb565b611255565b6040516106389190613189565b60405180910390f35b34801561064d57600080fd5b5061065661129d565b005b34801561066457600080fd5b5061066d611325565b60405161067c93929190613528565b60405180910390f35b34801561069157600080fd5b5061069a61133d565b6040516106a7919061356e565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d291906134ce565b611363565b005b3480156106e557600080fd5b506106ee611476565b6040516106fb9190613189565b60405180910390f35b34801561071057600080fd5b5061072b60048036038101906107269190613350565b61147c565b005b34801561073957600080fd5b50610742611582565b60405161074f919061356e565b60405180910390f35b34801561076457600080fd5b5061076d6115ac565b60405161077a919061356e565b60405180910390f35b34801561078f57600080fd5b506107986115d2565b6040516107a5919061323d565b60405180910390f35b3480156107ba57600080fd5b506107d560048036038101906107d091906134ce565b611664565b005b3480156107e357600080fd5b506107fe60048036038101906107f991906134ce565b6116ea565b005b34801561080c57600080fd5b50610827600480360381019061082291906134fb565b611799565b005b34801561083557600080fd5b50610850600480360381019061084b9190613350565b611859565b60405161085d91906133ab565b60405180910390f35b34801561087257600080fd5b5061087b61194d565b604051610888919061356e565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613350565b611973565b6040516108c591906133ab565b60405180910390f35b3480156108da57600080fd5b506108e3611991565b6040516108f09190613189565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b91906134fb565b611997565b005b34801561092e57600080fd5b50610949600480360381019061094491906134ce565b611a57565b005b34801561095757600080fd5b50610972600480360381019061096d91906136d1565b611af0565b005b34801561098057600080fd5b5061099b600480360381019061099691906134fb565b611c01565b6040516109a891906133ab565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d3919061371a565b611c21565b6040516109e59190613189565b60405180910390f35b3480156109fa57600080fd5b50610a156004803603810190610a109190613786565b611ca8565b005b348015610a2357600080fd5b50610a3e6004803603810190610a3991906137b3565b611d41565b005b348015610a4c57600080fd5b50610a676004803603810190610a6291906134fb565b611e18565b005b348015610a7557600080fd5b50610a7e611f10565b604051610a8d93929190613528565b60405180910390f35b348015610aa257600080fd5b50610aab611f28565b604051610ab89190613852565b60405180910390f35b600a5481565b606060038054610ad69061389c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b029061389c565b8015610b4f5780601f10610b2457610100808354040283529160200191610b4f565b820191906000526020600020905b815481529060010190602001808311610b3257829003601f168201915b5050505050905090565b610b61611f4e565b73ffffffffffffffffffffffffffffffffffffffff16610b7f611582565b73ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc9061391a565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610c209190613969565b610c2a9190613969565b601681905550505050565b6000610c49610c42611f4e565b8484611f56565b6001905092915050565b6000600254905090565b610c65611f4e565b73ffffffffffffffffffffffffffffffffffffffff16610c83611582565b73ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd09061391a565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284610d249190613969565b610d2e9190613969565b601581905550505050565b60165481565b6000610d4c848484612121565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d97611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90613a31565b60405180910390fd5b610e3485610e23611f4e565b8584610e2f9190613a51565b611f56565b60019150509392505050565b610e48611f4e565b73ffffffffffffffffffffffffffffffffffffffff16610e66611582565b73ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb39061391a565b60405180910390fd5b6000479050610eca846127eb565b60008147610ed89190613a51565b90506000831115610f5057610f4f8385610ef29190613969565b8483610efe9190613a85565b610f089190613b0e565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b5b6000841115610fc657610fc58385610f689190613969565b8583610f749190613a85565b610f7e9190613b0e565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b6000611084610fef611f4e565b848460016000610ffd611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461107f9190613969565b611f56565b6001905092915050565b611096611f4e565b73ffffffffffffffffffffffffffffffffffffffff166110b4611582565b73ffffffffffffffffffffffffffffffffffffffff161461110a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111019061391a565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b6111b1611f4e565b73ffffffffffffffffffffffffffffffffffffffff166111cf611582565b73ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c9061391a565b60405180910390fd5b670de0b6b3a7640000816112399190613a85565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112a5611f4e565b73ffffffffffffffffffffffffffffffffffffffff166112c3611582565b73ffffffffffffffffffffffffffffffffffffffff1614611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113109061391a565b60405180910390fd5b6113236000612b22565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61136b611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611389611582565b73ffffffffffffffffffffffffffffffffffffffff16146113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061391a565b60405180910390fd5b600760169054906101000a900460ff161561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690613b8b565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611484611f4e565b73ffffffffffffffffffffffffffffffffffffffff166114a2611582565b73ffffffffffffffffffffffffffffffffffffffff16146114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef9061391a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61151c611582565b836040518363ffffffff1660e01b815260040161153a929190613bab565b6020604051808303816000875af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190613be9565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115e19061389c565b80601f016020809104026020016040519081016040528092919081815260200182805461160d9061389c565b801561165a5780601f1061162f5761010080835404028352916020019161165a565b820191906000526020600020905b81548152906001019060200180831161163d57829003601f168201915b5050505050905090565b61166c611f4e565b73ffffffffffffffffffffffffffffffffffffffff1661168a611582565b73ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d79061391a565b60405180910390fd5b80600a8190555050565b6116f2611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611710611582565b73ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061391a565b60405180910390fd5b61179681611772611582565b73ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b50565b6117a1611f4e565b73ffffffffffffffffffffffffffffffffffffffff166117bf611582565b73ffffffffffffffffffffffffffffffffffffffff1614611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9061391a565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060016000611868611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c90613c88565b60405180910390fd5b611942611930611f4e565b85858461193d9190613a51565b611f56565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611987611980611f4e565b8484612121565b6001905092915050565b600c5481565b61199f611f4e565b73ffffffffffffffffffffffffffffffffffffffff166119bd611582565b73ffffffffffffffffffffffffffffffffffffffff1614611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061391a565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a5f611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611a7d611582565b73ffffffffffffffffffffffffffffffffffffffff1614611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca9061391a565b60405180910390fd5b670de0b6b3a764000081611ae79190613a85565b600c8190555050565b611af8611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611b16611582565b73ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b639061391a565b60405180910390fd5b60005b8151811015611bfd57600160186000848481518110611b9157611b90613ca8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bf590613cd7565b915050611b6f565b5050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cb0611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611cce611582565b73ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b9061391a565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611d49611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611d67611582565b73ffffffffffffffffffffffffffffffffffffffff1614611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db49061391a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e20611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611e3e611582565b73ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b9061391a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb90613d92565b60405180910390fd5b611f0d81612b22565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90613e24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202d90613eb6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121149190613189565b60405180910390a3505050565b60008111612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613f48565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122085750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223e90613fb4565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122eb5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123045750600760149054906101000a900460ff16155b156125c057600760169054906101000a900460ff16612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f90614020565b60405180910390fd5b436009546008546123699190613969565b11156124cc57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461241d576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146124cb576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b54811115612511576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125089061408c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125bf57600c548161257384611255565b61257d9190613969565b11156125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b59061411e565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806126265750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061267a5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612688576000905061271d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126ff576064601654836126ee9190613a85565b6126f89190613b0e565b905061271c565b60646015548361270f9190613a85565b6127199190613b0e565b90505b5b600760159054906101000a900460ff1680156127465750600760149054906101000a900460ff16155b80156127a05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127ac5750600081115b156127ba576127b9612be8565b5b6127d0848483856127cb9190613a51565b612dec565b60008111156127e5576127e4843083612dec565b5b50505050565b6000600267ffffffffffffffff8111156128085761280761358e565b5b6040519080825280602002602001820160405280156128365781602001602082028036833780820191505090505b509050308160008151811061284e5761284d613ca8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129199190614153565b8160018151811061292d5761292c613ca8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061299430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f56565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129f8959493929190614279565b600060405180830381600087803b158015612a1257600080fd5b505af1158015612a26573d6000803e3d6000fd5b505050505050565b80471015612a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a689061431f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a9790614370565b60006040518083038185875af1925050503d8060008114612ad4576040519150601f19603f3d011682016040523d82523d6000602084013e612ad9565b606091505b5050905080612b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b14906143f7565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612dea576001600760146101000a81548160ff0219169083151502179055506000612c2230611255565b9050600a548110612dcd5760006002601654612c3e9190613a85565b905060008160126001015484612c549190613a85565b612c5e9190613b0e565b905060008184612c6e9190613a51565b90506000479050612c7e826127eb565b60008147612c8c9190613a51565b9050600060126001015486612ca19190613a51565b82612cac9190613b0e565b9050600060126001015482612cc19190613a85565b90506000811115612cd757612cd6868261306b565b5b6000601260000154600284612cec9190613a85565b612cf69190613a85565b90506000811115612d4d57612d4c81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b5b6000601260020154600285612d629190613a85565b612d6c9190613a85565b90506000811115612dc357612dc281600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5390614489565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec39061451b565b60405180910390fd5b612ed783838361316b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f54906145ad565b60405180910390fd5b8181612f699190613a51565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ff99190613969565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161305d9190613189565b60405180910390a350505050565b61309830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f56565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613121969594939291906145cd565b60606040518083038185885af115801561313f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131649190614643565b5050505050565b505050565b6000819050919050565b61318381613170565b82525050565b600060208201905061319e600083018461317a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131de5780820151818401526020810190506131c3565b838111156131ed576000848401525b50505050565b6000601f19601f8301169050919050565b600061320f826131a4565b61321981856131af565b93506132298185602086016131c0565b613232816131f3565b840191505092915050565b600060208201905081810360008301526132578184613204565b905092915050565b6000604051905090565b600080fd5b600080fd5b61327c81613170565b811461328757600080fd5b50565b60008135905061329981613273565b92915050565b6000806000606084860312156132b8576132b7613269565b5b60006132c68682870161328a565b93505060206132d78682870161328a565b92505060406132e88682870161328a565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061331d826132f2565b9050919050565b61332d81613312565b811461333857600080fd5b50565b60008135905061334a81613324565b92915050565b6000806040838503121561336757613366613269565b5b60006133758582860161333b565b92505060206133868582860161328a565b9150509250929050565b60008115159050919050565b6133a581613390565b82525050565b60006020820190506133c0600083018461339c565b92915050565b6000806000606084860312156133df576133de613269565b5b60006133ed8682870161333b565b93505060206133fe8682870161333b565b925050604061340f8682870161328a565b9150509250925092565b600060ff82169050919050565b61342f81613419565b82525050565b600060208201905061344a6000830184613426565b92915050565b600061345b82613312565b9050919050565b61346b81613450565b811461347657600080fd5b50565b60008135905061348881613462565b92915050565b600080604083850312156134a5576134a4613269565b5b60006134b385828601613479565b92505060206134c48582860161333b565b9150509250929050565b6000602082840312156134e4576134e3613269565b5b60006134f28482850161328a565b91505092915050565b60006020828403121561351157613510613269565b5b600061351f8482850161333b565b91505092915050565b600060608201905061353d600083018661317a565b61354a602083018561317a565b613557604083018461317a565b949350505050565b61356881613312565b82525050565b6000602082019050613583600083018461355f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135c6826131f3565b810181811067ffffffffffffffff821117156135e5576135e461358e565b5b80604052505050565b60006135f861325f565b905061360482826135bd565b919050565b600067ffffffffffffffff8211156136245761362361358e565b5b602082029050602081019050919050565b600080fd5b600061364d61364884613609565b6135ee565b905080838252602082019050602084028301858111156136705761366f613635565b5b835b818110156136995780613685888261333b565b845260208401935050602081019050613672565b5050509392505050565b600082601f8301126136b8576136b7613589565b5b81356136c884826020860161363a565b91505092915050565b6000602082840312156136e7576136e6613269565b5b600082013567ffffffffffffffff8111156137055761370461326e565b5b613711848285016136a3565b91505092915050565b6000806040838503121561373157613730613269565b5b600061373f8582860161333b565b92505060206137508582860161333b565b9150509250929050565b61376381613390565b811461376e57600080fd5b50565b6000813590506137808161375a565b92915050565b60006020828403121561379c5761379b613269565b5b60006137aa84828501613771565b91505092915050565b600080604083850312156137ca576137c9613269565b5b60006137d88582860161333b565b92505060206137e985828601613771565b9150509250929050565b6000819050919050565b600061381861381361380e846132f2565b6137f3565b6132f2565b9050919050565b600061382a826137fd565b9050919050565b600061383c8261381f565b9050919050565b61384c81613831565b82525050565b60006020820190506138676000830184613843565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138b457607f821691505b602082108114156138c8576138c761386d565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139046020836131af565b915061390f826138ce565b602082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061397482613170565b915061397f83613170565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139b4576139b361393a565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a1b6028836131af565b9150613a26826139bf565b604082019050919050565b60006020820190508181036000830152613a4a81613a0e565b9050919050565b6000613a5c82613170565b9150613a6783613170565b925082821015613a7a57613a7961393a565b5b828203905092915050565b6000613a9082613170565b9150613a9b83613170565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ad457613ad361393a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b1982613170565b9150613b2483613170565b925082613b3457613b33613adf565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613b756016836131af565b9150613b8082613b3f565b602082019050919050565b60006020820190508181036000830152613ba481613b68565b9050919050565b6000604082019050613bc0600083018561355f565b613bcd602083018461317a565b9392505050565b600081519050613be38161375a565b92915050565b600060208284031215613bff57613bfe613269565b5b6000613c0d84828501613bd4565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c726025836131af565b9150613c7d82613c16565b604082019050919050565b60006020820190508181036000830152613ca181613c65565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ce282613170565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d1557613d1461393a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d7c6026836131af565b9150613d8782613d20565b604082019050919050565b60006020820190508181036000830152613dab81613d6f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e0e6024836131af565b9150613e1982613db2565b604082019050919050565b60006020820190508181036000830152613e3d81613e01565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ea06022836131af565b9150613eab82613e44565b604082019050919050565b60006020820190508181036000830152613ecf81613e93565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613f326029836131af565b9150613f3d82613ed6565b604082019050919050565b60006020820190508181036000830152613f6181613f25565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613f9e6019836131af565b9150613fa982613f68565b602082019050919050565b60006020820190508181036000830152613fcd81613f91565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b600061400a6016836131af565b915061401582613fd4565b602082019050919050565b6000602082019050818103600083015261403981613ffd565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000614076601d836131af565b915061408182614040565b602082019050919050565b600060208201905081810360008301526140a581614069565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006141086021836131af565b9150614113826140ac565b604082019050919050565b60006020820190508181036000830152614137816140fb565b9050919050565b60008151905061414d81613324565b92915050565b60006020828403121561416957614168613269565b5b60006141778482850161413e565b91505092915050565b6000819050919050565b60006141a56141a061419b84614180565b6137f3565b613170565b9050919050565b6141b58161418a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141f081613312565b82525050565b600061420283836141e7565b60208301905092915050565b6000602082019050919050565b6000614226826141bb565b61423081856141c6565b935061423b836141d7565b8060005b8381101561426c57815161425388826141f6565b975061425e8361420e565b92505060018101905061423f565b5085935050505092915050565b600060a08201905061428e600083018861317a565b61429b60208301876141ac565b81810360408301526142ad818661421b565b90506142bc606083018561355f565b6142c9608083018461317a565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614309601d836131af565b9150614314826142d3565b602082019050919050565b60006020820190508181036000830152614338816142fc565b9050919050565b600081905092915050565b50565b600061435a60008361433f565b91506143658261434a565b600082019050919050565b600061437b8261434d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006143e1603a836131af565b91506143ec82614385565b604082019050919050565b60006020820190508181036000830152614410816143d4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006144736025836131af565b915061447e82614417565b604082019050919050565b600060208201905081810360008301526144a281614466565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145056023836131af565b9150614510826144a9565b604082019050919050565b60006020820190508181036000830152614534816144f8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145976026836131af565b91506145a28261453b565b604082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b600060c0820190506145e2600083018961355f565b6145ef602083018861317a565b6145fc60408301876141ac565b61460960608301866141ac565b614616608083018561355f565b61462360a083018461317a565b979650505050505050565b60008151905061463d81613273565b92915050565b60008060006060848603121561465c5761465b613269565b5b600061466a8682870161462e565b935050602061467b8682870161462e565b925050604061468c8682870161462e565b915050925092509256fea2646970667358221220efc7ac79d5e40793e9d335a075137982c884c8abb209f08244b8273312eaf7a864736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102c65760003560e01c806382aa7c681161017f578063a9059cbb116100e1578063dd62ed3e1161008a578063f2fde38b11610064578063f2fde38b14610a40578063f66895a314610a69578063f887ea4014610a96576102cd565b8063dd62ed3e146109b1578063e01af92c146109ee578063e545fd6d14610a17576102cd565b8063c18bc195116100bb578063c18bc19514610922578063d34628cc1461094b578063dbe66ca014610974576102cd565b8063a9059cbb14610891578063aa4bde28146108ce578063aacebbe3146108f9576102cd565b806395d89b41116101435780639f55efb91161011d5780639f55efb914610800578063a457c2d714610829578063a8aa1b3114610866576102cd565b806395d89b41146107835780639d0014b1146107ae5780639e252f00146107d7576102cd565b806382aa7c68146106b05780638c0b5e22146106d95780638cd4426d146107045780638da5cb5b1461072d5780638ea5220f14610758576102cd565b8063313ce567116102285780636256d181116101ec578063715018a6116101c6578063715018a614610641578063728f8eea1461065857806375f0a87414610685576102cd565b80636256d181146105b05780636ddd1713146105d957806370a0823114610604576102cd565b8063313ce567146104c957806339509351146104f457806340b28c2f146105315780634ada218b1461055a57806350c9a88f14610585576102cd565b80631870517a1161028a57806326b5d32f1161026457806326b5d32f1461044a578063274a533c14610473578063293b7ef41461049e576102cd565b80631870517a146103b95780632253163d146103e257806323b872dd1461040d576102cd565b80630445b667146102d257806306fdde03146102fd5780630873321414610328578063095ea7b31461035157806318160ddd1461038e576102cd565b366102cd57005b600080fd5b3480156102de57600080fd5b506102e7610ac1565b6040516102f49190613189565b60405180910390f35b34801561030957600080fd5b50610312610ac7565b60405161031f919061323d565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a919061329f565b610b59565b005b34801561035d57600080fd5b5061037860048036038101906103739190613350565b610c35565b60405161038591906133ab565b60405180910390f35b34801561039a57600080fd5b506103a3610c53565b6040516103b09190613189565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db919061329f565b610c5d565b005b3480156103ee57600080fd5b506103f7610d39565b6040516104049190613189565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f91906133c6565b610d3f565b60405161044191906133ab565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c919061329f565b610e40565b005b34801561047f57600080fd5b50610488610fcd565b6040516104959190613189565b60405180910390f35b3480156104aa57600080fd5b506104b3610fd3565b6040516104c09190613189565b60405180910390f35b3480156104d557600080fd5b506104de610fd9565b6040516104eb9190613435565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190613350565b610fe2565b60405161052891906133ab565b60405180910390f35b34801561053d57600080fd5b506105586004803603810190610553919061348e565b61108e565b005b34801561056657600080fd5b5061056f611190565b60405161057c91906133ab565b60405180910390f35b34801561059157600080fd5b5061059a6111a3565b6040516105a79190613189565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d291906134ce565b6111a9565b005b3480156105e557600080fd5b506105ee611242565b6040516105fb91906133ab565b60405180910390f35b34801561061057600080fd5b5061062b600480360381019061062691906134fb565b611255565b6040516106389190613189565b60405180910390f35b34801561064d57600080fd5b5061065661129d565b005b34801561066457600080fd5b5061066d611325565b60405161067c93929190613528565b60405180910390f35b34801561069157600080fd5b5061069a61133d565b6040516106a7919061356e565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d291906134ce565b611363565b005b3480156106e557600080fd5b506106ee611476565b6040516106fb9190613189565b60405180910390f35b34801561071057600080fd5b5061072b60048036038101906107269190613350565b61147c565b005b34801561073957600080fd5b50610742611582565b60405161074f919061356e565b60405180910390f35b34801561076457600080fd5b5061076d6115ac565b60405161077a919061356e565b60405180910390f35b34801561078f57600080fd5b506107986115d2565b6040516107a5919061323d565b60405180910390f35b3480156107ba57600080fd5b506107d560048036038101906107d091906134ce565b611664565b005b3480156107e357600080fd5b506107fe60048036038101906107f991906134ce565b6116ea565b005b34801561080c57600080fd5b50610827600480360381019061082291906134fb565b611799565b005b34801561083557600080fd5b50610850600480360381019061084b9190613350565b611859565b60405161085d91906133ab565b60405180910390f35b34801561087257600080fd5b5061087b61194d565b604051610888919061356e565b60405180910390f35b34801561089d57600080fd5b506108b860048036038101906108b39190613350565b611973565b6040516108c591906133ab565b60405180910390f35b3480156108da57600080fd5b506108e3611991565b6040516108f09190613189565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b91906134fb565b611997565b005b34801561092e57600080fd5b50610949600480360381019061094491906134ce565b611a57565b005b34801561095757600080fd5b50610972600480360381019061096d91906136d1565b611af0565b005b34801561098057600080fd5b5061099b600480360381019061099691906134fb565b611c01565b6040516109a891906133ab565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d3919061371a565b611c21565b6040516109e59190613189565b60405180910390f35b3480156109fa57600080fd5b50610a156004803603810190610a109190613786565b611ca8565b005b348015610a2357600080fd5b50610a3e6004803603810190610a3991906137b3565b611d41565b005b348015610a4c57600080fd5b50610a676004803603810190610a6291906134fb565b611e18565b005b348015610a7557600080fd5b50610a7e611f10565b604051610a8d93929190613528565b60405180910390f35b348015610aa257600080fd5b50610aab611f28565b604051610ab89190613852565b60405180910390f35b600a5481565b606060038054610ad69061389c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b029061389c565b8015610b4f5780601f10610b2457610100808354040283529160200191610b4f565b820191906000526020600020905b815481529060010190602001808311610b3257829003601f168201915b5050505050905090565b610b61611f4e565b73ffffffffffffffffffffffffffffffffffffffff16610b7f611582565b73ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc9061391a565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610c209190613969565b610c2a9190613969565b601681905550505050565b6000610c49610c42611f4e565b8484611f56565b6001905092915050565b6000600254905090565b610c65611f4e565b73ffffffffffffffffffffffffffffffffffffffff16610c83611582565b73ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd09061391a565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284610d249190613969565b610d2e9190613969565b601581905550505050565b60165481565b6000610d4c848484612121565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d97611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90613a31565b60405180910390fd5b610e3485610e23611f4e565b8584610e2f9190613a51565b611f56565b60019150509392505050565b610e48611f4e565b73ffffffffffffffffffffffffffffffffffffffff16610e66611582565b73ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb39061391a565b60405180910390fd5b6000479050610eca846127eb565b60008147610ed89190613a51565b90506000831115610f5057610f4f8385610ef29190613969565b8483610efe9190613a85565b610f089190613b0e565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b5b6000841115610fc657610fc58385610f689190613969565b8583610f749190613a85565b610f7e9190613b0e565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b6000611084610fef611f4e565b848460016000610ffd611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461107f9190613969565b611f56565b6001905092915050565b611096611f4e565b73ffffffffffffffffffffffffffffffffffffffff166110b4611582565b73ffffffffffffffffffffffffffffffffffffffff161461110a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111019061391a565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b6111b1611f4e565b73ffffffffffffffffffffffffffffffffffffffff166111cf611582565b73ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c9061391a565b60405180910390fd5b670de0b6b3a7640000816112399190613a85565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112a5611f4e565b73ffffffffffffffffffffffffffffffffffffffff166112c3611582565b73ffffffffffffffffffffffffffffffffffffffff1614611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113109061391a565b60405180910390fd5b6113236000612b22565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61136b611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611389611582565b73ffffffffffffffffffffffffffffffffffffffff16146113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061391a565b60405180910390fd5b600760169054906101000a900460ff161561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690613b8b565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611484611f4e565b73ffffffffffffffffffffffffffffffffffffffff166114a2611582565b73ffffffffffffffffffffffffffffffffffffffff16146114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef9061391a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61151c611582565b836040518363ffffffff1660e01b815260040161153a929190613bab565b6020604051808303816000875af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190613be9565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115e19061389c565b80601f016020809104026020016040519081016040528092919081815260200182805461160d9061389c565b801561165a5780601f1061162f5761010080835404028352916020019161165a565b820191906000526020600020905b81548152906001019060200180831161163d57829003601f168201915b5050505050905090565b61166c611f4e565b73ffffffffffffffffffffffffffffffffffffffff1661168a611582565b73ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d79061391a565b60405180910390fd5b80600a8190555050565b6116f2611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611710611582565b73ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061391a565b60405180910390fd5b61179681611772611582565b73ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b50565b6117a1611f4e565b73ffffffffffffffffffffffffffffffffffffffff166117bf611582565b73ffffffffffffffffffffffffffffffffffffffff1614611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9061391a565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060016000611868611f4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c90613c88565b60405180910390fd5b611942611930611f4e565b85858461193d9190613a51565b611f56565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611987611980611f4e565b8484612121565b6001905092915050565b600c5481565b61199f611f4e565b73ffffffffffffffffffffffffffffffffffffffff166119bd611582565b73ffffffffffffffffffffffffffffffffffffffff1614611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061391a565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a5f611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611a7d611582565b73ffffffffffffffffffffffffffffffffffffffff1614611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca9061391a565b60405180910390fd5b670de0b6b3a764000081611ae79190613a85565b600c8190555050565b611af8611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611b16611582565b73ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b639061391a565b60405180910390fd5b60005b8151811015611bfd57600160186000848481518110611b9157611b90613ca8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bf590613cd7565b915050611b6f565b5050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611cb0611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611cce611582565b73ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b9061391a565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611d49611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611d67611582565b73ffffffffffffffffffffffffffffffffffffffff1614611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db49061391a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e20611f4e565b73ffffffffffffffffffffffffffffffffffffffff16611e3e611582565b73ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b9061391a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb90613d92565b60405180910390fd5b611f0d81612b22565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90613e24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202d90613eb6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121149190613189565b60405180910390a3505050565b60008111612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613f48565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122085750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223e90613fb4565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122eb5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123045750600760149054906101000a900460ff16155b156125c057600760169054906101000a900460ff16612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f90614020565b60405180910390fd5b436009546008546123699190613969565b11156124cc57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461241d576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146124cb576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b54811115612511576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125089061408c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125bf57600c548161257384611255565b61257d9190613969565b11156125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b59061411e565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806126265750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061267a5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612688576000905061271d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126ff576064601654836126ee9190613a85565b6126f89190613b0e565b905061271c565b60646015548361270f9190613a85565b6127199190613b0e565b90505b5b600760159054906101000a900460ff1680156127465750600760149054906101000a900460ff16155b80156127a05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127ac5750600081115b156127ba576127b9612be8565b5b6127d0848483856127cb9190613a51565b612dec565b60008111156127e5576127e4843083612dec565b5b50505050565b6000600267ffffffffffffffff8111156128085761280761358e565b5b6040519080825280602002602001820160405280156128365781602001602082028036833780820191505090505b509050308160008151811061284e5761284d613ca8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129199190614153565b8160018151811061292d5761292c613ca8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061299430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f56565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129f8959493929190614279565b600060405180830381600087803b158015612a1257600080fd5b505af1158015612a26573d6000803e3d6000fd5b505050505050565b80471015612a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a689061431f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a9790614370565b60006040518083038185875af1925050503d8060008114612ad4576040519150601f19603f3d011682016040523d82523d6000602084013e612ad9565b606091505b5050905080612b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b14906143f7565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612dea576001600760146101000a81548160ff0219169083151502179055506000612c2230611255565b9050600a548110612dcd5760006002601654612c3e9190613a85565b905060008160126001015484612c549190613a85565b612c5e9190613b0e565b905060008184612c6e9190613a51565b90506000479050612c7e826127eb565b60008147612c8c9190613a51565b9050600060126001015486612ca19190613a51565b82612cac9190613b0e565b9050600060126001015482612cc19190613a85565b90506000811115612cd757612cd6868261306b565b5b6000601260000154600284612cec9190613a85565b612cf69190613a85565b90506000811115612d4d57612d4c81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b5b6000601260020154600285612d629190613a85565b612d6c9190613a85565b90506000811115612dc357612dc281600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a2e90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5390614489565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec39061451b565b60405180910390fd5b612ed783838361316b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f54906145ad565b60405180910390fd5b8181612f699190613a51565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ff99190613969565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161305d9190613189565b60405180910390a350505050565b61309830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f56565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613121969594939291906145cd565b60606040518083038185885af115801561313f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131649190614643565b5050505050565b505050565b6000819050919050565b61318381613170565b82525050565b600060208201905061319e600083018461317a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131de5780820151818401526020810190506131c3565b838111156131ed576000848401525b50505050565b6000601f19601f8301169050919050565b600061320f826131a4565b61321981856131af565b93506132298185602086016131c0565b613232816131f3565b840191505092915050565b600060208201905081810360008301526132578184613204565b905092915050565b6000604051905090565b600080fd5b600080fd5b61327c81613170565b811461328757600080fd5b50565b60008135905061329981613273565b92915050565b6000806000606084860312156132b8576132b7613269565b5b60006132c68682870161328a565b93505060206132d78682870161328a565b92505060406132e88682870161328a565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061331d826132f2565b9050919050565b61332d81613312565b811461333857600080fd5b50565b60008135905061334a81613324565b92915050565b6000806040838503121561336757613366613269565b5b60006133758582860161333b565b92505060206133868582860161328a565b9150509250929050565b60008115159050919050565b6133a581613390565b82525050565b60006020820190506133c0600083018461339c565b92915050565b6000806000606084860312156133df576133de613269565b5b60006133ed8682870161333b565b93505060206133fe8682870161333b565b925050604061340f8682870161328a565b9150509250925092565b600060ff82169050919050565b61342f81613419565b82525050565b600060208201905061344a6000830184613426565b92915050565b600061345b82613312565b9050919050565b61346b81613450565b811461347657600080fd5b50565b60008135905061348881613462565b92915050565b600080604083850312156134a5576134a4613269565b5b60006134b385828601613479565b92505060206134c48582860161333b565b9150509250929050565b6000602082840312156134e4576134e3613269565b5b60006134f28482850161328a565b91505092915050565b60006020828403121561351157613510613269565b5b600061351f8482850161333b565b91505092915050565b600060608201905061353d600083018661317a565b61354a602083018561317a565b613557604083018461317a565b949350505050565b61356881613312565b82525050565b6000602082019050613583600083018461355f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6135c6826131f3565b810181811067ffffffffffffffff821117156135e5576135e461358e565b5b80604052505050565b60006135f861325f565b905061360482826135bd565b919050565b600067ffffffffffffffff8211156136245761362361358e565b5b602082029050602081019050919050565b600080fd5b600061364d61364884613609565b6135ee565b905080838252602082019050602084028301858111156136705761366f613635565b5b835b818110156136995780613685888261333b565b845260208401935050602081019050613672565b5050509392505050565b600082601f8301126136b8576136b7613589565b5b81356136c884826020860161363a565b91505092915050565b6000602082840312156136e7576136e6613269565b5b600082013567ffffffffffffffff8111156137055761370461326e565b5b613711848285016136a3565b91505092915050565b6000806040838503121561373157613730613269565b5b600061373f8582860161333b565b92505060206137508582860161333b565b9150509250929050565b61376381613390565b811461376e57600080fd5b50565b6000813590506137808161375a565b92915050565b60006020828403121561379c5761379b613269565b5b60006137aa84828501613771565b91505092915050565b600080604083850312156137ca576137c9613269565b5b60006137d88582860161333b565b92505060206137e985828601613771565b9150509250929050565b6000819050919050565b600061381861381361380e846132f2565b6137f3565b6132f2565b9050919050565b600061382a826137fd565b9050919050565b600061383c8261381f565b9050919050565b61384c81613831565b82525050565b60006020820190506138676000830184613843565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806138b457607f821691505b602082108114156138c8576138c761386d565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139046020836131af565b915061390f826138ce565b602082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061397482613170565b915061397f83613170565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139b4576139b361393a565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a1b6028836131af565b9150613a26826139bf565b604082019050919050565b60006020820190508181036000830152613a4a81613a0e565b9050919050565b6000613a5c82613170565b9150613a6783613170565b925082821015613a7a57613a7961393a565b5b828203905092915050565b6000613a9082613170565b9150613a9b83613170565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ad457613ad361393a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b1982613170565b9150613b2483613170565b925082613b3457613b33613adf565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613b756016836131af565b9150613b8082613b3f565b602082019050919050565b60006020820190508181036000830152613ba481613b68565b9050919050565b6000604082019050613bc0600083018561355f565b613bcd602083018461317a565b9392505050565b600081519050613be38161375a565b92915050565b600060208284031215613bff57613bfe613269565b5b6000613c0d84828501613bd4565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c726025836131af565b9150613c7d82613c16565b604082019050919050565b60006020820190508181036000830152613ca181613c65565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ce282613170565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d1557613d1461393a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d7c6026836131af565b9150613d8782613d20565b604082019050919050565b60006020820190508181036000830152613dab81613d6f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e0e6024836131af565b9150613e1982613db2565b604082019050919050565b60006020820190508181036000830152613e3d81613e01565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ea06022836131af565b9150613eab82613e44565b604082019050919050565b60006020820190508181036000830152613ecf81613e93565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613f326029836131af565b9150613f3d82613ed6565b604082019050919050565b60006020820190508181036000830152613f6181613f25565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613f9e6019836131af565b9150613fa982613f68565b602082019050919050565b60006020820190508181036000830152613fcd81613f91565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b600061400a6016836131af565b915061401582613fd4565b602082019050919050565b6000602082019050818103600083015261403981613ffd565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000614076601d836131af565b915061408182614040565b602082019050919050565b600060208201905081810360008301526140a581614069565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006141086021836131af565b9150614113826140ac565b604082019050919050565b60006020820190508181036000830152614137816140fb565b9050919050565b60008151905061414d81613324565b92915050565b60006020828403121561416957614168613269565b5b60006141778482850161413e565b91505092915050565b6000819050919050565b60006141a56141a061419b84614180565b6137f3565b613170565b9050919050565b6141b58161418a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141f081613312565b82525050565b600061420283836141e7565b60208301905092915050565b6000602082019050919050565b6000614226826141bb565b61423081856141c6565b935061423b836141d7565b8060005b8381101561426c57815161425388826141f6565b975061425e8361420e565b92505060018101905061423f565b5085935050505092915050565b600060a08201905061428e600083018861317a565b61429b60208301876141ac565b81810360408301526142ad818661421b565b90506142bc606083018561355f565b6142c9608083018461317a565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614309601d836131af565b9150614314826142d3565b602082019050919050565b60006020820190508181036000830152614338816142fc565b9050919050565b600081905092915050565b50565b600061435a60008361433f565b91506143658261434a565b600082019050919050565b600061437b8261434d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006143e1603a836131af565b91506143ec82614385565b604082019050919050565b60006020820190508181036000830152614410816143d4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006144736025836131af565b915061447e82614417565b604082019050919050565b600060208201905081810360008301526144a281614466565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145056023836131af565b9150614510826144a9565b604082019050919050565b60006020820190508181036000830152614534816144f8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145976026836131af565b91506145a28261453b565b604082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b600060c0820190506145e2600083018961355f565b6145ef602083018861317a565b6145fc60408301876141ac565b61460960608301866141ac565b614616608083018561355f565b61462360a083018461317a565b979650505050505050565b60008151905061463d81613273565b92915050565b60008060006060848603121561465c5761465b613269565b5b600061466a8682870161462e565b935050602061467b8682870161462e565b925050604061468c8682870161462e565b915050925092509256fea2646970667358221220efc7ac79d5e40793e9d335a075137982c884c8abb209f08244b8273312eaf7a864736f6c634300080c0033

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.