ETH Price: $2,253.29 (-1.18%)
 

Overview

Max Total Supply

100,000,000,000 CLANKER

Holders

1,184

Transfers

-
12

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
CLANKER

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : CLANKER.sol
/*
 ██████╗██╗      █████╗ ███╗   ██╗██╗  ██╗███████╗██████╗ 
██╔════╝██║     ██╔══██╗████╗  ██║██║ ██╔╝██╔════╝██╔══██╗
██║     ██║     ███████║██╔██╗ ██║█████╔╝ █████╗  ██████╔╝
██║     ██║     ██╔══██║██║╚██╗██║██╔═██╗ ██╔══╝  ██╔══██╗
╚██████╗███████╗██║  ██║██║ ╚████║██║  ██╗███████╗██║  ██║
 ╚═════╝╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝
                                                            
fknclanker.com
*/

pragma solidity ^0.8.0;

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

interface IToken {
    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 SafeCalc {
    function add(uint256 x, uint256 y) internal pure returns (uint256) {
        uint256 z = x + y;
        require(z >= x, "SafeCalc: addition overflow");
        return z;
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256) {
        return sub(x, y, "SafeCalc: subtraction overflow");
    }

    function sub(uint256 x, uint256 y, string memory err) internal pure returns (uint256) {
        require(y <= x, err);
        uint256 z = x - y;
        return z;
    }

    function mul(uint256 x, uint256 y) internal pure returns (uint256) {
        if (x == 0) {
            return 0;
        }
        uint256 z = x * y;
        require(z / x == y, "SafeCalc: multiplication overflow");
        return z;
    }

    function div(uint256 x, uint256 y) internal pure returns (uint256) {
        return div(x, y, "SafeCalc: division by zero");
    }

    function div(uint256 x, uint256 y, string memory err) internal pure returns (uint256) {
        require(y > 0, err);
        uint256 z = x / y;
        return z;
    }
}

contract Owned is Ctx {
    address private _adm;
    event OwnershipTransferred(address indexed prevAdm, address indexed newAdm);

    constructor () {
        address msgSndr = _msgSender();
        _adm = msgSndr;
        emit OwnershipTransferred(address(0), msgSndr);
    }

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

    modifier onlyOwner() {
        require(_adm == _msgSender(), "Owned: caller is not the admin");
        _;
    }

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

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

interface IUniRtr {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amtIn,
        uint amtOutMin,
        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 amtTokenDesired,
        uint amtTokenMin,
        uint amtETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amtToken, uint amtETH, uint liquidity);
}

contract CLANKER is Ctx, IToken, Owned {
    using SafeCalc for uint256;
    mapping (address => uint256) private _bals;
    mapping (address => mapping (address => uint256)) private _allws;
    mapping (address => bool) private _exmpt;
    
    address payable private _feeAddr;

    uint256 private _bFeeInit=15;
    uint256 private _sFeeInit=35;
    uint256 private _bFeeEnd=0;
    uint256 private _sFeeEnd=0;
    uint256 private _bFeeThresh=150;
    uint256 private _sFeeThresh=45;
    uint256 private _swapDelay=42;
    uint256 private _tFee=0;
    uint256 private _txCnt=0;

    uint8 private constant _dec = 9;
    uint256 private constant _totSup = 100_000_000_000 * 10**_dec;
    string private constant _nm = unicode"Clanker";
    string private constant _sym = unicode"CLANKER";
    uint256 public _maxTxAmt =  3 * (_totSup/100);
    uint256 public _maxWltAmt =  3 * (_totSup/100);
    uint256 public _swapThresh =  2 * (_totSup/1000);
    uint256 public _maxSwapAmt = 3 * (_totSup/100);
    
    IUniRtr private rtr;
    address private pr;
    bool private tradingEnabled;
    bool private swapping = false;
    bool private swapEnabled = false;
    bool private tradingInitialized = false;

    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTransactionUpdated(uint _maxTxAmt);
    event TransferFeeUpdated(uint _fee);
    modifier lockSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor () {
        _feeAddr = payable(0x284a9Cd33BC2315193D606F7358752795693dFb9);
        
        _bals[_msgSender()] = _totSup;
        _exmpt[owner()] = true;
        _exmpt[address(this)] = true;
        _exmpt[_feeAddr] = true;
        
        _exmpt[address(0xdead)] = true;
        emit Transfer(address(0), _msgSender(), _totSup);
    }

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

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

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

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

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

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

    function allowance(address ownr, address spndr) public view override returns (uint256) {
        return _allws[ownr][spndr];
    }

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

    function transferFrom(address sndr, address rcpt, uint256 amt) public override returns (bool) {
        _transfer(sndr, rcpt, amt);
        _approve(sndr, _msgSender(), _allws[sndr][_msgSender()].sub(amt, "IToken: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address ownr, address spndr, uint256 amt) private {
        require(ownr != address(0), "IToken: approve from the zero address");
        require(spndr != address(0), "IToken: approve to the zero address");
        _allws[ownr][spndr] = amt;
        emit Approval(ownr, spndr, amt);
    }

    function _transfer(address sndr, address rcpt, uint256 tAmt) private {
        require(sndr != address(0), "IToken: transfer from the zero address");
        require(rcpt != address(0), "IToken: transfer to the zero address");
        require(tAmt > 0, "Transfer amount must be greater than zero");
        uint256 feeAmt=0;
        if (sndr != owner() && rcpt != owner()) {
            require(_exmpt[rcpt] || tradingEnabled == true);
            if(_txCnt==0)
            {
                feeAmt = 0;
            }
            if(_txCnt>0)
            {
                feeAmt = tAmt.mul(_tFee).div(100);
            }
            if ((sndr == pr && rcpt != address(rtr) && !_exmpt[rcpt])) 
            {
                require(tAmt <= _maxTxAmt, "Exceeds the _maxTxAmt.");
                require(balanceOf(rcpt) + tAmt <= _maxWltAmt, "Exceeds the maxWltAmt.");
                feeAmt = tAmt.mul((_txCnt>_bFeeThresh)?_bFeeEnd:_bFeeInit).div(100);
                _txCnt++;
            }

            if(rcpt == pr && sndr!= address(this)) {
                feeAmt = tAmt.mul((_txCnt>_sFeeThresh)?_sFeeEnd:_sFeeInit).div(100);
            }

            uint256 contTokBal = balanceOf(address(this));
            if (!swapping && rcpt == pr && swapEnabled && contTokBal > _swapThresh && _txCnt > _swapDelay) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 5, "Only 5 sells per block!");
                swapTokensForEth(getMinimum(tAmt, getMinimum(contTokBal, _maxSwapAmt)));
                uint256 contEthBal = address(this).balance;
                if (contEthBal > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if(feeAmt>0){
          _bals[address(this)]=_bals[address(this)].add(feeAmt);
          emit Transfer(sndr, address(this),feeAmt);
        }
        _bals[sndr]=_bals[sndr].sub(tAmt);
        _bals[rcpt]=_bals[rcpt].add(tAmt.sub(feeAmt));
        emit Transfer(sndr, rcpt, tAmt.sub(feeAmt));
    }

    function getMinimum(uint256 x, uint256 y) private pure returns (uint256) {
        return (x < y) ? x : y;
    }

    function setLPorBurnAddress(address[] calldata addrs, bool stat) external onlyOwner {
        for (uint256 i = 0; i < addrs.length; i++) {
            _exmpt[addrs[i]] = stat;
        }
    }

    function swapTokensForEth(uint256 tokAmt) private lockSwap {
        address[] memory swapPth = new address[](2);
        swapPth[0] = address(this);
        swapPth[1] = rtr.WETH();
        _approve(address(this), address(rtr), tokAmt);
        rtr.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokAmt,
            0,
            swapPth,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmt = _totSup;
        _maxWltAmt=_totSup;
        emit MaxTransactionUpdated(_totSup);
    }

    function removeTax() external onlyOwner {
        _tFee = 0;
        _bFeeInit = 0;
        _sFeeInit= 0;
        _bFeeEnd = 0;
        _sFeeEnd = 0;
        emit TransferFeeUpdated(0);
    }

    function transitionToEndFees() external onlyOwner {
        _txCnt = _bFeeThresh + 1;
        emit TransferFeeUpdated(_bFeeEnd);
    }

    function sendETHToFee(uint256 amt) private {
        _feeAddr.transfer(amt);
    }

    function openTrading() external onlyOwner {
        tradingEnabled = true;
    }

    function enableTrading() external onlyOwner {
        require(!tradingInitialized, "Trading is already Enabled");
        
        rtr = IUniRtr(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(rtr), _totSup);
        pr = IUniFact(rtr.factory()).createPair(address(this), rtr.WETH());
        
        rtr.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        
        IToken(pr).approve(address(rtr), type(uint).max);
        swapEnabled = true;
        tradingInitialized = true;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _feeAddr || _msgSender() == owner(), "Only fee collector or owner can call this function");
        uint256 contToks=balanceOf(address(this));
        if(contToks>0){
          swapTokensForEth(contToks);
        }
        uint256 contEth=address(this).balance;
        if(contEth>0){
          sendETHToFee(contEth);
        }
    }
    
    function manualSendAllTokens() external {
        require(_msgSender() == _feeAddr || _msgSender() == owner(), "Only fee collector or owner can call this function");
        uint256 contToks = balanceOf(address(this));
        require(contToks > 0, "No tokens to send");
        
        _transfer(address(this), _feeAddr, contToks);
    }

    function manualTokenSend(uint256 tokAmt) external {
        require(_msgSender() == _feeAddr || _msgSender() == owner(), "Only fee collector or owner can call this function");
        require(tokAmt > 0, "Token amount must be greater than zero");
        uint256 contToks = balanceOf(address(this));
        require(contToks >= tokAmt, "Insufficient balance in contract");

        _transfer(address(this), _feeAddr, tokAmt);
    }

    function manualSend() external {
        require(_msgSender() == _feeAddr || _msgSender() == owner(), "Only fee collector or owner can call this function");
        uint256 contETH = address(this).balance;
        sendETHToFee(contETH);
    }

    function removeSellCountLimit() external {
        require(_msgSender() == _feeAddr || _msgSender() == owner(), "Only fee collector or owner can call this function");
        sellCount = 0;
        lastSellBlock = 0;
    }

    function disableSellCountLimit() external {
        require(_msgSender() == _feeAddr || _msgSender() == owner(), "Only fee collector or owner can call this function");
        // Set a very high number to effectively disable the limit
        sellCount = 999999;
        lastSellBlock = 0;
    }
}

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

Contract Security Audit

Contract ABI

API
[{"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":"_maxTxAmt","type":"uint256"}],"name":"MaxTransactionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"prevAdm","type":"address"},{"indexed":true,"internalType":"address","name":"newAdm","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"TransferFeeUpdated","type":"event"},{"inputs":[],"name":"_maxSwapAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWltAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThresh","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ownr","type":"address"},{"internalType":"address","name":"spndr","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spndr","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"acct","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":"disableSellCountLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSendAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokAmt","type":"uint256"}],"name":"manualTokenSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"removeSellCountLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"stat","type":"bool"}],"name":"setLPorBurnAddress","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":"rcpt","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sndr","type":"address"},{"internalType":"address","name":"rcpt","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transitionToEndFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600f6005556023600655600060075560006008556096600955602d600a55602a600b556000600c556000600d5560646009600a61004191906106bf565b64174876e800610051919061070a565b61005b919061077b565b6003610067919061070a565b600e5560646009600a61007a91906106bf565b64174876e80061008a919061070a565b610094919061077b565b60036100a0919061070a565b600f556103e86009600a6100b491906106bf565b64174876e8006100c4919061070a565b6100ce919061077b565b60026100da919061070a565b60105560646009600a6100ed91906106bf565b64174876e8006100fd919061070a565b610107919061077b565b6003610113919061070a565b6011556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506000601360176101000a81548160ff0219169083151502179055506000601455600060155534801561017d57600080fd5b50600061018e61051560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073284a9cd33bc2315193d606f7358752795693dfb9600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61028f91906106bf565b64174876e80061029f919061070a565b600160006102b161051560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016003600061030361051d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061048e61051560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6104eb91906106bf565b64174876e8006104fb919061070a565b60405161050891906107bb565b60405180910390a36107d6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156105cc578086048111156105a8576105a7610546565b5b60018516156105b75780820291505b80810290506105c585610575565b945061058c565b94509492505050565b6000826105e557600190506106a1565b816105f357600090506106a1565b8160018114610609576002811461061357610642565b60019150506106a1565b60ff84111561062557610624610546565b5b8360020a91508482111561063c5761063b610546565b5b506106a1565b5060208310610133831016604e8410600b84101617156106775782820a90508381111561067257610671610546565b5b6106a1565b6106848484846001610582565b9250905081840481111561069b5761069a610546565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006106ca826106a8565b91506106d5836106b2565b92506107027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846105d5565b905092915050565b6000610715826106a8565b9150610720836106a8565b925082820261072e816106a8565b9150828204841483151761074557610744610546565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610786826106a8565b9150610791836106a8565b9250826107a1576107a061074c565b5b828204905092915050565b6107b5816106a8565b82525050565b60006020820190506107d060008301846107ac565b92915050565b613e06806107e56000396000f3fe6080604052600436106101a05760003560e01c806363700d5b116100ec5780639638c5181161008a578063d3c3542711610064578063d3c3542714610507578063dd62ed3e14610532578063ee9d2f291461056f578063f429389014610598576101a7565b80639638c5181461048a578063a9059cbb146104b3578063c9567bf9146104f0576101a7565b8063751039fc116100c6578063751039fc146104065780638a8c523c1461041d5780638da5cb5b1461043457806395d89b411461045f576101a7565b806363700d5b1461038757806370a08231146103b2578063715018a6146103ef576101a7565b806318160ddd116101595780632f5f2572116101335780632f5f257214610317578063313ce5671461032e5780633c0fa7f91461035957806351bc3c8514610370576101a7565b806318160ddd1461029857806323b872dd146102c35780632cedc85414610300576101a7565b806302a2c446146101ac57806306792d02146101d757806306fdde03146101ee57806307b6221b14610219578063095ea7b31461023057806311b290af1461026d576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c16105af565b6040516101ce9190612b2d565b60405180910390f35b3480156101e357600080fd5b506101ec6105b5565b005b3480156101fa57600080fd5b506102036106a2565b6040516102109190612bd8565b60405180910390f35b34801561022557600080fd5b5061022e6106df565b005b34801561023c57600080fd5b5061025760048036038101906102529190612c8e565b6107ce565b6040516102649190612ce9565b60405180910390f35b34801561027957600080fd5b506102826107ec565b60405161028f9190612b2d565b60405180910390f35b3480156102a457600080fd5b506102ad6107f2565b6040516102ba9190612b2d565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612d04565b610817565b6040516102f79190612ce9565b60405180910390f35b34801561030c57600080fd5b506103156108f0565b005b34801561032357600080fd5b5061032c6109d5565b005b34801561033a57600080fd5b50610343610acc565b6040516103509190612d73565b60405180910390f35b34801561036557600080fd5b5061036e610ad5565b005b34801561037c57600080fd5b50610385610c30565b005b34801561039357600080fd5b5061039c610d47565b6040516103a99190612b2d565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190612d8e565b610d4d565b6040516103e69190612b2d565b60405180910390f35b3480156103fb57600080fd5b50610404610d96565b005b34801561041257600080fd5b5061041b610ee9565b005b34801561042957600080fd5b5061043261101c565b005b34801561044057600080fd5b50610449611555565b6040516104569190612dca565b60405180910390f35b34801561046b57600080fd5b5061047461157e565b6040516104819190612bd8565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac9190612de5565b6115bb565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190612c8e565b61175a565b6040516104e79190612ce9565b60405180910390f35b3480156104fc57600080fd5b50610505611778565b005b34801561051357600080fd5b5061051c61182a565b6040516105299190612b2d565b60405180910390f35b34801561053e57600080fd5b5061055960048036038101906105549190612e12565b611830565b6040516105669190612b2d565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190612ee3565b6118b7565b005b3480156105a457600080fd5b506105ad6119eb565b005b60105481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105f6611ad7565b73ffffffffffffffffffffffffffffffffffffffff161480610651575061061b611555565b73ffffffffffffffffffffffffffffffffffffffff16610639611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b610690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068790612fb5565b60405180910390fd5b60006014819055506000601581905550565b60606040518060400160405280600781526020017f436c616e6b657200000000000000000000000000000000000000000000000000815250905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610720611ad7565b73ffffffffffffffffffffffffffffffffffffffff16148061077b5750610745611555565b73ffffffffffffffffffffffffffffffffffffffff16610763611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b6107ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b190612fb5565b60405180910390fd5b620f423f6014819055506000601581905550565b60006107e26107db611ad7565b8484611adf565b6001905092915050565b600f5481565b60006009600a6108029190613137565b64174876e8006108129190613182565b905090565b6000610824848484611ca8565b6108e584610830611ad7565b6108e085604051806060016040528060298152602001613da860299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610896611ad7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e39092919063ffffffff16565b611adf565b600190509392505050565b6108f8611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90613210565b60405180910390fd5b60016009546109949190613230565b600d819055507ff9f635b7cf851af6071aaf78ef8a5f752dc52f19d556fea4512b0c2ad4baea726007546040516109cb9190612b2d565b60405180910390a1565b6109dd611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6190613210565b60405180910390fd5b6000600c8190555060006005819055506000600681905550600060078190555060006008819055507ff9f635b7cf851af6071aaf78ef8a5f752dc52f19d556fea4512b0c2ad4baea726000604051610ac291906132a9565b60405180910390a1565b60006009905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b16611ad7565b73ffffffffffffffffffffffffffffffffffffffff161480610b715750610b3b611555565b73ffffffffffffffffffffffffffffffffffffffff16610b59611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba790612fb5565b60405180910390fd5b6000610bbb30610d4d565b905060008111610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613310565b60405180910390fd5b610c2d30600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611ca8565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c71611ad7565b73ffffffffffffffffffffffffffffffffffffffff161480610ccc5750610c96611555565b73ffffffffffffffffffffffffffffffffffffffff16610cb4611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290612fb5565b60405180910390fd5b6000610d1630610d4d565b90506000811115610d2b57610d2a81612647565b5b60004790506000811115610d4357610d42816128c0565b5b5050565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d9e611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2290613210565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ef1611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590613210565b60405180910390fd5b6009600a610f8c9190613137565b64174876e800610f9c9190613182565b600e819055506009600a610fb09190613137565b64174876e800610fc09190613182565b600f819055507fcc18a23b5455befc64930dd79aa26a968e67d6953c8c9b683acf16d4c26fff5c6009600a610ff59190613137565b64174876e8006110059190613182565b6040516110129190612b2d565b60405180910390a1565b611024611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890613210565b60405180910390fd5b601360179054906101000a900460ff1615611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f89061337c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111a030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61118b9190613137565b64174876e80061119b9190613182565b611adf565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123191906133b1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112de91906133b1565b6040518363ffffffff1660e01b81526004016112fb9291906133de565b6020604051808303816000875af115801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e91906133b1565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113c730610d4d565b6000806113d2611555565b426040518863ffffffff1660e01b81526004016113f496959493929190613407565b60606040518083038185885af1158015611412573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611437919061347d565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114d99291906134d0565b6020604051808303816000875af11580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151c919061350e565b506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f434c414e4b455200000000000000000000000000000000000000000000000000815250905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115fc611ad7565b73ffffffffffffffffffffffffffffffffffffffff1614806116575750611621611555565b73ffffffffffffffffffffffffffffffffffffffff1661163f611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90612fb5565b60405180910390fd5b600081116116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906135ad565b60405180910390fd5b60006116e430610d4d565b905081811015611729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172090613619565b60405180910390fd5b61175630600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ca8565b5050565b600061176e611767611ad7565b8484611ca8565b6001905092915050565b611780611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180490613210565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118bf611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194390613210565b60405180910390fd5b60005b838390508110156119e557816003600086868581811061197257611971613639565b5b90506020020160208101906119879190612d8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061194f565b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a2c611ad7565b73ffffffffffffffffffffffffffffffffffffffff161480611a875750611a51611555565b73ffffffffffffffffffffffffffffffffffffffff16611a6f611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90612fb5565b60405180910390fd5b6000479050611ad4816128c0565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b45906136da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb49061376c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c9b9190612b2d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e906137fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d90613890565b60405180910390fd5b60008111611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc090613922565b60405180910390fd5b6000611dd3611555565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e415750611e11611555565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561232657600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eb1575060011515601360149054906101000a900460ff161515145b611eba57600080fd5b6000600d5403611ec957600090505b6000600d541115611eff57611efc6064611eee600c548561292c90919063ffffffff16565b6129a690919063ffffffff16565b90505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611faa5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120005750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120f957600e5482111561204a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120419061398e565b60405180910390fd5b600f548261205785610d4d565b6120619190613230565b11156120a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612099906139fa565b60405180910390fd5b6120de60646120d0600954600d54116120bd576005546120c1565b6007545b8561292c90919063ffffffff16565b6129a690919063ffffffff16565b9050600d60008154809291906120f390613a1a565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561218257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121c6576121c360646121b5600a54600d54116121a2576006546121a6565b6008545b8561292c90919063ffffffff16565b6129a690919063ffffffff16565b90505b60006121d130610d4d565b9050601360159054906101000a900460ff1615801561223d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156122555750601360169054906101000a900460ff165b8015612262575060105481115b80156122715750600b54600d54115b15612324576015544311156122895760006014819055505b6005601454106122ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c590613aae565b60405180910390fd5b6122eb6122e6846122e1846011546129f0565b6129f0565b612647565b6000479050600081111561230357612302476128c0565b5b6014600081548092919061231690613a1a565b919050555043601581905550505b505b600081111561242a5761238181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124219190612b2d565b60405180910390a35b61247c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125236124d58284612a6790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6125c88486612a6790919063ffffffff16565b6040516125d59190612b2d565b60405180910390a350505050565b600083831115829061262b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126229190612bd8565b60405180910390fd5b506000838561263a9190613ace565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267f5761267e613b02565b5b6040519080825280602002602001820160405280156126ad5781602001602082028036833780820191505090505b50905030816000815181106126c5576126c4613639565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279091906133b1565b816001815181106127a4576127a3613639565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061280b30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611adf565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161286f959493929190613bef565b600060405180830381600087803b15801561288957600080fd5b505af115801561289d573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612928573d6000803e3d6000fd5b5050565b600080830361293e57600090506129a0565b6000828461294c9190613182565b905082848261295b9190613c78565b1461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290613d1b565b60405180910390fd5b809150505b92915050565b60006129e883836040518060400160405280601a81526020017f5361666543616c633a206469766973696f6e206279207a65726f000000000000815250612ab1565b905092915050565b60008183106129ff5781612a01565b825b905092915050565b6000808284612a189190613230565b905083811015612a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5490613d87565b60405180910390fd5b8091505092915050565b6000612aa983836040518060400160405280601e81526020017f5361666543616c633a207375627472616374696f6e206f766572666c6f7700008152506125e3565b905092915050565b60008083118290612af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aef9190612bd8565b60405180910390fd5b5060008385612b079190613c78565b9050809150509392505050565b6000819050919050565b612b2781612b14565b82525050565b6000602082019050612b426000830184612b1e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b82578082015181840152602081019050612b67565b60008484015250505050565b6000601f19601f8301169050919050565b6000612baa82612b48565b612bb48185612b53565b9350612bc4818560208601612b64565b612bcd81612b8e565b840191505092915050565b60006020820190508181036000830152612bf28184612b9f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2f82612c04565b9050919050565b612c3f81612c24565b8114612c4a57600080fd5b50565b600081359050612c5c81612c36565b92915050565b612c6b81612b14565b8114612c7657600080fd5b50565b600081359050612c8881612c62565b92915050565b60008060408385031215612ca557612ca4612bfa565b5b6000612cb385828601612c4d565b9250506020612cc485828601612c79565b9150509250929050565b60008115159050919050565b612ce381612cce565b82525050565b6000602082019050612cfe6000830184612cda565b92915050565b600080600060608486031215612d1d57612d1c612bfa565b5b6000612d2b86828701612c4d565b9350506020612d3c86828701612c4d565b9250506040612d4d86828701612c79565b9150509250925092565b600060ff82169050919050565b612d6d81612d57565b82525050565b6000602082019050612d886000830184612d64565b92915050565b600060208284031215612da457612da3612bfa565b5b6000612db284828501612c4d565b91505092915050565b612dc481612c24565b82525050565b6000602082019050612ddf6000830184612dbb565b92915050565b600060208284031215612dfb57612dfa612bfa565b5b6000612e0984828501612c79565b91505092915050565b60008060408385031215612e2957612e28612bfa565b5b6000612e3785828601612c4d565b9250506020612e4885828601612c4d565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612e7757612e76612e52565b5b8235905067ffffffffffffffff811115612e9457612e93612e57565b5b602083019150836020820283011115612eb057612eaf612e5c565b5b9250929050565b612ec081612cce565b8114612ecb57600080fd5b50565b600081359050612edd81612eb7565b92915050565b600080600060408486031215612efc57612efb612bfa565b5b600084013567ffffffffffffffff811115612f1a57612f19612bff565b5b612f2686828701612e61565b93509350506020612f3986828701612ece565b9150509250925092565b7f4f6e6c792066656520636f6c6c6563746f72206f72206f776e65722063616e2060008201527f63616c6c20746869732066756e6374696f6e0000000000000000000000000000602082015250565b6000612f9f603283612b53565b9150612faa82612f43565b604082019050919050565b60006020820190508181036000830152612fce81612f92565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561305b5780860481111561303757613036612fd5565b5b60018516156130465780820291505b808102905061305485613004565b945061301b565b94509492505050565b6000826130745760019050613130565b816130825760009050613130565b816001811461309857600281146130a2576130d1565b6001915050613130565b60ff8411156130b4576130b3612fd5565b5b8360020a9150848211156130cb576130ca612fd5565b5b50613130565b5060208310610133831016604e8410600b84101617156131065782820a90508381111561310157613100612fd5565b5b613130565b6131138484846001613011565b9250905081840481111561312a57613129612fd5565b5b81810290505b9392505050565b600061314282612b14565b915061314d83612d57565b925061317a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613064565b905092915050565b600061318d82612b14565b915061319883612b14565b92508282026131a681612b14565b915082820484148315176131bd576131bc612fd5565b5b5092915050565b7f4f776e65643a2063616c6c6572206973206e6f74207468652061646d696e0000600082015250565b60006131fa601e83612b53565b9150613205826131c4565b602082019050919050565b60006020820190508181036000830152613229816131ed565b9050919050565b600061323b82612b14565b915061324683612b14565b925082820190508082111561325e5761325d612fd5565b5b92915050565b6000819050919050565b6000819050919050565b600061329361328e61328984613264565b61326e565b612b14565b9050919050565b6132a381613278565b82525050565b60006020820190506132be600083018461329a565b92915050565b7f4e6f20746f6b656e7320746f2073656e64000000000000000000000000000000600082015250565b60006132fa601183612b53565b9150613305826132c4565b602082019050919050565b60006020820190508181036000830152613329816132ed565b9050919050565b7f54726164696e6720697320616c726561647920456e61626c6564000000000000600082015250565b6000613366601a83612b53565b915061337182613330565b602082019050919050565b6000602082019050818103600083015261339581613359565b9050919050565b6000815190506133ab81612c36565b92915050565b6000602082840312156133c7576133c6612bfa565b5b60006133d58482850161339c565b91505092915050565b60006040820190506133f36000830185612dbb565b6134006020830184612dbb565b9392505050565b600060c08201905061341c6000830189612dbb565b6134296020830188612b1e565b613436604083018761329a565b613443606083018661329a565b6134506080830185612dbb565b61345d60a0830184612b1e565b979650505050505050565b60008151905061347781612c62565b92915050565b60008060006060848603121561349657613495612bfa565b5b60006134a486828701613468565b93505060206134b586828701613468565b92505060406134c686828701613468565b9150509250925092565b60006040820190506134e56000830185612dbb565b6134f26020830184612b1e565b9392505050565b60008151905061350881612eb7565b92915050565b60006020828403121561352457613523612bfa565b5b6000613532848285016134f9565b91505092915050565b7f546f6b656e20616d6f756e74206d75737420626520677265617465722074686160008201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b6000613597602683612b53565b91506135a28261353b565b604082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f496e73756666696369656e742062616c616e636520696e20636f6e7472616374600082015250565b6000613603602083612b53565b915061360e826135cd565b602082019050919050565b60006020820190508181036000830152613632816135f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f49546f6b656e3a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136c4602583612b53565b91506136cf82613668565b604082019050919050565b600060208201905081810360008301526136f3816136b7565b9050919050565b7f49546f6b656e3a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613756602383612b53565b9150613761826136fa565b604082019050919050565b6000602082019050818103600083015261378581613749565b9050919050565b7f49546f6b656e3a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137e8602683612b53565b91506137f38261378c565b604082019050919050565b60006020820190508181036000830152613817816137db565b9050919050565b7f49546f6b656e3a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061387a602483612b53565b91506138858261381e565b604082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061390c602983612b53565b9150613917826138b0565b604082019050919050565b6000602082019050818103600083015261393b816138ff565b9050919050565b7f4578636565647320746865205f6d61785478416d742e00000000000000000000600082015250565b6000613978601683612b53565b915061398382613942565b602082019050919050565b600060208201905081810360008301526139a78161396b565b9050919050565b7f4578636565647320746865206d6178576c74416d742e00000000000000000000600082015250565b60006139e4601683612b53565b91506139ef826139ae565b602082019050919050565b60006020820190508181036000830152613a13816139d7565b9050919050565b6000613a2582612b14565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a5757613a56612fd5565b5b600182019050919050565b7f4f6e6c7920352073656c6c732070657220626c6f636b21000000000000000000600082015250565b6000613a98601783612b53565b9150613aa382613a62565b602082019050919050565b60006020820190508181036000830152613ac781613a8b565b9050919050565b6000613ad982612b14565b9150613ae483612b14565b9250828203905081811115613afc57613afb612fd5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b6681612c24565b82525050565b6000613b788383613b5d565b60208301905092915050565b6000602082019050919050565b6000613b9c82613b31565b613ba68185613b3c565b9350613bb183613b4d565b8060005b83811015613be2578151613bc98882613b6c565b9750613bd483613b84565b925050600181019050613bb5565b5085935050505092915050565b600060a082019050613c046000830188612b1e565b613c11602083018761329a565b8181036040830152613c238186613b91565b9050613c326060830185612dbb565b613c3f6080830184612b1e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c8382612b14565b9150613c8e83612b14565b925082613c9e57613c9d613c49565b5b828204905092915050565b7f5361666543616c633a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d05602183612b53565b9150613d1082613ca9565b604082019050919050565b60006020820190508181036000830152613d3481613cf8565b9050919050565b7f5361666543616c633a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d71601b83612b53565b9150613d7c82613d3b565b602082019050919050565b60006020820190508181036000830152613da081613d64565b905091905056fe49546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b832d7645f78be0387030c1b1fe79156a0fc79bd794cef9ebcdb3e5c871689f764736f6c634300081b0033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c806363700d5b116100ec5780639638c5181161008a578063d3c3542711610064578063d3c3542714610507578063dd62ed3e14610532578063ee9d2f291461056f578063f429389014610598576101a7565b80639638c5181461048a578063a9059cbb146104b3578063c9567bf9146104f0576101a7565b8063751039fc116100c6578063751039fc146104065780638a8c523c1461041d5780638da5cb5b1461043457806395d89b411461045f576101a7565b806363700d5b1461038757806370a08231146103b2578063715018a6146103ef576101a7565b806318160ddd116101595780632f5f2572116101335780632f5f257214610317578063313ce5671461032e5780633c0fa7f91461035957806351bc3c8514610370576101a7565b806318160ddd1461029857806323b872dd146102c35780632cedc85414610300576101a7565b806302a2c446146101ac57806306792d02146101d757806306fdde03146101ee57806307b6221b14610219578063095ea7b31461023057806311b290af1461026d576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c16105af565b6040516101ce9190612b2d565b60405180910390f35b3480156101e357600080fd5b506101ec6105b5565b005b3480156101fa57600080fd5b506102036106a2565b6040516102109190612bd8565b60405180910390f35b34801561022557600080fd5b5061022e6106df565b005b34801561023c57600080fd5b5061025760048036038101906102529190612c8e565b6107ce565b6040516102649190612ce9565b60405180910390f35b34801561027957600080fd5b506102826107ec565b60405161028f9190612b2d565b60405180910390f35b3480156102a457600080fd5b506102ad6107f2565b6040516102ba9190612b2d565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612d04565b610817565b6040516102f79190612ce9565b60405180910390f35b34801561030c57600080fd5b506103156108f0565b005b34801561032357600080fd5b5061032c6109d5565b005b34801561033a57600080fd5b50610343610acc565b6040516103509190612d73565b60405180910390f35b34801561036557600080fd5b5061036e610ad5565b005b34801561037c57600080fd5b50610385610c30565b005b34801561039357600080fd5b5061039c610d47565b6040516103a99190612b2d565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190612d8e565b610d4d565b6040516103e69190612b2d565b60405180910390f35b3480156103fb57600080fd5b50610404610d96565b005b34801561041257600080fd5b5061041b610ee9565b005b34801561042957600080fd5b5061043261101c565b005b34801561044057600080fd5b50610449611555565b6040516104569190612dca565b60405180910390f35b34801561046b57600080fd5b5061047461157e565b6040516104819190612bd8565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac9190612de5565b6115bb565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190612c8e565b61175a565b6040516104e79190612ce9565b60405180910390f35b3480156104fc57600080fd5b50610505611778565b005b34801561051357600080fd5b5061051c61182a565b6040516105299190612b2d565b60405180910390f35b34801561053e57600080fd5b5061055960048036038101906105549190612e12565b611830565b6040516105669190612b2d565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190612ee3565b6118b7565b005b3480156105a457600080fd5b506105ad6119eb565b005b60105481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105f6611ad7565b73ffffffffffffffffffffffffffffffffffffffff161480610651575061061b611555565b73ffffffffffffffffffffffffffffffffffffffff16610639611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b610690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068790612fb5565b60405180910390fd5b60006014819055506000601581905550565b60606040518060400160405280600781526020017f436c616e6b657200000000000000000000000000000000000000000000000000815250905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610720611ad7565b73ffffffffffffffffffffffffffffffffffffffff16148061077b5750610745611555565b73ffffffffffffffffffffffffffffffffffffffff16610763611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b6107ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b190612fb5565b60405180910390fd5b620f423f6014819055506000601581905550565b60006107e26107db611ad7565b8484611adf565b6001905092915050565b600f5481565b60006009600a6108029190613137565b64174876e8006108129190613182565b905090565b6000610824848484611ca8565b6108e584610830611ad7565b6108e085604051806060016040528060298152602001613da860299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610896611ad7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125e39092919063ffffffff16565b611adf565b600190509392505050565b6108f8611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90613210565b60405180910390fd5b60016009546109949190613230565b600d819055507ff9f635b7cf851af6071aaf78ef8a5f752dc52f19d556fea4512b0c2ad4baea726007546040516109cb9190612b2d565b60405180910390a1565b6109dd611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6190613210565b60405180910390fd5b6000600c8190555060006005819055506000600681905550600060078190555060006008819055507ff9f635b7cf851af6071aaf78ef8a5f752dc52f19d556fea4512b0c2ad4baea726000604051610ac291906132a9565b60405180910390a1565b60006009905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b16611ad7565b73ffffffffffffffffffffffffffffffffffffffff161480610b715750610b3b611555565b73ffffffffffffffffffffffffffffffffffffffff16610b59611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba790612fb5565b60405180910390fd5b6000610bbb30610d4d565b905060008111610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613310565b60405180910390fd5b610c2d30600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611ca8565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c71611ad7565b73ffffffffffffffffffffffffffffffffffffffff161480610ccc5750610c96611555565b73ffffffffffffffffffffffffffffffffffffffff16610cb4611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290612fb5565b60405180910390fd5b6000610d1630610d4d565b90506000811115610d2b57610d2a81612647565b5b60004790506000811115610d4357610d42816128c0565b5b5050565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d9e611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2290613210565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ef1611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590613210565b60405180910390fd5b6009600a610f8c9190613137565b64174876e800610f9c9190613182565b600e819055506009600a610fb09190613137565b64174876e800610fc09190613182565b600f819055507fcc18a23b5455befc64930dd79aa26a968e67d6953c8c9b683acf16d4c26fff5c6009600a610ff59190613137565b64174876e8006110059190613182565b6040516110129190612b2d565b60405180910390a1565b611024611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890613210565b60405180910390fd5b601360179054906101000a900460ff1615611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f89061337c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111a030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61118b9190613137565b64174876e80061119b9190613182565b611adf565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123191906133b1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112de91906133b1565b6040518363ffffffff1660e01b81526004016112fb9291906133de565b6020604051808303816000875af115801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e91906133b1565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113c730610d4d565b6000806113d2611555565b426040518863ffffffff1660e01b81526004016113f496959493929190613407565b60606040518083038185885af1158015611412573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611437919061347d565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114d99291906134d0565b6020604051808303816000875af11580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151c919061350e565b506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f434c414e4b455200000000000000000000000000000000000000000000000000815250905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115fc611ad7565b73ffffffffffffffffffffffffffffffffffffffff1614806116575750611621611555565b73ffffffffffffffffffffffffffffffffffffffff1661163f611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90612fb5565b60405180910390fd5b600081116116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906135ad565b60405180910390fd5b60006116e430610d4d565b905081811015611729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172090613619565b60405180910390fd5b61175630600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ca8565b5050565b600061176e611767611ad7565b8484611ca8565b6001905092915050565b611780611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180490613210565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118bf611ad7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194390613210565b60405180910390fd5b60005b838390508110156119e557816003600086868581811061197257611971613639565b5b90506020020160208101906119879190612d8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061194f565b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a2c611ad7565b73ffffffffffffffffffffffffffffffffffffffff161480611a875750611a51611555565b73ffffffffffffffffffffffffffffffffffffffff16611a6f611ad7565b73ffffffffffffffffffffffffffffffffffffffff16145b611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90612fb5565b60405180910390fd5b6000479050611ad4816128c0565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b45906136da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb49061376c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c9b9190612b2d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e906137fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d90613890565b60405180910390fd5b60008111611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc090613922565b60405180910390fd5b6000611dd3611555565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e415750611e11611555565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561232657600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eb1575060011515601360149054906101000a900460ff161515145b611eba57600080fd5b6000600d5403611ec957600090505b6000600d541115611eff57611efc6064611eee600c548561292c90919063ffffffff16565b6129a690919063ffffffff16565b90505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611faa5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120005750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120f957600e5482111561204a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120419061398e565b60405180910390fd5b600f548261205785610d4d565b6120619190613230565b11156120a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612099906139fa565b60405180910390fd5b6120de60646120d0600954600d54116120bd576005546120c1565b6007545b8561292c90919063ffffffff16565b6129a690919063ffffffff16565b9050600d60008154809291906120f390613a1a565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561218257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121c6576121c360646121b5600a54600d54116121a2576006546121a6565b6008545b8561292c90919063ffffffff16565b6129a690919063ffffffff16565b90505b60006121d130610d4d565b9050601360159054906101000a900460ff1615801561223d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156122555750601360169054906101000a900460ff165b8015612262575060105481115b80156122715750600b54600d54115b15612324576015544311156122895760006014819055505b6005601454106122ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c590613aae565b60405180910390fd5b6122eb6122e6846122e1846011546129f0565b6129f0565b612647565b6000479050600081111561230357612302476128c0565b5b6014600081548092919061231690613a1a565b919050555043601581905550505b505b600081111561242a5761238181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124219190612b2d565b60405180910390a35b61247c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125236124d58284612a6790919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6125c88486612a6790919063ffffffff16565b6040516125d59190612b2d565b60405180910390a350505050565b600083831115829061262b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126229190612bd8565b60405180910390fd5b506000838561263a9190613ace565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267f5761267e613b02565b5b6040519080825280602002602001820160405280156126ad5781602001602082028036833780820191505090505b50905030816000815181106126c5576126c4613639565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279091906133b1565b816001815181106127a4576127a3613639565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061280b30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611adf565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161286f959493929190613bef565b600060405180830381600087803b15801561288957600080fd5b505af115801561289d573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612928573d6000803e3d6000fd5b5050565b600080830361293e57600090506129a0565b6000828461294c9190613182565b905082848261295b9190613c78565b1461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290613d1b565b60405180910390fd5b809150505b92915050565b60006129e883836040518060400160405280601a81526020017f5361666543616c633a206469766973696f6e206279207a65726f000000000000815250612ab1565b905092915050565b60008183106129ff5781612a01565b825b905092915050565b6000808284612a189190613230565b905083811015612a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5490613d87565b60405180910390fd5b8091505092915050565b6000612aa983836040518060400160405280601e81526020017f5361666543616c633a207375627472616374696f6e206f766572666c6f7700008152506125e3565b905092915050565b60008083118290612af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aef9190612bd8565b60405180910390fd5b5060008385612b079190613c78565b9050809150509392505050565b6000819050919050565b612b2781612b14565b82525050565b6000602082019050612b426000830184612b1e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b82578082015181840152602081019050612b67565b60008484015250505050565b6000601f19601f8301169050919050565b6000612baa82612b48565b612bb48185612b53565b9350612bc4818560208601612b64565b612bcd81612b8e565b840191505092915050565b60006020820190508181036000830152612bf28184612b9f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2f82612c04565b9050919050565b612c3f81612c24565b8114612c4a57600080fd5b50565b600081359050612c5c81612c36565b92915050565b612c6b81612b14565b8114612c7657600080fd5b50565b600081359050612c8881612c62565b92915050565b60008060408385031215612ca557612ca4612bfa565b5b6000612cb385828601612c4d565b9250506020612cc485828601612c79565b9150509250929050565b60008115159050919050565b612ce381612cce565b82525050565b6000602082019050612cfe6000830184612cda565b92915050565b600080600060608486031215612d1d57612d1c612bfa565b5b6000612d2b86828701612c4d565b9350506020612d3c86828701612c4d565b9250506040612d4d86828701612c79565b9150509250925092565b600060ff82169050919050565b612d6d81612d57565b82525050565b6000602082019050612d886000830184612d64565b92915050565b600060208284031215612da457612da3612bfa565b5b6000612db284828501612c4d565b91505092915050565b612dc481612c24565b82525050565b6000602082019050612ddf6000830184612dbb565b92915050565b600060208284031215612dfb57612dfa612bfa565b5b6000612e0984828501612c79565b91505092915050565b60008060408385031215612e2957612e28612bfa565b5b6000612e3785828601612c4d565b9250506020612e4885828601612c4d565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612e7757612e76612e52565b5b8235905067ffffffffffffffff811115612e9457612e93612e57565b5b602083019150836020820283011115612eb057612eaf612e5c565b5b9250929050565b612ec081612cce565b8114612ecb57600080fd5b50565b600081359050612edd81612eb7565b92915050565b600080600060408486031215612efc57612efb612bfa565b5b600084013567ffffffffffffffff811115612f1a57612f19612bff565b5b612f2686828701612e61565b93509350506020612f3986828701612ece565b9150509250925092565b7f4f6e6c792066656520636f6c6c6563746f72206f72206f776e65722063616e2060008201527f63616c6c20746869732066756e6374696f6e0000000000000000000000000000602082015250565b6000612f9f603283612b53565b9150612faa82612f43565b604082019050919050565b60006020820190508181036000830152612fce81612f92565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561305b5780860481111561303757613036612fd5565b5b60018516156130465780820291505b808102905061305485613004565b945061301b565b94509492505050565b6000826130745760019050613130565b816130825760009050613130565b816001811461309857600281146130a2576130d1565b6001915050613130565b60ff8411156130b4576130b3612fd5565b5b8360020a9150848211156130cb576130ca612fd5565b5b50613130565b5060208310610133831016604e8410600b84101617156131065782820a90508381111561310157613100612fd5565b5b613130565b6131138484846001613011565b9250905081840481111561312a57613129612fd5565b5b81810290505b9392505050565b600061314282612b14565b915061314d83612d57565b925061317a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613064565b905092915050565b600061318d82612b14565b915061319883612b14565b92508282026131a681612b14565b915082820484148315176131bd576131bc612fd5565b5b5092915050565b7f4f776e65643a2063616c6c6572206973206e6f74207468652061646d696e0000600082015250565b60006131fa601e83612b53565b9150613205826131c4565b602082019050919050565b60006020820190508181036000830152613229816131ed565b9050919050565b600061323b82612b14565b915061324683612b14565b925082820190508082111561325e5761325d612fd5565b5b92915050565b6000819050919050565b6000819050919050565b600061329361328e61328984613264565b61326e565b612b14565b9050919050565b6132a381613278565b82525050565b60006020820190506132be600083018461329a565b92915050565b7f4e6f20746f6b656e7320746f2073656e64000000000000000000000000000000600082015250565b60006132fa601183612b53565b9150613305826132c4565b602082019050919050565b60006020820190508181036000830152613329816132ed565b9050919050565b7f54726164696e6720697320616c726561647920456e61626c6564000000000000600082015250565b6000613366601a83612b53565b915061337182613330565b602082019050919050565b6000602082019050818103600083015261339581613359565b9050919050565b6000815190506133ab81612c36565b92915050565b6000602082840312156133c7576133c6612bfa565b5b60006133d58482850161339c565b91505092915050565b60006040820190506133f36000830185612dbb565b6134006020830184612dbb565b9392505050565b600060c08201905061341c6000830189612dbb565b6134296020830188612b1e565b613436604083018761329a565b613443606083018661329a565b6134506080830185612dbb565b61345d60a0830184612b1e565b979650505050505050565b60008151905061347781612c62565b92915050565b60008060006060848603121561349657613495612bfa565b5b60006134a486828701613468565b93505060206134b586828701613468565b92505060406134c686828701613468565b9150509250925092565b60006040820190506134e56000830185612dbb565b6134f26020830184612b1e565b9392505050565b60008151905061350881612eb7565b92915050565b60006020828403121561352457613523612bfa565b5b6000613532848285016134f9565b91505092915050565b7f546f6b656e20616d6f756e74206d75737420626520677265617465722074686160008201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b6000613597602683612b53565b91506135a28261353b565b604082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f496e73756666696369656e742062616c616e636520696e20636f6e7472616374600082015250565b6000613603602083612b53565b915061360e826135cd565b602082019050919050565b60006020820190508181036000830152613632816135f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f49546f6b656e3a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136c4602583612b53565b91506136cf82613668565b604082019050919050565b600060208201905081810360008301526136f3816136b7565b9050919050565b7f49546f6b656e3a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613756602383612b53565b9150613761826136fa565b604082019050919050565b6000602082019050818103600083015261378581613749565b9050919050565b7f49546f6b656e3a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137e8602683612b53565b91506137f38261378c565b604082019050919050565b60006020820190508181036000830152613817816137db565b9050919050565b7f49546f6b656e3a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061387a602483612b53565b91506138858261381e565b604082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061390c602983612b53565b9150613917826138b0565b604082019050919050565b6000602082019050818103600083015261393b816138ff565b9050919050565b7f4578636565647320746865205f6d61785478416d742e00000000000000000000600082015250565b6000613978601683612b53565b915061398382613942565b602082019050919050565b600060208201905081810360008301526139a78161396b565b9050919050565b7f4578636565647320746865206d6178576c74416d742e00000000000000000000600082015250565b60006139e4601683612b53565b91506139ef826139ae565b602082019050919050565b60006020820190508181036000830152613a13816139d7565b9050919050565b6000613a2582612b14565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a5757613a56612fd5565b5b600182019050919050565b7f4f6e6c7920352073656c6c732070657220626c6f636b21000000000000000000600082015250565b6000613a98601783612b53565b9150613aa382613a62565b602082019050919050565b60006020820190508181036000830152613ac781613a8b565b9050919050565b6000613ad982612b14565b9150613ae483612b14565b9250828203905081811115613afc57613afb612fd5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b6681612c24565b82525050565b6000613b788383613b5d565b60208301905092915050565b6000602082019050919050565b6000613b9c82613b31565b613ba68185613b3c565b9350613bb183613b4d565b8060005b83811015613be2578151613bc98882613b6c565b9750613bd483613b84565b925050600181019050613bb5565b5085935050505092915050565b600060a082019050613c046000830188612b1e565b613c11602083018761329a565b8181036040830152613c238186613b91565b9050613c326060830185612dbb565b613c3f6080830184612b1e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c8382612b14565b9150613c8e83612b14565b925082613c9e57613c9d613c49565b5b828204905092915050565b7f5361666543616c633a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d05602183612b53565b9150613d1082613ca9565b604082019050919050565b60006020820190508181036000830152613d3481613cf8565b9050919050565b7f5361666543616c633a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d71601b83612b53565b9150613d7c82613d3b565b602082019050919050565b60006020820190508181036000830152613da081613d64565b905091905056fe49546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b832d7645f78be0387030c1b1fe79156a0fc79bd794cef9ebcdb3e5c871689f764736f6c634300081b0033

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.