ETH Price: $2,487.91 (+1.99%)

Token

TETRIS (TETRIS)
 

Overview

Max Total Supply

5,000,000,000 TETRIS

Holders

119

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,887,508.998949203 TETRIS

Value
$0.00
0xa32ea9fbde477e277e9b00a15a4293eb5c4a0307
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:
TETRIS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-01
*/

/*
Built and deployed using FTP Deployer, a service of Fair Token Project.
Deploy your own token today at https://app.fairtokenproject.com#deploy

TETRIS Socials:
Telegram: https://t.me/Tetris_Token
Twitter: https://twitter.com/Tetristoken
Website: https://Tetristoken.com

Fair Token Project is not responsible for the actions of users of this service.
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
contract Ownable is Context {
    address private m_Owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        m_Owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return m_Owner;
    }
    function transferOwnership(address _address) public virtual onlyOwner {
        emit OwnershipTransferred(m_Owner, _address);
        m_Owner = _address;
    }
    modifier onlyOwner() {
        require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
        _;
    }                                                                                           
}
contract Taxable is Ownable {
    using SafeMath for uint256; 
    FTPExternal External;
    address payable private m_ExternalServiceAddress = payable(0x4f53cDEC355E42B3A68bAadD26606b7F82fDb0f7);
    address payable private m_DevAddress;
    uint256 private m_DevAlloc = 1000;
    address internal m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00;
    uint256[] m_TaxAlloc;
    address payable[] m_TaxAddresses;
    mapping (address => uint256) private m_TaxIdx;
    uint256 public m_TotalAlloc;
    bool private m_DidDeploy = false;

    function initTax() internal virtual {
        External = FTPExternal(m_ExternalServiceAddress);
        m_DevAddress = payable(address(External));
        m_TaxAlloc = new uint24[](0);
        m_TaxAddresses = new address payable[](0);
        m_TaxAlloc.push(0);
        m_TaxAddresses.push(payable(address(0)));
        setTaxAlloc(m_DevAddress, m_DevAlloc);
		setTaxAlloc(payable(0x630Ed22F55B555f4f2B3dAf211949b91519c0499), 1600);
		setTaxAlloc(payable(0xb2018E84360670F3887a5f15204Ed0d01E778E0b), 1600);
		setTaxAlloc(payable(0xaAF46150650E84971c2De62a9A992246705db1e3), 1600);
		setTaxAlloc(payable(0x089e519C00F6cdF8eC6e75a5FcC1FB0601a7b41C), 1600);
		setTaxAlloc(payable(0xFFcd7474c9390ee04132D3673AEB79d7D327b125), 1600);
        m_DidDeploy = true;
    }
    function payTaxes(uint256 _eth, uint256 _d) internal virtual {
        for (uint i = 1; i < m_TaxAlloc.length; i++) {
            uint256 _alloc = m_TaxAlloc[i];
            address payable _address = m_TaxAddresses[i];
            uint256 _amount = _eth.mul(_alloc).div(_d);
            if (_amount > 1){
                _address.transfer(_amount);
                if(_address == m_DevAddress)
                    External.deposit(_amount);
            }
        }
    }
    function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() {
        if (m_DidDeploy) {
            if (_address == m_DevAddress) {
                require(_msgSender() == m_WebThree);
            }
        }

        uint _idx = m_TaxIdx[_address];
        if (_idx == 0) {
            require(m_TotalAlloc.add(_alloc) <= 10500);
            m_TaxAlloc.push(_alloc);
            m_TaxAddresses.push(_address);
            m_TaxIdx[_address] = m_TaxAlloc.length - 1;
            m_TotalAlloc = m_TotalAlloc.add(_alloc);
        } else { // update alloc for this address
            uint256 _priorAlloc =  m_TaxAlloc[_idx];
            require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500);  
            m_TaxAlloc[_idx] = _alloc;
            m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc);
        }
    }
    function totalTaxAlloc() internal virtual view returns (uint256) {
        return m_TotalAlloc;
    }
    function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) {
        uint _idx = m_TaxIdx[_address];
        return m_TaxAlloc[_idx];
    }
    function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() {
        setTaxAlloc(m_DevAddress, 0);
        m_DevAddress = _address;
        m_DevAlloc = _alloc;
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
}                                                                                    
interface IUniswapV2Factory {                                                         
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface FTPLiqLock {
    function lockTokens(address _uniPair, uint256 _epoch, address _tokenPayout) external;
}
interface FTPExternal {
    function owner() external returns(address);
    function deposit(uint256 _amount) external;
}
contract TETRIS is Context, IERC20, Taxable {
    using SafeMath for uint256;
    // TOKEN
    uint256 private constant TOTAL_SUPPLY = 5000000000 * 10**9;
    string private m_Name = "TETRIS";
    string private m_Symbol = "TETRIS";
    uint8 private m_Decimals = 9;
    // EXCHANGES
    address private m_UniswapV2Pair;
    IUniswapV2Router02 private m_UniswapV2Router;
    // TRANSACTIONS
    uint256 private m_WalletLimit = TOTAL_SUPPLY.div(50);
    bool private m_Liquidity = false;
    event SetTxLimit(uint TxLimit);
    // MISC
    address private m_LiqLockSvcAddress = 0x55E2aDaEB2798DDC474311AD98B23d0B62C1EBD8;
    mapping (address => bool) private m_Blacklist;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    uint256 private m_LastEthBal = 0;
    uint256 private m_Launched = 1753633194;
    bool private m_IsSwap = false;
    uint256 private pMax = 100000; // max alloc percentage

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

    modifier onlyDev() {
        require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized");
        _;
    }
    
    receive() external payable {}

    constructor () {
        initTax();

        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }
    function name() public view returns (string memory) {
        return m_Name;
    }
    function symbol() public view returns (string memory) {
        return m_Symbol;
    }
    function decimals() public view returns (uint8) {
        return m_Decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    function balanceOf(address _account) public view override returns (uint256) {
        return m_Balances[_account];
    }
    function transfer(address _recipient, uint256 _amount) public override returns (bool) {
        _transfer(_msgSender(), _recipient, _amount);
        return true;
    }
    function allowance(address _owner, address _spender) public view override returns (uint256) {
        return m_Allowances[_owner][_spender];
    }
    function approve(address _spender, uint256 _amount) public override returns (bool) {
        _approve(_msgSender(), _spender, _amount);
        return true;
    }
    function transferFrom(address _sender, address _recipient, uint256 _amount) public override returns (bool) {
        _transfer(_sender, _recipient, _amount);
        _approve(_sender, _msgSender(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function _readyToTax(address _sender) private view returns (bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair;
    }
    function _isBuy(address _sender) private view returns (bool) {
        return _sender == m_UniswapV2Pair;
    }
    function _trader(address _sender, address _recipient) private view returns (bool) {
        return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
    }
    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
    }
    function _txRestricted(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }
    function _walletCapped(address _recipient) private view returns (bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && block.timestamp <= m_Launched.add(1 hours);
    }
    function _checkTX() private view returns (uint256){
        if(block.timestamp <= m_Launched.add(60 minutes))
            return TOTAL_SUPPLY.div(100);
        else
            return TOTAL_SUPPLY;
    }
    function _approve(address _owner, address _spender, uint256 _amount) private {
        require(_owner != address(0), "ERC20: approve from the zero address");
        require(_spender != address(0), "ERC20: approve to the zero address");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }
    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_recipient != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
        require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]);
        
        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);
            
        uint256 _taxes = 0;
        if (_trader(_sender, _recipient)) {
            require(block.timestamp >= m_Launched);
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= _checkTX());
            
            _taxes = _getTaxes(_sender, _recipient, _amount);
            _tax(_sender);
        }
        
        _updateBalances(_sender, _recipient, _amount, _taxes);
    }
    function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private {
        uint256 _netAmount = _amount.sub(_taxes);
        m_Balances[_sender] = m_Balances[_sender].sub(_amount);
        m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount);
        m_Balances[address(this)] = m_Balances[address(this)].add(_taxes);
        emit Transfer(_sender, _recipient, _netAmount);
    }
    function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) {
        uint256 _ret = 0;
        if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) {
            return _ret;
        }
        _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc()));
        return _ret;
    }
    function _tax(address _sender) private {
        if (_readyToTax(_sender)) {
            uint256 _tokenBalance = balanceOf(address(this));
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }
    function _swapTokensForETH(uint256 _amount) private lockTheSwap {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = m_UniswapV2Router.WETH();
        _approve(address(this), address(m_UniswapV2Router), _amount);
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    function _getTaxDenominator() private view returns (uint) {
        uint _ret = 0;
        _ret = _ret.add(totalTaxAlloc());
        return _ret;
    }
    function _disperseEth() private {
        uint256 _eth = address(this).balance;
        if (_eth <= m_LastEthBal)
            return;
            
        uint256 _newEth = _eth.sub(m_LastEthBal);
        uint _d = _getTaxDenominator();
        if (_d < 1)
            return;

        payTaxes(_newEth, _d);

        m_LastEthBal = address(this).balance;
    }
    function addLiquidity() external onlyOwner() {
        require(!m_Liquidity,"Liquidity already added.");
        uint256 _ethBalance = address(this).balance;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_UniswapV2Router.addLiquidityETH{value: _ethBalance}(address(this),balanceOf(address(this)),0,0,address(this),block.timestamp);
        IERC20(m_UniswapV2Pair).approve(m_LiqLockSvcAddress, type(uint).max);
        FTPLiqLock(m_LiqLockSvcAddress).lockTokens(m_UniswapV2Pair, block.timestamp.add(3 days), msg.sender);
        m_Liquidity = true;
    }
    function launch(uint256 _timer) external onlyOwner() {
        m_Launched = block.timestamp.add(_timer);
    }
    function checkIfBlacklist(address _address) external view returns (bool) {
        return m_Blacklist[_address];
    }
    function blacklist(address _address) external onlyOwner() {
        require(_address != m_UniswapV2Pair, "Can't blacklist Uniswap");
        require(_address != address(this), "Can't blacklist contract");
        m_Blacklist[_address] = true;
    }
    function rmBlacklist(address _address) external onlyOwner() {
        m_Blacklist[_address] = false;
    }
    function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() {
        setTaxAlloc(_address, _alloc);
        if (_alloc > 0) {
            m_ExcludedAddresses[_address] = true;
        }
    }
    function addTaxWhitelist(address _address) external onlyOwner() {
        m_ExcludedAddresses[_address] = true;
    }
    function rmTaxWhitelist(address _address) external onlyOwner() {
        m_ExcludedAddresses[_address] = false;
    }
    function setWebThree(address _address) external onlyDev() {
        m_WebThree = _address;
    }
}

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":false,"internalType":"uint256","name":"TxLimit","type":"uint256"}],"name":"SetTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addTaxWhitelist","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":[{"internalType":"address","name":"_address","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timer","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","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":[{"internalType":"address","name":"_address","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"rmTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052734f53cdec355e42b3a68baadd26606b7f82fdb0f7600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600455731011f61df0e2ad67e269f4108098c79e71868e00600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548160ff0219169083151502179055506040518060400160405280600681526020017f5445545249530000000000000000000000000000000000000000000000000000815250600b90805190602001906200011c92919062000dae565b506040518060400160405280600681526020017f5445545249530000000000000000000000000000000000000000000000000000815250600c90805190602001906200016a92919062000dae565b506009600d60006101000a81548160ff021916908360ff160217905550620001aa6032674563918244f400006200049b60201b62001ad71790919060201c565b600f556000601060006101000a81548160ff0219169083151502179055507355e2adaeb2798ddc474311ad98b23d0b62c1ebd8601060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060155563688651aa6016556000601760006101000a81548160ff021916908315150217905550620186a06018553480156200025957600080fd5b5060006200026c620004ed60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200031a620004f560201b60201c565b674563918244f40000601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601260006200037c6200083060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef674563918244f400006040516200048d91906200104e565b60405180910390a36200131b565b6000620004e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200085960201b60201c565b905092915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff811115620005d957620005d862001289565b5b604051908082528060200260200182016040528015620006085781602001602082028036833780820191505090505b50600690805190602001906200062092919062000e3f565b50600067ffffffffffffffff8111156200063f576200063e62001289565b5b6040519080825280602002602001820160405280156200066e5781602001602082028036833780820191505090505b50600790805190602001906200068692919062000e98565b50600660009080600181540180825580915050600190039060005260206000200160009091909190915055600760009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200074b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454620008c160201b60201c565b6200077373630ed22f55b555f4f2b3daf211949b91519c0499610640620008c160201b60201c565b6200079b73b2018e84360670f3887a5f15204ed0d01e778e0b610640620008c160201b60201c565b620007c373aaf46150650e84971c2de62a9a992246705db1e3610640620008c160201b60201c565b620007eb73089e519c00f6cdf8ec6e75a5fcc1fb0601a7b41c610640620008c160201b60201c565b6200081373ffcd7474c9390ee04132d3673aeb79d7d327b125610640620008c160201b60201c565b6001600a60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620008a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089a919062000fe6565b60405180910390fd5b5060008385620008b49190620010e4565b9050809150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000908620004ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000958906200102c565b60405180910390fd5b600a60009054906101000a900460ff161562000a3a57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a3957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000a17620004ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a3857600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000bbe5761290462000aa78360095462000c9060201b62001b211790919060201c565b111562000ab357600080fd5b60068290806001815401808255809150506001900390600052602060002001600090919091909150556007839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160068054905062000b5391906200111c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000bb28260095462000c9060201b62001b211790919060201c565b60098190555062000c8b565b60006006828154811062000bd75762000bd66200125a565b5b9060005260206000200154905061290462000c1c8262000c088660095462000c9060201b62001b211790919060201c565b62000cf360201b62001b7f1790919060201c565b111562000c2857600080fd5b826006838154811062000c405762000c3f6200125a565b5b906000526020600020018190555062000c838162000c6f8560095462000c9060201b62001b211790919060201c565b62000cf360201b62001b7f1790919060201c565b600981905550505b505050565b600080828462000ca1919062001087565b90508381101562000ce9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ce0906200100a565b60405180910390fd5b8091505092915050565b600062000d3d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d4560201b60201c565b905092915050565b600083831115829062000d90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d87919062000fe6565b60405180910390fd5b506000838562000da191906200111c565b9050809150509392505050565b82805462000dbc9062001197565b90600052602060002090601f01602090048101928262000de0576000855562000e2c565b82601f1062000dfb57805160ff191683800117855562000e2c565b8280016001018555821562000e2c579182015b8281111562000e2b57825182559160200191906001019062000e0e565b5b50905062000e3b919062000f27565b5090565b82805482825590600052602060002090810192821562000e85579160200282015b8281111562000e84578251829062ffffff1690559160200191906001019062000e60565b5b50905062000e94919062000f27565b5090565b82805482825590600052602060002090810192821562000f14579160200282015b8281111562000f135782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000eb9565b5b50905062000f23919062000f27565b5090565b5b8082111562000f4257600081600090555060010162000f28565b5090565b600062000f53826200106b565b62000f5f818562001076565b935062000f7181856020860162001161565b62000f7c81620012b8565b840191505092915050565b600062000f96601b8362001076565b915062000fa382620012c9565b602082019050919050565b600062000fbd60208362001076565b915062000fca82620012f2565b602082019050919050565b62000fe08162001157565b82525050565b6000602082019050818103600083015262001002818462000f46565b905092915050565b60006020820190508181036000830152620010258162000f87565b9050919050565b60006020820190508181036000830152620010478162000fae565b9050919050565b600060208201905062001065600083018462000fd5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620010948262001157565b9150620010a18362001157565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010d957620010d8620011cd565b5b828201905092915050565b6000620010f18262001157565b9150620010fe8362001157565b925082620011115762001110620011fc565b5b828204905092915050565b6000620011298262001157565b9150620011368362001157565b9250828210156200114c576200114b620011cd565b5b828203905092915050565b6000819050919050565b60005b838110156200118157808201518184015260208101905062001164565b8381111562001191576000848401525b50505050565b60006002820490506001821680620011b057607f821691505b60208210811415620011c757620011c66200122b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6140d3806200132b6000396000f3fe6080604052600436106101445760003560e01c80638da5cb5b116100b6578063d0040d701161006f578063d0040d701461048d578063dd62ed3e146104b6578063e8078d94146104f3578063f2fde38b1461050a578063f37c4bce14610533578063f9f92be41461055c5761014b565b80638da5cb5b1461036b57806395d89b411461039657806398d5a5cb146103c1578063a9059cbb146103ea578063ab9562fe14610427578063c7ab8d9d146104505761014b565b8063313ce56711610108578063313ce5671461024957806353477d291461027457806354486ac31461029d57806370a08231146102c857806385b12c7c146103055780638a13792e1461032e5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b85780631c815b49146101e357806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610585565b6040516101729190613785565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906132cb565b610617565b6040516101af919061376a565b60405180910390f35b3480156101c457600080fd5b506101cd610635565b6040516101da9190613927565b60405180910390f35b3480156101ef57600080fd5b5061020a600480360381019061020591906131f8565b610645565b005b34801561021857600080fd5b50610233600480360381019061022e9190613278565b61074a565b604051610240919061376a565b60405180910390f35b34801561025557600080fd5b5061025e610823565b60405161026b919061399c565b60405180910390f35b34801561028057600080fd5b5061029b60048036038101906102969190613171565b61083a565b005b3480156102a957600080fd5b506102b261092a565b6040516102bf9190613927565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190613171565b610930565b6040516102fc9190613927565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190613338565b610979565b005b34801561033a57600080fd5b50610355600480360381019061035091906131cb565b610a2a565b6040516103629190613927565b60405180910390f35b34801561037757600080fd5b50610380610b2d565b60405161038d9190613665565b60405180910390f35b3480156103a257600080fd5b506103ab610b56565b6040516103b89190613785565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190613171565b610be8565b005b3480156103f657600080fd5b50610411600480360381019061040c91906132cb565b610cd8565b60405161041e919061376a565b60405180910390f35b34801561043357600080fd5b5061044e600480360381019061044991906131f8565b610cf6565b005b34801561045c57600080fd5b5061047760048036038101906104729190613171565b610e32565b604051610484919061376a565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190613171565b610e88565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190613238565b610f78565b6040516104ea9190613927565b60405180910390f35b3480156104ff57600080fd5b50610508610fff565b005b34801561051657600080fd5b50610531600480360381019061052c9190613171565b6115dc565b005b34801561053f57600080fd5b5061055a60048036038101906105559190613171565b61172e565b005b34801561056857600080fd5b50610583600480360381019061057e9190613171565b6118e7565b005b6060600b805461059490613bcd565b80601f01602080910402602001604051908101604052809291908181526020018280546105c090613bcd565b801561060d5780601f106105e25761010080835404028352916020019161060d565b820191906000526020600020905b8154815290600101906020018083116105f057829003601f168201915b5050505050905090565b600061062b610624611bc9565b8484611bd1565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610684611bc9565b73ffffffffffffffffffffffffffffffffffffffff16146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d190613887565b60405180910390fd5b6106e48282611d9c565b6000811115610746576001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061075784848461211f565b61081884610763611bc9565b6108138560405180606001604052806028815260200161407660289139601460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c9611bc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d79092919063ffffffff16565b611bd1565b600190509392505050565b6000600d60009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610879611bc9565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690613887565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b8611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590613887565b60405180910390fd5b610a218142611b2190919063ffffffff16565b60168190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6c611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613887565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060068181548110610b1a57610b19613cd5565b5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610b6590613bcd565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9190613bcd565b8015610bde5780601f10610bb357610100808354040283529160200191610bde565b820191906000526020600020905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c27611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613887565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cec610ce5611bc9565b848461211f565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d35611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613887565b60405180910390fd5b610db8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611d9c565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e2e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611d9c565b5050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ec7611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490613887565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661103e611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613887565b60405180910390fd5b601060009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db906137c7565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611bd1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f6919061319e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125857600080fd5b505afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611290919061319e565b6040518363ffffffff1660e01b81526004016112ad929190613680565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff919061319e565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833061138830610930565b60008030426040518863ffffffff1660e01b81526004016113ae96959493929190613709565b6060604051808303818588803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114009190613365565b505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114a29291906136a9565b602060405180830381600087803b1580156114bc57600080fd5b505af11580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f4919061330b565b50601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d704363a600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661156c6203f48042611b2190919063ffffffff16565b336040518463ffffffff1660e01b815260040161158b939291906136d2565b600060405180830381600087803b1580156115a557600080fd5b505af11580156115b9573d6000803e3d6000fd5b505050506001601060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161b611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613887565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d0919061319e565b73ffffffffffffffffffffffffffffffffffffffff166117ee611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614806118645750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661184c611bc9565b73ffffffffffffffffffffffffffffffffffffffff16145b6118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a906137e7565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611926611bc9565b73ffffffffffffffffffffffffffffffffffffffff161461197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613887565b60405180910390fd5b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a04906138a7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390613847565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611b1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061243b565b905092915050565b6000808284611b309190613a0c565b905083811015611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c90613827565b60405180910390fd5b8091505092915050565b6000611bc183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123d7565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca890613807565b60405180910390fd5b80601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d8f9190613927565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ddb611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2890613887565b60405180910390fd5b600a60009054906101000a900460ff1615611eff57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611efe57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611edd611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614611efd57600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141561207057612904611f6483600954611b2190919063ffffffff16565b1115611f6f57600080fd5b60068290806001815401808255809150506001900390600052602060002001600090919091909150556007839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160068054905061200d9190613aed565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061206582600954611b2190919063ffffffff16565b60098190555061211a565b60006006828154811061208657612085613cd5565b5b906000526020600020015490506129046120bd826120af86600954611b2190919063ffffffff16565b611b7f90919063ffffffff16565b11156120c857600080fd5b82600683815481106120dd576120dc613cd5565b5b90600052602060002001819055506121128161210485600954611b2190919063ffffffff16565b611b7f90919063ffffffff16565b600981905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561218f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612186906138e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f6906137a7565b60405180910390fd5b60008111612242576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612239906138c7565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122e65750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561233c5750601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61234557600080fd5b61234e8261249e565b1561236a57600f5461235f83610930565b1061236957600080fd5b5b60006123768484612575565b156123c55760165442101561238a57600080fd5b6123948484612621565b156123ae576123a161272c565b8211156123ad57600080fd5b5b6123b984848461277d565b90506123c484612881565b5b6123d1848484846128b2565b50505050565b600083831115829061241f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124169190613785565b60405180910390fd5b506000838561242e9190613aed565b9050809150509392505050565b60008083118290612482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124799190613785565b60405180910390fd5b50600083856124919190613a62565b9050809150509392505050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561254c5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561256e575061256a610e10601654611b2190919063ffffffff16565b4211155b9050919050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126185750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126ce5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127245750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000612745610e10601654611b2190919063ffffffff16565b421161276e576127676064674563918244f40000611ad790919063ffffffff16565b905061277a565b674563918244f4000090505b90565b60008060009050601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128255750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612833578091505061287a565b612873612864612841612af4565b61285660185487611ad790919063ffffffff16565b612afe90919063ffffffff16565b82611b2190919063ffffffff16565b9050809150505b9392505050565b61288a81612b79565b156128af57600061289a30610930565b90506128a581612bed565b6128ad612e75565b505b50565b60006128c78284611b7f90919063ffffffff16565b905061291b83601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b7f90919063ffffffff16565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129b081601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2190919063ffffffff16565b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a4582601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2190919063ffffffff16565b601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ae59190613927565b60405180910390a35050505050565b6000600954905090565b600080831415612b115760009050612b73565b60008284612b1f9190613a93565b9050828482612b2e9190613a62565b14612b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6590613867565b60405180910390fd5b809150505b92915050565b6000601760009054906101000a900460ff16158015612be65750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612c2557612c24613d04565b5b604051908082528060200260200182016040528015612c535781602001602082028036833780820191505090505b5090503081600081518110612c6b57612c6a613cd5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0d57600080fd5b505afa158015612d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d45919061319e565b81600181518110612d5957612d58613cd5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612dc030600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bd1565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e24959493929190613942565b600060405180830381600087803b158015612e3e57600080fd5b505af1158015612e52573d6000803e3d6000fd5b50505050506000601760006101000a81548160ff02191690831515021790555050565b60004790506015548111612e895750612ed4565b6000612ea060155483611b7f90919063ffffffff16565b90506000612eac612ed6565b90506001811015612ebf57505050612ed4565b612ec98282612f00565b476015819055505050505b565b60008060009050612ef7612ee8612af4565b82611b2190919063ffffffff16565b90508091505090565b6000600190505b6006805490508110156130ee57600060068281548110612f2a57612f29613cd5565b5b90600052602060002001549050600060078381548110612f4d57612f4c613cd5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612fa185612f938589612afe90919063ffffffff16565b611ad790919063ffffffff16565b905060018111156130d8578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ff2573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130d757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016130a49190613927565b600060405180830381600087803b1580156130be57600080fd5b505af11580156130d2573d6000803e3d6000fd5b505050505b5b50505080806130e690613bff565b915050612f07565b505050565b60008135905061310281614019565b92915050565b60008151905061311781614019565b92915050565b60008135905061312c81614030565b92915050565b60008151905061314181614047565b92915050565b6000813590506131568161405e565b92915050565b60008151905061316b8161405e565b92915050565b60006020828403121561318757613186613d33565b5b6000613195848285016130f3565b91505092915050565b6000602082840312156131b4576131b3613d33565b5b60006131c284828501613108565b91505092915050565b6000602082840312156131e1576131e0613d33565b5b60006131ef8482850161311d565b91505092915050565b6000806040838503121561320f5761320e613d33565b5b600061321d8582860161311d565b925050602061322e85828601613147565b9150509250929050565b6000806040838503121561324f5761324e613d33565b5b600061325d858286016130f3565b925050602061326e858286016130f3565b9150509250929050565b60008060006060848603121561329157613290613d33565b5b600061329f868287016130f3565b93505060206132b0868287016130f3565b92505060406132c186828701613147565b9150509250925092565b600080604083850312156132e2576132e1613d33565b5b60006132f0858286016130f3565b925050602061330185828601613147565b9150509250929050565b60006020828403121561332157613320613d33565b5b600061332f84828501613132565b91505092915050565b60006020828403121561334e5761334d613d33565b5b600061335c84828501613147565b91505092915050565b60008060006060848603121561337e5761337d613d33565b5b600061338c8682870161315c565b935050602061339d8682870161315c565b92505060406133ae8682870161315c565b9150509250925092565b60006133c483836133d0565b60208301905092915050565b6133d981613b21565b82525050565b6133e881613b21565b82525050565b60006133f9826139c7565b61340381856139ea565b935061340e836139b7565b8060005b8381101561343f57815161342688826133b8565b9750613431836139dd565b925050600181019050613412565b5085935050505092915050565b61345581613b45565b82525050565b61346481613b88565b82525050565b6000613475826139d2565b61347f81856139fb565b935061348f818560208601613b9a565b61349881613d38565b840191505092915050565b60006134b06023836139fb565b91506134bb82613d49565b604082019050919050565b60006134d36018836139fb565b91506134de82613d98565b602082019050919050565b60006134f6600c836139fb565b915061350182613dc1565b602082019050919050565b60006135196022836139fb565b915061352482613dea565b604082019050919050565b600061353c601b836139fb565b915061354782613e39565b602082019050919050565b600061355f6018836139fb565b915061356a82613e62565b602082019050919050565b60006135826021836139fb565b915061358d82613e8b565b604082019050919050565b60006135a56020836139fb565b91506135b082613eda565b602082019050919050565b60006135c86017836139fb565b91506135d382613f03565b602082019050919050565b60006135eb6029836139fb565b91506135f682613f2c565b604082019050919050565b600061360e6025836139fb565b915061361982613f7b565b604082019050919050565b60006136316024836139fb565b915061363c82613fca565b604082019050919050565b61365081613b71565b82525050565b61365f81613b7b565b82525050565b600060208201905061367a60008301846133df565b92915050565b600060408201905061369560008301856133df565b6136a260208301846133df565b9392505050565b60006040820190506136be60008301856133df565b6136cb6020830184613647565b9392505050565b60006060820190506136e760008301866133df565b6136f46020830185613647565b61370160408301846133df565b949350505050565b600060c08201905061371e60008301896133df565b61372b6020830188613647565b613738604083018761345b565b613745606083018661345b565b61375260808301856133df565b61375f60a0830184613647565b979650505050505050565b600060208201905061377f600083018461344c565b92915050565b6000602082019050818103600083015261379f818461346a565b905092915050565b600060208201905081810360008301526137c0816134a3565b9050919050565b600060208201905081810360008301526137e0816134c6565b9050919050565b60006020820190508181036000830152613800816134e9565b9050919050565b600060208201905081810360008301526138208161350c565b9050919050565b600060208201905081810360008301526138408161352f565b9050919050565b6000602082019050818103600083015261386081613552565b9050919050565b6000602082019050818103600083015261388081613575565b9050919050565b600060208201905081810360008301526138a081613598565b9050919050565b600060208201905081810360008301526138c0816135bb565b9050919050565b600060208201905081810360008301526138e0816135de565b9050919050565b6000602082019050818103600083015261390081613601565b9050919050565b6000602082019050818103600083015261392081613624565b9050919050565b600060208201905061393c6000830184613647565b92915050565b600060a0820190506139576000830188613647565b613964602083018761345b565b818103604083015261397681866133ee565b905061398560608301856133df565b6139926080830184613647565b9695505050505050565b60006020820190506139b16000830184613656565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a1782613b71565b9150613a2283613b71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a5757613a56613c48565b5b828201905092915050565b6000613a6d82613b71565b9150613a7883613b71565b925082613a8857613a87613c77565b5b828204905092915050565b6000613a9e82613b71565b9150613aa983613b71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ae257613ae1613c48565b5b828202905092915050565b6000613af882613b71565b9150613b0383613b71565b925082821015613b1657613b15613c48565b5b828203905092915050565b6000613b2c82613b51565b9050919050565b6000613b3e82613b51565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b9382613b71565b9050919050565b60005b83811015613bb8578082015181840152602081019050613b9d565b83811115613bc7576000848401525b50505050565b60006002820490506001821680613be557607f821691505b60208210811415613bf957613bf8613ca6565b5b50919050565b6000613c0a82613b71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c3d57613c3c613c48565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e277420626c61636b6c69737420636f6e74726163740000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f43616e277420626c61636b6c69737420556e6973776170000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61402281613b21565b811461402d57600080fd5b50565b61403981613b33565b811461404457600080fd5b50565b61405081613b45565b811461405b57600080fd5b50565b61406781613b71565b811461407257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208a7d6c4197832c6de164fe6ef4bfacac7aecfd5daff4c781320cb954213255b064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80638da5cb5b116100b6578063d0040d701161006f578063d0040d701461048d578063dd62ed3e146104b6578063e8078d94146104f3578063f2fde38b1461050a578063f37c4bce14610533578063f9f92be41461055c5761014b565b80638da5cb5b1461036b57806395d89b411461039657806398d5a5cb146103c1578063a9059cbb146103ea578063ab9562fe14610427578063c7ab8d9d146104505761014b565b8063313ce56711610108578063313ce5671461024957806353477d291461027457806354486ac31461029d57806370a08231146102c857806385b12c7c146103055780638a13792e1461032e5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b85780631c815b49146101e357806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610585565b6040516101729190613785565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906132cb565b610617565b6040516101af919061376a565b60405180910390f35b3480156101c457600080fd5b506101cd610635565b6040516101da9190613927565b60405180910390f35b3480156101ef57600080fd5b5061020a600480360381019061020591906131f8565b610645565b005b34801561021857600080fd5b50610233600480360381019061022e9190613278565b61074a565b604051610240919061376a565b60405180910390f35b34801561025557600080fd5b5061025e610823565b60405161026b919061399c565b60405180910390f35b34801561028057600080fd5b5061029b60048036038101906102969190613171565b61083a565b005b3480156102a957600080fd5b506102b261092a565b6040516102bf9190613927565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190613171565b610930565b6040516102fc9190613927565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190613338565b610979565b005b34801561033a57600080fd5b50610355600480360381019061035091906131cb565b610a2a565b6040516103629190613927565b60405180910390f35b34801561037757600080fd5b50610380610b2d565b60405161038d9190613665565b60405180910390f35b3480156103a257600080fd5b506103ab610b56565b6040516103b89190613785565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190613171565b610be8565b005b3480156103f657600080fd5b50610411600480360381019061040c91906132cb565b610cd8565b60405161041e919061376a565b60405180910390f35b34801561043357600080fd5b5061044e600480360381019061044991906131f8565b610cf6565b005b34801561045c57600080fd5b5061047760048036038101906104729190613171565b610e32565b604051610484919061376a565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190613171565b610e88565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190613238565b610f78565b6040516104ea9190613927565b60405180910390f35b3480156104ff57600080fd5b50610508610fff565b005b34801561051657600080fd5b50610531600480360381019061052c9190613171565b6115dc565b005b34801561053f57600080fd5b5061055a60048036038101906105559190613171565b61172e565b005b34801561056857600080fd5b50610583600480360381019061057e9190613171565b6118e7565b005b6060600b805461059490613bcd565b80601f01602080910402602001604051908101604052809291908181526020018280546105c090613bcd565b801561060d5780601f106105e25761010080835404028352916020019161060d565b820191906000526020600020905b8154815290600101906020018083116105f057829003601f168201915b5050505050905090565b600061062b610624611bc9565b8484611bd1565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610684611bc9565b73ffffffffffffffffffffffffffffffffffffffff16146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d190613887565b60405180910390fd5b6106e48282611d9c565b6000811115610746576001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061075784848461211f565b61081884610763611bc9565b6108138560405180606001604052806028815260200161407660289139601460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c9611bc9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d79092919063ffffffff16565b611bd1565b600190509392505050565b6000600d60009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610879611bc9565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690613887565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b8611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590613887565b60405180910390fd5b610a218142611b2190919063ffffffff16565b60168190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6c611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613887565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060068181548110610b1a57610b19613cd5565b5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610b6590613bcd565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9190613bcd565b8015610bde5780601f10610bb357610100808354040283529160200191610bde565b820191906000526020600020905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c27611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613887565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cec610ce5611bc9565b848461211f565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d35611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613887565b60405180910390fd5b610db8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611d9c565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e2e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611d9c565b5050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ec7611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490613887565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661103e611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613887565b60405180910390fd5b601060009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db906137c7565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611bd1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f6919061319e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125857600080fd5b505afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611290919061319e565b6040518363ffffffff1660e01b81526004016112ad929190613680565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff919061319e565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833061138830610930565b60008030426040518863ffffffff1660e01b81526004016113ae96959493929190613709565b6060604051808303818588803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114009190613365565b505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114a29291906136a9565b602060405180830381600087803b1580156114bc57600080fd5b505af11580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f4919061330b565b50601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d704363a600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661156c6203f48042611b2190919063ffffffff16565b336040518463ffffffff1660e01b815260040161158b939291906136d2565b600060405180830381600087803b1580156115a557600080fd5b505af11580156115b9573d6000803e3d6000fd5b505050506001601060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161b611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613887565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d0919061319e565b73ffffffffffffffffffffffffffffffffffffffff166117ee611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614806118645750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661184c611bc9565b73ffffffffffffffffffffffffffffffffffffffff16145b6118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a906137e7565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611926611bc9565b73ffffffffffffffffffffffffffffffffffffffff161461197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613887565b60405180910390fd5b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a04906138a7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390613847565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611b1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061243b565b905092915050565b6000808284611b309190613a0c565b905083811015611b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6c90613827565b60405180910390fd5b8091505092915050565b6000611bc183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123d7565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca890613807565b60405180910390fd5b80601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d8f9190613927565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ddb611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614611e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2890613887565b60405180910390fd5b600a60009054906101000a900460ff1615611eff57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611efe57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611edd611bc9565b73ffffffffffffffffffffffffffffffffffffffff1614611efd57600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141561207057612904611f6483600954611b2190919063ffffffff16565b1115611f6f57600080fd5b60068290806001815401808255809150506001900390600052602060002001600090919091909150556007839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160068054905061200d9190613aed565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061206582600954611b2190919063ffffffff16565b60098190555061211a565b60006006828154811061208657612085613cd5565b5b906000526020600020015490506129046120bd826120af86600954611b2190919063ffffffff16565b611b7f90919063ffffffff16565b11156120c857600080fd5b82600683815481106120dd576120dc613cd5565b5b90600052602060002001819055506121128161210485600954611b2190919063ffffffff16565b611b7f90919063ffffffff16565b600981905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561218f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612186906138e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f6906137a7565b60405180910390fd5b60008111612242576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612239906138c7565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122e65750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561233c5750601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61234557600080fd5b61234e8261249e565b1561236a57600f5461235f83610930565b1061236957600080fd5b5b60006123768484612575565b156123c55760165442101561238a57600080fd5b6123948484612621565b156123ae576123a161272c565b8211156123ad57600080fd5b5b6123b984848461277d565b90506123c484612881565b5b6123d1848484846128b2565b50505050565b600083831115829061241f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124169190613785565b60405180910390fd5b506000838561242e9190613aed565b9050809150509392505050565b60008083118290612482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124799190613785565b60405180910390fd5b50600083856124919190613a62565b9050809150509392505050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561254c5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561256e575061256a610e10601654611b2190919063ffffffff16565b4211155b9050919050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126185750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126ce5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127245750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000612745610e10601654611b2190919063ffffffff16565b421161276e576127676064674563918244f40000611ad790919063ffffffff16565b905061277a565b674563918244f4000090505b90565b60008060009050601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128255750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612833578091505061287a565b612873612864612841612af4565b61285660185487611ad790919063ffffffff16565b612afe90919063ffffffff16565b82611b2190919063ffffffff16565b9050809150505b9392505050565b61288a81612b79565b156128af57600061289a30610930565b90506128a581612bed565b6128ad612e75565b505b50565b60006128c78284611b7f90919063ffffffff16565b905061291b83601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b7f90919063ffffffff16565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129b081601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2190919063ffffffff16565b601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a4582601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2190919063ffffffff16565b601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ae59190613927565b60405180910390a35050505050565b6000600954905090565b600080831415612b115760009050612b73565b60008284612b1f9190613a93565b9050828482612b2e9190613a62565b14612b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6590613867565b60405180910390fd5b809150505b92915050565b6000601760009054906101000a900460ff16158015612be65750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601760006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612c2557612c24613d04565b5b604051908082528060200260200182016040528015612c535781602001602082028036833780820191505090505b5090503081600081518110612c6b57612c6a613cd5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0d57600080fd5b505afa158015612d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d45919061319e565b81600181518110612d5957612d58613cd5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612dc030600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bd1565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e24959493929190613942565b600060405180830381600087803b158015612e3e57600080fd5b505af1158015612e52573d6000803e3d6000fd5b50505050506000601760006101000a81548160ff02191690831515021790555050565b60004790506015548111612e895750612ed4565b6000612ea060155483611b7f90919063ffffffff16565b90506000612eac612ed6565b90506001811015612ebf57505050612ed4565b612ec98282612f00565b476015819055505050505b565b60008060009050612ef7612ee8612af4565b82611b2190919063ffffffff16565b90508091505090565b6000600190505b6006805490508110156130ee57600060068281548110612f2a57612f29613cd5565b5b90600052602060002001549050600060078381548110612f4d57612f4c613cd5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612fa185612f938589612afe90919063ffffffff16565b611ad790919063ffffffff16565b905060018111156130d8578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ff2573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130d757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016130a49190613927565b600060405180830381600087803b1580156130be57600080fd5b505af11580156130d2573d6000803e3d6000fd5b505050505b5b50505080806130e690613bff565b915050612f07565b505050565b60008135905061310281614019565b92915050565b60008151905061311781614019565b92915050565b60008135905061312c81614030565b92915050565b60008151905061314181614047565b92915050565b6000813590506131568161405e565b92915050565b60008151905061316b8161405e565b92915050565b60006020828403121561318757613186613d33565b5b6000613195848285016130f3565b91505092915050565b6000602082840312156131b4576131b3613d33565b5b60006131c284828501613108565b91505092915050565b6000602082840312156131e1576131e0613d33565b5b60006131ef8482850161311d565b91505092915050565b6000806040838503121561320f5761320e613d33565b5b600061321d8582860161311d565b925050602061322e85828601613147565b9150509250929050565b6000806040838503121561324f5761324e613d33565b5b600061325d858286016130f3565b925050602061326e858286016130f3565b9150509250929050565b60008060006060848603121561329157613290613d33565b5b600061329f868287016130f3565b93505060206132b0868287016130f3565b92505060406132c186828701613147565b9150509250925092565b600080604083850312156132e2576132e1613d33565b5b60006132f0858286016130f3565b925050602061330185828601613147565b9150509250929050565b60006020828403121561332157613320613d33565b5b600061332f84828501613132565b91505092915050565b60006020828403121561334e5761334d613d33565b5b600061335c84828501613147565b91505092915050565b60008060006060848603121561337e5761337d613d33565b5b600061338c8682870161315c565b935050602061339d8682870161315c565b92505060406133ae8682870161315c565b9150509250925092565b60006133c483836133d0565b60208301905092915050565b6133d981613b21565b82525050565b6133e881613b21565b82525050565b60006133f9826139c7565b61340381856139ea565b935061340e836139b7565b8060005b8381101561343f57815161342688826133b8565b9750613431836139dd565b925050600181019050613412565b5085935050505092915050565b61345581613b45565b82525050565b61346481613b88565b82525050565b6000613475826139d2565b61347f81856139fb565b935061348f818560208601613b9a565b61349881613d38565b840191505092915050565b60006134b06023836139fb565b91506134bb82613d49565b604082019050919050565b60006134d36018836139fb565b91506134de82613d98565b602082019050919050565b60006134f6600c836139fb565b915061350182613dc1565b602082019050919050565b60006135196022836139fb565b915061352482613dea565b604082019050919050565b600061353c601b836139fb565b915061354782613e39565b602082019050919050565b600061355f6018836139fb565b915061356a82613e62565b602082019050919050565b60006135826021836139fb565b915061358d82613e8b565b604082019050919050565b60006135a56020836139fb565b91506135b082613eda565b602082019050919050565b60006135c86017836139fb565b91506135d382613f03565b602082019050919050565b60006135eb6029836139fb565b91506135f682613f2c565b604082019050919050565b600061360e6025836139fb565b915061361982613f7b565b604082019050919050565b60006136316024836139fb565b915061363c82613fca565b604082019050919050565b61365081613b71565b82525050565b61365f81613b7b565b82525050565b600060208201905061367a60008301846133df565b92915050565b600060408201905061369560008301856133df565b6136a260208301846133df565b9392505050565b60006040820190506136be60008301856133df565b6136cb6020830184613647565b9392505050565b60006060820190506136e760008301866133df565b6136f46020830185613647565b61370160408301846133df565b949350505050565b600060c08201905061371e60008301896133df565b61372b6020830188613647565b613738604083018761345b565b613745606083018661345b565b61375260808301856133df565b61375f60a0830184613647565b979650505050505050565b600060208201905061377f600083018461344c565b92915050565b6000602082019050818103600083015261379f818461346a565b905092915050565b600060208201905081810360008301526137c0816134a3565b9050919050565b600060208201905081810360008301526137e0816134c6565b9050919050565b60006020820190508181036000830152613800816134e9565b9050919050565b600060208201905081810360008301526138208161350c565b9050919050565b600060208201905081810360008301526138408161352f565b9050919050565b6000602082019050818103600083015261386081613552565b9050919050565b6000602082019050818103600083015261388081613575565b9050919050565b600060208201905081810360008301526138a081613598565b9050919050565b600060208201905081810360008301526138c0816135bb565b9050919050565b600060208201905081810360008301526138e0816135de565b9050919050565b6000602082019050818103600083015261390081613601565b9050919050565b6000602082019050818103600083015261392081613624565b9050919050565b600060208201905061393c6000830184613647565b92915050565b600060a0820190506139576000830188613647565b613964602083018761345b565b818103604083015261397681866133ee565b905061398560608301856133df565b6139926080830184613647565b9695505050505050565b60006020820190506139b16000830184613656565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a1782613b71565b9150613a2283613b71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a5757613a56613c48565b5b828201905092915050565b6000613a6d82613b71565b9150613a7883613b71565b925082613a8857613a87613c77565b5b828204905092915050565b6000613a9e82613b71565b9150613aa983613b71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ae257613ae1613c48565b5b828202905092915050565b6000613af882613b71565b9150613b0383613b71565b925082821015613b1657613b15613c48565b5b828203905092915050565b6000613b2c82613b51565b9050919050565b6000613b3e82613b51565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b9382613b71565b9050919050565b60005b83811015613bb8578082015181840152602081019050613b9d565b83811115613bc7576000848401525b50505050565b60006002820490506001821680613be557607f821691505b60208210811415613bf957613bf8613ca6565b5b50919050565b6000613c0a82613b71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c3d57613c3c613c48565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e277420626c61636b6c69737420636f6e74726163740000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f43616e277420626c61636b6c69737420556e6973776170000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61402281613b21565b811461402d57600080fd5b50565b61403981613b33565b811461404457600080fd5b50565b61405081613b45565b811461405b57600080fd5b50565b61406781613b71565b811461407257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208a7d6c4197832c6de164fe6ef4bfacac7aecfd5daff4c781320cb954213255b064736f6c63430008070033

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.