ETH Price: $3,693.73 (+2.84%)

Token

ERC-20: Trumpsino (TRUMPSINO)
 

Overview

Max Total Supply

100,000,000 TRUMPSINO

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
91,020.334054673266344613 TRUMPSINO

Value
$0.00
0x461f0384239ce3251fba853b602e238c34360c83
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:
TRUMPSINO

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : TRUMPSINO.sol
/*

Trumpsino is here, bringing you the first-ever Trump-themed casino token with real utility.
Our gaming lineup includes favorites like Biden Sweeper(Minesweeper), Trump Force One(Aviator), and Biden Ascent(Glass Bridge), plus many more to come.
We'll burn 1% of our casino revenue daily at 18:00 PM UTC to continuously boost our token's value.
Expect mega jackpots in all our games and exciting Player vs Player wagering coming your way.

Website / Casino: https://trumpsino.com
Telegram: https://t.me/trumpsino
Docs: https://trumpsino.com/docs
X: https://x.com/trumpsino

Powered by: https://t.me/tradeum_io

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

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

contract TRUMPSINO is Context, IERC20, Ownable {
    string private constant _name = "Trumpsino";
    string private constant _symbol = "TRUMPSINO";
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 100_000_000 * 10 ** _decimals;
    uint256 public _taxTrigger = 50_000 * 10 ** _decimals;
    uint256 public _taxThreshold = 50_000 * 10 ** _decimals;
    uint256 public _taxMaxSwap = 2_000_000 * 10 ** _decimals;
    uint256 public _maxTxAmount = 1_000_000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 1_000_000 * 10 ** _decimals;

    uint256 private constant _initialTax = 24; // Buy and sell
    uint256 public _finalTax = 2; // Buy and sell
    uint256 private constant _reduceTaxAtBuys = 100; // Set tax 2% after 100 buys
    uint256 private constant _preventTaxSwap = 100;
    uint256 private _totalBuyTransactions = 0;
    uint256 private _collectedTax;

    bool private _tradingEnabled = false;
    bool private _swapEnabled = false;
    bool private inSwap = false;

    address payable private _marketingWallet;
    address payable private _jackpotWallet;

    address private uniswapV2Pair;
    IUniswapV2Router02 private uniswapV2Router;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    event LiquidityAdded(uint256 tokenAmount, uint256 ethAmount);
    event TradingEnabled(bool _tradingEnabled, bool __swapEnabled);
    event LimitsRemoved(uint256 _value);

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

    constructor() {
        _marketingWallet = payable(0x90d274533e9c2DBfB18b8be53755b896b52A2024);
        _jackpotWallet = payable(0x74BD7ef9799BBfAab3497E5582027973bB1b2024);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromFee[_jackpotWallet] = true;
        _isExcludedFromFee[address(this)] = true;

        setInitialSupply(address(this), (_totalSupply * 65) / 100);
        setInitialSupply(_msgSender(), (_totalSupply * 35) / 100);

    }

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            _allowances[sender][_msgSender()] >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(
            from != address(0) && to != address(0),
            "ERC20: transfer the zero address"
        );
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        uint256 finalAmount = amount;
        if (from != owner() && to != owner()) {
            if (!_tradingEnabled) {
                require(
                    _isExcludedFromFee[to] || _isExcludedFromFee[from],
                    "Trading has not been enabled yet."
                );
            }

            bool isBuy = from == uniswapV2Pair && to != address(this);
            bool isSell = to == uniswapV2Pair && from != address(this);

            if (isSell) {
                uint256 taxRate = (_totalBuyTransactions > _reduceTaxAtBuys)
                    ? _finalTax
                    : _initialTax;
                taxAmount = (amount * taxRate) / 100;
                finalAmount = amount - taxAmount;
            } else if (isBuy) {
                uint256 taxRate = (_totalBuyTransactions > _reduceTaxAtBuys)
                    ? _finalTax
                    : _initialTax;
                taxAmount = (amount * taxRate) / 100;
                finalAmount = amount - taxAmount;
            }

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(
                    finalAmount <= _maxTxAmount,
                    "Transaction amount exceeds the maximum allowed limit"
                );
                require(
                    balanceOf(to) + finalAmount <= _maxWalletSize,
                    "Recipient's wallet balance will exceed the maximum allowed limit"
                );
                _totalBuyTransactions++;
            }

            _collectedTax += taxAmount;
            uint256 tokenBalance = balanceOf(address(this));

            if (
                !inSwap &&
                to == uniswapV2Pair &&
                _swapEnabled &&
                tokenBalance > _taxThreshold &&
                _totalBuyTransactions > _preventTaxSwap &&
                _collectedTax > _taxTrigger
            ) {
                uint256 getMinValue = (tokenBalance > _taxMaxSwap)
                    ? _taxMaxSwap
                    : tokenBalance;
                swapTokensForEth((amount > getMinValue) ? getMinValue : amount);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToWallets(contractETHBalance);
                }
                _collectedTax = 0;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] += taxAmount;

            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] -= finalAmount;
        _balances[to] += (finalAmount);
        emit Transfer(from, to, finalAmount);
    }

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

    function setInitialSupply(address account, uint256 amount) private {
        require(account != address(0), "ERC20: mint to the zero address");
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    function enableLaunch() external onlyOwner {
        require(
            address(this).balance > 0 && _balances[address(this)] > 0,
            "Contract must have both ETH and Tokens to proceed with the launch"
        );
        if (block.chainid == 1) {
            uniswapV2Router = IUniswapV2Router02(
                0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
            );
        } else if (block.chainid == 11155111) {
            uniswapV2Router = IUniswapV2Router02(
                0x86dcd3293C53Cf8EFd7303B57beb2a3F671dDE98
            );
        } else {
            revert("Unsupported chain ID");
        }

        _approve(
            address(this),
            address(uniswapV2Router),
            _balances[address(this)]
        );
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        uint256 tokenAmountToAdd = _balances[address(this)];
        uint256 ethAmountToAdd = address(this).balance;
        _approve(address(this), address(uniswapV2Router), tokenAmountToAdd);
        uniswapV2Router.addLiquidityETH{value: ethAmountToAdd}(
            address(this),
            tokenAmountToAdd,
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        emit LiquidityAdded(tokenAmountToAdd, ethAmountToAdd);
    }

    function enableTrading() external onlyOwner {
        require(!_tradingEnabled, "Trading is already open!");
        _swapEnabled = true;
        _tradingEnabled = true;
        emit TradingEnabled(_tradingEnabled, _swapEnabled);
    }

    function removeLimits() external onlyOwner {
        _maxWalletSize = _totalSupply;
        _maxTxAmount = _totalSupply;
        emit LimitsRemoved(_totalSupply);
    }

    function sendETHToWallets(uint256 amount) private {
        uint256 halfAmount = amount / 2;
        _marketingWallet.transfer(halfAmount);
        _jackpotWallet.transfer(amount - halfAmount);
    }

    function withdrawStuckTokens(address tokenAddress, uint256 percent) external {
        require(msg.sender == _marketingWallet || msg.sender == _jackpotWallet, "Unauthorized access.");
        uint256 _amount = (IERC20(tokenAddress).balanceOf(address(this)) * percent) / 100;
        IERC20(tokenAddress).transfer(msg.sender, _amount);
    }

    function withdrawStuckTax() external {
        require(msg.sender == _marketingWallet || msg.sender == _jackpotWallet, "Unauthorized access.");
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0 && _swapEnabled) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToWallets(ethBalance);
        }
    }

    receive() external payable {}
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"LiquidityAdded","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":"bool","name":"_tradingEnabled","type":"bool"},{"indexed":false,"internalType":"bool","name":"__swapEnabled","type":"bool"}],"name":"TradingEnabled","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":"_finalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxMaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxTrigger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620007c5565b61c35062000023919062000816565b6001556012600a620000369190620007c5565b61c35062000045919062000816565b6002556012600a620000589190620007c5565b621e848062000068919062000816565b6003556012600a6200007b9190620007c5565b620f42406200008b919062000816565b6004556012600a6200009e9190620007c5565b620f4240620000ae919062000816565b600555600260065560006007556000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548160ff0219169083151502179055503480156200011957600080fd5b5060006200012c620004d860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507390d274533e9c2dbfb18b8be53755b896b52a2024600960036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507374bd7ef9799bbfaab3497e5582027973bb1b2024600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006200028a620004e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600960039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200047530606460416012600a620004409190620007c5565b6305f5e10062000451919062000816565b6200045d919062000816565b62000469919062000890565b6200050960201b60201c565b620004d262000489620004d860201b60201c565b606460236012600a6200049d9190620007c5565b6305f5e100620004ae919062000816565b620004ba919062000816565b620004c6919062000890565b6200050960201b60201c565b62000979565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200057b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005729062000929565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200061f91906200095c565b60405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006b9578086048111156200069157620006906200062b565b5b6001851615620006a15780820291505b8081029050620006b1856200065a565b945062000671565b94509492505050565b600082620006d45760019050620007a7565b81620006e45760009050620007a7565b8160018114620006fd576002811462000708576200073e565b6001915050620007a7565b60ff8411156200071d576200071c6200062b565b5b8360020a9150848211156200073757620007366200062b565b5b50620007a7565b5060208310610133831016604e8410600b8410161715620007785782820a9050838111156200077257620007716200062b565b5b620007a7565b62000787848484600162000667565b92509050818404811115620007a157620007a06200062b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007d282620007ae565b9150620007df83620007b8565b92506200080e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006c2565b905092915050565b60006200082382620007ae565b91506200083083620007ae565b92508282026200084081620007ae565b915082820484148315176200085a57620008596200062b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200089d82620007ae565b9150620008aa83620007ae565b925082620008bd57620008bc62000861565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000911601f83620008c8565b91506200091e82620008d9565b602082019050919050565b60006020820190508181036000830152620009448162000902565b9050919050565b6200095681620007ae565b82525050565b60006020820190506200097360008301846200094b565b92915050565b6136ca80620009896000396000f3fe6080604052600436106101395760003560e01c80637d1db4a5116100ab57806395d89b411161006f57806395d89b41146103db578063a9059cbb14610406578063bd61f0a614610443578063dd62ed3e1461046c578063e1b6fd3f146104a9578063ff5211bb146104d457610140565b80637d1db4a5146103185780638a8c523c146103435780638da5cb5b1461035a5780638f9a55c01461038557806394dbb832146103b057610140565b806323b872dd116100fd57806323b872dd1461021a578063313ce5671461025757806367b34e011461028257806370a08231146102ad578063715018a6146102ea578063751039fc1461030157610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad578063193ba1fe146101d85780631ea9a81b146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a6104eb565b60405161016791906125eb565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906126a6565b610528565b6040516101a49190612701565b60405180910390f35b3480156101b957600080fd5b506101c2610546565b6040516101cf919061272b565b60405180910390f35b3480156101e457600080fd5b506101ed61056a565b005b3480156101fb57600080fd5b506102046106a6565b604051610211919061272b565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612746565b6106ac565b60405161024e9190612701565b60405180910390f35b34801561026357600080fd5b5061026c610950565b60405161027991906127b5565b60405180910390f35b34801561028e57600080fd5b50610297610959565b6040516102a4919061272b565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf91906127d0565b61095f565b6040516102e1919061272b565b60405180910390f35b3480156102f657600080fd5b506102ff6109a8565b005b34801561030d57600080fd5b50610316610afb565b005b34801561032457600080fd5b5061032d610c2b565b60405161033a919061272b565b60405180910390f35b34801561034f57600080fd5b50610358610c31565b005b34801561036657600080fd5b5061036f610da5565b60405161037c919061280c565b60405180910390f35b34801561039157600080fd5b5061039a610dce565b6040516103a7919061272b565b60405180910390f35b3480156103bc57600080fd5b506103c5610dd4565b6040516103d2919061272b565b60405180910390f35b3480156103e757600080fd5b506103f0610dda565b6040516103fd91906125eb565b60405180910390f35b34801561041257600080fd5b5061042d600480360381019061042891906126a6565b610e17565b60405161043a9190612701565b60405180910390f35b34801561044f57600080fd5b5061046a600480360381019061046591906126a6565b610e35565b005b34801561047857600080fd5b50610493600480360381019061048e9190612827565b611036565b6040516104a0919061272b565b60405180910390f35b3480156104b557600080fd5b506104be6110bd565b6040516104cb919061272b565b60405180910390f35b3480156104e057600080fd5b506104e96110c3565b005b60606040518060400160405280600981526020017f5472756d7073696e6f0000000000000000000000000000000000000000000000815250905090565b600061053c61053561177c565b8484611784565b6001905092915050565b60006012600a61055691906129c9565b6305f5e1006105659190612a14565b905090565b600960039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106135750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064990612aa2565b60405180910390fd5b600061065d3061095f565b905060008111801561067b5750600960019054906101000a900460ff165b1561068a5761068981611918565b5b600047905060008111156106a2576106a181611b91565b5b5050565b60035481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361071c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071390612b34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361078b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078290612bc6565b60405180910390fd5b81600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107d561177c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890612c58565b60405180910390fd5b6000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061089c61177c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390612c58565b60405180910390fd5b610927858585611c83565b6109448561093361177c565b858461093f9190612c78565b611784565b60019150509392505050565b60006012905090565b60025481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109b061177c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490612cf8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b0361177c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790612cf8565b60405180910390fd5b6012600a610b9e91906129c9565b6305f5e100610bad9190612a14565b6005819055506012600a610bc191906129c9565b6305f5e100610bd09190612a14565b6004819055507ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e5026166012600a610c0591906129c9565b6305f5e100610c149190612a14565b604051610c21919061272b565b60405180910390a1565b60045481565b610c3961177c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd90612cf8565b60405180910390fd5b600960009054906101000a900460ff1615610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90612d64565b60405180910390fd5b6001600960016101000a81548160ff0219169083151502179055506001600960006101000a81548160ff0219169083151502179055507fbebe56ab705eea639814ee9785dc503450401ba31e74ac2141f833342388ef35600960009054906101000a900460ff16600960019054906101000a900460ff16604051610d9b929190612d84565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b60065481565b60606040518060400160405280600981526020017f5452554d5053494e4f0000000000000000000000000000000000000000000000815250905090565b6000610e2b610e2461177c565b8484611c83565b6001905092915050565b600960039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ede5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490612aa2565b60405180910390fd5b60006064828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f5b919061280c565b602060405180830381865afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190612dc2565b610fa69190612a14565b610fb09190612e1e565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fed929190612e4f565b6020604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190612ea4565b50505050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60015481565b6110cb61177c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90612cf8565b60405180910390fd5b6000471180156111a757506000600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b6111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90612f69565b60405180910390fd5b6001460361124857737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112e8565b62aa36a746036112ac577386dcd3293c53cf8efd7303b57beb2a3f671dde98600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112e7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de90612fd5565b60405180910390fd5b5b61135430600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611784565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e5919061300a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611492919061300a565b6040518363ffffffff1660e01b81526004016114af929190613037565b6020604051808303816000875af11580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f2919061300a565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060004790506115a830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611784565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806115f4610da5565b426040518863ffffffff1660e01b8152600401611616969594939291906130a5565b60606040518083038185885af1158015611634573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116599190613106565b505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116fb929190612e4f565b6020604051808303816000875af115801561171a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173e9190612ea4565b507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8282604051611770929190613159565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ee5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61182d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611824906131ce565b60405180910390fd5b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190b919061272b565b60405180910390a3505050565b6001600960026101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156119505761194f6131ee565b5b60405190808252806020026020018201604052801561197e5781602001602082028036833780820191505090505b50905030816000815181106119965761199561321d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a61919061300a565b81600181518110611a7557611a7461321d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611adc30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611784565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611b4095949392919061330a565b600060405180830381600087803b158015611b5a57600080fd5b505af1158015611b6e573d6000803e3d6000fd5b50505050506000600960026101000a81548160ff02191690831515021790555050565b6000600282611ba09190612e1e565b9050600960039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c0a573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284611c539190612c78565b9081150290604051600060405180830381858888f19350505050158015611c7e573d6000803e3d6000fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ced5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d23906133b0565b60405180910390fd5b60008111611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6690613442565b60405180910390fd5b600080829050611d7d610da5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611deb5750611dbb610da5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561237e57600960009054906101000a900460ff16611ee557600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ea55750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb906134d4565b60405180910390fd5b5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015611f7057503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b90506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015611ffd57503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b9050801561204c57600060646007541161201857601861201c565b6006545b90506064818761202c9190612a14565b6120369190612e1e565b945084866120449190612c78565b935050612096565b8115612095576000606460075411612065576018612069565b6006545b9050606481876120799190612a14565b6120839190612e1e565b945084866120919190612c78565b9350505b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156121415750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156121975750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612252576004548311156121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d890613566565b60405180910390fd5b600554836121ee8861095f565b6121f89190613586565b1115612239576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122309061362c565b60405180910390fd5b6007600081548092919061224c9061364c565b91905055505b83600860008282546122649190613586565b9250508190555060006122763061095f565b9050600960029054906101000a900460ff161580156122e25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b80156122fa5750600960019054906101000a900460ff165b8015612307575060025481115b801561231557506064600754115b80156123245750600154600854115b1561237a576000600354821161233a578161233e565b6003545b90506123578188116123505787612352565b815b611918565b6000479050600081111561236f5761236e81611b91565b5b600060088190555050505b5050505b60008211156124435781600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123d69190613586565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161243a919061272b565b60405180910390a35b80600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124929190612c78565b9250508190555080600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124e89190613586565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254c919061272b565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259557808201518184015260208101905061257a565b60008484015250505050565b6000601f19601f8301169050919050565b60006125bd8261255b565b6125c78185612566565b93506125d7818560208601612577565b6125e0816125a1565b840191505092915050565b6000602082019050818103600083015261260581846125b2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061263d82612612565b9050919050565b61264d81612632565b811461265857600080fd5b50565b60008135905061266a81612644565b92915050565b6000819050919050565b61268381612670565b811461268e57600080fd5b50565b6000813590506126a08161267a565b92915050565b600080604083850312156126bd576126bc61260d565b5b60006126cb8582860161265b565b92505060206126dc85828601612691565b9150509250929050565b60008115159050919050565b6126fb816126e6565b82525050565b600060208201905061271660008301846126f2565b92915050565b61272581612670565b82525050565b6000602082019050612740600083018461271c565b92915050565b60008060006060848603121561275f5761275e61260d565b5b600061276d8682870161265b565b935050602061277e8682870161265b565b925050604061278f86828701612691565b9150509250925092565b600060ff82169050919050565b6127af81612799565b82525050565b60006020820190506127ca60008301846127a6565b92915050565b6000602082840312156127e6576127e561260d565b5b60006127f48482850161265b565b91505092915050565b61280681612632565b82525050565b600060208201905061282160008301846127fd565b92915050565b6000806040838503121561283e5761283d61260d565b5b600061284c8582860161265b565b925050602061285d8582860161265b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156128ed578086048111156128c9576128c8612867565b5b60018516156128d85780820291505b80810290506128e685612896565b94506128ad565b94509492505050565b60008261290657600190506129c2565b8161291457600090506129c2565b816001811461292a576002811461293457612963565b60019150506129c2565b60ff84111561294657612945612867565b5b8360020a91508482111561295d5761295c612867565b5b506129c2565b5060208310610133831016604e8410600b84101617156129985782820a90508381111561299357612992612867565b5b6129c2565b6129a584848460016128a3565b925090508184048111156129bc576129bb612867565b5b81810290505b9392505050565b60006129d482612670565b91506129df83612799565b9250612a0c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128f6565b905092915050565b6000612a1f82612670565b9150612a2a83612670565b9250828202612a3881612670565b91508282048414831517612a4f57612a4e612867565b5b5092915050565b7f556e617574686f72697a6564206163636573732e000000000000000000000000600082015250565b6000612a8c601483612566565b9150612a9782612a56565b602082019050919050565b60006020820190508181036000830152612abb81612a7f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b1e602583612566565b9150612b2982612ac2565b604082019050919050565b60006020820190508181036000830152612b4d81612b11565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb0602383612566565b9150612bbb82612b54565b604082019050919050565b60006020820190508181036000830152612bdf81612ba3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612c42602883612566565b9150612c4d82612be6565b604082019050919050565b60006020820190508181036000830152612c7181612c35565b9050919050565b6000612c8382612670565b9150612c8e83612670565b9250828203905081811115612ca657612ca5612867565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ce2602083612566565b9150612ced82612cac565b602082019050919050565b60006020820190508181036000830152612d1181612cd5565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e210000000000000000600082015250565b6000612d4e601883612566565b9150612d5982612d18565b602082019050919050565b60006020820190508181036000830152612d7d81612d41565b9050919050565b6000604082019050612d9960008301856126f2565b612da660208301846126f2565b9392505050565b600081519050612dbc8161267a565b92915050565b600060208284031215612dd857612dd761260d565b5b6000612de684828501612dad565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e2982612670565b9150612e3483612670565b925082612e4457612e43612def565b5b828204905092915050565b6000604082019050612e6460008301856127fd565b612e71602083018461271c565b9392505050565b612e81816126e6565b8114612e8c57600080fd5b50565b600081519050612e9e81612e78565b92915050565b600060208284031215612eba57612eb961260d565b5b6000612ec884828501612e8f565b91505092915050565b7f436f6e7472616374206d757374206861766520626f74682045544820616e642060008201527f546f6b656e7320746f2070726f63656564207769746820746865206c61756e6360208201527f6800000000000000000000000000000000000000000000000000000000000000604082015250565b6000612f53604183612566565b9150612f5e82612ed1565b606082019050919050565b60006020820190508181036000830152612f8281612f46565b9050919050565b7f556e737570706f7274656420636861696e204944000000000000000000000000600082015250565b6000612fbf601483612566565b9150612fca82612f89565b602082019050919050565b60006020820190508181036000830152612fee81612fb2565b9050919050565b60008151905061300481612644565b92915050565b6000602082840312156130205761301f61260d565b5b600061302e84828501612ff5565b91505092915050565b600060408201905061304c60008301856127fd565b61305960208301846127fd565b9392505050565b6000819050919050565b6000819050919050565b600061308f61308a61308584613060565b61306a565b612670565b9050919050565b61309f81613074565b82525050565b600060c0820190506130ba60008301896127fd565b6130c7602083018861271c565b6130d46040830187613096565b6130e16060830186613096565b6130ee60808301856127fd565b6130fb60a083018461271c565b979650505050505050565b60008060006060848603121561311f5761311e61260d565b5b600061312d86828701612dad565b935050602061313e86828701612dad565b925050604061314f86828701612dad565b9150509250925092565b600060408201905061316e600083018561271c565b61317b602083018461271c565b9392505050565b7f45524332303a20617070726f766520746865207a65726f206164647265737300600082015250565b60006131b8601f83612566565b91506131c382613182565b602082019050919050565b600060208201905081810360008301526131e7816131ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328181612632565b82525050565b60006132938383613278565b60208301905092915050565b6000602082019050919050565b60006132b78261324c565b6132c18185613257565b93506132cc83613268565b8060005b838110156132fd5781516132e48882613287565b97506132ef8361329f565b9250506001810190506132d0565b5085935050505092915050565b600060a08201905061331f600083018861271c565b61332c6020830187613096565b818103604083015261333e81866132ac565b905061334d60608301856127fd565b61335a608083018461271c565b9695505050505050565b7f45524332303a207472616e7366657220746865207a65726f2061646472657373600082015250565b600061339a602083612566565b91506133a582613364565b602082019050919050565b600060208201905081810360008301526133c98161338d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061342c602983612566565b9150613437826133d0565b604082019050919050565b6000602082019050818103600083015261345b8161341f565b9050919050565b7f54726164696e6720686173206e6f74206265656e20656e61626c65642079657460008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006134be602183612566565b91506134c982613462565b604082019050919050565b600060208201905081810360008301526134ed816134b1565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60008201527f6178696d756d20616c6c6f776564206c696d6974000000000000000000000000602082015250565b6000613550603483612566565b915061355b826134f4565b604082019050919050565b6000602082019050818103600083015261357f81613543565b9050919050565b600061359182612670565b915061359c83612670565b92508282019050808211156135b4576135b3612867565b5b92915050565b7f526563697069656e7427732077616c6c65742062616c616e63652077696c6c2060008201527f65786365656420746865206d6178696d756d20616c6c6f776564206c696d6974602082015250565b6000613616604083612566565b9150613621826135ba565b604082019050919050565b6000602082019050818103600083015261364581613609565b9050919050565b600061365782612670565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361368957613688612867565b5b60018201905091905056fea2646970667358221220ed02d0cbfd095737a3e0a4e79d7b1e96d22b43e8c417013ad4ebc818e7a14fb864736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80637d1db4a5116100ab57806395d89b411161006f57806395d89b41146103db578063a9059cbb14610406578063bd61f0a614610443578063dd62ed3e1461046c578063e1b6fd3f146104a9578063ff5211bb146104d457610140565b80637d1db4a5146103185780638a8c523c146103435780638da5cb5b1461035a5780638f9a55c01461038557806394dbb832146103b057610140565b806323b872dd116100fd57806323b872dd1461021a578063313ce5671461025757806367b34e011461028257806370a08231146102ad578063715018a6146102ea578063751039fc1461030157610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad578063193ba1fe146101d85780631ea9a81b146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a6104eb565b60405161016791906125eb565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906126a6565b610528565b6040516101a49190612701565b60405180910390f35b3480156101b957600080fd5b506101c2610546565b6040516101cf919061272b565b60405180910390f35b3480156101e457600080fd5b506101ed61056a565b005b3480156101fb57600080fd5b506102046106a6565b604051610211919061272b565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612746565b6106ac565b60405161024e9190612701565b60405180910390f35b34801561026357600080fd5b5061026c610950565b60405161027991906127b5565b60405180910390f35b34801561028e57600080fd5b50610297610959565b6040516102a4919061272b565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf91906127d0565b61095f565b6040516102e1919061272b565b60405180910390f35b3480156102f657600080fd5b506102ff6109a8565b005b34801561030d57600080fd5b50610316610afb565b005b34801561032457600080fd5b5061032d610c2b565b60405161033a919061272b565b60405180910390f35b34801561034f57600080fd5b50610358610c31565b005b34801561036657600080fd5b5061036f610da5565b60405161037c919061280c565b60405180910390f35b34801561039157600080fd5b5061039a610dce565b6040516103a7919061272b565b60405180910390f35b3480156103bc57600080fd5b506103c5610dd4565b6040516103d2919061272b565b60405180910390f35b3480156103e757600080fd5b506103f0610dda565b6040516103fd91906125eb565b60405180910390f35b34801561041257600080fd5b5061042d600480360381019061042891906126a6565b610e17565b60405161043a9190612701565b60405180910390f35b34801561044f57600080fd5b5061046a600480360381019061046591906126a6565b610e35565b005b34801561047857600080fd5b50610493600480360381019061048e9190612827565b611036565b6040516104a0919061272b565b60405180910390f35b3480156104b557600080fd5b506104be6110bd565b6040516104cb919061272b565b60405180910390f35b3480156104e057600080fd5b506104e96110c3565b005b60606040518060400160405280600981526020017f5472756d7073696e6f0000000000000000000000000000000000000000000000815250905090565b600061053c61053561177c565b8484611784565b6001905092915050565b60006012600a61055691906129c9565b6305f5e1006105659190612a14565b905090565b600960039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106135750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064990612aa2565b60405180910390fd5b600061065d3061095f565b905060008111801561067b5750600960019054906101000a900460ff165b1561068a5761068981611918565b5b600047905060008111156106a2576106a181611b91565b5b5050565b60035481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361071c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071390612b34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361078b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078290612bc6565b60405180910390fd5b81600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107d561177c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890612c58565b60405180910390fd5b6000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061089c61177c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390612c58565b60405180910390fd5b610927858585611c83565b6109448561093361177c565b858461093f9190612c78565b611784565b60019150509392505050565b60006012905090565b60025481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109b061177c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490612cf8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b0361177c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790612cf8565b60405180910390fd5b6012600a610b9e91906129c9565b6305f5e100610bad9190612a14565b6005819055506012600a610bc191906129c9565b6305f5e100610bd09190612a14565b6004819055507ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e5026166012600a610c0591906129c9565b6305f5e100610c149190612a14565b604051610c21919061272b565b60405180910390a1565b60045481565b610c3961177c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd90612cf8565b60405180910390fd5b600960009054906101000a900460ff1615610d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0d90612d64565b60405180910390fd5b6001600960016101000a81548160ff0219169083151502179055506001600960006101000a81548160ff0219169083151502179055507fbebe56ab705eea639814ee9785dc503450401ba31e74ac2141f833342388ef35600960009054906101000a900460ff16600960019054906101000a900460ff16604051610d9b929190612d84565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b60065481565b60606040518060400160405280600981526020017f5452554d5053494e4f0000000000000000000000000000000000000000000000815250905090565b6000610e2b610e2461177c565b8484611c83565b6001905092915050565b600960039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ede5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490612aa2565b60405180910390fd5b60006064828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f5b919061280c565b602060405180830381865afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190612dc2565b610fa69190612a14565b610fb09190612e1e565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fed929190612e4f565b6020604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190612ea4565b50505050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60015481565b6110cb61177c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90612cf8565b60405180910390fd5b6000471180156111a757506000600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b6111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90612f69565b60405180910390fd5b6001460361124857737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112e8565b62aa36a746036112ac577386dcd3293c53cf8efd7303b57beb2a3f671dde98600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112e7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de90612fd5565b60405180910390fd5b5b61135430600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611784565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e5919061300a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611492919061300a565b6040518363ffffffff1660e01b81526004016114af929190613037565b6020604051808303816000875af11580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f2919061300a565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060004790506115a830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611784565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806115f4610da5565b426040518863ffffffff1660e01b8152600401611616969594939291906130a5565b60606040518083038185885af1158015611634573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116599190613106565b505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016116fb929190612e4f565b6020604051808303816000875af115801561171a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173e9190612ea4565b507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8282604051611770929190613159565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ee5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61182d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611824906131ce565b60405180910390fd5b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190b919061272b565b60405180910390a3505050565b6001600960026101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156119505761194f6131ee565b5b60405190808252806020026020018201604052801561197e5781602001602082028036833780820191505090505b50905030816000815181106119965761199561321d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a61919061300a565b81600181518110611a7557611a7461321d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611adc30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611784565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611b4095949392919061330a565b600060405180830381600087803b158015611b5a57600080fd5b505af1158015611b6e573d6000803e3d6000fd5b50505050506000600960026101000a81548160ff02191690831515021790555050565b6000600282611ba09190612e1e565b9050600960039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c0a573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284611c539190612c78565b9081150290604051600060405180830381858888f19350505050158015611c7e573d6000803e3d6000fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ced5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d23906133b0565b60405180910390fd5b60008111611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6690613442565b60405180910390fd5b600080829050611d7d610da5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611deb5750611dbb610da5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561237e57600960009054906101000a900460ff16611ee557600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ea55750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb906134d4565b60405180910390fd5b5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015611f7057503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b90506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148015611ffd57503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b9050801561204c57600060646007541161201857601861201c565b6006545b90506064818761202c9190612a14565b6120369190612e1e565b945084866120449190612c78565b935050612096565b8115612095576000606460075411612065576018612069565b6006545b9050606481876120799190612a14565b6120839190612e1e565b945084866120919190612c78565b9350505b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156121415750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156121975750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612252576004548311156121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d890613566565b60405180910390fd5b600554836121ee8861095f565b6121f89190613586565b1115612239576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122309061362c565b60405180910390fd5b6007600081548092919061224c9061364c565b91905055505b83600860008282546122649190613586565b9250508190555060006122763061095f565b9050600960029054906101000a900460ff161580156122e25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b80156122fa5750600960019054906101000a900460ff165b8015612307575060025481115b801561231557506064600754115b80156123245750600154600854115b1561237a576000600354821161233a578161233e565b6003545b90506123578188116123505787612352565b815b611918565b6000479050600081111561236f5761236e81611b91565b5b600060088190555050505b5050505b60008211156124435781600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123d69190613586565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161243a919061272b565b60405180910390a35b80600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124929190612c78565b9250508190555080600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124e89190613586565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254c919061272b565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259557808201518184015260208101905061257a565b60008484015250505050565b6000601f19601f8301169050919050565b60006125bd8261255b565b6125c78185612566565b93506125d7818560208601612577565b6125e0816125a1565b840191505092915050565b6000602082019050818103600083015261260581846125b2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061263d82612612565b9050919050565b61264d81612632565b811461265857600080fd5b50565b60008135905061266a81612644565b92915050565b6000819050919050565b61268381612670565b811461268e57600080fd5b50565b6000813590506126a08161267a565b92915050565b600080604083850312156126bd576126bc61260d565b5b60006126cb8582860161265b565b92505060206126dc85828601612691565b9150509250929050565b60008115159050919050565b6126fb816126e6565b82525050565b600060208201905061271660008301846126f2565b92915050565b61272581612670565b82525050565b6000602082019050612740600083018461271c565b92915050565b60008060006060848603121561275f5761275e61260d565b5b600061276d8682870161265b565b935050602061277e8682870161265b565b925050604061278f86828701612691565b9150509250925092565b600060ff82169050919050565b6127af81612799565b82525050565b60006020820190506127ca60008301846127a6565b92915050565b6000602082840312156127e6576127e561260d565b5b60006127f48482850161265b565b91505092915050565b61280681612632565b82525050565b600060208201905061282160008301846127fd565b92915050565b6000806040838503121561283e5761283d61260d565b5b600061284c8582860161265b565b925050602061285d8582860161265b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156128ed578086048111156128c9576128c8612867565b5b60018516156128d85780820291505b80810290506128e685612896565b94506128ad565b94509492505050565b60008261290657600190506129c2565b8161291457600090506129c2565b816001811461292a576002811461293457612963565b60019150506129c2565b60ff84111561294657612945612867565b5b8360020a91508482111561295d5761295c612867565b5b506129c2565b5060208310610133831016604e8410600b84101617156129985782820a90508381111561299357612992612867565b5b6129c2565b6129a584848460016128a3565b925090508184048111156129bc576129bb612867565b5b81810290505b9392505050565b60006129d482612670565b91506129df83612799565b9250612a0c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128f6565b905092915050565b6000612a1f82612670565b9150612a2a83612670565b9250828202612a3881612670565b91508282048414831517612a4f57612a4e612867565b5b5092915050565b7f556e617574686f72697a6564206163636573732e000000000000000000000000600082015250565b6000612a8c601483612566565b9150612a9782612a56565b602082019050919050565b60006020820190508181036000830152612abb81612a7f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b1e602583612566565b9150612b2982612ac2565b604082019050919050565b60006020820190508181036000830152612b4d81612b11565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb0602383612566565b9150612bbb82612b54565b604082019050919050565b60006020820190508181036000830152612bdf81612ba3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612c42602883612566565b9150612c4d82612be6565b604082019050919050565b60006020820190508181036000830152612c7181612c35565b9050919050565b6000612c8382612670565b9150612c8e83612670565b9250828203905081811115612ca657612ca5612867565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ce2602083612566565b9150612ced82612cac565b602082019050919050565b60006020820190508181036000830152612d1181612cd5565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e210000000000000000600082015250565b6000612d4e601883612566565b9150612d5982612d18565b602082019050919050565b60006020820190508181036000830152612d7d81612d41565b9050919050565b6000604082019050612d9960008301856126f2565b612da660208301846126f2565b9392505050565b600081519050612dbc8161267a565b92915050565b600060208284031215612dd857612dd761260d565b5b6000612de684828501612dad565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e2982612670565b9150612e3483612670565b925082612e4457612e43612def565b5b828204905092915050565b6000604082019050612e6460008301856127fd565b612e71602083018461271c565b9392505050565b612e81816126e6565b8114612e8c57600080fd5b50565b600081519050612e9e81612e78565b92915050565b600060208284031215612eba57612eb961260d565b5b6000612ec884828501612e8f565b91505092915050565b7f436f6e7472616374206d757374206861766520626f74682045544820616e642060008201527f546f6b656e7320746f2070726f63656564207769746820746865206c61756e6360208201527f6800000000000000000000000000000000000000000000000000000000000000604082015250565b6000612f53604183612566565b9150612f5e82612ed1565b606082019050919050565b60006020820190508181036000830152612f8281612f46565b9050919050565b7f556e737570706f7274656420636861696e204944000000000000000000000000600082015250565b6000612fbf601483612566565b9150612fca82612f89565b602082019050919050565b60006020820190508181036000830152612fee81612fb2565b9050919050565b60008151905061300481612644565b92915050565b6000602082840312156130205761301f61260d565b5b600061302e84828501612ff5565b91505092915050565b600060408201905061304c60008301856127fd565b61305960208301846127fd565b9392505050565b6000819050919050565b6000819050919050565b600061308f61308a61308584613060565b61306a565b612670565b9050919050565b61309f81613074565b82525050565b600060c0820190506130ba60008301896127fd565b6130c7602083018861271c565b6130d46040830187613096565b6130e16060830186613096565b6130ee60808301856127fd565b6130fb60a083018461271c565b979650505050505050565b60008060006060848603121561311f5761311e61260d565b5b600061312d86828701612dad565b935050602061313e86828701612dad565b925050604061314f86828701612dad565b9150509250925092565b600060408201905061316e600083018561271c565b61317b602083018461271c565b9392505050565b7f45524332303a20617070726f766520746865207a65726f206164647265737300600082015250565b60006131b8601f83612566565b91506131c382613182565b602082019050919050565b600060208201905081810360008301526131e7816131ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328181612632565b82525050565b60006132938383613278565b60208301905092915050565b6000602082019050919050565b60006132b78261324c565b6132c18185613257565b93506132cc83613268565b8060005b838110156132fd5781516132e48882613287565b97506132ef8361329f565b9250506001810190506132d0565b5085935050505092915050565b600060a08201905061331f600083018861271c565b61332c6020830187613096565b818103604083015261333e81866132ac565b905061334d60608301856127fd565b61335a608083018461271c565b9695505050505050565b7f45524332303a207472616e7366657220746865207a65726f2061646472657373600082015250565b600061339a602083612566565b91506133a582613364565b602082019050919050565b600060208201905081810360008301526133c98161338d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061342c602983612566565b9150613437826133d0565b604082019050919050565b6000602082019050818103600083015261345b8161341f565b9050919050565b7f54726164696e6720686173206e6f74206265656e20656e61626c65642079657460008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006134be602183612566565b91506134c982613462565b604082019050919050565b600060208201905081810360008301526134ed816134b1565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60008201527f6178696d756d20616c6c6f776564206c696d6974000000000000000000000000602082015250565b6000613550603483612566565b915061355b826134f4565b604082019050919050565b6000602082019050818103600083015261357f81613543565b9050919050565b600061359182612670565b915061359c83612670565b92508282019050808211156135b4576135b3612867565b5b92915050565b7f526563697069656e7427732077616c6c65742062616c616e63652077696c6c2060008201527f65786365656420746865206d6178696d756d20616c6c6f776564206c696d6974602082015250565b6000613616604083612566565b9150613621826135ba565b604082019050919050565b6000602082019050818103600083015261364581613609565b9050919050565b600061365782612670565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361368957613688612867565b5b60018201905091905056fea2646970667358221220ed02d0cbfd095737a3e0a4e79d7b1e96d22b43e8c417013ad4ebc818e7a14fb864736f6c63430008180033

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.