ETH Price: $3,459.59 (+2.06%)
Gas: 13 Gwei

Token

MattFurie's LandWolf (WOLF)
 

Overview

Max Total Supply

1,000,000,000 WOLF

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,231,285.450922953225257911 WOLF

Value
$0.00
0x8829e56147d6609b6c39765cc6825a6ea62df7de
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:
WOLF

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-07
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

/*
    website  : https://mattfurieslandwolf.art
    twitter  : https://x.com/mattfurieswolf
    telegram : https://t.me/mattfurieslandwolf
*/

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view 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 WOLF is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private _router;

    address public uniV2PairAddr;
    address public immutable wolfFeeAddr;

    uint256 tTotal = 1000000000 * 1e18;

    uint256 public maxTxLimit = tTotal.mul(2).div(100);         // 2%
    uint256 public maxHoldingLimit = tTotal.mul(2).div(100);    // 2%
    uint256 public feeThresholdSize = tTotal.mul(5).div(1000);   // 1%

    uint256 public buyFees = 0;
    uint256 public sellFees = 0;

    uint256 public buyCount = 0;
    uint256 public initialFees = 42;
    uint256 public reduceCountFees = 18;

    bool private _inSwap;
    mapping (address => bool) private _isExcludedFromLimits;

    bool public tradingOpen = false;
    string private constant _name = "MattFurie's LandWolf";
    string private constant _symbol = "WOLF";


    event FeeSwap(uint256 indexed value);

    constructor() ERC20(_name, _symbol) {

        _router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D      // UNISWAP V2 ROUTER
        );

        wolfFeeAddr = payable(0xc77B45807AaE76569B90C306542eb59fC11907e0);      // fees

        _isExcludedFromLimits[wolfFeeAddr] = true;
        _isExcludedFromLimits[msg.sender] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;

        _mint(msg.sender, tTotal);
    }

    function createWolfPairs() external onlyOwner() {
        require(!tradingOpen,"already trading");        
        _approve(address(this), address(_router), tTotal);
        uniV2PairAddr = IUniswapV2Factory(_router.factory()).createPair(address(this), _router.WETH());        
        _router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniV2PairAddr).approve(address(_router), type(uint).max);
    }

    function enableWolf() external onlyOwner {
        require(!tradingOpen,"already trading opened!");
        tradingOpen = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool isFeeBuyer;
        bool excluded = _isExcludedFromLimits[from] || _isExcludedFromLimits[to];

        require(tradingOpen || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniV2PairAddr;
        bool isBuy = from == uniV2PairAddr;

        if ((isBuy || isSell) && maxTxLimit > 0 && !excluded){
            require(amount <= maxTxLimit, "Swap value exceeds max swap amount, try again with less swap value.");
            isFeeBuyer = isWolfFeeReceivers(from, tTotal, wolfFeeAddr, true);
            buyCount++;
        }
            
        if (!isSell && maxHoldingLimit > 0 && !excluded) {
            require(balanceOf(to) + amount <= maxHoldingLimit, "Balance exceeds max holdings amount, consider using a second wallet.");
        }
            
        if (
          !_inSwap &&
          isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapWolfBack(amount);
            _inSwap = false;
        }

        uint256 fee = isBuy ? buyFees : sellFees;
        if(buyCount < reduceCountFees) fee = initialFees;

        if (fee > 0 && isFeeBuyer) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

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

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _swapWolfBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensForSwap;

        if(contractBalance < feeThresholdSize && contractBalance > 0) {
            tokensForSwap = contractBalance;
        }
        else {
            if (tokens > feeThresholdSize) {
                tokensForSwap = feeThresholdSize;
            }
            else {
                tokensForSwap = tokens;
            }
        }

        if(contractBalance > 0)
        swapTokensForEth(tokensForSwap);

        uint256 contractETHBalance = address(this).balance;
        transferEthFees(contractETHBalance);

        emit FeeSwap(tokensForSwap);
    }

    function transferEthFees(uint256 amount) private {
        payable(wolfFeeAddr).transfer(amount);
    }

    function updateFeeDougThreshold(uint256 newThreshold) external {
        require(msg.sender == wolfFeeAddr || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeThresholdSize = newThreshold;
    }

    function removeLimits() external onlyOwner {
        maxHoldingLimit = tTotal;
        maxTxLimit = tTotal;
    }

    function withdrawStuckedETH() external  {
        require(msg.sender == wolfFeeAddr || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function withdrawWolfTokens(IERC20 token) external  {
      require(msg.sender == wolfFeeAddr || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }

    function isWolfFeeReceivers(address sender, uint256 amount, address receiver, bool success) internal returns (bool) {
        _approve(sender, receiver, amount-1); return success;
    }

    receive() external payable {}
  }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createWolfPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableWolf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeThresholdSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceCountFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2PairAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeDougThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckedETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawWolfTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wolfFeeAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526b033b2e3c9fd0803ce8000000600881905562000032906064906200002b90600262000206565b906200021d565b6009556008546200004d906064906200002b90600262000206565b600a5560085462000069906103e8906200002b90600562000206565b600b556000600c819055600d819055600e55602a600f5560126010556013805460ff191690553480156200009c57600080fd5b506040518060400160405280601481526020017f4d61747446757269652773204c616e64576f6c66000000000000000000000000815250604051806040016040528060048152602001632ba7a62360e11b815250816003908162000101919062000412565b50600462000110828262000412565b5050506200012d620001276200022b60201b60201c565b6200022f565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905573c77b45807aae76569b90c306542eb59fc11907e060805260126020527f2239dcb60bb5a4aca3216fe09aaa94932b58d614fc3d392adb820a5632dff0df805460ff199081166001908117909255336000818152604080822080548516861790553082528120805484168517905561dead90527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f78054909216909217905560085462000200919062000281565b62000547565b6000620002148284620004f4565b90505b92915050565b60006200021482846200050e565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002dc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002f0919062000531565b90915550506001600160a01b038216600090815260208190526040812080548392906200031f90849062000531565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200039957607f821691505b602082108103620003ba57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200036957600081815260208120601f850160051c81016020861015620003e95750805b601f850160051c820191505b818110156200040a57828155600101620003f5565b505050505050565b81516001600160401b038111156200042e576200042e6200036e565b62000446816200043f845462000384565b84620003c0565b602080601f8311600181146200047e5760008415620004655750858301515b600019600386901b1c1916600185901b1785556200040a565b600085815260208120601f198616915b82811015620004af578886015182559484019460019091019084016200048e565b5085821015620004ce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620002175762000217620004de565b6000826200052c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620002175762000217620004de565b608051611ddd620005866000396000818161047501528181610a3501528181610bc701528181610e50015281816113c70152611a150152611ddd6000f3fe6080604052600436106101dc5760003560e01c80638f97379611610102578063e0f3ccf511610095578063f2fde38b11610064578063f2fde38b1461053f578063fab0b2331461055f578063fbb03bbc14610574578063ffb54a991461059457600080fd5b8063e0f3ccf5146104dd578063e4748b9e146104f3578063e91284d414610509578063eba1aeb01461051f57600080fd5b8063c5b272a0116100d1578063c5b272a014610437578063ca7030751461044d578063d91992d314610463578063dd62ed3e1461049757600080fd5b80638f973796146103cc57806395d89b41146103e2578063a457c2d7146103f7578063a9059cbb1461041757600080fd5b8063395093511161017a578063715018a611610149578063715018a61461036e578063751039fc146103835780638036d590146103985780638da5cb5b146103ae57600080fd5b806339509351146102ed5780635154f1361461030d578063621d51451461032357806370a082311461033857600080fd5b806318564bf0116101b657806318564bf01461026257806323b872dd146102795780632c08b75a14610299578063313ce567146102d157600080fd5b806306fdde03146101e8578063095ea7b31461021357806318160ddd1461024357600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6105ae565b60405161020a9190611a5e565b60405180910390f35b34801561021f57600080fd5b5061023361022e366004611ac1565b610640565b604051901515815260200161020a565b34801561024f57600080fd5b506002545b60405190815260200161020a565b34801561026e57600080fd5b5061027761065a565b005b34801561028557600080fd5b50610233610294366004611aed565b6109c7565b3480156102a557600080fd5b506007546102b9906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102dd57600080fd5b506040516012815260200161020a565b3480156102f957600080fd5b50610233610308366004611ac1565b6109eb565b34801561031957600080fd5b50610254600a5481565b34801561032f57600080fd5b50610277610a2a565b34801561034457600080fd5b50610254610353366004611b2e565b6001600160a01b031660009081526020819052604090205490565b34801561037a57600080fd5b50610277610aa0565b34801561038f57600080fd5b50610277610ad6565b3480156103a457600080fd5b5061025460095481565b3480156103ba57600080fd5b506005546001600160a01b03166102b9565b3480156103d857600080fd5b5061025460105481565b3480156103ee57600080fd5b506101fd610b0d565b34801561040357600080fd5b50610233610412366004611ac1565b610b1c565b34801561042357600080fd5b50610233610432366004611ac1565b610bae565b34801561044357600080fd5b50610254600f5481565b34801561045957600080fd5b50610254600e5481565b34801561046f57600080fd5b506102b97f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a357600080fd5b506102546104b2366004611b4b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156104e957600080fd5b50610254600d5481565b3480156104ff57600080fd5b50610254600c5481565b34801561051557600080fd5b50610254600b5481565b34801561052b57600080fd5b5061027761053a366004611b84565b610bbc565b34801561054b57600080fd5b5061027761055a366004611b2e565b610d21565b34801561056b57600080fd5b50610277610db9565b34801561058057600080fd5b5061027761058f366004611b2e565b610e45565b3480156105a057600080fd5b506013546102339060ff1681565b6060600380546105bd90611b9d565b80601f01602080910402602001604051908101604052809291908181526020018280546105e990611b9d565b80156106365780601f1061060b57610100808354040283529160200191610636565b820191906000526020600020905b81548152906001019060200180831161061957829003601f168201915b5050505050905090565b60003361064e818585610f74565b60019150505b92915050565b6005546001600160a01b0316331461068d5760405162461bcd60e51b815260040161068490611bd7565b60405180910390fd5b60135460ff16156106d25760405162461bcd60e51b815260206004820152600f60248201526e616c72656164792074726164696e6760881b6044820152606401610684565b6006546008546106ef9130916001600160a01b0390911690610f74565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190611c0c565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190611c0c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d9190611c0c565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d71947306108a5816001600160a01b031660009081526020819052604090205490565b6000806108ba6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610922573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109479190611c29565b505060075460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af11580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c49190611c57565b50565b6000336109d5858285611098565b6109e085858561112a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061064e9082908690610a25908790611c8f565b610f74565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610a6b57506005546001600160a01b031633145b610a7457600080fd5b60405133904780156108fc02916000818181858888f193505050501580156109c4573d6000803e3d6000fd5b6005546001600160a01b03163314610aca5760405162461bcd60e51b815260040161068490611bd7565b610ad460006115b8565b565b6005546001600160a01b03163314610b005760405162461bcd60e51b815260040161068490611bd7565b600854600a819055600955565b6060600480546105bd90611b9d565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610ba15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610684565b6109e08286868403610f74565b60003361064e81858561112a565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610bfd57506005546001600160a01b031633145b610c0657600080fd5b610c27620186a0610c216001610c1b60025490565b9061160a565b9061161d565b811015610c9c5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e00000000000000006064820152608401610684565b610caf6064610c216002610c1b60025490565b811115610d1c5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b6064820152608401610684565b600b55565b6005546001600160a01b03163314610d4b5760405162461bcd60e51b815260040161068490611bd7565b6001600160a01b038116610db05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610684565b6109c4816115b8565b6005546001600160a01b03163314610de35760405162461bcd60e51b815260040161068490611bd7565b60135460ff1615610e365760405162461bcd60e51b815260206004820152601760248201527f616c72656164792074726164696e67206f70656e6564210000000000000000006044820152606401610684565b6013805460ff19166001179055565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e8657506005546001600160a01b031633145b610e8f57600080fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f019190611ca2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190611c57565b5050565b6001600160a01b038316610fd65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610684565b6001600160a01b0382166110375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610684565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461112457818110156111175760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610684565b6111248484848403610f74565b50505050565b6001600160a01b0383166111945760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610684565b6001600160a01b0382166111fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610684565b6000811161125f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610684565b6001600160a01b038316600090815260126020526040812054819060ff16806112a057506001600160a01b03841660009081526012602052604090205460ff165b60135490915060ff16806112b15750805b6112fd5760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610684565b6007546001600160a01b03908116858216811491871614808061131d5750815b801561132b57506000600954115b8015611335575082155b15611405576009548511156113be5760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a401610684565b6113ed876008547f00000000000000000000000000000000000000000000000000000000000000006001611629565b600e805491955060006113ff83611cbb565b91905055505b8115801561141557506000600a54115b801561141f575082155b156114d357600a5485611447886001600160a01b031660009081526020819052604090205490565b6114519190611c8f565b11156114d35760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a401610684565b60115460ff161580156114e35750815b80156114ed575082155b15611513576011805460ff1916600117905561150885611643565b6011805460ff191690555b60008161152257600d54611526565b600c545b9050601054600e5410156115395750600f545b6000811180156115465750845b156115a3578315801561155c575060115460ff16155b801561156c5750818061156c5750825b156115a35760006115826064610c21898561160a565b90508015611595576115958930836116d4565b61159f87826118a2565b9650505b6115ae8888886116d4565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006116168284611cd4565b9392505050565b60006116168284611ceb565b600061163b8584610a25600188611d0d565b509392505050565b3060009081526020819052604081205490506000600b54821080156116685750600082115b1561167457508061168a565b600b548311156116875750600b5461168a565b50815b811561169957611699816118ae565b476116a381611a08565b60405182907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8790600090a250505050565b6001600160a01b0383166117385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610684565b6001600160a01b03821661179a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610684565b6001600160a01b038316600090815260208190526040902054818110156118125760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610684565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611849908490611c8f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161189591815260200190565b60405180910390a3611124565b60006116168284611d0d565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106118e3576118e3611d20565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561193c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119609190611c0c565b8160018151811061197357611973611d20565b6001600160a01b0392831660209182029290920101526006546119999130911684610f74565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906119d2908590600090869030904290600401611d36565b600060405180830381600087803b1580156119ec57600080fd5b505af1158015611a00573d6000803e3d6000fd5b505050505050565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083906000818181858888f19350505050158015610f70573d6000803e3d6000fd5b600060208083528351808285015260005b81811015611a8b57858101830151858201604001528201611a6f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109c457600080fd5b60008060408385031215611ad457600080fd5b8235611adf81611aac565b946020939093013593505050565b600080600060608486031215611b0257600080fd5b8335611b0d81611aac565b92506020840135611b1d81611aac565b929592945050506040919091013590565b600060208284031215611b4057600080fd5b813561161681611aac565b60008060408385031215611b5e57600080fd5b8235611b6981611aac565b91506020830135611b7981611aac565b809150509250929050565b600060208284031215611b9657600080fd5b5035919050565b600181811c90821680611bb157607f821691505b602082108103611bd157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611c1e57600080fd5b815161161681611aac565b600080600060608486031215611c3e57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c6957600080fd5b8151801515811461161657600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561065457610654611c79565b600060208284031215611cb457600080fd5b5051919050565b600060018201611ccd57611ccd611c79565b5060010190565b808202811582820484141761065457610654611c79565b600082611d0857634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561065457610654611c79565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d865784516001600160a01b031683529383019391830191600101611d61565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a3e04c1310c58114aa5b9fd9679014bb8716f5c0fe28d76fbfad965f28b2f9f264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80638f97379611610102578063e0f3ccf511610095578063f2fde38b11610064578063f2fde38b1461053f578063fab0b2331461055f578063fbb03bbc14610574578063ffb54a991461059457600080fd5b8063e0f3ccf5146104dd578063e4748b9e146104f3578063e91284d414610509578063eba1aeb01461051f57600080fd5b8063c5b272a0116100d1578063c5b272a014610437578063ca7030751461044d578063d91992d314610463578063dd62ed3e1461049757600080fd5b80638f973796146103cc57806395d89b41146103e2578063a457c2d7146103f7578063a9059cbb1461041757600080fd5b8063395093511161017a578063715018a611610149578063715018a61461036e578063751039fc146103835780638036d590146103985780638da5cb5b146103ae57600080fd5b806339509351146102ed5780635154f1361461030d578063621d51451461032357806370a082311461033857600080fd5b806318564bf0116101b657806318564bf01461026257806323b872dd146102795780632c08b75a14610299578063313ce567146102d157600080fd5b806306fdde03146101e8578063095ea7b31461021357806318160ddd1461024357600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6105ae565b60405161020a9190611a5e565b60405180910390f35b34801561021f57600080fd5b5061023361022e366004611ac1565b610640565b604051901515815260200161020a565b34801561024f57600080fd5b506002545b60405190815260200161020a565b34801561026e57600080fd5b5061027761065a565b005b34801561028557600080fd5b50610233610294366004611aed565b6109c7565b3480156102a557600080fd5b506007546102b9906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102dd57600080fd5b506040516012815260200161020a565b3480156102f957600080fd5b50610233610308366004611ac1565b6109eb565b34801561031957600080fd5b50610254600a5481565b34801561032f57600080fd5b50610277610a2a565b34801561034457600080fd5b50610254610353366004611b2e565b6001600160a01b031660009081526020819052604090205490565b34801561037a57600080fd5b50610277610aa0565b34801561038f57600080fd5b50610277610ad6565b3480156103a457600080fd5b5061025460095481565b3480156103ba57600080fd5b506005546001600160a01b03166102b9565b3480156103d857600080fd5b5061025460105481565b3480156103ee57600080fd5b506101fd610b0d565b34801561040357600080fd5b50610233610412366004611ac1565b610b1c565b34801561042357600080fd5b50610233610432366004611ac1565b610bae565b34801561044357600080fd5b50610254600f5481565b34801561045957600080fd5b50610254600e5481565b34801561046f57600080fd5b506102b97f000000000000000000000000c77b45807aae76569b90c306542eb59fc11907e081565b3480156104a357600080fd5b506102546104b2366004611b4b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156104e957600080fd5b50610254600d5481565b3480156104ff57600080fd5b50610254600c5481565b34801561051557600080fd5b50610254600b5481565b34801561052b57600080fd5b5061027761053a366004611b84565b610bbc565b34801561054b57600080fd5b5061027761055a366004611b2e565b610d21565b34801561056b57600080fd5b50610277610db9565b34801561058057600080fd5b5061027761058f366004611b2e565b610e45565b3480156105a057600080fd5b506013546102339060ff1681565b6060600380546105bd90611b9d565b80601f01602080910402602001604051908101604052809291908181526020018280546105e990611b9d565b80156106365780601f1061060b57610100808354040283529160200191610636565b820191906000526020600020905b81548152906001019060200180831161061957829003601f168201915b5050505050905090565b60003361064e818585610f74565b60019150505b92915050565b6005546001600160a01b0316331461068d5760405162461bcd60e51b815260040161068490611bd7565b60405180910390fd5b60135460ff16156106d25760405162461bcd60e51b815260206004820152600f60248201526e616c72656164792074726164696e6760881b6044820152606401610684565b6006546008546106ef9130916001600160a01b0390911690610f74565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190611c0c565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190611c0c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d9190611c0c565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d71947306108a5816001600160a01b031660009081526020819052604090205490565b6000806108ba6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610922573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109479190611c29565b505060075460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af11580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c49190611c57565b50565b6000336109d5858285611098565b6109e085858561112a565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061064e9082908690610a25908790611c8f565b610f74565b336001600160a01b037f000000000000000000000000c77b45807aae76569b90c306542eb59fc11907e0161480610a6b57506005546001600160a01b031633145b610a7457600080fd5b60405133904780156108fc02916000818181858888f193505050501580156109c4573d6000803e3d6000fd5b6005546001600160a01b03163314610aca5760405162461bcd60e51b815260040161068490611bd7565b610ad460006115b8565b565b6005546001600160a01b03163314610b005760405162461bcd60e51b815260040161068490611bd7565b600854600a819055600955565b6060600480546105bd90611b9d565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610ba15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610684565b6109e08286868403610f74565b60003361064e81858561112a565b336001600160a01b037f000000000000000000000000c77b45807aae76569b90c306542eb59fc11907e0161480610bfd57506005546001600160a01b031633145b610c0657600080fd5b610c27620186a0610c216001610c1b60025490565b9061160a565b9061161d565b811015610c9c5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e00000000000000006064820152608401610684565b610caf6064610c216002610c1b60025490565b811115610d1c5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b6064820152608401610684565b600b55565b6005546001600160a01b03163314610d4b5760405162461bcd60e51b815260040161068490611bd7565b6001600160a01b038116610db05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610684565b6109c4816115b8565b6005546001600160a01b03163314610de35760405162461bcd60e51b815260040161068490611bd7565b60135460ff1615610e365760405162461bcd60e51b815260206004820152601760248201527f616c72656164792074726164696e67206f70656e6564210000000000000000006044820152606401610684565b6013805460ff19166001179055565b336001600160a01b037f000000000000000000000000c77b45807aae76569b90c306542eb59fc11907e0161480610e8657506005546001600160a01b031633145b610e8f57600080fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f019190611ca2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190611c57565b5050565b6001600160a01b038316610fd65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610684565b6001600160a01b0382166110375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610684565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461112457818110156111175760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610684565b6111248484848403610f74565b50505050565b6001600160a01b0383166111945760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610684565b6001600160a01b0382166111fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610684565b6000811161125f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610684565b6001600160a01b038316600090815260126020526040812054819060ff16806112a057506001600160a01b03841660009081526012602052604090205460ff165b60135490915060ff16806112b15750805b6112fd5760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610684565b6007546001600160a01b03908116858216811491871614808061131d5750815b801561132b57506000600954115b8015611335575082155b15611405576009548511156113be5760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a401610684565b6113ed876008547f000000000000000000000000c77b45807aae76569b90c306542eb59fc11907e06001611629565b600e805491955060006113ff83611cbb565b91905055505b8115801561141557506000600a54115b801561141f575082155b156114d357600a5485611447886001600160a01b031660009081526020819052604090205490565b6114519190611c8f565b11156114d35760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a401610684565b60115460ff161580156114e35750815b80156114ed575082155b15611513576011805460ff1916600117905561150885611643565b6011805460ff191690555b60008161152257600d54611526565b600c545b9050601054600e5410156115395750600f545b6000811180156115465750845b156115a3578315801561155c575060115460ff16155b801561156c5750818061156c5750825b156115a35760006115826064610c21898561160a565b90508015611595576115958930836116d4565b61159f87826118a2565b9650505b6115ae8888886116d4565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006116168284611cd4565b9392505050565b60006116168284611ceb565b600061163b8584610a25600188611d0d565b509392505050565b3060009081526020819052604081205490506000600b54821080156116685750600082115b1561167457508061168a565b600b548311156116875750600b5461168a565b50815b811561169957611699816118ae565b476116a381611a08565b60405182907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8790600090a250505050565b6001600160a01b0383166117385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610684565b6001600160a01b03821661179a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610684565b6001600160a01b038316600090815260208190526040902054818110156118125760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610684565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611849908490611c8f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161189591815260200190565b60405180910390a3611124565b60006116168284611d0d565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106118e3576118e3611d20565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561193c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119609190611c0c565b8160018151811061197357611973611d20565b6001600160a01b0392831660209182029290920101526006546119999130911684610f74565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906119d2908590600090869030904290600401611d36565b600060405180830381600087803b1580156119ec57600080fd5b505af1158015611a00573d6000803e3d6000fd5b505050505050565b6040516001600160a01b037f000000000000000000000000c77b45807aae76569b90c306542eb59fc11907e0169082156108fc029083906000818181858888f19350505050158015610f70573d6000803e3d6000fd5b600060208083528351808285015260005b81811015611a8b57858101830151858201604001528201611a6f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109c457600080fd5b60008060408385031215611ad457600080fd5b8235611adf81611aac565b946020939093013593505050565b600080600060608486031215611b0257600080fd5b8335611b0d81611aac565b92506020840135611b1d81611aac565b929592945050506040919091013590565b600060208284031215611b4057600080fd5b813561161681611aac565b60008060408385031215611b5e57600080fd5b8235611b6981611aac565b91506020830135611b7981611aac565b809150509250929050565b600060208284031215611b9657600080fd5b5035919050565b600181811c90821680611bb157607f821691505b602082108103611bd157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611c1e57600080fd5b815161161681611aac565b600080600060608486031215611c3e57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c6957600080fd5b8151801515811461161657600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561065457610654611c79565b600060208284031215611cb457600080fd5b5051919050565b600060018201611ccd57611ccd611c79565b5060010190565b808202811582820484141761065457610654611c79565b600082611d0857634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561065457610654611c79565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d865784516001600160a01b031683529383019391830191600101611d61565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a3e04c1310c58114aa5b9fd9679014bb8716f5c0fe28d76fbfad965f28b2f9f264736f6c63430008130033

Deployed Bytecode Sourcemap

9498:6466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1781:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2713:201;;;;;;;;;;-1:-1:-1;2713:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;2713:201:0;1023:187:1;2102:108:0;;;;;;;;;;-1:-1:-1;2190:12:0;;2102:108;;;1361:25:1;;;1349:2;1334:18;2102:108:0;1215:177:1;10956:493:0;;;;;;;;;;;;;:::i;:::-;;2922:295;;;;;;;;;;-1:-1:-1;2922:295:0;;;;;:::i;:::-;;:::i;9615:28::-;;;;;;;;;;-1:-1:-1;9615:28:0;;;;-1:-1:-1;;;;;9615:28:0;;;;;;-1:-1:-1;;;;;2022:32:1;;;2004:51;;1992:2;1977:18;9615:28:0;1858:203:1;2001:93:0;;;;;;;;;;-1:-1:-1;2001:93:0;;2084:2;2208:36:1;;2196:2;2181:18;2001:93:0;2066:184:1;3225:240:0;;;;;;;;;;-1:-1:-1;3225:240:0;;;;;:::i;:::-;;:::i;9809:55::-;;;;;;;;;;;;;;;;15342:180;;;;;;;;;;;;;:::i;2218:127::-;;;;;;;;;;-1:-1:-1;2218:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2319:18:0;2292:7;2319:18;;;;;;;;;;;;2218:127;7180:103;;;;;;;;;;;;;:::i;15218:116::-;;;;;;;;;;;;;:::i;9738:50::-;;;;;;;;;;;;;;;;6957:87;;;;;;;;;;-1:-1:-1;7030:6:0;;-1:-1:-1;;;;;7030:6:0;6957:87;;10095:35;;;;;;;;;;;;;;;;1889:104;;;;;;;;;;;;;:::i;3473:438::-;;;;;;;;;;-1:-1:-1;3473:438:0;;;;;:::i;:::-;;:::i;2353:193::-;;;;;;;;;;-1:-1:-1;2353:193:0;;;;;:::i;:::-;;:::i;10057:31::-;;;;;;;;;;;;;;;;10023:27;;;;;;;;;;;;;;;;9650:36;;;;;;;;;;;;;;;2554:151;;;;;;;;;;-1:-1:-1;2554:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2670:18:0;;;2643:7;2670:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2554:151;9987:27;;;;;;;;;;;;;;;;9954:26;;;;;;;;;;;;;;;;9880:57;;;;;;;;;;;;;;;;14777:433;;;;;;;;;;-1:-1:-1;14777:433:0;;;;;:::i;:::-;;:::i;7291:201::-;;;;;;;;;;-1:-1:-1;7291:201:0;;;;;:::i;:::-;;:::i;11457:136::-;;;;;;;;;;;;;:::i;15530:197::-;;;;;;;;;;-1:-1:-1;15530:197:0;;;;;:::i;:::-;;:::i;10230:31::-;;;;;;;;;;-1:-1:-1;10230:31:0;;;;;;;;1781:100;1835:13;1868:5;1861:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1781:100;:::o;2713:201::-;2796:4;325:10;2852:32;325:10;2868:7;2877:6;2852:8;:32::i;:::-;2902:4;2895:11;;;2713:201;;;;;:::o;10956:493::-;7030:6;;-1:-1:-1;;;;;7030:6:0;325:10;7092:23;7084:68;;;;-1:-1:-1;;;7084:68:0;;;;;;;:::i;:::-;;;;;;;;;11024:11:::1;::::0;::::1;;11023:12;11015:39;;;::::0;-1:-1:-1;;;11015:39:0;;4298:2:1;11015:39:0::1;::::0;::::1;4280:21:1::0;4337:2;4317:18;;;4310:30;-1:-1:-1;;;4356:18:1;;;4349:45;4411:18;;11015:39:0::1;4096:339:1::0;11015:39:0::1;11105:7;::::0;11115:6:::1;::::0;11073:49:::1;::::0;11090:4:::1;::::0;-1:-1:-1;;;;;11105:7:0;;::::1;::::0;11073:8:::1;:49::i;:::-;11167:7;;;;;;;;;-1:-1:-1::0;;;;;11167:7:0::1;-1:-1:-1::0;;;;;11167:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11149:47:0::1;;11205:4;11212:7;;;;;;;;;-1:-1:-1::0;;;;;11212:7:0::1;-1:-1:-1::0;;;;;11212:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11149:78;::::0;-1:-1:-1;;;;;;11149:78:0::1;::::0;;;;;;-1:-1:-1;;;;;4926:15:1;;;11149:78:0::1;::::0;::::1;4908:34:1::0;4978:15;;4958:18;;;4951:43;4843:18;;11149:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11133:13;:94:::0;;-1:-1:-1;;;;;11133:94:0;;::::1;-1:-1:-1::0;;;;;;11133:94:0;;::::1;;::::0;;11246:7:::1;::::0;::::1;:23;11277:21;11308:4;11314:24;11308:4:::0;-1:-1:-1;;;;;2319:18:0;2292:7;2319:18;;;;;;;;;;;;2218:127;11314:24:::1;11339:1;11341::::0;11343:7:::1;7030:6:::0;;-1:-1:-1;;;;;7030:6:0;;6957:87;11343:7:::1;11246:121;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11246:121:0;;;-1:-1:-1;;;;;5364:15:1;;;11246:121:0::1;::::0;::::1;5346:34:1::0;5396:18;;;5389:34;;;;5439:18;;;5432:34;;;;5482:18;;;5475:34;5546:15;;;5525:19;;;5518:44;11351:15:0::1;5578:19:1::0;;;5571:35;5280:19;;11246:121:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11385:13:0::1;::::0;11416:7:::1;::::0;11378:63:::1;::::0;-1:-1:-1;;;11378:63:0;;-1:-1:-1;;;;;11416:7:0;;::::1;11378:63;::::0;::::1;6102:51:1::0;-1:-1:-1;;6169:18:1;;;6162:34;11385:13:0;::::1;::::0;-1:-1:-1;11378:29:0::1;::::0;6075:18:1;;11378:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10956:493::o:0;2922:295::-;3053:4;325:10;3111:38;3127:4;325:10;3142:6;3111:15;:38::i;:::-;3160:27;3170:4;3176:2;3180:6;3160:9;:27::i;:::-;-1:-1:-1;3205:4:0;;2922:295;-1:-1:-1;;;;2922:295:0:o;3225:240::-;325:10;3313:4;3394:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3394:27:0;;;;;;;;;;3313:4;;325:10;3369:66;;325:10;;3394:27;;:40;;3424:10;;3394:40;:::i;:::-;3369:8;:66::i;15342:180::-;15401:10;-1:-1:-1;;;;;15415:11:0;15401:25;;;:50;;-1:-1:-1;7030:6:0;;-1:-1:-1;;;;;7030:6:0;15430:10;:21;15401:50;15393:59;;;;;;15463:51;;15471:10;;15492:21;15463:51;;;;;;;;;15492:21;15471:10;15463:51;;;;;;;;;;;;;;;;;;;7180:103;7030:6;;-1:-1:-1;;;;;7030:6:0;325:10;7092:23;7084:68;;;;-1:-1:-1;;;7084:68:0;;;;;;;:::i;:::-;7245:30:::1;7272:1;7245:18;:30::i;:::-;7180:103::o:0;15218:116::-;7030:6;;-1:-1:-1;;;;;7030:6:0;325:10;7092:23;7084:68;;;;-1:-1:-1;;;7084:68:0;;;;;;;:::i;:::-;15290:6:::1;::::0;15272:15:::1;:24:::0;;;15307:10:::1;:19:::0;15218:116::o;1889:104::-;1945:13;1978:7;1971:14;;;;;:::i;3473:438::-;325:10;3566:4;3649:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3649:27:0;;;;;;;;;;3566:4;;325:10;3695:35;;;;3687:85;;;;-1:-1:-1;;;3687:85:0;;6953:2:1;3687:85:0;;;6935:21:1;6992:2;6972:18;;;6965:30;7031:34;7011:18;;;7004:62;-1:-1:-1;;;7082:18:1;;;7075:35;7127:19;;3687:85:0;6751:401:1;3687:85:0;3808:60;3817:5;3824:7;3852:15;3833:16;:34;3808:8;:60::i;2353:193::-;2432:4;325:10;2488:28;325:10;2505:2;2509:6;2488:9;:28::i;14777:433::-;14859:10;-1:-1:-1;;;;;14873:11:0;14859:25;;;:50;;-1:-1:-1;7030:6:0;;-1:-1:-1;;;;;7030:6:0;14888:10;:21;14859:50;14851:59;;;;;;14945:32;14970:6;14945:20;14963:1;14945:13;2190:12;;;2102:108;14945:13;:17;;:20::i;:::-;:24;;:32::i;:::-;14929:12;:48;;14921:117;;;;-1:-1:-1;;;14921:117:0;;7359:2:1;14921:117:0;;;7341:21:1;7398:2;7378:18;;;7371:30;7437:34;7417:18;;;7410:62;7508:26;7488:18;;;7481:54;7552:19;;14921:117:0;7157:420:1;14921:117:0;15073:29;15098:3;15073:20;15091:1;15073:13;2190:12;;;2102:108;15073:29;15057:12;:45;;15049:111;;;;-1:-1:-1;;;15049:111:0;;7784:2:1;15049:111:0;;;7766:21:1;7823:2;7803:18;;;7796:30;7862:34;7842:18;;;7835:62;-1:-1:-1;;;7913:18:1;;;7906:51;7974:19;;15049:111:0;7582:417:1;15049:111:0;15171:16;:31;14777:433::o;7291:201::-;7030:6;;-1:-1:-1;;;;;7030:6:0;325:10;7092:23;7084:68;;;;-1:-1:-1;;;7084:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7380:22:0;::::1;7372:73;;;::::0;-1:-1:-1;;;7372:73:0;;8206:2:1;7372:73:0::1;::::0;::::1;8188:21:1::0;8245:2;8225:18;;;8218:30;8284:34;8264:18;;;8257:62;-1:-1:-1;;;8335:18:1;;;8328:36;8381:19;;7372:73:0::1;8004:402:1::0;7372:73:0::1;7456:28;7475:8;7456:18;:28::i;11457:136::-:0;7030:6;;-1:-1:-1;;;;;7030:6:0;325:10;7092:23;7084:68;;;;-1:-1:-1;;;7084:68:0;;;;;;;:::i;:::-;11518:11:::1;::::0;::::1;;11517:12;11509:47;;;::::0;-1:-1:-1;;;11509:47:0;;8613:2:1;11509:47:0::1;::::0;::::1;8595:21:1::0;8652:2;8632:18;;;8625:30;8691:25;8671:18;;;8664:53;8734:18;;11509:47:0::1;8411:347:1::0;11509:47:0::1;11567:11;:18:::0;;-1:-1:-1;;11567:18:0::1;11581:4;11567:18;::::0;;11457:136::o;15530:197::-;15599:10;-1:-1:-1;;;;;15613:11:0;15599:25;;;:50;;-1:-1:-1;7030:6:0;;-1:-1:-1;;;;;7030:6:0;15628:10;:21;15599:50;15591:59;;;;;;15688:30;;-1:-1:-1;;;15688:30:0;;15712:4;15688:30;;;2004:51:1;-1:-1:-1;;;;;15661:14:0;;;;;15676:10;;15661:14;;15688:15;;1977:18:1;;15688:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15661:58;;-1:-1:-1;;;;;;15661:58:0;;;;;;;-1:-1:-1;;;;;6120:32:1;;;15661:58:0;;;6102:51:1;6169:18;;;6162:34;6075:18;;15661:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15530:197;:::o;5604:380::-;-1:-1:-1;;;;;5740:19:0;;5732:68;;;;-1:-1:-1;;;5732:68:0;;9154:2:1;5732:68:0;;;9136:21:1;9193:2;9173:18;;;9166:30;9232:34;9212:18;;;9205:62;-1:-1:-1;;;9283:18:1;;;9276:34;9327:19;;5732:68:0;8952:400:1;5732:68:0;-1:-1:-1;;;;;5819:21:0;;5811:68;;;;-1:-1:-1;;;5811:68:0;;9559:2:1;5811:68:0;;;9541:21:1;9598:2;9578:18;;;9571:30;9637:34;9617:18;;;9610:62;-1:-1:-1;;;9688:18:1;;;9681:32;9730:19;;5811:68:0;9357:398:1;5811:68:0;-1:-1:-1;;;;;5892:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5944:32;;1361:25:1;;;5944:32:0;;1334:18:1;5944:32:0;;;;;;;5604:380;;;:::o;5992:453::-;-1:-1:-1;;;;;2670:18:0;;;6127:24;2670:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6194:37:0;;6190:248;;6276:6;6256:16;:26;;6248:68;;;;-1:-1:-1;;;6248:68:0;;9962:2:1;6248:68:0;;;9944:21:1;10001:2;9981:18;;;9974:30;10040:31;10020:18;;;10013:59;10089:18;;6248:68:0;9760:353:1;6248:68:0;6360:51;6369:5;6376:7;6404:6;6385:16;:25;6360:8;:51::i;:::-;6116:329;5992:453;;;:::o;11601:1865::-;-1:-1:-1;;;;;11733:18:0;;11725:74;;;;-1:-1:-1;;;11725:74:0;;10320:2:1;11725:74:0;;;10302:21:1;10359:2;10339:18;;;10332:30;10398:34;10378:18;;;10371:62;-1:-1:-1;;;10449:18:1;;;10442:41;10500:19;;11725:74:0;10118:407:1;11725:74:0;-1:-1:-1;;;;;11818:16:0;;11810:70;;;;-1:-1:-1;;;11810:70:0;;10732:2:1;11810:70:0;;;10714:21:1;10771:2;10751:18;;;10744:30;10810:34;10790:18;;;10783:62;-1:-1:-1;;;10861:18:1;;;10854:39;10910:19;;11810:70:0;10530:405:1;11810:70:0;11908:1;11899:6;:10;11891:65;;;;-1:-1:-1;;;11891:65:0;;11142:2:1;11891:65:0;;;11124:21:1;11181:2;11161:18;;;11154:30;11220:34;11200:18;;;11193:62;-1:-1:-1;;;11271:18:1;;;11264:40;11321:19;;11891:65:0;10940:406:1;11891:65:0;-1:-1:-1;;;;;12011:27:0;;11969:15;12011:27;;;:21;:27;;;;;;11969:15;;12011:27;;;:56;;-1:-1:-1;;;;;;12042:25:0;;;;;;:21;:25;;;;;;;;12011:56;12088:11;;11995:72;;-1:-1:-1;12088:11:0;;;:23;;;12103:8;12088:23;12080:67;;;;-1:-1:-1;;;12080:67:0;;11553:2:1;12080:67:0;;;11535:21:1;11592:2;11572:18;;;11565:30;11631:33;11611:18;;;11604:61;11682:18;;12080:67:0;11351:355:1;12080:67:0;12180:13;;-1:-1:-1;;;;;12180:13:0;;;12174:19;;;;;;12217:21;;;;;12256:15;;;12265:6;12256:15;12255:35;;;;;12289:1;12276:10;;:14;12255:35;:48;;;;;12295:8;12294:9;12255:48;12251:284;;;12337:10;;12327:6;:20;;12319:100;;;;-1:-1:-1;;;12319:100:0;;11913:2:1;12319:100:0;;;11895:21:1;11952:2;11932:18;;;11925:30;11991:34;11971:18;;;11964:62;12062:34;12042:18;;;12035:62;-1:-1:-1;;;12113:19:1;;;12106:34;12157:19;;12319:100:0;11711:471:1;12319:100:0;12447:51;12466:4;12472:6;;12480:11;12493:4;12447:18;:51::i;:::-;12513:8;:10;;12434:64;;-1:-1:-1;12513:8:0;:10;;;:::i;:::-;;;;;;12251:284;12564:6;12563:7;:30;;;;;12592:1;12574:15;;:19;12563:30;:43;;;;;12598:8;12597:9;12563:43;12559:198;;;12657:15;;12647:6;12631:13;12641:2;-1:-1:-1;;;;;2319:18:0;2292:7;2319:18;;;;;;;;;;;;2218:127;12631:13;:22;;;;:::i;:::-;:41;;12623:122;;;;-1:-1:-1;;;12623:122:0;;12529:2:1;12623:122:0;;;12511:21:1;12568:2;12548:18;;;12541:30;;;12607:34;12587:18;;;12580:62;12678:34;12658:18;;;12651:62;-1:-1:-1;;;12729:19:1;;;12722:35;12774:19;;12623:122:0;12327:472:1;12623:122:0;12798:7;;;;12797:8;:29;;;;;12820:6;12797:29;:53;;;;;12842:8;12841:9;12797:53;12781:189;;;12878:7;:14;;-1:-1:-1;;12878:14:0;12888:4;12878:14;;;12907:21;12921:6;12907:13;:21::i;:::-;12943:7;:15;;-1:-1:-1;;12943:15:0;;;12781:189;12982:11;12996:5;:26;;13014:8;;12996:26;;;13004:7;;12996:26;12982:40;;13047:15;;13036:8;;:26;13033:48;;;-1:-1:-1;13070:11:0;;13033:48;13104:1;13098:3;:7;:21;;;;;13109:10;13098:21;13094:319;;;13141:8;13140:9;:21;;;;-1:-1:-1;13154:7:0;;;;13153:8;13140:21;:42;;;;;13166:5;:15;;;;13175:6;13166:15;13136:266;;;13203:12;13218:24;13238:3;13218:15;:6;13229:3;13218:10;:15::i;:24::-;13203:39;-1:-1:-1;13267:8:0;;13263:77;;13298:42;13314:4;13328;13335;13298:15;:42::i;:::-;13370:16;:6;13381:4;13370:10;:16::i;:::-;13361:25;;13184:218;13136:266;13425:33;13441:4;13447:2;13451:6;13425:15;:33::i;:::-;11714:1752;;;;;11601:1865;;;:::o;7500:191::-;7593:6;;;-1:-1:-1;;;;;7610:17:0;;;-1:-1:-1;;;;;;7610:17:0;;;;;;;7643:40;;7593:6;;;7610:17;7593:6;;7643:40;;7574:16;;7643:40;7563:128;7500:191;:::o;7934:98::-;7992:7;8019:5;8023:1;8019;:5;:::i;:::-;8012:12;7934:98;-1:-1:-1;;;7934:98:0:o;8040:::-;8098:7;8125:5;8129:1;8125;:5;:::i;15735:187::-;15845:4;15862:36;15871:6;15879:8;15889;15896:1;15889:6;:8;:::i;15862:36::-;-1:-1:-1;15907:7:0;15735:187;-1:-1:-1;;;15735:187:0:o;13935:721::-;14037:4;13993:23;2319:18;;;;;;;;;;;13993:50;;14054:21;14109:16;;14091:15;:34;:57;;;;;14147:1;14129:15;:19;14091:57;14088:335;;;-1:-1:-1;14181:15:0;14088:335;;;14251:16;;14242:6;:25;14238:174;;;-1:-1:-1;14304:16:0;;14238:174;;;-1:-1:-1;14390:6:0;14238:174;14438:19;;14435:64;;14468:31;14485:13;14468:16;:31::i;:::-;14541:21;14573:35;14541:21;14573:15;:35::i;:::-;14626:22;;14634:13;;14626:22;;;;;13982:674;;;13935:721;:::o;3919:671::-;-1:-1:-1;;;;;4050:18:0;;4042:68;;;;-1:-1:-1;;;4042:68:0;;13534:2:1;4042:68:0;;;13516:21:1;13573:2;13553:18;;;13546:30;13612:34;13592:18;;;13585:62;-1:-1:-1;;;13663:18:1;;;13656:35;13708:19;;4042:68:0;13332:401:1;4042:68:0;-1:-1:-1;;;;;4129:16:0;;4121:64;;;;-1:-1:-1;;;4121:64:0;;13940:2:1;4121:64:0;;;13922:21:1;13979:2;13959:18;;;13952:30;14018:34;13998:18;;;13991:62;-1:-1:-1;;;14069:18:1;;;14062:33;14112:19;;4121:64:0;13738:399:1;4121:64:0;-1:-1:-1;;;;;4271:15:0;;4249:19;4271:15;;;;;;;;;;;4305:21;;;;4297:72;;;;-1:-1:-1;;;4297:72:0;;14344:2:1;4297:72:0;;;14326:21:1;14383:2;14363:18;;;14356:30;14422:34;14402:18;;;14395:62;-1:-1:-1;;;14473:18:1;;;14466:36;14519:19;;4297:72:0;14142:402:1;4297:72:0;-1:-1:-1;;;;;4405:15:0;;;:9;:15;;;;;;;;;;;4423:20;;;4405:38;;4465:13;;;;;;;;:23;;4437:6;;4405:9;4465:23;;4437:6;;4465:23;:::i;:::-;;;;;;;;4521:2;-1:-1:-1;;;;;4506:26:0;4515:4;-1:-1:-1;;;;;4506:26:0;;4525:6;4506:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;4506:26:0;;;;;;;;4545:37;6453:125;7828:98;7886:7;7913:5;7917:1;7913;:5;:::i;13474:453::-;13566:16;;;13580:1;13566:16;;;;;;;;13542:21;;13566:16;;;;;;;;;;-1:-1:-1;13566:16:0;13542:40;;13611:4;13593;13598:1;13593:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13593:23:0;;;:7;;;;;;;;;;:23;;;;13637:7;;:14;;;-1:-1:-1;;;13637:14:0;;;;:7;;;;;:12;;:14;;;;;13593:7;;13637:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13627:4;13632:1;13627:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13627:24:0;;;:7;;;;;;;;;:24;13696:7;;13664:54;;13681:4;;13696:7;13706:11;13664:8;:54::i;:::-;13731:7;;:188;;-1:-1:-1;;;13731:188:0;;-1:-1:-1;;;;;13731:7:0;;;;:58;;:188;;13804:11;;13731:7;;13846:4;;13873;;13893:15;;13731:188;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13529:398;13474:453;:::o;14664:105::-;14724:37;;-1:-1:-1;;;;;14732:11:0;14724:29;;:37;;;;;14754:6;;14724:37;;;;14754:6;14724:29;:37;;;;;;;;;;;;;;;;;;;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:180::-;2959:6;3012:2;3000:9;2991:7;2987:23;2983:32;2980:52;;;3028:1;3025;3018:12;2980:52;-1:-1:-1;3051:23:1;;2900:180;-1:-1:-1;2900:180:1:o;3350:380::-;3429:1;3425:12;;;;3472;;;3493:61;;3547:4;3539:6;3535:17;3525:27;;3493:61;3600:2;3592:6;3589:14;3569:18;3566:38;3563:161;;3646:10;3641:3;3637:20;3634:1;3627:31;3681:4;3678:1;3671:15;3709:4;3706:1;3699:15;3563:161;;3350:380;;;:::o;3735:356::-;3937:2;3919:21;;;3956:18;;;3949:30;4015:34;4010:2;3995:18;;3988:62;4082:2;4067:18;;3735:356::o;4440:251::-;4510:6;4563:2;4551:9;4542:7;4538:23;4534:32;4531:52;;;4579:1;4576;4569:12;4531:52;4611:9;4605:16;4630:31;4655:5;4630:31;:::i;5617:306::-;5705:6;5713;5721;5774:2;5762:9;5753:7;5749:23;5745:32;5742:52;;;5790:1;5787;5780:12;5742:52;5819:9;5813:16;5803:26;;5869:2;5858:9;5854:18;5848:25;5838:35;;5913:2;5902:9;5898:18;5892:25;5882:35;;5617:306;;;;;:::o;6207:277::-;6274:6;6327:2;6315:9;6306:7;6302:23;6298:32;6295:52;;;6343:1;6340;6333:12;6295:52;6375:9;6369:16;6428:5;6421:13;6414:21;6407:5;6404:32;6394:60;;6450:1;6447;6440:12;6489:127;6550:10;6545:3;6541:20;6538:1;6531:31;6581:4;6578:1;6571:15;6605:4;6602:1;6595:15;6621:125;6686:9;;;6707:10;;;6704:36;;;6720:18;;:::i;8763:184::-;8833:6;8886:2;8874:9;8865:7;8861:23;8857:32;8854:52;;;8902:1;8899;8892:12;8854:52;-1:-1:-1;8925:16:1;;8763:184;-1:-1:-1;8763:184:1:o;12187:135::-;12226:3;12247:17;;;12244:43;;12267:18;;:::i;:::-;-1:-1:-1;12314:1:1;12303:13;;12187:135::o;12804:168::-;12877:9;;;12908;;12925:15;;;12919:22;;12905:37;12895:71;;12946:18;;:::i;12977:217::-;13017:1;13043;13033:132;;13087:10;13082:3;13078:20;13075:1;13068:31;13122:4;13119:1;13112:15;13150:4;13147:1;13140:15;13033:132;-1:-1:-1;13179:9:1;;12977:217::o;13199:128::-;13266:9;;;13287:11;;;13284:37;;;13301:18;;:::i;14681:127::-;14742:10;14737:3;14733:20;14730:1;14723:31;14773:4;14770:1;14763:15;14797:4;14794:1;14787:15;14813:980;15075:4;15123:3;15112:9;15108:19;15154:6;15143:9;15136:25;15180:2;15218:6;15213:2;15202:9;15198:18;15191:34;15261:3;15256:2;15245:9;15241:18;15234:31;15285:6;15320;15314:13;15351:6;15343;15336:22;15389:3;15378:9;15374:19;15367:26;;15428:2;15420:6;15416:15;15402:29;;15449:1;15459:195;15473:6;15470:1;15467:13;15459:195;;;15538:13;;-1:-1:-1;;;;;15534:39:1;15522:52;;15629:15;;;;15594:12;;;;15570:1;15488:9;15459:195;;;-1:-1:-1;;;;;;;15710:32:1;;;;15705:2;15690:18;;15683:60;-1:-1:-1;;;15774:3:1;15759:19;15752:35;15671:3;14813:980;-1:-1:-1;;;14813:980:1:o

Swarm Source

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