ETH Price: $3,296.20 (-3.61%)
Gas: 12 Gwei

Token

Magiverse (MAGI)
 

Overview

Max Total Supply

1,000,000,000 MAGI

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000002 MAGI

Value
$0.00
0x2cc9f73db5bec93cb4a3b06eb971932803c75a64
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:
MAGIVERSE

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**   
-------------------------------------------------------------------------------- 
                             *                  (              (    (        
      { --.\  |            (  `    (     (      )\ )           )\ ) )\ )     
       '-._\\ | (\___     )\))(   )\    )\ )  (()/((   (  (  (()/((()/((    
           `\\|{/ ^ _)--((_)()((((_)( (()/(   /(_))\  )\ )\  /(_))/(_))\   
       .'^^^^^^^  /`    (_()((_)\ _ )\ /(_))_(_))((_)((_|(_)(_)) (_))((_)  
      //\   ) ,  /      |  \/  (_)_\(_|_)) __|_ _\ \ / /| __| _ \/ __| __| 
,  _.'/  `\<-- \<       | |\/| |/ _ \   | (_ || | \ V / | _||   /\__ \ _|  
 `^^^`     ^^   ^^      |_|  |_/_/ \_\   \___|___| \_/  |___|_|_\|___/___| 
--------------------------------------------------------------------------------

Step into the enchanted realm of Magiverse, a Play to Earn MMORPG where magic and adventure await at every turn.

Website: https://magiverse.online/
Whitepaper: https://info.magiverse.online/welcome
X: https://x.com/Magiverse_ERC
TG: https://t.me/magiverse 

                                                                       
*/

// SPDX-License-Identifier: UNLICENSE

pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);
}

contract MAGIVERSE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;
    address payable private _devWallet;
    address public _stakingContract;

    uint256 private _initialBuyTax = 25;
    uint256 private _initialSellTax = 35;
    uint256 private _finalBuyTax = 5;
    uint256 private _finalSellTax = 5;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 25;
    uint256 private _preventSwapBefore = 20;
    uint256 private _buyCount = 0;

    uint256 private _marketingFee = 2;
    uint256 private _devFee = 1;
    uint256 private _LpFee = 1;
    uint256 private _stakingFee = 1;
    uint256 private _totalFee =
        _marketingFee.add(_devFee).add(_LpFee).add(_stakingFee);

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = "Magiverse";
    string private constant _symbol = "MAGI";

    uint256 public _maxTxAmount = 2 * (_tTotal / 100);
    uint256 public _maxWalletSize = 2 * (_tTotal / 100);
    uint256 public _taxSwapThreshold = 5 * (_tTotal / 1000);

    uint256 public _stakingFeeTokens = 0;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public _stakingFeeActive = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0x6E9B8A05aA14E445fd0f3EE5566B2C387F9be469); 
        _devWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        uint256 stakingAmount = 0;
        if (from != owner() && to != owner()) {
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this)).sub(
                _stakingFeeTokens
            );
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                swapAndLiquify(
                    min(amount, min(contractTokenBalance, _maxTxAmount))
                );
            }
        }

        if (_stakingFeeActive) {
            stakingAmount = amount.mul(_stakingFee).div(100);
            _stakingFeeTokens = _stakingFeeTokens + stakingAmount;
            _balances[address(this)] = _balances[address(this)].add(
                stakingAmount
            );
            emit Transfer(from, address(this), stakingAmount);
            if (taxAmount > 0) {
                taxAmount = taxAmount - stakingAmount;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        uint256 totalTax = taxAmount.add(stakingAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(totalTax));
        emit Transfer(from, to, amount.sub(totalTax));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

	function swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
	uint256 actualMarketingFee = _marketingFee;
	if(!_stakingFeeActive) {
	actualMarketingFee = _marketingFee.add(_stakingFee);
	}
        uint256 tokens_to_M = (tokenBalance * actualMarketingFee) / _totalFee;
        uint256 tokens_to_D = (tokenBalance * _devFee) / _totalFee;
        uint256 tokens_to_LP_Half = ((tokenBalance * _LpFee) / _totalFee) * 2;
        uint256 balanceBeforeSwap = address(this).balance;
        swapTokensForEth(tokens_to_LP_Half + tokens_to_M + tokens_to_D);
        uint256 ETH_Total = address(this).balance - balanceBeforeSwap;
        uint256 split_M = (_marketingFee * _totalFee) /
            (_LpFee + _marketingFee + _devFee);
        uint256 ETH_M = (ETH_Total * split_M) / _totalFee;
        uint256 split_D = (_devFee * _totalFee) /
            (_LpFee + _marketingFee + _devFee);
        uint256 ETH_D = (ETH_Total * split_D) / _totalFee;
        addLiquidity(tokens_to_LP_Half, (ETH_Total - ETH_M - ETH_D));

        sendToWallet(_taxWallet, ETH_M);
        ETH_Total = address(this).balance;
        sendToWallet(_devWallet, ETH_Total);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _devWallet,
            block.timestamp
        );
    }

    function sendToWallet(address payable wallet, uint256 amount) private {
        wallet.transfer(amount);
    }

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

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function reduceFee(uint256 _newFee) external {
        require(_msgSender() == _taxWallet);
        require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);
        _finalBuyTax = _newFee;
        _finalSellTax = _newFee;
    }

    receive() external payable {}

    function unclogContract() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            _transfer(address(this), _taxWallet, tokenBalance);
        }
    }

    function clearStuckBalance() external {
        require(_msgSender() == _taxWallet);
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            _taxWallet.transfer(ethBalance);
        }
    }

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    function test() external {
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapAndLiquify(tokenBalance);
        }
    }

    function setStakingAddress(address stakingContract) external {
        require(_msgSender() == _taxWallet);
        require(stakingContract != address(0));
        _stakingContract = stakingContract;
    }

    function toggleStakingFee() external {
        require(_msgSender() == _stakingContract);
        _stakingFeeActive = !_stakingFeeActive;
    }

    function sendTokensToStakingContract(uint256 percentage) external {
        require(_msgSender() == _taxWallet);
        require(percentage > 0 && percentage <= 100);
        if (_stakingFeeTokens > 0) {
            uint256 tokensToSend = _stakingFeeTokens.mul(percentage).div(100);
            _balances[address(this)] = _balances[address(this)].sub(
                tokensToSend
            );
            _balances[_stakingContract] = _balances[_stakingContract].add(
                tokensToSend
            );
            _stakingFeeTokens = _stakingFeeTokens.sub(tokensToSend);
            emit Transfer(address(this), _stakingContract, tokensToSend);
        }
    }

    function sendTokensToP2E(uint256 percentage, address p2eWallet) external {
        require(_msgSender() == _taxWallet);
        require(percentage > 0 && percentage <= 100);
        if (_stakingFeeTokens > 0) {
            uint256 tokensToSend = _stakingFeeTokens.mul(percentage).div(100);
            _balances[address(this)] = _balances[address(this)].sub(
                tokensToSend
            );
            _balances[p2eWallet] = _balances[p2eWallet].add(tokensToSend);
            _stakingFeeTokens = _stakingFeeTokens.sub(tokensToSend);
            emit Transfer(address(this), p2eWallet, tokensToSend);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFeeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","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":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"address","name":"p2eWallet","type":"address"}],"name":"sendTokensToP2E","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"sendTokensToStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakingContract","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"test","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleStakingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclogContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526019600755602360085560056009556005600a556014600b556019600c556014600d555f600e556002600f556001601055600160115560016012556200006d6012546200006660115462000066601054600f54620002d860201b90919060201c565b90620002d8565b6013556064620000806009600a62000453565b6200009090633b9aca006200046a565b6200009c919062000484565b620000a99060026200046a565b6014556064620000bc6009600a62000453565b620000cc90633b9aca006200046a565b620000d8919062000484565b620000e59060026200046a565b6015556103e8620000f96009600a62000453565b6200010990633b9aca006200046a565b62000115919062000484565b620001229060056200046a565b6016555f6017556019805462ffffff60a81b1916905534801562000144575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916736e9b8a05aa14e445fd0f3ee5566b2c387f9be469179055620001b33390565b600580546001600160a01b0319166001600160a01b0392909216919091179055620001e16009600a62000453565b620001f190633b9aca006200046a565b335f9081526001602081905260408220929092556003906200021a5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454909116835291208054909216179055620002783390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002b16009600a62000453565b620002c190633b9aca006200046a565b60405190815260200160405180910390a3620004ba565b5f80620002e68385620004a4565b9050838110156200033d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200039a57815f19048211156200037e576200037e62000346565b808516156200038c57918102915b93841c93908002906200035f565b509250929050565b5f82620003b25750600162000340565b81620003c057505f62000340565b8160018114620003d95760028114620003e45762000404565b600191505062000340565b60ff841115620003f857620003f862000346565b50506001821b62000340565b5060208310610133831016604e8410600b841016171562000429575081810a62000340565b6200043583836200035a565b805f19048211156200044b576200044b62000346565b029392505050565b5f6200046360ff841683620003a2565b9392505050565b808202811582820484141762000340576200034062000346565b5f826200049f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000340576200034062000346565b611fa280620004c85f395ff3fe6080604052600436106101b2575f3560e01c806385707b00116100e7578063c9567bf911610087578063ec1f3f6311610062578063ec1f3f63146104a9578063f4e0d9ac146104c8578063f8a8fd6d146104e7578063f9113fba146104fb575f80fd5b8063c9567bf91461043c578063d59e819614610450578063dd62ed3e14610465575f80fd5b806395d89b41116100c257806395d89b41146103bd578063a9059cbb146103e9578063b0de5e2914610408578063bf474bed14610427575f80fd5b806385707b00146103645780638da5cb5b146103785780638f9a55c0146103a8575f80fd5b8063364333f41161015257806370a082311161012d57806370a0823114610308578063715018a614610327578063751039fc1461033b5780637d1db4a51461034f575f80fd5b8063364333f4146102c057806351bc3c85146102d457806366983491146102e8575f80fd5b806323b872dd1161018d57806323b872dd1461025157806328f4d2a0146102705780632ee6274c14610286578063313ce567146102a5575f80fd5b806306fdde03146101bd578063095ea7b31461020057806318160ddd1461022f575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506040805180820190915260098152684d616769766572736560b81b60208201525b6040516101f79190611b00565b60405180910390f35b34801561020b575f80fd5b5061021f61021a366004611b60565b61051a565b60405190151581526020016101f7565b34801561023a575f80fd5b50610243610530565b6040519081526020016101f7565b34801561025c575f80fd5b5061021f61026b366004611b8a565b610550565b34801561027b575f80fd5b506102846105b7565b005b348015610291575f80fd5b506102846102a0366004611bc8565b610603565b3480156102b0575f80fd5b50604051600981526020016101f7565b3480156102cb575f80fd5b50610284610706565b3480156102df575f80fd5b50610284610763565b3480156102f3575f80fd5b5060195461021f90600160b81b900460ff1681565b348015610313575f80fd5b50610243610322366004611bf6565b6107ad565b348015610332575f80fd5b506102846107c7565b348015610346575f80fd5b50610284610841565b34801561035a575f80fd5b5061024360145481565b34801561036f575f80fd5b506102846108f2565b348015610383575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101f7565b3480156103b3575f80fd5b5061024360155481565b3480156103c8575f80fd5b506040805180820190915260048152634d41474960e01b60208201526101ea565b3480156103f4575f80fd5b5061021f610403366004611b60565b610932565b348015610413575f80fd5b50600654610390906001600160a01b031681565b348015610432575f80fd5b5061024360165481565b348015610447575f80fd5b5061028461093e565b34801561045b575f80fd5b5061024360175481565b348015610470575f80fd5b5061024361047f366004611c11565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104b4575f80fd5b506102846104c3366004611c3d565b610ca8565b3480156104d3575f80fd5b506102846104e2366004611bf6565b610ced565b3480156104f2575f80fd5b50610284610d40565b348015610506575f80fd5b50610284610515366004611c3d565b610d5b565b5f610526338484610e5d565b5060015b92915050565b5f61053d6009600a611d48565b61054b90633b9aca00611d56565b905090565b5f61055c848484610f78565b6105ad84336105a885604051806060016040528060288152602001611f25602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906114ec565b610e5d565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146105d6575f80fd5b5f6105e0306107ad565b90508015610600576004546106009030906001600160a01b031683610f78565b50565b6004546001600160a01b0316336001600160a01b031614610622575f80fd5b5f82118015610632575060648211155b61063a575f80fd5b60175415610702575f610663606461065d8560175461152490919063ffffffff16565b906115a9565b305f9081526001602052604090205490915061067f90826115ea565b305f90815260016020526040808220929092556001600160a01b038416815220546106aa908261162b565b6001600160a01b0383165f908152600160205260409020556017546106cf90826115ea565b6017556040518181526001600160a01b0383169030905f80516020611f4d833981519152906020015b60405180910390a3505b5050565b6004546001600160a01b0316336001600160a01b031614610725575f80fd5b478015610600576004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610702573d5f803e3d5ffd5b6004546001600160a01b0316336001600160a01b031614610782575f80fd5b5f61078c306107ad565b9050801561079d5761079d81611689565b47801561070257610702816117d9565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b031633146107f95760405162461bcd60e51b81526004016107f090611d6d565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461086a5760405162461bcd60e51b81526004016107f090611d6d565b6108766009600a611d48565b61088490633b9aca00611d56565b6014556108936009600a611d48565b6108a190633b9aca00611d56565b6015557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108d16009600a611d48565b6108df90633b9aca00611d56565b60405190815260200160405180910390a1565b6006546001600160a01b0316336001600160a01b031614610911575f80fd5b6019805460ff60b81b198116600160b81b9182900460ff1615909102179055565b5f610526338484610f78565b5f546001600160a01b031633146109675760405162461bcd60e51b81526004016107f090611d6d565b601954600160a01b900460ff16156109c15760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107f0565b601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a0a9030906109fc6009600a611d48565b6105a890633b9aca00611d56565b60185f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7e9190611da2565b6001600160a01b031663c9c653963060185f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610add573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b019190611da2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f9190611da2565b601980546001600160a01b0319166001600160a01b039283161790556018541663f305d7194730610b9f816107ad565b5f80610bb25f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610bd496959493929190611dbd565b60606040518083038185885af1158015610bf0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c159190611df8565b505060195460185460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8e9190611e23565b506019805462ff00ff60a01b19166201000160a01b179055565b6004546001600160a01b0316336001600160a01b031614610cc7575f80fd5b6009548111158015610cdb5750600a548111155b610ce3575f80fd5b6009819055600a55565b6004546001600160a01b0316336001600160a01b031614610d0c575f80fd5b6001600160a01b038116610d1e575f80fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f610d4a306107ad565b905080156106005761060081611810565b6004546001600160a01b0316336001600160a01b031614610d7a575f80fd5b5f81118015610d8a575060648111155b610d92575f80fd5b60175415610600575f610db5606461065d8460175461152490919063ffffffff16565b305f90815260016020526040902054909150610dd190826115ea565b305f90815260016020526040808220929092556006546001600160a01b031681522054610dfe908261162b565b6006546001600160a01b03165f90815260016020526040902055601754610e2590826115ea565b6017556006546040518281526001600160a01b039091169030905f80516020611f4d8339815191529060200160405180910390a35050565b6001600160a01b038316610ebf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f0565b6001600160a01b038216610f205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f0565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016106f8565b6001600160a01b038316610fdc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f0565b6001600160a01b03821661103e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f0565b5f811161109f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107f0565b5f806110b25f546001600160a01b031690565b6001600160a01b0316856001600160a01b0316141580156110e057505f546001600160a01b03858116911614155b15611315576019546001600160a01b03868116911614801561111057506018546001600160a01b03858116911614155b801561113457506001600160a01b0384165f9081526003602052604090205460ff16155b1561122d5760145483111561118b5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016107f0565b60155483611198866107ad565b6111a29190611e42565b11156111f05760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016107f0565b611216606461065d600b54600e541161120b5760075461120f565b6009545b8690611524565b600e80549193505f61122783611e55565b91905055505b6019546001600160a01b03858116911614801561125357506001600160a01b0385163014155b156112805761127d606461065d600c54600e54116112735760085461120f565b600a548690611524565b91505b5f611296601754611290306107ad565b906115ea565b601954909150600160a81b900460ff161580156112c057506019546001600160a01b038681169116145b80156112d55750601954600160b01b900460ff165b80156112e2575060165481115b80156112f15750600d54600e54115b156113135761131361130e85611309846014546119e9565b6119e9565b611810565b505b601954600160b81b900460ff16156113c557611341606461065d6012548661152490919063ffffffff16565b9050806017546113519190611e42565b601755305f9081526001602052604090205461136d908261162b565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f4d833981519152906113aa9085815260200190565b60405180910390a381156113c5576113c28183611e6d565b91505b811561142a57305f908152600160205260409020546113e4908361162b565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f4d833981519152906114219086815260200190565b60405180910390a35b5f611435838361162b565b6001600160a01b0387165f9081526001602052604090205490915061145a90856115ea565b6001600160a01b0387165f9081526001602052604090205561149d61147f85836115ea565b6001600160a01b0387165f908152600160205260409020549061162b565b6001600160a01b038087165f8181526001602052604090209290925587165f80516020611f4d8339815191526114d387856115ea565b60405190815260200160405180910390a3505050505050565b5f818484111561150f5760405162461bcd60e51b81526004016107f09190611b00565b505f61151b8486611e6d565b95945050505050565b5f825f0361153357505f61052a565b5f61153e8385611d56565b90508261154b8583611e80565b146115a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f0565b9392505050565b5f6115a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119fd565b5f6115a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114ec565b5f806116378385611e42565b9050838110156115a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f0565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106116bc576116bc611e9f565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611713573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117379190611da2565b8160018151811061174a5761174a611e9f565b6001600160a01b0392831660209182029290920101526018546117709130911684610e5d565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906117a89085905f90869030904290600401611eb3565b5f604051808303815f87803b1580156117bf575f80fd5b505af11580156117d1573d5f803e3d5ffd5b505050505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610702573d5f803e3d5ffd5b6019805460ff60a81b1916600160a81b1790819055600f5490600160b81b900460ff1661184957601254600f546118469161162b565b90505b6013545f906118588385611d56565b6118629190611e80565b90505f601354601054856118769190611d56565b6118809190611e80565b90505f601354601154866118949190611d56565b61189e9190611e80565b6118a9906002611d56565b9050476118c9836118ba8685611e42565b6118c49190611e42565b611689565b5f6118d48247611e6d565b90505f601054600f546011546118ea9190611e42565b6118f49190611e42565b601354600f546119049190611d56565b61190e9190611e80565b90505f60135482846119209190611d56565b61192a9190611e80565b90505f601054600f546011546119409190611e42565b61194a9190611e42565b60135460105461195a9190611d56565b6119649190611e80565b90505f60135482866119769190611d56565b6119809190611e80565b90506119a087826119918689611e6d565b61199b9190611e6d565b611a29565b6004546119b6906001600160a01b031684611ac8565b6005544795506119cf906001600160a01b031686611ac8565b50506019805460ff60a81b19169055505050505050505050565b5f8183116119f757826115a2565b50919050565b5f8183611a1d5760405162461bcd60e51b81526004016107f09190611b00565b505f61151b8486611e80565b601854611a419030906001600160a01b031684610e5d565b60185460055460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611a8092309289925f92839216904290600401611dbd565b60606040518083038185885af1158015611a9c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ac19190611df8565b5050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611afb573d5f803e3d5ffd5b505050565b5f602080835283518060208501525f5b81811015611b2c57858101830151858201604001528201611b10565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610600575f80fd5b5f8060408385031215611b71575f80fd5b8235611b7c81611b4c565b946020939093013593505050565b5f805f60608486031215611b9c575f80fd5b8335611ba781611b4c565b92506020840135611bb781611b4c565b929592945050506040919091013590565b5f8060408385031215611bd9575f80fd5b823591506020830135611beb81611b4c565b809150509250929050565b5f60208284031215611c06575f80fd5b81356115a281611b4c565b5f8060408385031215611c22575f80fd5b8235611c2d81611b4c565b91506020830135611beb81611b4c565b5f60208284031215611c4d575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ca257815f1904821115611c8857611c88611c54565b80851615611c9557918102915b93841c9390800290611c6d565b509250929050565b5f82611cb85750600161052a565b81611cc457505f61052a565b8160018114611cda5760028114611ce457611d00565b600191505061052a565b60ff841115611cf557611cf5611c54565b50506001821b61052a565b5060208310610133831016604e8410600b8410161715611d23575081810a61052a565b611d2d8383611c68565b805f1904821115611d4057611d40611c54565b029392505050565b5f6115a260ff841683611caa565b808202811582820484141761052a5761052a611c54565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611db2575f80fd5b81516115a281611b4c565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611e0a575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e33575f80fd5b815180151581146115a2575f80fd5b8082018082111561052a5761052a611c54565b5f60018201611e6657611e66611c54565b5060010190565b8181038181111561052a5761052a611c54565b5f82611e9a57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f035784516001600160a01b031683529383019391830191600101611ede565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a349cc14056dd1efc382bb481f002e74cb72f792009c1769a7400d83e29a3a5e64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101b2575f3560e01c806385707b00116100e7578063c9567bf911610087578063ec1f3f6311610062578063ec1f3f63146104a9578063f4e0d9ac146104c8578063f8a8fd6d146104e7578063f9113fba146104fb575f80fd5b8063c9567bf91461043c578063d59e819614610450578063dd62ed3e14610465575f80fd5b806395d89b41116100c257806395d89b41146103bd578063a9059cbb146103e9578063b0de5e2914610408578063bf474bed14610427575f80fd5b806385707b00146103645780638da5cb5b146103785780638f9a55c0146103a8575f80fd5b8063364333f41161015257806370a082311161012d57806370a0823114610308578063715018a614610327578063751039fc1461033b5780637d1db4a51461034f575f80fd5b8063364333f4146102c057806351bc3c85146102d457806366983491146102e8575f80fd5b806323b872dd1161018d57806323b872dd1461025157806328f4d2a0146102705780632ee6274c14610286578063313ce567146102a5575f80fd5b806306fdde03146101bd578063095ea7b31461020057806318160ddd1461022f575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506040805180820190915260098152684d616769766572736560b81b60208201525b6040516101f79190611b00565b60405180910390f35b34801561020b575f80fd5b5061021f61021a366004611b60565b61051a565b60405190151581526020016101f7565b34801561023a575f80fd5b50610243610530565b6040519081526020016101f7565b34801561025c575f80fd5b5061021f61026b366004611b8a565b610550565b34801561027b575f80fd5b506102846105b7565b005b348015610291575f80fd5b506102846102a0366004611bc8565b610603565b3480156102b0575f80fd5b50604051600981526020016101f7565b3480156102cb575f80fd5b50610284610706565b3480156102df575f80fd5b50610284610763565b3480156102f3575f80fd5b5060195461021f90600160b81b900460ff1681565b348015610313575f80fd5b50610243610322366004611bf6565b6107ad565b348015610332575f80fd5b506102846107c7565b348015610346575f80fd5b50610284610841565b34801561035a575f80fd5b5061024360145481565b34801561036f575f80fd5b506102846108f2565b348015610383575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101f7565b3480156103b3575f80fd5b5061024360155481565b3480156103c8575f80fd5b506040805180820190915260048152634d41474960e01b60208201526101ea565b3480156103f4575f80fd5b5061021f610403366004611b60565b610932565b348015610413575f80fd5b50600654610390906001600160a01b031681565b348015610432575f80fd5b5061024360165481565b348015610447575f80fd5b5061028461093e565b34801561045b575f80fd5b5061024360175481565b348015610470575f80fd5b5061024361047f366004611c11565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156104b4575f80fd5b506102846104c3366004611c3d565b610ca8565b3480156104d3575f80fd5b506102846104e2366004611bf6565b610ced565b3480156104f2575f80fd5b50610284610d40565b348015610506575f80fd5b50610284610515366004611c3d565b610d5b565b5f610526338484610e5d565b5060015b92915050565b5f61053d6009600a611d48565b61054b90633b9aca00611d56565b905090565b5f61055c848484610f78565b6105ad84336105a885604051806060016040528060288152602001611f25602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906114ec565b610e5d565b5060019392505050565b6004546001600160a01b0316336001600160a01b0316146105d6575f80fd5b5f6105e0306107ad565b90508015610600576004546106009030906001600160a01b031683610f78565b50565b6004546001600160a01b0316336001600160a01b031614610622575f80fd5b5f82118015610632575060648211155b61063a575f80fd5b60175415610702575f610663606461065d8560175461152490919063ffffffff16565b906115a9565b305f9081526001602052604090205490915061067f90826115ea565b305f90815260016020526040808220929092556001600160a01b038416815220546106aa908261162b565b6001600160a01b0383165f908152600160205260409020556017546106cf90826115ea565b6017556040518181526001600160a01b0383169030905f80516020611f4d833981519152906020015b60405180910390a3505b5050565b6004546001600160a01b0316336001600160a01b031614610725575f80fd5b478015610600576004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610702573d5f803e3d5ffd5b6004546001600160a01b0316336001600160a01b031614610782575f80fd5b5f61078c306107ad565b9050801561079d5761079d81611689565b47801561070257610702816117d9565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b031633146107f95760405162461bcd60e51b81526004016107f090611d6d565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461086a5760405162461bcd60e51b81526004016107f090611d6d565b6108766009600a611d48565b61088490633b9aca00611d56565b6014556108936009600a611d48565b6108a190633b9aca00611d56565b6015557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108d16009600a611d48565b6108df90633b9aca00611d56565b60405190815260200160405180910390a1565b6006546001600160a01b0316336001600160a01b031614610911575f80fd5b6019805460ff60b81b198116600160b81b9182900460ff1615909102179055565b5f610526338484610f78565b5f546001600160a01b031633146109675760405162461bcd60e51b81526004016107f090611d6d565b601954600160a01b900460ff16156109c15760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016107f0565b601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a0a9030906109fc6009600a611d48565b6105a890633b9aca00611d56565b60185f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7e9190611da2565b6001600160a01b031663c9c653963060185f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610add573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b019190611da2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f9190611da2565b601980546001600160a01b0319166001600160a01b039283161790556018541663f305d7194730610b9f816107ad565b5f80610bb25f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610bd496959493929190611dbd565b60606040518083038185885af1158015610bf0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c159190611df8565b505060195460185460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610c6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8e9190611e23565b506019805462ff00ff60a01b19166201000160a01b179055565b6004546001600160a01b0316336001600160a01b031614610cc7575f80fd5b6009548111158015610cdb5750600a548111155b610ce3575f80fd5b6009819055600a55565b6004546001600160a01b0316336001600160a01b031614610d0c575f80fd5b6001600160a01b038116610d1e575f80fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b5f610d4a306107ad565b905080156106005761060081611810565b6004546001600160a01b0316336001600160a01b031614610d7a575f80fd5b5f81118015610d8a575060648111155b610d92575f80fd5b60175415610600575f610db5606461065d8460175461152490919063ffffffff16565b305f90815260016020526040902054909150610dd190826115ea565b305f90815260016020526040808220929092556006546001600160a01b031681522054610dfe908261162b565b6006546001600160a01b03165f90815260016020526040902055601754610e2590826115ea565b6017556006546040518281526001600160a01b039091169030905f80516020611f4d8339815191529060200160405180910390a35050565b6001600160a01b038316610ebf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f0565b6001600160a01b038216610f205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f0565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016106f8565b6001600160a01b038316610fdc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f0565b6001600160a01b03821661103e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f0565b5f811161109f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107f0565b5f806110b25f546001600160a01b031690565b6001600160a01b0316856001600160a01b0316141580156110e057505f546001600160a01b03858116911614155b15611315576019546001600160a01b03868116911614801561111057506018546001600160a01b03858116911614155b801561113457506001600160a01b0384165f9081526003602052604090205460ff16155b1561122d5760145483111561118b5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016107f0565b60155483611198866107ad565b6111a29190611e42565b11156111f05760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016107f0565b611216606461065d600b54600e541161120b5760075461120f565b6009545b8690611524565b600e80549193505f61122783611e55565b91905055505b6019546001600160a01b03858116911614801561125357506001600160a01b0385163014155b156112805761127d606461065d600c54600e54116112735760085461120f565b600a548690611524565b91505b5f611296601754611290306107ad565b906115ea565b601954909150600160a81b900460ff161580156112c057506019546001600160a01b038681169116145b80156112d55750601954600160b01b900460ff165b80156112e2575060165481115b80156112f15750600d54600e54115b156113135761131361130e85611309846014546119e9565b6119e9565b611810565b505b601954600160b81b900460ff16156113c557611341606461065d6012548661152490919063ffffffff16565b9050806017546113519190611e42565b601755305f9081526001602052604090205461136d908261162b565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f4d833981519152906113aa9085815260200190565b60405180910390a381156113c5576113c28183611e6d565b91505b811561142a57305f908152600160205260409020546113e4908361162b565b305f81815260016020526040908190209290925590516001600160a01b038716905f80516020611f4d833981519152906114219086815260200190565b60405180910390a35b5f611435838361162b565b6001600160a01b0387165f9081526001602052604090205490915061145a90856115ea565b6001600160a01b0387165f9081526001602052604090205561149d61147f85836115ea565b6001600160a01b0387165f908152600160205260409020549061162b565b6001600160a01b038087165f8181526001602052604090209290925587165f80516020611f4d8339815191526114d387856115ea565b60405190815260200160405180910390a3505050505050565b5f818484111561150f5760405162461bcd60e51b81526004016107f09190611b00565b505f61151b8486611e6d565b95945050505050565b5f825f0361153357505f61052a565b5f61153e8385611d56565b90508261154b8583611e80565b146115a25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f0565b9392505050565b5f6115a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119fd565b5f6115a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114ec565b5f806116378385611e42565b9050838110156115a25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f0565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106116bc576116bc611e9f565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611713573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117379190611da2565b8160018151811061174a5761174a611e9f565b6001600160a01b0392831660209182029290920101526018546117709130911684610e5d565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906117a89085905f90869030904290600401611eb3565b5f604051808303815f87803b1580156117bf575f80fd5b505af11580156117d1573d5f803e3d5ffd5b505050505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610702573d5f803e3d5ffd5b6019805460ff60a81b1916600160a81b1790819055600f5490600160b81b900460ff1661184957601254600f546118469161162b565b90505b6013545f906118588385611d56565b6118629190611e80565b90505f601354601054856118769190611d56565b6118809190611e80565b90505f601354601154866118949190611d56565b61189e9190611e80565b6118a9906002611d56565b9050476118c9836118ba8685611e42565b6118c49190611e42565b611689565b5f6118d48247611e6d565b90505f601054600f546011546118ea9190611e42565b6118f49190611e42565b601354600f546119049190611d56565b61190e9190611e80565b90505f60135482846119209190611d56565b61192a9190611e80565b90505f601054600f546011546119409190611e42565b61194a9190611e42565b60135460105461195a9190611d56565b6119649190611e80565b90505f60135482866119769190611d56565b6119809190611e80565b90506119a087826119918689611e6d565b61199b9190611e6d565b611a29565b6004546119b6906001600160a01b031684611ac8565b6005544795506119cf906001600160a01b031686611ac8565b50506019805460ff60a81b19169055505050505050505050565b5f8183116119f757826115a2565b50919050565b5f8183611a1d5760405162461bcd60e51b81526004016107f09190611b00565b505f61151b8486611e80565b601854611a419030906001600160a01b031684610e5d565b60185460055460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611a8092309289925f92839216904290600401611dbd565b60606040518083038185885af1158015611a9c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ac19190611df8565b5050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611afb573d5f803e3d5ffd5b505050565b5f602080835283518060208501525f5b81811015611b2c57858101830151858201604001528201611b10565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610600575f80fd5b5f8060408385031215611b71575f80fd5b8235611b7c81611b4c565b946020939093013593505050565b5f805f60608486031215611b9c575f80fd5b8335611ba781611b4c565b92506020840135611bb781611b4c565b929592945050506040919091013590565b5f8060408385031215611bd9575f80fd5b823591506020830135611beb81611b4c565b809150509250929050565b5f60208284031215611c06575f80fd5b81356115a281611b4c565b5f8060408385031215611c22575f80fd5b8235611c2d81611b4c565b91506020830135611beb81611b4c565b5f60208284031215611c4d575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ca257815f1904821115611c8857611c88611c54565b80851615611c9557918102915b93841c9390800290611c6d565b509250929050565b5f82611cb85750600161052a565b81611cc457505f61052a565b8160018114611cda5760028114611ce457611d00565b600191505061052a565b60ff841115611cf557611cf5611c54565b50506001821b61052a565b5060208310610133831016604e8410600b8410161715611d23575081810a61052a565b611d2d8383611c68565b805f1904821115611d4057611d40611c54565b029392505050565b5f6115a260ff841683611caa565b808202811582820484141761052a5761052a611c54565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611db2575f80fd5b81516115a281611b4c565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611e0a575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611e33575f80fd5b815180151581146115a2575f80fd5b8082018082111561052a5761052a611c54565b5f60018201611e6657611e66611c54565b5060010190565b8181038181111561052a5761052a611c54565b5f82611e9a57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611f035784516001600160a01b031683529383019391830191600101611ede565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a349cc14056dd1efc382bb481f002e74cb72f792009c1769a7400d83e29a3a5e64736f6c63430008170033

Deployed Bytecode Sourcemap

4896:13407:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7093:83;;;;;;;;;;-1:-1:-1;7163:5:0;;;;;;;;;;;;-1:-1:-1;;;7163:5:0;;;;7093:83;;;;;;;:::i;:::-;;;;;;;;7976:186;;;;;;;;;;-1:-1:-1;7976:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7976:186:0;1023:187:1;7370:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;7370:95:0;1215:177:1;8170:446:0;;;;;;;;;;-1:-1:-1;8170:446:0;;;;;:::i;:::-;;:::i;15528:256::-;;;;;;;;;;;;;:::i;:::-;;17659:641;;;;;;;;;;-1:-1:-1;17659:641:0;;;;;:::i;:::-;;:::i;7279:83::-;;;;;;;;;;-1:-1:-1;7279:83:0;;5905:1;2320:36:1;;2308:2;2293:18;7279:83:0;2178:184:1;15792:233:0;;;;;;;;;;;;;:::i;16033:366::-;;;;;;;;;;;;;:::i;6497:37::-;;;;;;;;;;-1:-1:-1;6497:37:0;;;;-1:-1:-1;;;6497:37:0;;;;;;7473:119;;;;;;;;;;-1:-1:-1;7473:119:0;;;;;:::i;:::-;;:::i;3921:148::-;;;;;;;;;;;;;:::i;14131:162::-;;;;;;;;;;;;;:::i;6085:49::-;;;;;;;;;;;;;;;;16810:146;;;;;;;;;;;;;:::i;3707:79::-;;;;;;;;;;-1:-1:-1;3745:7:0;3772:6;-1:-1:-1;;;;;3772:6:0;3707:79;;;-1:-1:-1;;;;;2783:32:1;;;2765:51;;2753:2;2738:18;3707:79:0;2619:203:1;6141:51:0;;;;;;;;;;;;;;;;7184:87;;;;;;;;;;-1:-1:-1;7256:7:0;;;;;;;;;;;;-1:-1:-1;;;7256:7:0;;;;7184:87;;7600:192;;;;;;;;;;-1:-1:-1;7600:192:0;;;;;:::i;:::-;;:::i;5249:31::-;;;;;;;;;;-1:-1:-1;5249:31:0;;;;-1:-1:-1;;;;;5249:31:0;;;6199:55;;;;;;;;;;;;;;;;14401:837;;;;;;;;;;;;;:::i;6263:36::-;;;;;;;;;;;;;;;;7800:168;;;;;;;;;;-1:-1:-1;7800:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7933:18:0;;;7906:7;7933:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7800:168;15246:237;;;;;;;;;;-1:-1:-1;15246:237:0;;;;;:::i;:::-;;:::i;16593:209::-;;;;;;;;;;-1:-1:-1;16593:209:0;;;;;:::i;:::-;;:::i;16407:178::-;;;;;;;;;;;;;:::i;16964:687::-;;;;;;;;;;-1:-1:-1;16964:687:0;;;;;:::i;:::-;;:::i;7976:186::-;8076:4;8093:39;1322:10;8116:7;8125:6;8093:8;:39::i;:::-;-1:-1:-1;8150:4:0;7976:186;;;;;:::o;7370:95::-;7423:7;5964:15;5905:1;5964:2;:15;:::i;:::-;5948:31;;:13;:31;:::i;:::-;7443:14;;7370:95;:::o;8170:446::-;8302:4;8319:36;8329:6;8337:9;8348:6;8319:9;:36::i;:::-;8366:220;8389:6;1322:10;8437:138;8493:6;8437:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8437:19:0;;;;;;:11;:19;;;;;;;;1322:10;8437:33;;;;;;;;;;:37;:138::i;:::-;8366:8;:220::i;:::-;-1:-1:-1;8604:4:0;8170:446;;;;;:::o;15528:256::-;15598:10;;-1:-1:-1;;;;;15598:10:0;1322;-1:-1:-1;;;;;15582:26:0;;15574:35;;;;;;15620:20;15643:24;15661:4;15643:9;:24::i;:::-;15620:47;-1:-1:-1;15682:16:0;;15678:99;;15740:10;;15715:50;;15733:4;;-1:-1:-1;;;;;15740:10:0;15752:12;15715:9;:50::i;:::-;15563:221;15528:256::o;17659:641::-;17767:10;;-1:-1:-1;;;;;17767:10:0;1322;-1:-1:-1;;;;;17751:26:0;;17743:35;;;;;;17810:1;17797:10;:14;:35;;;;;17829:3;17815:10;:17;;17797:35;17789:44;;;;;;17848:17;;:21;17844:449;;17886:20;17909:42;17947:3;17909:33;17931:10;17909:17;;:21;;:33;;;;:::i;:::-;:37;;:42::i;:::-;18011:4;17993:24;;;;:9;:24;;;;;;17886:65;;-1:-1:-1;17993:74:0;;17886:65;17993:28;:74::i;:::-;17984:4;17966:24;;;;:9;:24;;;;;;:101;;;;-1:-1:-1;;;;;18105:20:0;;;;;;:38;;18130:12;18105:24;:38::i;:::-;-1:-1:-1;;;;;18082:20:0;;;;;;:9;:20;;;;;:61;18178:17;;:35;;18200:12;18178:21;:35::i;:::-;18158:17;:55;18233:48;;1361:25:1;;;-1:-1:-1;;;;;18233:48:0;;;18250:4;;-1:-1:-1;;;;;;;;;;;18233:48:0;1349:2:1;1334:18;18233:48:0;;;;;;;;17871:422;17844:449;17659:641;;:::o;15792:233::-;15865:10;;-1:-1:-1;;;;;15865:10:0;1322;-1:-1:-1;;;;;15849:26:0;;15841:35;;;;;;15908:21;15944:14;;15940:78;;15975:10;;:31;;-1:-1:-1;;;;;15975:10:0;;;;:31;;;;;15995:10;;15975;:31;:10;:31;15995:10;15975;:31;;;;;;;;;;;;;;;;;;;16033:366;16099:10;;-1:-1:-1;;;;;16099:10:0;1322;-1:-1:-1;;;;;16083:26:0;;16075:35;;;;;;16121:20;16144:24;16162:4;16144:9;:24::i;:::-;16121:47;-1:-1:-1;16183:16:0;;16179:79;;16216:30;16233:12;16216:16;:30::i;:::-;16289:21;16325:14;;16321:71;;16356:24;16369:10;16356:12;:24::i;7473:119::-;-1:-1:-1;;;;;7566:18:0;7539:7;7566:18;;;:9;:18;;;;;;;7473:119::o;3921:148::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;;;;;;;;;4028:1:::1;4012:6:::0;;3991:40:::1;::::0;-1:-1:-1;;;;;4012:6:0;;::::1;::::0;3991:40:::1;::::0;4028:1;;3991:40:::1;4059:1;4042:19:::0;;-1:-1:-1;;;;;;4042:19:0::1;::::0;;3921:148::o;14131:162::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;5964:15:::1;5905:1;5964:2;:15;:::i;:::-;5948:31;::::0;:13:::1;:31;:::i;:::-;14185:12;:22:::0;5964:15:::1;5905:1;5964:2;:15;:::i;:::-;5948:31;::::0;:13:::1;:31;:::i;:::-;14218:14;:24:::0;14258:27:::1;5964:15;5905:1;5964:2;:15;:::i;:::-;5948:31;::::0;:13:::1;:31;:::i;:::-;14258:27;::::0;1361:25:1;;;1349:2;1334:18;14258:27:0::1;;;;;;;14131:162::o:0;16810:146::-;16882:16;;-1:-1:-1;;;;;16882:16:0;1322:10;-1:-1:-1;;;;;16866:32:0;;16858:41;;;;;;16931:17;;;-1:-1:-1;;;;16910:38:0;;-1:-1:-1;;;16931:17:0;;;;;;16930:18;16910:38;;;;;;16810:146::o;7600:192::-;7703:4;7720:42;1322:10;7744:9;7755:6;7720:9;:42::i;14401:837::-;3834:6;;-1:-1:-1;;;;;3834:6:0;1322:10;3834:22;3826:67;;;;-1:-1:-1;;;3826:67:0;;;;;;;:::i;:::-;14463:11:::1;::::0;-1:-1:-1;;;14463:11:0;::::1;;;14462:12;14454:48;;;::::0;-1:-1:-1;;;14454:48:0;;5650:2:1;14454:48:0::1;::::0;::::1;5632:21:1::0;5689:2;5669:18;;;5662:30;5728:25;5708:18;;;5701:53;5771:18;;14454:48:0::1;5448:347:1::0;14454:48:0::1;14513:15;:104:::0;;-1:-1:-1;;;;;;14513:104:0::1;14564:42;14513:104:::0;;::::1;::::0;;;14628:58:::1;::::0;14645:4:::1;::::0;5964:15:::1;5905:1;5964:2;:15;:::i;:::-;5948:31;::::0;:13:::1;:31;:::i;14628:58::-;14731:15;;;;;;;;;-1:-1:-1::0;;;;;14731:15:0::1;-1:-1:-1::0;;;;;14731:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14713:55:0::1;;14795:4;14819:15;;;;;;;;;-1:-1:-1::0;;;;;14819:15:0::1;-1:-1:-1::0;;;;;14819:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14713:143;::::0;-1:-1:-1;;;;;;14713:143:0::1;::::0;;;;;;-1:-1:-1;;;;;6286:15:1;;;14713:143:0::1;::::0;::::1;6268:34:1::0;6338:15;;6318:18;;;6311:43;6203:18;;14713:143:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14697:13;:159:::0;;-1:-1:-1;;;;;;14697:159:0::1;-1:-1:-1::0;;;;;14697:159:0;;::::1;;::::0;;14867:15:::1;::::0;::::1;:31;14906:21;14951:4;14971:24;14951:4:::0;14971:9:::1;:24::i;:::-;15010:1;15026::::0;15042:7:::1;3745::::0;3772:6;-1:-1:-1;;;;;3772:6:0;;3707:79;15042:7:::1;15064:15;14867:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15108:13:0::1;::::0;15139:15:::1;::::0;15101:71:::1;::::0;-1:-1:-1;;;15101:71:0;;-1:-1:-1;;;;;15139:15:0;;::::1;15101:71;::::0;::::1;7462:51:1::0;-1:-1:-1;;7529:18:1;;;7522:34;15108:13:0;::::1;::::0;-1:-1:-1;15101:29:0::1;::::0;7435:18:1;;15101:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;15183:11:0::1;:18:::0;;-1:-1:-1;;;;15212:18:0;-1:-1:-1;;;15212:18:0;;;14401:837::o;15246:237::-;15326:10;;-1:-1:-1;;;;;15326:10:0;1322;-1:-1:-1;;;;;15310:26:0;;15302:35;;;;;;15367:12;;15356:7;:23;;:51;;;;;15394:13;;15383:7;:24;;15356:51;15348:60;;;;;;15419:12;:22;;;15452:13;:23;15246:237::o;16593:209::-;16689:10;;-1:-1:-1;;;;;16689:10:0;1322;-1:-1:-1;;;;;16673:26:0;;16665:35;;;;;;-1:-1:-1;;;;;16719:29:0;;16711:38;;;;;;16760:16;:34;;-1:-1:-1;;;;;;16760:34:0;-1:-1:-1;;;;;16760:34:0;;;;;;;;;;16593:209::o;16407:178::-;16443:20;16466:24;16484:4;16466:9;:24::i;:::-;16443:47;-1:-1:-1;16505:16:0;;16501:77;;16538:28;16553:12;16538:14;:28::i;16964:687::-;17065:10;;-1:-1:-1;;;;;17065:10:0;1322;-1:-1:-1;;;;;17049:26:0;;17041:35;;;;;;17108:1;17095:10;:14;:35;;;;;17127:3;17113:10;:17;;17095:35;17087:44;;;;;;17146:17;;:21;17142:502;;17184:20;17207:42;17245:3;17207:33;17229:10;17207:17;;:21;;:33;;;;:::i;:42::-;17309:4;17291:24;;;;:9;:24;;;;;;17184:65;;-1:-1:-1;17291:74:0;;17184:65;17291:28;:74::i;:::-;17282:4;17264:24;;;;:9;:24;;;;;;:101;;;;17420:16;;-1:-1:-1;;;;;17420:16:0;17410:27;;;;:77;;17460:12;17410:31;:77::i;:::-;17390:16;;-1:-1:-1;;;;;17390:16:0;17380:27;;;;:9;:27;;;;;:107;17522:17;;:35;;17544:12;17522:21;:35::i;:::-;17502:17;:55;17601:16;;17577:55;;1361:25:1;;;-1:-1:-1;;;;;17601:16:0;;;;17594:4;;-1:-1:-1;;;;;;;;;;;17577:55:0;1349:2:1;1334:18;17577:55:0;;;;;;;17169:475;16964:687;:::o;8624:335::-;-1:-1:-1;;;;;8717:19:0;;8709:68;;;;-1:-1:-1;;;8709:68:0;;8051:2:1;8709:68:0;;;8033:21:1;8090:2;8070:18;;;8063:30;8129:34;8109:18;;;8102:62;-1:-1:-1;;;8180:18:1;;;8173:34;8224:19;;8709:68:0;7849:400:1;8709:68:0;-1:-1:-1;;;;;8796:21:0;;8788:68;;;;-1:-1:-1;;;8788:68:0;;8456:2:1;8788:68:0;;;8438:21:1;8495:2;8475:18;;;8468:30;8534:34;8514:18;;;8507:62;-1:-1:-1;;;8585:18:1;;;8578:32;8627:19;;8788:68:0;8254:398:1;8788:68:0;-1:-1:-1;;;;;8867:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8919:32;;1361:25:1;;;8919:32:0;;1334:18:1;8919:32:0;1215:177:1;8967:2894:0;-1:-1:-1;;;;;9055:18:0;;9047:68;;;;-1:-1:-1;;;9047:68:0;;8859:2:1;9047:68:0;;;8841:21:1;8898:2;8878:18;;;8871:30;8937:34;8917:18;;;8910:62;-1:-1:-1;;;8988:18:1;;;8981:35;9033:19;;9047:68:0;8657:401:1;9047:68:0;-1:-1:-1;;;;;9134:16:0;;9126:64;;;;-1:-1:-1;;;9126:64:0;;9265:2:1;9126:64:0;;;9247:21:1;9304:2;9284:18;;;9277:30;9343:34;9323:18;;;9316:62;-1:-1:-1;;;9394:18:1;;;9387:33;9437:19;;9126:64:0;9063:399:1;9126:64:0;9218:1;9209:6;:10;9201:64;;;;-1:-1:-1;;;9201:64:0;;9669:2:1;9201:64:0;;;9651:21:1;9708:2;9688:18;;;9681:30;9747:34;9727:18;;;9720:62;-1:-1:-1;;;9798:18:1;;;9791:39;9847:19;;9201:64:0;9467:405:1;9201:64:0;9276:17;9308:21;9356:7;3745;3772:6;-1:-1:-1;;;;;3772:6:0;;3707:79;9356:7;-1:-1:-1;;;;;9348:15:0;:4;-1:-1:-1;;;;;9348:15:0;;;:32;;;;-1:-1:-1;3745:7:0;3772:6;-1:-1:-1;;;;;9367:13:0;;;3772:6;;9367:13;;9348:32;9344:1626;;;9427:13;;-1:-1:-1;;;;;9419:21:0;;;9427:13;;9419:21;:72;;;;-1:-1:-1;9475:15:0;;-1:-1:-1;;;;;9461:30:0;;;9475:15;;9461:30;;9419:72;:116;;;;-1:-1:-1;;;;;;9513:22:0;;;;;;:18;:22;;;;;;;;9512:23;9419:116;9397:701;;;9588:12;;9578:6;:22;;9570:60;;;;-1:-1:-1;;;9570:60:0;;10079:2:1;9570:60:0;;;10061:21:1;10118:2;10098:18;;;10091:30;10157:27;10137:18;;;10130:55;10202:18;;9570:60:0;9877:349:1;9570:60:0;9705:14;;9695:6;9679:13;9689:2;9679:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9649:140;;;;-1:-1:-1;;;9649:140:0;;10563:2:1;9649:140:0;;;10545:21:1;10602:2;10582:18;;;10575:30;10641:28;10621:18;;;10614:56;10687:18;;9649:140:0;10361:350:1;9649:140:0;9820:232;10048:3;9820:201;9892:15;;9880:9;;:27;9879:119;;9984:14;;9879:119;;;9940:12;;9879:119;9820:6;;:32;:201::i;:232::-;10071:9;:11;;9808:244;;-1:-1:-1;10071:9:0;:11;;;:::i;:::-;;;;;;9397:701;10124:13;;-1:-1:-1;;;;;10118:19:0;;;10124:13;;10118:19;:44;;;;-1:-1:-1;;;;;;10141:21:0;;10157:4;10141:21;;10118:44;10114:332;;;10195:235;10426:3;10195:204;10267:16;;10255:9;;:28;10254:122;;10361:15;;10254:122;;;10316:13;;10195:6;;:32;:204::i;:235::-;10183:247;;10114:332;10462:28;10493:79;10540:17;;10493:24;10511:4;10493:9;:24::i;:::-;:28;;:79::i;:::-;10610:6;;10462:110;;-1:-1:-1;;;;10610:6:0;;;;10609:7;:47;;;;-1:-1:-1;10643:13:0;;-1:-1:-1;;;;;10637:19:0;;;10643:13;;10637:19;10609:47;:79;;;;-1:-1:-1;10677:11:0;;-1:-1:-1;;;10677:11:0;;;;10609:79;:140;;;;;10732:17;;10709:20;:40;10609:140;:191;;;;;10782:18;;10770:9;;:30;10609:191;10587:372;;;10835:108;10872:52;10876:6;10884:39;10888:20;10910:12;;10884:3;:39::i;:::-;10872:3;:52::i;:::-;10835:14;:108::i;:::-;9382:1588;9344:1626;10986:17;;-1:-1:-1;;;10986:17:0;;;;10982:452;;;11036:32;11064:3;11036:23;11047:11;;11036:6;:10;;:23;;;;:::i;:32::-;11020:48;;11123:13;11103:17;;:33;;;;:::i;:::-;11083:17;:53;11196:4;11178:24;;;;:9;:24;;;;;;:75;;11225:13;11178:28;:75::i;:::-;11169:4;11151:24;;;;:9;:24;;;;;;;:102;;;;11273:44;;-1:-1:-1;;;;;11273:44:0;;;-1:-1:-1;;;;;;;;;;;11273:44:0;;;11303:13;1361:25:1;;1349:2;1334:18;;1215:177;11273:44:0;;;;;;;;11336:13;;11332:91;;11382:25;11394:13;11382:9;:25;:::i;:::-;11370:37;;11332:91;11450:13;;11446:172;;11525:4;11507:24;;;;:9;:24;;;;;;:39;;11536:9;11507:28;:39::i;:::-;11498:4;11480:24;;;;:9;:24;;;;;;;:66;;;;11566:40;;-1:-1:-1;;;;;11566:40:0;;;-1:-1:-1;;;;;;;;;;;11566:40:0;;;11596:9;1361:25:1;;1349:2;1334:18;;1215:177;11566:40:0;;;;;;;;11446:172;11628:16;11647:28;:9;11661:13;11647;:28::i;:::-;-1:-1:-1;;;;;11704:15:0;;;;;;:9;:15;;;;;;11628:47;;-1:-1:-1;11704:27:0;;11724:6;11704:19;:27::i;:::-;-1:-1:-1;;;;;11686:15:0;;;;;;:9;:15;;;;;:45;11758:39;11776:20;:6;11787:8;11776:10;:20::i;:::-;-1:-1:-1;;;;;11758:13:0;;;;;;:9;:13;;;;;;;:17;:39::i;:::-;-1:-1:-1;;;;;11742:13:0;;;;;;;:9;:13;;;;;:55;;;;11813:40;;-1:-1:-1;;;;;;;;;;;11832:20:0;:6;11843:8;11832:10;:20::i;:::-;11813:40;;1361:25:1;;;1349:2;1334:18;11813:40:0;;;;;;;9036:2825;;;8967:2894;;;:::o;2509:224::-;2629:7;2665:12;2657:6;;;;2649:29;;;;-1:-1:-1;;;2649:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2689:9:0;2701:5;2705:1;2701;:5;:::i;:::-;2689:17;2509:224;-1:-1:-1;;;;;2509:224:0:o;2741:246::-;2799:7;2823:1;2828;2823:6;2819:47;;-1:-1:-1;2853:1:0;2846:8;;2819:47;2876:9;2888:5;2892:1;2888;:5;:::i;:::-;2876:17;-1:-1:-1;2921:1:0;2912:5;2916:1;2876:17;2912:5;:::i;:::-;:10;2904:56;;;;-1:-1:-1;;;2904:56:0;;11413:2:1;2904:56:0;;;11395:21:1;11452:2;11432:18;;;11425:30;11491:34;11471:18;;;11464:62;-1:-1:-1;;;11542:18:1;;;11535:31;11583:19;;2904:56:0;11211:397:1;2904:56:0;2978:1;2741:246;-1:-1:-1;;;2741:246:0:o;2995:132::-;3053:7;3080:39;3084:1;3087;3080:39;;;;;;;;;;;;;;;;;:3;:39::i;2365:136::-;2423:7;2450:43;2454:1;2457;2450:43;;;;;;;;;;;;;;;;;:3;:43::i;2178:179::-;2236:7;;2268:5;2272:1;2268;:5;:::i;:::-;2256:17;;2297:1;2292;:6;;2284:46;;;;-1:-1:-1;;;2284:46:0;;11815:2:1;2284:46:0;;;11797:21:1;11854:2;11834:18;;;11827:30;11893:29;11873:18;;;11866:57;11940:18;;2284:46:0;11613:351:1;13652:471:0;13742:16;;;13756:1;13742:16;;;;;;;;13718:21;;13742:16;;;;;;;;;;-1:-1:-1;13742:16:0;13718:40;;13787:4;13769;13774:1;13769:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13769:23:0;;;:7;;;;;;;;;;:23;;;;13813:15;;:22;;;-1:-1:-1;;;13813:22:0;;;;:15;;;;;:20;;:22;;;;;13769:7;;13813:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13803:4;13808:1;13803:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13803:32:0;;;:7;;;;;;;;;:32;13878:15;;13846:62;;13863:4;;13878:15;13896:11;13846:8;:62::i;:::-;13919:15;;:196;;-1:-1:-1;;;13919:196:0;;-1:-1:-1;;;;;13919:15:0;;;;:66;;:196;;14000:11;;13919:15;;14042:4;;14069;;14089:15;;13919:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13707:416;13652:471;:::o;14301:92::-;14358:10;;:27;;-1:-1:-1;;;;;14358:10:0;;;;:27;;;;;14378:6;;14358:10;:27;:10;:27;14378:6;14358:10;:27;;;;;;;;;;;;;;;;;;;11981:1172;6627:6;:13;;-1:-1:-1;;;;6627:13:0;-1:-1:-1;;;6627:13:0;;;;;12080::::1;::::0;;-1:-1:-1;;;12101:17:0;::::1;6627:13:::0;12101:17:::1;12097:83;;12163:11;::::0;12145:13:::1;::::0;:30:::1;::::0;:17:::1;:30::i;:::-;12124:51;;12097:83;12250:9;::::0;12190:19:::1;::::0;12213:33:::1;12228:18:::0;12213:12;:33:::1;:::i;:::-;12212:47;;;;:::i;:::-;12190:69;;12270:19;12319:9;;12308:7;;12293:12;:22;;;;:::i;:::-;12292:36;;;;:::i;:::-;12270:58;;12339:25;12394:9;;12384:6;;12369:12;:21;;;;:::i;:::-;12368:35;;;;:::i;:::-;12367:41;::::0;12407:1:::1;12367:41;:::i;:::-;12339:69:::0;-1:-1:-1;12447:21:0::1;12479:63;12530:11:::0;12496:31:::1;12516:11:::0;12339:69;12496:31:::1;:::i;:::-;:45;;;;:::i;:::-;12479:16;:63::i;:::-;12553:17;12573:41;12597:17:::0;12573:21:::1;:41;:::i;:::-;12553:61;;12625:15;12712:7;;12696:13;;12687:6;;:22;;;;:::i;:::-;:32;;;;:::i;:::-;12660:9;;12644:13;;:25;;;;:::i;:::-;12643:77;;;;:::i;:::-;12625:95;;12731:13;12771:9;;12760:7;12748:9;:19;;;;:::i;:::-;12747:33;;;;:::i;:::-;12731:49;;12791:15;12872:7;;12856:13;;12847:6;;:22;;;;:::i;:::-;:32;;;;:::i;:::-;12820:9;;12810:7;;:19;;;;:::i;:::-;12809:71;;;;:::i;:::-;12791:89;;12891:13;12931:9;;12920:7;12908:9;:19;;;;:::i;:::-;12907:33;;;;:::i;:::-;12891:49:::0;-1:-1:-1;12951:60:0::1;12964:17:::0;12891:49;12984:17:::1;12996:5:::0;12984:9;:17:::1;:::i;:::-;:25;;;;:::i;:::-;12951:12;:60::i;:::-;13037:10;::::0;13024:31:::1;::::0;-1:-1:-1;;;;;13037:10:0::1;13049:5:::0;13024:12:::1;:31::i;:::-;13123:10;::::0;13078:21:::1;::::0;-1:-1:-1;13110:35:0::1;::::0;-1:-1:-1;;;;;13123:10:0::1;13078:21:::0;13110:12:::1;:35::i;:::-;-1:-1:-1::0;;6663:6:0;:14;;-1:-1:-1;;;;6663:14:0;;;-1:-1:-1;;;;;;;;;11981:1172:0:o;11869:107::-;11926:7;11958:1;11954;:5;11953:15;;11967:1;11953:15;;;-1:-1:-1;11963:1:0;11869:107;-1:-1:-1;11869:107:0:o;3135:223::-;3255:7;3290:12;3283:5;3275:28;;;;-1:-1:-1;;;3275:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3314:9:0;3326:5;3330:1;3326;:5;:::i;13161:363::-;13274:15;;13242:62;;13259:4;;-1:-1:-1;;;;;13274:15:0;13292:11;13242:8;:62::i;:::-;13315:15;;13465:10;;13315:201;;-1:-1:-1;;;13315:201:0;;-1:-1:-1;;;;;13315:15:0;;;;:31;;13354:9;;13315:201;;13387:4;;13407:11;;13315:15;;;;13465:10;;13490:15;;13315:201;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13161:363;;:::o;13532:112::-;13613:23;;-1:-1:-1;;;;;13613:15:0;;;:23;;;;;13629:6;;13613:23;;;;13629:6;13613:15;:23;;;;;;;;;;;;;;;;;;;;;13532:112;;:::o;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;1858:315::-;1926:6;1934;1987:2;1975:9;1966:7;1962:23;1958:32;1955:52;;;2003:1;2000;1993:12;1955:52;2039:9;2026:23;2016:33;;2099:2;2088:9;2084:18;2071:32;2112:31;2137:5;2112:31;:::i;:::-;2162:5;2152:15;;;1858:315;;;;;:::o;2367:247::-;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;2534:9;2521:23;2553:31;2578:5;2553:31;:::i;2827:388::-;2895:6;2903;2956:2;2944:9;2935:7;2931:23;2927:32;2924:52;;;2972:1;2969;2962:12;2924:52;3011:9;2998:23;3030:31;3055:5;3030:31;:::i;:::-;3080:5;-1:-1:-1;3137:2:1;3122:18;;3109:32;3150:33;3109:32;3150:33;:::i;3220:180::-;3279:6;3332:2;3320:9;3311:7;3307:23;3303:32;3300:52;;;3348:1;3345;3338:12;3300:52;-1:-1:-1;3371:23:1;;3220:180;-1:-1:-1;3220:180:1:o;3405:127::-;3466:10;3461:3;3457:20;3454:1;3447:31;3497:4;3494:1;3487:15;3521:4;3518:1;3511:15;3537:416;3626:1;3663:5;3626:1;3677:270;3698:7;3688:8;3685:21;3677:270;;;3757:4;3753:1;3749:6;3745:17;3739:4;3736:27;3733:53;;;3766:18;;:::i;:::-;3816:7;3806:8;3802:22;3799:55;;;3836:16;;;;3799:55;3915:22;;;;3875:15;;;;3677:270;;;3681:3;3537:416;;;;;:::o;3958:806::-;4007:5;4037:8;4027:80;;-1:-1:-1;4078:1:1;4092:5;;4027:80;4126:4;4116:76;;-1:-1:-1;4163:1:1;4177:5;;4116:76;4208:4;4226:1;4221:59;;;;4294:1;4289:130;;;;4201:218;;4221:59;4251:1;4242:10;;4265:5;;;4289:130;4326:3;4316:8;4313:17;4310:43;;;4333:18;;:::i;:::-;-1:-1:-1;;4389:1:1;4375:16;;4404:5;;4201:218;;4503:2;4493:8;4490:16;4484:3;4478:4;4475:13;4471:36;4465:2;4455:8;4452:16;4447:2;4441:4;4438:12;4434:35;4431:77;4428:159;;;-1:-1:-1;4540:19:1;;;4572:5;;4428:159;4619:34;4644:8;4638:4;4619:34;:::i;:::-;4689:6;4685:1;4681:6;4677:19;4668:7;4665:32;4662:58;;;4700:18;;:::i;:::-;4738:20;;3958:806;-1:-1:-1;;;3958:806:1:o;4769:140::-;4827:5;4856:47;4897:4;4887:8;4883:19;4877:4;4856:47;:::i;4914:168::-;4987:9;;;5018;;5035:15;;;5029:22;;5015:37;5005:71;;5056:18;;:::i;5087:356::-;5289:2;5271:21;;;5308:18;;;5301:30;5367:34;5362:2;5347:18;;5340:62;5434:2;5419:18;;5087:356::o;5800:251::-;5870:6;5923:2;5911:9;5902:7;5898:23;5894:32;5891:52;;;5939:1;5936;5929:12;5891:52;5971:9;5965:16;5990:31;6015:5;5990:31;:::i;6365:607::-;-1:-1:-1;;;;;6724:15:1;;;6706:34;;6771:2;6756:18;;6749:34;;;;6814:2;6799:18;;6792:34;;;;6857:2;6842:18;;6835:34;;;;6906:15;;;6900:3;6885:19;;6878:44;6686:3;6938:19;;6931:35;;;;6655:3;6640:19;;6365:607::o;6977:306::-;7065:6;7073;7081;7134:2;7122:9;7113:7;7109:23;7105:32;7102:52;;;7150:1;7147;7140:12;7102:52;7179:9;7173:16;7163:26;;7229:2;7218:9;7214:18;7208:25;7198:35;;7273:2;7262:9;7258:18;7252:25;7242:35;;6977:306;;;;;:::o;7567:277::-;7634:6;7687:2;7675:9;7666:7;7662:23;7658:32;7655:52;;;7703:1;7700;7693:12;7655:52;7735:9;7729:16;7788:5;7781:13;7774:21;7767:5;7764:32;7754:60;;7810:1;7807;7800:12;10231:125;10296:9;;;10317:10;;;10314:36;;;10330:18;;:::i;10716:135::-;10755:3;10776:17;;;10773:43;;10796:18;;:::i;:::-;-1:-1:-1;10843:1:1;10832:13;;10716:135::o;10856:128::-;10923:9;;;10944:11;;;10941:37;;;10958:18;;:::i;10989:217::-;11029:1;11055;11045:132;;11099:10;11094:3;11090:20;11087:1;11080:31;11134:4;11131:1;11124:15;11162:4;11159:1;11152:15;11045:132;-1:-1:-1;11191:9:1;;10989:217::o;12101:127::-;12162:10;12157:3;12153:20;12150:1;12143:31;12193:4;12190:1;12183:15;12217:4;12214:1;12207:15;12233:980;12495:4;12543:3;12532:9;12528:19;12574:6;12563:9;12556:25;12600:2;12638:6;12633:2;12622:9;12618:18;12611:34;12681:3;12676:2;12665:9;12661:18;12654:31;12705:6;12740;12734:13;12771:6;12763;12756:22;12809:3;12798:9;12794:19;12787:26;;12848:2;12840:6;12836:15;12822:29;;12869:1;12879:195;12893:6;12890:1;12887:13;12879:195;;;12958:13;;-1:-1:-1;;;;;12954:39:1;12942:52;;13049:15;;;;13014:12;;;;12990:1;12908:9;12879:195;;;-1:-1:-1;;;;;;;13130:32:1;;;;13125:2;13110:18;;13103:60;-1:-1:-1;;;13194:3:1;13179:19;13172:35;13091:3;12233:980;-1:-1:-1;;;12233:980:1:o

Swarm Source

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