ETH Price: $3,392.85 (+0.60%)

Token

FullRetardINU (RUPEE)
 

Overview

Max Total Supply

1,000,000 RUPEE

Holders

106

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FullRetardINU

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-17
*/

// SPDX-License-Identifier: MIT

/**

Let´s go Full Retard

Twitter: https://twitter.com/FullR_t__dInu
Telegram: https://t.me/FullRetardPortal
Website: https://fullretardinu.com/
Author: TonyBoy

**/

pragma solidity 0.8.16;

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

    // Main Contract Features

contract FullRetardINU 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;
    mapping(address => bool) private bots;

    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping(address => uint256) private _holderTickets;

    mapping(address => bool) private _isExcludedFromLottery;
    modifier notExcludedFromLottery(address account) {
    require(!_isExcludedFromLottery[account], "Address excluded from lottery");
    _;
    }

    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    // Lottery Adjustment

    uint256 private _lotteryPool = 0;
    uint256 private _lastLotteryTime;
    uint256 private constant _lotteryDuration = 24 hours;
    uint256 private _ticketPrice = 100;
    address[] private _holders;
    address private _lastWinner;

    // Tax Adjustments and Variables

    uint256 private _initialBuyTax = 3;
    uint256 private _initialSellTax = 3;
    uint256 private _finalBuyTax = 3;
    uint256 private _finalSellTax = 3;
    uint256 private _reduceBuyTaxAt = 3;
    uint256 private _reduceSellTaxAt = 3;
    uint256 private _buyCount = 0;

    // Rate for the tax split between lottery and tax in %
    uint256 private _deployerTaxRate = 33; 

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000 * 10 ** _decimals;
    string private constant _name = "FullRetardINU";
    string private constant _symbol = "RUPEE";
    uint256 public _maxTxAmount = 1000000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 1000000 * 10 ** _decimals;
    uint256 public _maxTaxSwap = 2000 * 10 ** _decimals;
    uint256 public _swapThreshold = 2000 * 10 ** _decimals;
    uint256 private _lastSwapTime;


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

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

    constructor() {
        _taxWallet = 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 liquidityAmount;

    if (from != owner() && to != owner()) {
        taxAmount = amount
            .mul(
                (_buyCount > _reduceBuyTaxAt)
                    ? _finalBuyTax
                    : _initialBuyTax
            )
            .div(100);

        
        liquidityAmount = taxAmount.mul(2).div(100);
        _balances[address(this)] = _balances[address(this)].add(liquidityAmount);
        
        if (transferDelayEnabled) {
            if (
                to != address(uniswapV2Router) &&
                to != address(uniswapV2Pair)
            ) {
                require(
                    _holderLastTransferTimestamp[tx.origin] < block.timestamp,
                    "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."
                );
                _holderLastTransferTimestamp[tx.origin] = block.timestamp;
            }
        }

        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFromFee[to]
        ) {
            require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= _maxWalletSize,
                "Exceeds the maxWalletSize."
            );
            _buyCount++;

            // Lottery Entry
            _addToLottery(to, amount);

            // Check for a Draw Lottery
            if (block.timestamp.sub(_lastLotteryTime) > _lotteryDuration) {
                _drawWinner();
                _resetTickets();
                _lastLotteryTime = block.timestamp;
            }
        }

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

            
            liquidityAmount = taxAmount.div(2);
            taxAmount = taxAmount.sub(liquidityAmount);
        }

uint256 contractTokenBalance = balanceOf(address(this));
uint256 tokensToSwap = contractTokenBalance > _maxTaxSwap ? _maxTaxSwap : contractTokenBalance;

if (
    !inSwap && 
    to == uniswapV2Pair &&
    swapEnabled &&
    contractTokenBalance >= _swapThreshold &&
    block.timestamp - _lastSwapTime > 10 // Time Interval for Swaps | Prevent the loop
) {
    inSwap = true;
    _lastSwapTime = block.timestamp;

    // Swap tokens for BNB/ETH
    swapTokensForEth(tokensToSwap);
    
    uint256 newBalance = address(this).balance;

    uint256 deployerShare = newBalance.div(3);  // 1/3 to the taxwallet
    _taxWallet.transfer(deployerShare);  // Send BNB/ETH to taxwallet

    uint256 lotteryShare = newBalance.sub(deployerShare); // Tax portion
    _lotteryPool = _lotteryPool.add(lotteryShare); // Lottery pools increase

    inSwap = false; // Stop the Swap and prevent the loop
}
    }

    if (taxAmount > 0) {
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, address(this), taxAmount);
    }

    _balances[from] = _balances[from].sub(amount);
    _balances[to] = _balances[to].add(amount.sub(taxAmount));
    emit Transfer(from, to, amount.sub(taxAmount));
    }

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

    function _addToLottery(address buyer, uint256 amount) private notExcludedFromLottery(buyer) {
    uint256 tickets = amount.div(_ticketPrice);
    if (_holderTickets[buyer] == 0 && tickets > 0) {
        _holders.push(buyer); 
    }
    _holderTickets[buyer] = _holderTickets[buyer].add(tickets);
    }

    function _drawWinner() private returns (address) {
    uint256 totalTickets = 0;
    
    for (uint256 i = 0; i < _holders.length; i++) {
        totalTickets = totalTickets.add(_holderTickets[_holders[i]]);
    }

    require(totalTickets > 0, "No tickets to draw a winner from.");

    // Winner is selected randomly from the ticket holders who bought the tokens this round
    uint256 randomTicket = _pseudoRandom() % totalTickets + 1;
    uint256 checkedTickets = 0;

    for (uint256 i = 0; i < _holders.length; i++) {
    checkedTickets = checkedTickets.add(_holderTickets[_holders[i]]);
    if (randomTicket <= checkedTickets) {
        
        // Winner is found here and distributes the pool balance to the winner
        uint256 halfPool = address(this).balance.div(2);
        if (halfPool > 0 && halfPool <= address(this).balance) {
            payable(_holders[i]).transfer(halfPool);
            _lotteryPool = _lotteryPool.sub(halfPool);
        }

        // Store the last winner's address
        _lastWinner = _holders[i];

        return _holders[i];
    }
}

    return address(0); 
    }


    function _pseudoRandom() private view returns (uint256) {
    return uint256(keccak256(abi.encodePacked(block.difficulty, block.timestamp, _holders)));
    }

    function _resetTickets() private {
    // Reset the ticket count for all holders.
    for (uint256 i = 0; i < _holders.length; i++) {
        _holderTickets[_holders[i]] = 0;
    }
    }

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

    // Automatic Liquidity addition from the taxes
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
    // Approve the router to spend the tokens
    _approve(address(this), address(uniswapV2Router), tokenAmount);

    // Add the liquidity
    uniswapV2Router.addLiquidityETH{value: ethAmount}(
        address(this),
        tokenAmount,
        0,  // set min amount to 0 to ensure all tokens are added
        0,  // set min amount to 0 to ensure all ETH is added
        owner(),
        block.timestamp
    );
    }

    function getTicketsOf(address holder) public view returns (uint256) {
    return _holderTickets[holder];
    }

    function getTotalTicketsForCurrentRound() public view returns (uint256) {
    uint256 totalTickets = 0;
    for (uint256 i = 0; i < _holders.length; i++) {
        totalTickets = totalTickets.add(_holderTickets[_holders[i]]);
    }
    return totalTickets;
    }

    function getCurrentLotteryPool() public view returns (uint256) {
    return _lotteryPool;
    }

    function getReadableLotteryPool() public view returns (uint256, uint256) {
    uint256 baseValue = _lotteryPool.div(1e18);
    uint256 fractionalValue = _lotteryPool % 1e18; 
    return (baseValue, fractionalValue);
    }

    function getLastWinner() public view returns (address) {
    return _lastWinner;
    }

    function excludeFromLottery(address account) external onlyOwner {
    _isExcludedFromLottery[account] = true;
    }

    function includeInLottery(address account) external onlyOwner {
    _isExcludedFromLottery[account] = false;
    }

    function isExcludedFromLottery(address account) external view returns (bool) {
    return _isExcludedFromLottery[account];
    }

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

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

    // Called only once and never again
    // Uniswap Router: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    // Pancakeswap Router: 0x10ED43C718714eb63d5aA57B78B54704E256024E
    // Pancakeswap Testnet Router: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1

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

    receive() external payable {}

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

}

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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentLotteryPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastWinner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReadableLotteryPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"getTicketsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTicketsForCurrentRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLottery","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526008805460ff19169055600060098181556064600b556003600e819055600f81905560108190556011819055601281905560135560149190915560216015556200005090600a62000355565b6200005f90620f42406200036d565b601655620000706009600a62000355565b6200007f90620f42406200036d565b601755620000906009600a62000355565b6200009e906107d06200036d565b601855620000af6009600a62000355565b620000bd906107d06200036d565b601955601c805461ffff60a81b19169055348015620000db57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060088054610100600160a81b0319166101003302179055620001426009600a62000355565b6200015190620f42406200036d565b3360009081526001602081905260408220929092556003906200017c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260039093528183208054851660019081179091556008546101009004909116835291208054909216179055620001e03390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200021a6009600a62000355565b6200022990620f42406200036d565b60405190815260200160405180910390a36200038f565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002975781600019048211156200027b576200027b62000240565b808516156200028957918102915b93841c93908002906200025b565b509250929050565b600082620002b0575060016200034f565b81620002bf575060006200034f565b8160018114620002d85760028114620002e35762000303565b60019150506200034f565b60ff841115620002f757620002f762000240565b50506001821b6200034f565b5060208310610133831016604e8410600b841016171562000328575081810a6200034f565b62000334838362000256565b80600019048211156200034b576200034b62000240565b0290505b92915050565b60006200036660ff8416836200029f565b9392505050565b60008160001904831182151516156200038a576200038a62000240565b500290565b6120f2806200039f6000396000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec578063a9059cbb1161008a578063c9567bf911610064578063c9567bf9146104cf578063d189ee06146104e4578063dd62ed3e14610504578063f88649a11461054a57600080fd5b8063a9059cbb14610480578063acc9b381146104a0578063c876d0b9146104b557600080fd5b80638da5cb5b116100c65780638da5cb5b146103d15780638f9a55c01461040357806395d89b41146104195780639bf97c301461044757600080fd5b8063715018a614610391578063751039fc146103a65780637d1db4a5146103bb57600080fd5b806323b872dd1161015957806351bc3c851161013357806351bc3c85146102e657806360b96bea146102fb578063645c234c1461033157806370a082311461035b57600080fd5b806323b872dd14610295578063313ce567146102b55780634b588feb146102d157600080fd5b806306fdde03146101ac578063095ea7b3146101f45780630e5a9231146102245780630faee56f146102485780631000034c1461025e57806318160ddd1461028057600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b5060408051808201909152600d81526c46756c6c526574617264494e5560981b60208201525b6040516101eb9190611c50565b60405180910390f35b34801561020057600080fd5b5061021461020f366004611cb3565b610568565b60405190151581526020016101eb565b34801561023057600080fd5b5061023a60195481565b6040519081526020016101eb565b34801561025457600080fd5b5061023a60185481565b34801561026a57600080fd5b5061027e610279366004611cdf565b61057f565b005b34801561028c57600080fd5b5061023a6105d6565b3480156102a157600080fd5b506102146102b0366004611cfc565b6105f6565b3480156102c157600080fd5b50604051600981526020016101eb565b3480156102dd57600080fd5b5061023a61065f565b3480156102f257600080fd5b5061027e6106ce565b34801561030757600080fd5b5061023a610316366004611cdf565b6001600160a01b031660009081526006602052604090205490565b34801561033d57600080fd5b50610346610726565b604080519283526020830191909152016101eb565b34801561036757600080fd5b5061023a610376366004611cdf565b6001600160a01b031660009081526001602052604090205490565b34801561039d57600080fd5b5061027e61076d565b3480156103b257600080fd5b5061027e6107e1565b3480156103c757600080fd5b5061023a60165481565b3480156103dd57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101eb565b34801561040f57600080fd5b5061023a60175481565b34801561042557600080fd5b50604080518082019091526005815264525550454560d81b60208201526101de565b34801561045357600080fd5b50610214610462366004611cdf565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561048c57600080fd5b5061021461049b366004611cb3565b61089a565b3480156104ac57600080fd5b5060095461023a565b3480156104c157600080fd5b506008546102149060ff1681565b3480156104db57600080fd5b5061027e6108a7565b3480156104f057600080fd5b5061027e6104ff366004611cdf565b610c62565b34801561051057600080fd5b5061023a61051f366004611d3d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561055657600080fd5b50600d546001600160a01b03166103eb565b6000610575338484610cad565b5060015b92915050565b6000546001600160a01b031633146105b25760405162461bcd60e51b81526004016105a990611d76565b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b60006105e46009600a611ea5565b6105f190620f4240611eb4565b905090565b6000610603848484610dd1565b610655843361065085604051806060016040528060288152602001612095602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906114eb565b610cad565b5060019392505050565b600080805b600c548110156106c8576106b460066000600c848154811061068857610688611ed3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611525565b9150806106c081611ee9565b915050610664565b50919050565b60085461010090046001600160a01b0316336001600160a01b0316146106f357600080fd5b306000908152600160205260409020548015610712576107128161158b565b4780156107225761072281611705565b5050565b6000806000610748670de0b6b3a764000060095461174390919063ffffffff16565b90506000670de0b6b3a76400006009546107629190611f18565b919491935090915050565b6000546001600160a01b031633146107975760405162461bcd60e51b81526004016105a990611d76565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461080b5760405162461bcd60e51b81526004016105a990611d76565b6108176009600a611ea5565b61082490620f4240611eb4565b6016556108336009600a611ea5565b61084090620f4240611eb4565b6017556008805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61087a6009600a611ea5565b61088790620f4240611eb4565b60405190815260200160405180910390a1565b6000610575338484610dd1565b6000546001600160a01b031633146108d15760405162461bcd60e51b81526004016105a990611d76565b601c54600160a01b900460ff161561092b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105a9565b601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109739030906109666009600a611ea5565b61065090620f4240611eb4565b601b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea9190611f2c565b6001600160a01b031663c9c6539630601b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a709190611f2c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae19190611f2c565b601c80546001600160a01b039283166001600160a01b0319909116179055601b541663f305d7194730610b29816001600160a01b031660009081526001602052604090205490565b600080610b3e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ba6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bcb9190611f49565b5050601c54601b5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190611f77565b50601c805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b03163314610c8c5760405162461bcd60e51b81526004016105a990611d76565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b038316610d0f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a9565b6001600160a01b038216610d705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a9565b6001600160a01b038216610e975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a9565b60008111610ef95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a9565b600080610f0e6000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610f3d57506000546001600160a01b03858116911614155b156113a757610f6e6064610f6860125460145411610f5d57600e54610f61565b6010545b8690611785565b90611743565b9150610f806064610f68846002611785565b30600090815260016020526040902054909150610f9d9082611525565b3060009081526001602052604090205560085460ff161561109157601b546001600160a01b03858116911614801590610fe45750601c546001600160a01b03858116911614155b156110915732600090815260056020526040902054421161107e5760405162461bcd60e51b815260206004820152604860248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e204f6e6c79206f6e652070757263686173652070657220626c6f636b2060648201526730b63637bbb2b21760c11b608482015260a4016105a9565b3260009081526005602052604090204290555b601c546001600160a01b0386811691161480156110bc5750601b546001600160a01b03858116911614155b80156110e157506001600160a01b03841660009081526003602052604090205460ff16155b15611207576016548311156111385760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105a9565b6017548361115b866001600160a01b031660009081526001602052604090205490565b6111659190611f99565b11156111b35760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105a9565b601480549060006111c383611ee9565b91905055506111d28484611807565b620151806111eb600a544261194890919063ffffffff16565b1115611207576111f961198a565b50611202611b8c565b42600a555b601c546001600160a01b03858116911614801561122d57506001600160a01b0385163014155b15611273576112576064610f686013546014541161124d57600f54610f61565b6011548690611785565b9150611264826002611743565b90506112708282611948565b91505b30600090815260016020526040812054905060006018548211611296578161129a565b6018545b601c54909150600160a81b900460ff161580156112c45750601c546001600160a01b038781169116145b80156112d95750601c54600160b01b900460ff165b80156112e757506019548210155b80156113005750600a601a54426112fe9190611fac565b115b156113a457601c805460ff60a81b1916600160a81b17905542601a556113258161158b565b476000611333826003611743565b60085460405191925061010090046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611373573d6000803e3d6000fd5b5060006113808383611948565b6009549091506113909082611525565b6009555050601c805460ff60a81b19169055505b50505b811561142157306000908152600160205260409020546113c79083611525565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114189086815260200190565b60405180910390a35b6001600160a01b0385166000908152600160205260409020546114449084611948565b6001600160a01b03861660009081526001602052604090205561148961146a8484611948565b6001600160a01b03861660009081526001602052604090205490611525565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114d38686611948565b60405190815260200160405180910390a35050505050565b6000818484111561150f5760405162461bcd60e51b81526004016105a99190611c50565b50600061151c8486611fac565b95945050505050565b6000806115328385611f99565b9050838110156115845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105a9565b9392505050565b601c805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106115d3576115d3611ed3565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190611f2c565b8160018151811061166357611663611ed3565b6001600160a01b039283166020918202929092010152601b546116899130911684610cad565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c2908590600090869030904290600401611fbf565b600060405180830381600087803b1580156116dc57600080fd5b505af11580156116f0573d6000803e3d6000fd5b5050601c805460ff60a81b1916905550505050565b6008546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015610722573d6000803e3d6000fd5b600061158483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bec565b60008260000361179757506000610579565b60006117a38385611eb4565b9050826117b08583612030565b146115845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105a9565b6001600160a01b038216600090815260076020526040902054829060ff16156118725760405162461bcd60e51b815260206004820152601d60248201527f41646472657373206578636c756465642066726f6d206c6f747465727900000060448201526064016105a9565b6000611889600b548461174390919063ffffffff16565b6001600160a01b0385166000908152600660205260409020549091501580156118b25750600081115b1561190357600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0384166000908152600660205260409020546119269082611525565b6001600160a01b03909416600090815260066020526040902093909355505050565b600061158483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114eb565b600080805b600c548110156119c7576119b360066000600c848154811061068857610688611ed3565b9150806119bf81611ee9565b91505061198f565b5060008111611a225760405162461bcd60e51b815260206004820152602160248201527f4e6f207469636b65747320746f206472617720612077696e6e65722066726f6d6044820152601760f91b60648201526084016105a9565b600081611a2d611c1a565b611a379190611f18565b611a42906001611f99565b90506000805b600c54811015611b8157611a6c60066000600c848154811061068857610688611ed3565b9150818311611b6f576000611a82476002611743565b9050600081118015611a945750478111155b15611afe57600c8281548110611aac57611aac611ed3565b60009182526020822001546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015611aec573d6000803e3d6000fd5b50600954611afa9082611948565b6009555b600c8281548110611b1157611b11611ed3565b600091825260209091200154600d80546001600160a01b0319166001600160a01b03909216919091179055600c805483908110611b5057611b50611ed3565b6000918252602090912001546001600160a01b03169695505050505050565b80611b7981611ee9565b915050611a48565b506000935050505090565b60005b600c54811015611be957600060066000600c8481548110611bb257611bb2611ed3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205580611be181611ee9565b915050611b8f565b50565b60008183611c0d5760405162461bcd60e51b81526004016105a99190611c50565b50600061151c8486612030565b60004442600c604051602001611c3293929190612044565b6040516020818303038152906040528051906020012060001c905090565b600060208083528351808285015260005b81811015611c7d57858101830151858201604001528201611c61565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611be957600080fd5b60008060408385031215611cc657600080fd5b8235611cd181611c9e565b946020939093013593505050565b600060208284031215611cf157600080fd5b813561158481611c9e565b600080600060608486031215611d1157600080fd5b8335611d1c81611c9e565b92506020840135611d2c81611c9e565b929592945050506040919091013590565b60008060408385031215611d5057600080fd5b8235611d5b81611c9e565b91506020830135611d6b81611c9e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611dfc578160001904821115611de257611de2611dab565b80851615611def57918102915b93841c9390800290611dc6565b509250929050565b600082611e1357506001610579565b81611e2057506000610579565b8160018114611e365760028114611e4057611e5c565b6001915050610579565b60ff841115611e5157611e51611dab565b50506001821b610579565b5060208310610133831016604e8410600b8410161715611e7f575081810a610579565b611e898383611dc1565b8060001904821115611e9d57611e9d611dab565b029392505050565b600061158460ff841683611e04565b6000816000190483118215151615611ece57611ece611dab565b500290565b634e487b7160e01b600052603260045260246000fd5b600060018201611efb57611efb611dab565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611f2757611f27611f02565b500690565b600060208284031215611f3e57600080fd5b815161158481611c9e565b600080600060608486031215611f5e57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611f8957600080fd5b8151801515811461158457600080fd5b8082018082111561057957610579611dab565b8181038181111561057957610579611dab565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561200f5784516001600160a01b031683529383019391830191600101611fea565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261203f5761203f611f02565b500490565b838152600060208481840152604083018454856000528260002060005b828110156120865781546001600160a01b031684529284019260019182019101612061565b50919897505050505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f61568778221071264040d1304b362b971d5311487068355abc13c1c8227662864736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063715018a6116100ec578063a9059cbb1161008a578063c9567bf911610064578063c9567bf9146104cf578063d189ee06146104e4578063dd62ed3e14610504578063f88649a11461054a57600080fd5b8063a9059cbb14610480578063acc9b381146104a0578063c876d0b9146104b557600080fd5b80638da5cb5b116100c65780638da5cb5b146103d15780638f9a55c01461040357806395d89b41146104195780639bf97c301461044757600080fd5b8063715018a614610391578063751039fc146103a65780637d1db4a5146103bb57600080fd5b806323b872dd1161015957806351bc3c851161013357806351bc3c85146102e657806360b96bea146102fb578063645c234c1461033157806370a082311461035b57600080fd5b806323b872dd14610295578063313ce567146102b55780634b588feb146102d157600080fd5b806306fdde03146101ac578063095ea7b3146101f45780630e5a9231146102245780630faee56f146102485780631000034c1461025e57806318160ddd1461028057600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b5060408051808201909152600d81526c46756c6c526574617264494e5560981b60208201525b6040516101eb9190611c50565b60405180910390f35b34801561020057600080fd5b5061021461020f366004611cb3565b610568565b60405190151581526020016101eb565b34801561023057600080fd5b5061023a60195481565b6040519081526020016101eb565b34801561025457600080fd5b5061023a60185481565b34801561026a57600080fd5b5061027e610279366004611cdf565b61057f565b005b34801561028c57600080fd5b5061023a6105d6565b3480156102a157600080fd5b506102146102b0366004611cfc565b6105f6565b3480156102c157600080fd5b50604051600981526020016101eb565b3480156102dd57600080fd5b5061023a61065f565b3480156102f257600080fd5b5061027e6106ce565b34801561030757600080fd5b5061023a610316366004611cdf565b6001600160a01b031660009081526006602052604090205490565b34801561033d57600080fd5b50610346610726565b604080519283526020830191909152016101eb565b34801561036757600080fd5b5061023a610376366004611cdf565b6001600160a01b031660009081526001602052604090205490565b34801561039d57600080fd5b5061027e61076d565b3480156103b257600080fd5b5061027e6107e1565b3480156103c757600080fd5b5061023a60165481565b3480156103dd57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101eb565b34801561040f57600080fd5b5061023a60175481565b34801561042557600080fd5b50604080518082019091526005815264525550454560d81b60208201526101de565b34801561045357600080fd5b50610214610462366004611cdf565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561048c57600080fd5b5061021461049b366004611cb3565b61089a565b3480156104ac57600080fd5b5060095461023a565b3480156104c157600080fd5b506008546102149060ff1681565b3480156104db57600080fd5b5061027e6108a7565b3480156104f057600080fd5b5061027e6104ff366004611cdf565b610c62565b34801561051057600080fd5b5061023a61051f366004611d3d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561055657600080fd5b50600d546001600160a01b03166103eb565b6000610575338484610cad565b5060015b92915050565b6000546001600160a01b031633146105b25760405162461bcd60e51b81526004016105a990611d76565b60405180910390fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b60006105e46009600a611ea5565b6105f190620f4240611eb4565b905090565b6000610603848484610dd1565b610655843361065085604051806060016040528060288152602001612095602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906114eb565b610cad565b5060019392505050565b600080805b600c548110156106c8576106b460066000600c848154811061068857610688611ed3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611525565b9150806106c081611ee9565b915050610664565b50919050565b60085461010090046001600160a01b0316336001600160a01b0316146106f357600080fd5b306000908152600160205260409020548015610712576107128161158b565b4780156107225761072281611705565b5050565b6000806000610748670de0b6b3a764000060095461174390919063ffffffff16565b90506000670de0b6b3a76400006009546107629190611f18565b919491935090915050565b6000546001600160a01b031633146107975760405162461bcd60e51b81526004016105a990611d76565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461080b5760405162461bcd60e51b81526004016105a990611d76565b6108176009600a611ea5565b61082490620f4240611eb4565b6016556108336009600a611ea5565b61084090620f4240611eb4565b6017556008805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61087a6009600a611ea5565b61088790620f4240611eb4565b60405190815260200160405180910390a1565b6000610575338484610dd1565b6000546001600160a01b031633146108d15760405162461bcd60e51b81526004016105a990611d76565b601c54600160a01b900460ff161561092b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105a9565b601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556109739030906109666009600a611ea5565b61065090620f4240611eb4565b601b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea9190611f2c565b6001600160a01b031663c9c6539630601b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a709190611f2c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae19190611f2c565b601c80546001600160a01b039283166001600160a01b0319909116179055601b541663f305d7194730610b29816001600160a01b031660009081526001602052604090205490565b600080610b3e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ba6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bcb9190611f49565b5050601c54601b5460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190611f77565b50601c805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b03163314610c8c5760405162461bcd60e51b81526004016105a990611d76565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b038316610d0f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a9565b6001600160a01b038216610d705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a9565b6001600160a01b038216610e975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a9565b60008111610ef95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a9565b600080610f0e6000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610f3d57506000546001600160a01b03858116911614155b156113a757610f6e6064610f6860125460145411610f5d57600e54610f61565b6010545b8690611785565b90611743565b9150610f806064610f68846002611785565b30600090815260016020526040902054909150610f9d9082611525565b3060009081526001602052604090205560085460ff161561109157601b546001600160a01b03858116911614801590610fe45750601c546001600160a01b03858116911614155b156110915732600090815260056020526040902054421161107e5760405162461bcd60e51b815260206004820152604860248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e204f6e6c79206f6e652070757263686173652070657220626c6f636b2060648201526730b63637bbb2b21760c11b608482015260a4016105a9565b3260009081526005602052604090204290555b601c546001600160a01b0386811691161480156110bc5750601b546001600160a01b03858116911614155b80156110e157506001600160a01b03841660009081526003602052604090205460ff16155b15611207576016548311156111385760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105a9565b6017548361115b866001600160a01b031660009081526001602052604090205490565b6111659190611f99565b11156111b35760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105a9565b601480549060006111c383611ee9565b91905055506111d28484611807565b620151806111eb600a544261194890919063ffffffff16565b1115611207576111f961198a565b50611202611b8c565b42600a555b601c546001600160a01b03858116911614801561122d57506001600160a01b0385163014155b15611273576112576064610f686013546014541161124d57600f54610f61565b6011548690611785565b9150611264826002611743565b90506112708282611948565b91505b30600090815260016020526040812054905060006018548211611296578161129a565b6018545b601c54909150600160a81b900460ff161580156112c45750601c546001600160a01b038781169116145b80156112d95750601c54600160b01b900460ff165b80156112e757506019548210155b80156113005750600a601a54426112fe9190611fac565b115b156113a457601c805460ff60a81b1916600160a81b17905542601a556113258161158b565b476000611333826003611743565b60085460405191925061010090046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611373573d6000803e3d6000fd5b5060006113808383611948565b6009549091506113909082611525565b6009555050601c805460ff60a81b19169055505b50505b811561142157306000908152600160205260409020546113c79083611525565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114189086815260200190565b60405180910390a35b6001600160a01b0385166000908152600160205260409020546114449084611948565b6001600160a01b03861660009081526001602052604090205561148961146a8484611948565b6001600160a01b03861660009081526001602052604090205490611525565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114d38686611948565b60405190815260200160405180910390a35050505050565b6000818484111561150f5760405162461bcd60e51b81526004016105a99190611c50565b50600061151c8486611fac565b95945050505050565b6000806115328385611f99565b9050838110156115845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105a9565b9392505050565b601c805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106115d3576115d3611ed3565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116509190611f2c565b8160018151811061166357611663611ed3565b6001600160a01b039283166020918202929092010152601b546116899130911684610cad565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c2908590600090869030904290600401611fbf565b600060405180830381600087803b1580156116dc57600080fd5b505af11580156116f0573d6000803e3d6000fd5b5050601c805460ff60a81b1916905550505050565b6008546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015610722573d6000803e3d6000fd5b600061158483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bec565b60008260000361179757506000610579565b60006117a38385611eb4565b9050826117b08583612030565b146115845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105a9565b6001600160a01b038216600090815260076020526040902054829060ff16156118725760405162461bcd60e51b815260206004820152601d60248201527f41646472657373206578636c756465642066726f6d206c6f747465727900000060448201526064016105a9565b6000611889600b548461174390919063ffffffff16565b6001600160a01b0385166000908152600660205260409020549091501580156118b25750600081115b1561190357600c80546001810182556000919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0384166000908152600660205260409020546119269082611525565b6001600160a01b03909416600090815260066020526040902093909355505050565b600061158483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114eb565b600080805b600c548110156119c7576119b360066000600c848154811061068857610688611ed3565b9150806119bf81611ee9565b91505061198f565b5060008111611a225760405162461bcd60e51b815260206004820152602160248201527f4e6f207469636b65747320746f206472617720612077696e6e65722066726f6d6044820152601760f91b60648201526084016105a9565b600081611a2d611c1a565b611a379190611f18565b611a42906001611f99565b90506000805b600c54811015611b8157611a6c60066000600c848154811061068857610688611ed3565b9150818311611b6f576000611a82476002611743565b9050600081118015611a945750478111155b15611afe57600c8281548110611aac57611aac611ed3565b60009182526020822001546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015611aec573d6000803e3d6000fd5b50600954611afa9082611948565b6009555b600c8281548110611b1157611b11611ed3565b600091825260209091200154600d80546001600160a01b0319166001600160a01b03909216919091179055600c805483908110611b5057611b50611ed3565b6000918252602090912001546001600160a01b03169695505050505050565b80611b7981611ee9565b915050611a48565b506000935050505090565b60005b600c54811015611be957600060066000600c8481548110611bb257611bb2611ed3565b60009182526020808320909101546001600160a01b0316835282019290925260400190205580611be181611ee9565b915050611b8f565b50565b60008183611c0d5760405162461bcd60e51b81526004016105a99190611c50565b50600061151c8486612030565b60004442600c604051602001611c3293929190612044565b6040516020818303038152906040528051906020012060001c905090565b600060208083528351808285015260005b81811015611c7d57858101830151858201604001528201611c61565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611be957600080fd5b60008060408385031215611cc657600080fd5b8235611cd181611c9e565b946020939093013593505050565b600060208284031215611cf157600080fd5b813561158481611c9e565b600080600060608486031215611d1157600080fd5b8335611d1c81611c9e565b92506020840135611d2c81611c9e565b929592945050506040919091013590565b60008060408385031215611d5057600080fd5b8235611d5b81611c9e565b91506020830135611d6b81611c9e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611dfc578160001904821115611de257611de2611dab565b80851615611def57918102915b93841c9390800290611dc6565b509250929050565b600082611e1357506001610579565b81611e2057506000610579565b8160018114611e365760028114611e4057611e5c565b6001915050610579565b60ff841115611e5157611e51611dab565b50506001821b610579565b5060208310610133831016604e8410600b8410161715611e7f575081810a610579565b611e898383611dc1565b8060001904821115611e9d57611e9d611dab565b029392505050565b600061158460ff841683611e04565b6000816000190483118215151615611ece57611ece611dab565b500290565b634e487b7160e01b600052603260045260246000fd5b600060018201611efb57611efb611dab565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611f2757611f27611f02565b500690565b600060208284031215611f3e57600080fd5b815161158481611c9e565b600080600060608486031215611f5e57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611f8957600080fd5b8151801515811461158457600080fd5b8082018082111561057957610579611dab565b8181038181111561057957610579611dab565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561200f5784516001600160a01b031683529383019391830191600101611fea565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261203f5761203f611f02565b500490565b838152600060208481840152604083018454856000528260002060005b828110156120865781546001600160a01b031684529284019260019182019101612061565b50919897505050505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f61568778221071264040d1304b362b971d5311487068355abc13c1c8227662864736f6c63430008100033

Deployed Bytecode Sourcemap

3962:14225:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6589:83;;;;;;;;;;-1:-1:-1;6659:5:0;;;;;;;;;;;;-1:-1:-1;;;6659:5:0;;;;6589:83;;;;;;;:::i;:::-;;;;;;;;7472:186;;;;;;;;;;-1:-1:-1;7472:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7472:186:0;1023:187:1;5823:54:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;5823:54:0;1215:177:1;5765:51:0;;;;;;;;;;;;;;;;15990:117;;;;;;;;;;-1:-1:-1;15990:117:0;;;;;:::i;:::-;;:::i;:::-;;6866:95;;;;;;;;;;;;;:::i;7666:446::-;;;;;;;;;;-1:-1:-1;7666:446:0;;;;;:::i;:::-;;:::i;6775:83::-;;;;;;;;;;-1:-1:-1;6775:83:0;;5462:1;2252:36:1;;2240:2;2225:18;6775:83:0;2110:184:1;15280:268:0;;;;;;;;;;;;;:::i;17816:366::-;;;;;;;;;;;;;:::i;15160:112::-;;;;;;;;;;-1:-1:-1;15160:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;15242:22:0;15219:7;15242:22;;;:14;:22;;;;;;;15160:112;15661:225;;;;;;;;;;;;;:::i;:::-;;;;2473:25:1;;;2529:2;2514:18;;2507:34;;;;2446:18;15661:225:0;2299:248:1;6969:119:0;;;;;;;;;;-1:-1:-1;6969:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7062:18:0;7035:7;7062:18;;;:9;:18;;;;;;;6969:119;2954:148;;;;;;;;;;;;;:::i;16377:201::-;;;;;;;;;;;;;:::i;5639:55::-;;;;;;;;;;;;;;;;2740:79;;;;;;;;;;-1:-1:-1;2778:7:0;2805:6;-1:-1:-1;;;;;2805:6:0;2740:79;;;-1:-1:-1;;;;;2716:32:1;;;2698:51;;2686:2;2671:18;2740:79:0;2552:203:1;5701:57:0;;;;;;;;;;;;;;;;6680:87;;;;;;;;;;-1:-1:-1;6752:7:0;;;;;;;;;;;;-1:-1:-1;;;6752:7:0;;;;6680:87;;16239:130;;;;;;;;;;-1:-1:-1;16239:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;16330:31:0;16310:4;16330:31;;;:22;:31;;;;;;;;;16239:130;7096:192;;;;;;;;;;-1:-1:-1;7096:192:0;;;;;:::i;:::-;;:::i;15556:97::-;;;;;;;;;;-1:-1:-1;15633:12:0;;15556:97;;4629:40;;;;;;;;;;-1:-1:-1;4629:40:0;;;;;;;;16946:825;;;;;;;;;;;;;:::i;16115:116::-;;;;;;;;;;-1:-1:-1;16115:116:0;;;;;:::i;:::-;;:::i;7296:168::-;;;;;;;;;;-1:-1:-1;7296:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7429:18:0;;;7402:7;7429:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7296:168;15894:88;;;;;;;;;;-1:-1:-1;15963:11:0;;-1:-1:-1;;;;;15963:11:0;15894:88;;7472:186;7572:4;7589:39;355:10;7612:7;7621:6;7589:8;:39::i;:::-;-1:-1:-1;7646:4:0;7472:186;;;;;:::o;15990:117::-;2867:6;;-1:-1:-1;;;;;2867:6:0;355:10;2867:22;2859:67;;;;-1:-1:-1;;;2859:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;16061:31:0::1;;::::0;;;:22:::1;:31;::::0;;;;:38;;-1:-1:-1;;16061:38:0::1;16095:4;16061:38;::::0;;15990:117::o;6866:95::-;6919:7;5515:15;5462:1;5515:2;:15;:::i;:::-;5505:25;;:7;:25;:::i;:::-;6939:14;;6866:95;:::o;7666:446::-;7798:4;7815:36;7825:6;7833:9;7844:6;7815:9;:36::i;:::-;7862:220;7885:6;355:10;7933:138;7989:6;7933:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7933:19:0;;;;;;:11;:19;;;;;;;;355:10;7933:33;;;;;;;;;;:37;:138::i;:::-;7862:8;:220::i;:::-;-1:-1:-1;8100:4:0;7666:446;;;;;:::o;15280:268::-;15343:7;;;15390:125;15414:8;:15;15410:19;;15390:125;;;15462:45;15479:14;:27;15494:8;15503:1;15494:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15494:11:0;15479:27;;;;;;;;;;;;;15462:12;;:16;:45::i;:::-;15447:60;-1:-1:-1;15431:3:0;;;;:::i;:::-;;;;15390:125;;;-1:-1:-1;15528:12:0;15280:268;-1:-1:-1;15280:268:0:o;17816:366::-;17882:10;;;;;-1:-1:-1;;;;;17882:10:0;355;-1:-1:-1;;;;;17866:26:0;;17858:35;;;;;;17945:4;17904:20;7062:18;;;:9;:18;;;;;;17966:16;;17962:79;;17999:30;18016:12;17999:16;:30::i;:::-;18072:21;18108:14;;18104:71;;18139:24;18152:10;18139:12;:24::i;:::-;17847:335;;17816:366::o;15661:225::-;15716:7;15725;15741:17;15761:22;15778:4;15761:12;;:16;;:22;;;;:::i;:::-;15741:42;;15790:23;15831:4;15816:12;;:19;;;;:::i;:::-;15851:9;;15790:45;;-1:-1:-1;15661:225:0;;-1:-1:-1;;15661:225:0:o;2954:148::-;2867:6;;-1:-1:-1;;;;;2867:6:0;355:10;2867:22;2859:67;;;;-1:-1:-1;;;2859:67:0;;;;;;;:::i;:::-;3061:1:::1;3045:6:::0;;3024:40:::1;::::0;-1:-1:-1;;;;;3045:6:0;;::::1;::::0;3024:40:::1;::::0;3061:1;;3024:40:::1;3092:1;3075:19:::0;;-1:-1:-1;;;;;;3075:19:0::1;::::0;;2954:148::o;16377:201::-;2867:6;;-1:-1:-1;;;;;2867:6:0;355:10;2867:22;2859:67;;;;-1:-1:-1;;;2859:67:0;;;;;;;:::i;:::-;5515:15:::1;5462:1;5515:2;:15;:::i;:::-;5505:25;::::0;:7:::1;:25;:::i;:::-;16431:12;:22:::0;5515:15:::1;5462:1;5515:2;:15;:::i;:::-;5505:25;::::0;:7:::1;:25;:::i;:::-;16464:14;:24:::0;16499:20:::1;:28:::0;;-1:-1:-1;;16499:28:0::1;::::0;;16543:27:::1;5515:15;5462:1;5515:2;:15;:::i;:::-;5505:25;::::0;:7:::1;:25;:::i;:::-;16543:27;::::0;1361:25:1;;;1349:2;1334:18;16543:27:0::1;;;;;;;16377:201::o:0;7096:192::-;7199:4;7216:42;355:10;7240:9;7251:6;7216:9;:42::i;16946:825::-;2867:6;;-1:-1:-1;;;;;2867:6:0;355:10;2867:22;2859:67;;;;-1:-1:-1;;;2859:67:0;;;;;;;:::i;:::-;17008:11:::1;::::0;-1:-1:-1;;;17008:11:0;::::1;;;17007:12;16999:48;;;::::0;-1:-1:-1;;;16999:48:0;;5925:2:1;16999:48:0::1;::::0;::::1;5907:21:1::0;5964:2;5944:18;;;5937:30;6003:25;5983:18;;;5976:53;6046:18;;16999:48:0::1;5723:347:1::0;16999:48:0::1;17058:15;:104:::0;;-1:-1:-1;;;;;;17058:104:0::1;17109:42;17058:104:::0;;::::1;::::0;;;17173:58:::1;::::0;17190:4:::1;::::0;5515:15:::1;5462:1;5515:2;:15;:::i;:::-;5505:25;::::0;:7:::1;:25;:::i;17173:58::-;17276:15;;;;;;;;;-1:-1:-1::0;;;;;17276:15:0::1;-1:-1:-1::0;;;;;17276:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17258:55:0::1;;17336:4;17356:15;;;;;;;;;-1:-1:-1::0;;;;;17356:15:0::1;-1:-1:-1::0;;;;;17356:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17258:131;::::0;-1:-1:-1;;;;;;17258:131:0::1;::::0;;;;;;-1:-1:-1;;;;;6561:15:1;;;17258:131:0::1;::::0;::::1;6543:34:1::0;6613:15;;6593:18;;;6586:43;6478:18;;17258:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17242:13;:147:::0;;-1:-1:-1;;;;;17242:147:0;;::::1;-1:-1:-1::0;;;;;;17242:147:0;;::::1;;::::0;;17400:15:::1;::::0;::::1;:31;17439:21;17484:4;17504:24;17484:4:::0;-1:-1:-1;;;;;7062:18:0;7035:7;7062:18;;;:9;:18;;;;;;;6969:119;17504:24:::1;17543:1;17559::::0;17575:7:::1;2778::::0;2805:6;-1:-1:-1;;;;;2805:6:0;;2740:79;17575:7:::1;17400:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;17400:223:0;;;-1:-1:-1;;;;;6999:15:1;;;17400:223:0::1;::::0;::::1;6981:34:1::0;7031:18;;;7024:34;;;;7074:18;;;7067:34;;;;7117:18;;;7110:34;7181:15;;;7160:19;;;7153:44;17597:15:0::1;7213:19:1::0;;;7206:35;6915:19;;17400:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17641:13:0::1;::::0;17672:15:::1;::::0;17634:71:::1;::::0;-1:-1:-1;;;17634:71:0;;-1:-1:-1;;;;;17672:15:0;;::::1;17634:71;::::0;::::1;7737:51:1::0;-1:-1:-1;;7804:18:1;;;7797:34;17641:13:0;::::1;::::0;-1:-1:-1;17634:29:0::1;::::0;7710:18:1;;17634:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17716:11:0::1;:18:::0;;-1:-1:-1;;;;17745:18:0;-1:-1:-1;;;17745:18:0;;;16946:825::o;16115:116::-;2867:6;;-1:-1:-1;;;;;2867:6:0;355:10;2867:22;2859:67;;;;-1:-1:-1;;;2859:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16184:31:0::1;16218:5;16184:31:::0;;;:22:::1;:31;::::0;;;;:39;;-1:-1:-1;;16184:39:0::1;::::0;;16115:116::o;8120:335::-;-1:-1:-1;;;;;8213:19:0;;8205:68;;;;-1:-1:-1;;;8205:68:0;;8326:2:1;8205:68:0;;;8308:21:1;8365:2;8345:18;;;8338:30;8404:34;8384:18;;;8377:62;-1:-1:-1;;;8455:18:1;;;8448:34;8499:19;;8205:68:0;8124:400:1;8205:68:0;-1:-1:-1;;;;;8292:21:0;;8284:68;;;;-1:-1:-1;;;8284:68:0;;8731:2:1;8284:68:0;;;8713:21:1;8770:2;8750:18;;;8743:30;8809:34;8789:18;;;8782:62;-1:-1:-1;;;8860:18:1;;;8853:32;8902:19;;8284:68:0;8529:398:1;8284:68:0;-1:-1:-1;;;;;8363:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8415:32;;1361:25:1;;;8415:32:0;;1334:18:1;8415:32:0;;;;;;;8120:335;;;:::o;8459:3689::-;-1:-1:-1;;;;;8543:18:0;;8535:68;;;;-1:-1:-1;;;8535:68:0;;9134:2:1;8535:68:0;;;9116:21:1;9173:2;9153:18;;;9146:30;9212:34;9192:18;;;9185:62;-1:-1:-1;;;9263:18:1;;;9256:35;9308:19;;8535:68:0;8932:401:1;8535:68:0;-1:-1:-1;;;;;8618:16:0;;8610:64;;;;-1:-1:-1;;;8610:64:0;;9540:2:1;8610:64:0;;;9522:21:1;9579:2;9559:18;;;9552:30;9618:34;9598:18;;;9591:62;-1:-1:-1;;;9669:18:1;;;9662:33;9712:19;;8610:64:0;9338:399:1;8610:64:0;8698:1;8689:6;:10;8681:64;;;;-1:-1:-1;;;8681:64:0;;9944:2:1;8681:64:0;;;9926:21:1;9983:2;9963:18;;;9956:30;10022:34;10002:18;;;9995:62;-1:-1:-1;;;10073:18:1;;;10066:39;10122:19;;8681:64:0;9742:405:1;8681:64:0;8754:17;8782:23;8826:7;2778;2805:6;-1:-1:-1;;;;;2805:6:0;;2740:79;8826:7;-1:-1:-1;;;;;8818:15:0;:4;-1:-1:-1;;;;;8818:15:0;;;:32;;;;-1:-1:-1;2778:7:0;2805:6;-1:-1:-1;;;;;8837:13:0;;;2805:6;;8837:13;;8818:32;8814:2989;;;8875:184;9055:3;8875:161;8931:15;;8919:9;;:27;8918:103;;9007:14;;8918:103;;;8971:12;;8918:103;8875:6;;:24;:161::i;:::-;:179;;:184::i;:::-;8863:196;-1:-1:-1;9100:25:0;9121:3;9100:16;8863:196;9114:1;9100:13;:16::i;:25::-;9181:4;9163:24;;;;:9;:24;;;;;;9082:43;;-1:-1:-1;9163:45:0;;9082:43;9163:28;:45::i;:::-;9154:4;9136:24;;;;:9;:24;;;;;:72;9233:20;;;;9229:483;;;9306:15;;-1:-1:-1;;;;;9292:30:0;;;9306:15;;9292:30;;;;:79;;-1:-1:-1;9357:13:0;;-1:-1:-1;;;;;9343:28:0;;;9357:13;;9343:28;;9292:79;9270:431;;;9465:9;9436:39;;;;:28;:39;;;;;;9478:15;-1:-1:-1;9406:203:0;;;;-1:-1:-1;;;9406:203:0;;10354:2:1;9406:203:0;;;10336:21:1;10393:2;10373:18;;;10366:30;10432:34;10412:18;;;10405:62;10503:34;10483:18;;;10476:62;-1:-1:-1;;;10554:19:1;;;10547:39;10603:19;;9406:203:0;10152:476:1;9406:203:0;9657:9;9628:39;;;;:28;:39;;;;;9670:15;9628:57;;9270:431;9750:13;;-1:-1:-1;;;;;9742:21:0;;;9750:13;;9742:21;:68;;;;-1:-1:-1;9794:15:0;;-1:-1:-1;;;;;9780:30:0;;;9794:15;;9780:30;;9742:68;:108;;;;-1:-1:-1;;;;;;9828:22:0;;;;;;:18;:22;;;;;;;;9827:23;9742:108;9724:720;;;9895:12;;9885:6;:22;;9877:60;;;;-1:-1:-1;;;9877:60:0;;10835:2:1;9877:60:0;;;10817:21:1;10874:2;10854:18;;;10847:30;10913:27;10893:18;;;10886:55;10958:18;;9877:60:0;10633:349:1;9877:60:0;10004:14;;9994:6;9978:13;9988:2;-1:-1:-1;;;;;7062:18:0;7035:7;7062:18;;;:9;:18;;;;;;;6969:119;9978:13;:22;;;;:::i;:::-;:40;;9952:128;;;;-1:-1:-1;;;9952:128:0;;11319:2:1;9952:128:0;;;11301:21:1;11358:2;11338:18;;;11331:30;11397:28;11377:18;;;11370:56;11443:18;;9952:128:0;11117:350:1;9952:128:0;10095:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10153:25;10167:2;10171:6;10153:13;:25::i;:::-;4870:8;10240:37;10260:16;;10240:15;:19;;:37;;;;:::i;:::-;:56;10236:197;;;10317:13;:11;:13::i;:::-;;10349:15;:13;:15::i;:::-;10402;10383:16;:34;10236:197;10466:13;;-1:-1:-1;;;;;10460:19:0;;;10466:13;;10460:19;:44;;;;-1:-1:-1;;;;;;10483:21:0;;10499:4;10483:21;;10460:44;10456:422;;;10533:211;10740:3;10533:184;10597:16;;10585:9;;:28;10584:114;;10683:15;;10584:114;;;10642:13;;10533:6;;:28;:184::i;:211::-;10521:223;-1:-1:-1;10793:16:0;10521:223;10807:1;10793:13;:16::i;:::-;10775:34;-1:-1:-1;10836:30:0;:9;10775:34;10836:13;:30::i;:::-;10824:42;;10456:422;10931:4;10882:28;7062:18;;;:9;:18;;;;;;10882:55;;10940:20;10986:11;;10963:20;:34;:71;;11014:20;10963:71;;;11000:11;;10963:71;11050:6;;10940:94;;-1:-1:-1;;;;11050:6:0;;;;11049:7;:36;;;;-1:-1:-1;11072:13:0;;-1:-1:-1;;;;;11066:19:0;;;11072:13;;11066:19;11049:36;:56;;;;-1:-1:-1;11094:11:0;;-1:-1:-1;;;11094:11:0;;;;11049:56;:103;;;;;11138:14;;11114:20;:38;;11049:103;:148;;;;;11195:2;11179:13;;11161:15;:31;;;;:::i;:::-;:36;11049:148;11039:757;;;11254:6;:13;;-1:-1:-1;;;;11254:13:0;-1:-1:-1;;;11254:13:0;;;11290:15;11274:13;:31;11346:30;11363:12;11346:16;:30::i;:::-;11410:21;11389:18;11464:17;11410:21;11479:1;11464:14;:17::i;:::-;11513:10;;:34;;11440:41;;-1:-1:-1;11513:10:0;;;-1:-1:-1;;;;;11513:10:0;;:34;;;;;11440:41;;11513:34;;;;11440:41;11513:10;:34;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11586:20:0;11609:29;:10;11624:13;11609:14;:29::i;:::-;11675:12;;11586:52;;-1:-1:-1;11675:30:0;;11586:52;11675:16;:30::i;:::-;11660:12;:45;-1:-1:-1;;11740:6:0;:14;;-1:-1:-1;;;;11740:14:0;;;-1:-1:-1;11039:757:0;8852:2951;;8814:2989;11815:13;;11811:160;;11886:4;11868:24;;;;:9;:24;;;;;;:39;;11897:9;11868:28;:39::i;:::-;11859:4;11841:24;;;;:9;:24;;;;;;;:66;;;;11923:40;;-1:-1:-1;;;;;11923:40:0;;;;;;;11953:9;1361:25:1;;1349:2;1334:18;;1215:177;11923:40:0;;;;;;;;11811:160;-1:-1:-1;;;;;11997:15:0;;;;;;:9;:15;;;;;;:27;;12017:6;11997:19;:27::i;:::-;-1:-1:-1;;;;;11979:15:0;;;;;;:9;:15;;;;;:45;12047:40;12065:21;:6;12076:9;12065:10;:21::i;:::-;-1:-1:-1;;;;;12047:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;12031:13:0;;;;;;;:9;:13;;;;;:56;;;;12099:41;;;12118:21;:6;12129:9;12118:10;:21::i;:::-;12099:41;;1361:25:1;;;1349:2;1334:18;12099:41:0;;;;;;;8528:3620;;8459:3689;;;:::o;1542:224::-;1662:7;1698:12;1690:6;;;;1682:29;;;;-1:-1:-1;;;1682:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1722:9:0;1734:5;1738:1;1734;:5;:::i;:::-;1722:17;1542:224;-1:-1:-1;;;;;1542:224:0:o;1211:179::-;1269:7;;1301:5;1305:1;1301;:5;:::i;:::-;1289:17;;1330:1;1325;:6;;1317:46;;;;-1:-1:-1;;;1317:46:0;;11807:2:1;1317:46:0;;;11789:21:1;11846:2;11826:18;;;11819:30;11885:29;11865:18;;;11858:57;11932:18;;1317:46:0;11605:351:1;1317:46:0;1381:1;1211:179;-1:-1:-1;;;1211:179:0:o;14104:483::-;6199:6;:13;;-1:-1:-1;;;;6199:13:0;-1:-1:-1;;;6199:13:0;;;14206:16:::1;::::0;;14220:1:::1;14206:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14206:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14206:16:0::1;14182:40;;14251:4;14233;14238:1;14233:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14233:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14277:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;14277:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;14233:7;;14277:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14267:4;14272:1;14267:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14267:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;14342:15:::1;::::0;14310:62:::1;::::0;14327:4:::1;::::0;14342:15:::1;14360:11:::0;14310:8:::1;:62::i;:::-;14383:15;::::0;:196:::1;::::0;-1:-1:-1;;;14383:196:0;;-1:-1:-1;;;;;14383:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;14464:11;;14383:15:::1;::::0;14506:4;;14533::::1;::::0;14553:15:::1;::::0;14383:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6235:6:0;:14;;-1:-1:-1;;;;6235:14:0;;;-1:-1:-1;;;;14104:483:0:o;16586:92::-;16643:10;;:27;;:10;;;;-1:-1:-1;;;;;16643:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;2028:132;2086:7;2113:39;2117:1;2120;2113:39;;;;;;;;;;;;;;;;;:3;:39::i;1774:246::-;1832:7;1856:1;1861;1856:6;1852:47;;-1:-1:-1;1886:1:0;1879:8;;1852:47;1909:9;1921:5;1925:1;1921;:5;:::i;:::-;1909:17;-1:-1:-1;1954:1:0;1945:5;1949:1;1909:17;1945:5;:::i;:::-;:10;1937:56;;;;-1:-1:-1;;;1937:56:0;;13405:2:1;1937:56:0;;;13387:21:1;13444:2;13424:18;;;13417:30;13483:34;13463:18;;;13456:62;-1:-1:-1;;;13534:18:1;;;13527:31;13575:19;;1937:56:0;13203:397:1;12271:307:0;-1:-1:-1;;;;;4540:31:0;;;;;;:22;:31;;;;;;12356:5;;4540:31;;4539:32;4531:74;;;;-1:-1:-1;;;4531:74:0;;13807:2:1;4531:74:0;;;13789:21:1;13846:2;13826:18;;;13819:30;13885:31;13865:18;;;13858:59;13934:18;;4531:74:0;13605:353:1;4531:74:0;12370:15:::1;12388:24;12399:12;;12388:6;:10;;:24;;;;:::i;:::-;-1:-1:-1::0;;;;;12423:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;;12370:42;;-1:-1:-1;12423:26:0;:41;::::1;;;;12463:1;12453:7;:11;12423:41;12419:87;;;12477:8;:20:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;12477:20:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;12477:20:0::1;-1:-1:-1::0;;;;;12477:20:0;::::1;;::::0;;12419:87:::1;-1:-1:-1::0;;;;;12536:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;;:34:::1;::::0;12562:7;12536:25:::1;:34::i;:::-;-1:-1:-1::0;;;;;12512:21:0;;::::1;;::::0;;;:14:::1;:21;::::0;;;;:58;;;;-1:-1:-1;;;12271:307:0:o;1398:136::-;1456:7;1483:43;1487:1;1490;1483:43;;;;;;;;;;;;;;;;;:3;:43::i;12586:1142::-;12626:7;;;12679:125;12703:8;:15;12699:19;;12679:125;;;12751:45;12768:14;:27;12783:8;12792:1;12783:11;;;;;;;;:::i;12751:45::-;12736:60;-1:-1:-1;12720:3:0;;;;:::i;:::-;;;;12679:125;;;;12835:1;12820:12;:16;12812:62;;;;-1:-1:-1;;;12812:62:0;;14165:2:1;12812:62:0;;;14147:21:1;14204:2;14184:18;;;14177:30;14243:34;14223:18;;;14216:62;-1:-1:-1;;;14294:18:1;;;14287:31;14335:19;;12812:62:0;13963:397:1;12812:62:0;12976:20;13017:12;12999:15;:13;:15::i;:::-;:30;;;;:::i;:::-;:34;;13032:1;12999:34;:::i;:::-;12976:57;;13040:22;13080:9;13075:619;13099:8;:15;13095:19;;13075:619;;;13145:47;13164:14;:27;13179:8;13188:1;13179:11;;;;;;;;:::i;13145:47::-;13128:64;;13219:14;13203:12;:30;13199:492;;13336:16;13355:28;:21;13381:1;13355:25;:28::i;:::-;13336:47;;13409:1;13398:8;:12;:49;;;;;13426:21;13414:8;:33;;13398:49;13394:177;;;13472:8;13481:1;13472:11;;;;;;;;:::i;:::-;;;;;;;;;;13464:39;;-1:-1:-1;;;;;13472:11:0;;;;13464:39;;;;;13494:8;;13464:39;13472:11;13464:39;13494:8;13472:11;13464:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13533:12:0;;:26;;13550:8;13533:16;:26::i;:::-;13518:12;:41;13394:177;13641:8;13650:1;13641:11;;;;;;;;:::i;:::-;;;;;;;;;;;13627;:25;;-1:-1:-1;;;;;;13627:25:0;-1:-1:-1;;;;;13641:11:0;;;13627:25;;;;;;13672:8;:11;;13681:1;;13672:11;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;13672:11:0;;12586:1142;-1:-1:-1;;;;;;12586:1142:0:o;13199:492::-;13116:3;;;;:::i;:::-;;;;13075:619;;;;13717:1;13702:17;;;;;12586:1142;:::o;13905:191::-;13998:9;13993:96;14017:8;:15;14013:19;;13993:96;;;14080:1;14050:14;:27;14065:8;14074:1;14065:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14065:11:0;14050:27;;;;;;;;;;;;:31;14034:3;;;;:::i;:::-;;;;13993:96;;;;13905:191::o;2168:223::-;2288:7;2323:12;2316:5;2308:28;;;;-1:-1:-1;;;2308:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2347:9:0;2359:5;2363:1;2359;:5;:::i;13738:159::-;13785:7;13843:16;13861:15;13878:8;13826:61;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13816:72;;;;;;13808:81;;13801:88;;13738:159;:::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:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2760:388::-;2828:6;2836;2889:2;2877:9;2868:7;2864:23;2860:32;2857:52;;;2905:1;2902;2895:12;2857:52;2944:9;2931:23;2963:31;2988:5;2963:31;:::i;:::-;3013:5;-1:-1:-1;3070:2:1;3055:18;;3042:32;3083:33;3042:32;3083:33;:::i;:::-;3135:7;3125:17;;;2760:388;;;;;:::o;3153:356::-;3355:2;3337:21;;;3374:18;;;3367:30;3433:34;3428:2;3413:18;;3406:62;3500:2;3485:18;;3153:356::o;3514:127::-;3575:10;3570:3;3566:20;3563:1;3556:31;3606:4;3603:1;3596:15;3630:4;3627:1;3620:15;3646:422;3735:1;3778:5;3735:1;3792:270;3813:7;3803:8;3800:21;3792:270;;;3872:4;3868:1;3864:6;3860:17;3854:4;3851:27;3848:53;;;3881:18;;:::i;:::-;3931:7;3921:8;3917:22;3914:55;;;3951:16;;;;3914:55;4030:22;;;;3990:15;;;;3792:270;;;3796:3;3646:422;;;;;:::o;4073:806::-;4122:5;4152:8;4142:80;;-1:-1:-1;4193:1:1;4207:5;;4142:80;4241:4;4231:76;;-1:-1:-1;4278:1:1;4292:5;;4231:76;4323:4;4341:1;4336:59;;;;4409:1;4404:130;;;;4316:218;;4336:59;4366:1;4357:10;;4380:5;;;4404:130;4441:3;4431:8;4428:17;4425:43;;;4448:18;;:::i;:::-;-1:-1:-1;;4504:1:1;4490:16;;4519:5;;4316:218;;4618:2;4608:8;4605:16;4599:3;4593:4;4590:13;4586:36;4580:2;4570:8;4567:16;4562:2;4556:4;4553:12;4549:35;4546:77;4543:159;;;-1:-1:-1;4655:19:1;;;4687:5;;4543:159;4734:34;4759:8;4753:4;4734:34;:::i;:::-;4804:6;4800:1;4796:6;4792:19;4783:7;4780:32;4777:58;;;4815:18;;:::i;:::-;4853:20;;4073:806;-1:-1:-1;;;4073:806:1:o;4884:140::-;4942:5;4971:47;5012:4;5002:8;4998:19;4992:4;4971:47;:::i;5029:168::-;5069:7;5135:1;5131;5127:6;5123:14;5120:1;5117:21;5112:1;5105:9;5098:17;5094:45;5091:71;;;5142:18;;:::i;:::-;-1:-1:-1;5182:9:1;;5029:168::o;5202:127::-;5263:10;5258:3;5254:20;5251:1;5244:31;5294:4;5291:1;5284:15;5318:4;5315:1;5308:15;5334:135;5373:3;5394:17;;;5391:43;;5414:18;;:::i;:::-;-1:-1:-1;5461:1:1;5450:13;;5334:135::o;5474:127::-;5535:10;5530:3;5526:20;5523:1;5516:31;5566:4;5563:1;5556:15;5590:4;5587:1;5580:15;5606:112;5638:1;5664;5654:35;;5669:18;;:::i;:::-;-1:-1:-1;5703:9:1;;5606:112::o;6075:251::-;6145:6;6198:2;6186:9;6177:7;6173:23;6169:32;6166:52;;;6214:1;6211;6204:12;6166:52;6246:9;6240:16;6265:31;6290:5;6265:31;:::i;7252:306::-;7340:6;7348;7356;7409:2;7397:9;7388:7;7384:23;7380:32;7377:52;;;7425:1;7422;7415:12;7377:52;7454:9;7448:16;7438:26;;7504:2;7493:9;7489:18;7483:25;7473:35;;7548:2;7537:9;7533:18;7527:25;7517:35;;7252:306;;;;;:::o;7842:277::-;7909:6;7962:2;7950:9;7941:7;7937:23;7933:32;7930:52;;;7978:1;7975;7968:12;7930:52;8010:9;8004:16;8063:5;8056:13;8049:21;8042:5;8039:32;8029:60;;8085:1;8082;8075:12;10987:125;11052:9;;;11073:10;;;11070:36;;;11086:18;;:::i;11472:128::-;11539:9;;;11560:11;;;11557:37;;;11574:18;;:::i;12093:980::-;12355:4;12403:3;12392:9;12388:19;12434:6;12423:9;12416:25;12460:2;12498:6;12493:2;12482:9;12478:18;12471:34;12541:3;12536:2;12525:9;12521:18;12514:31;12565:6;12600;12594:13;12631:6;12623;12616:22;12669:3;12658:9;12654:19;12647:26;;12708:2;12700:6;12696:15;12682:29;;12729:1;12739:195;12753:6;12750:1;12747:13;12739:195;;;12818:13;;-1:-1:-1;;;;;12814:39:1;12802:52;;12909:15;;;;12874:12;;;;12850:1;12768:9;12739:195;;;-1:-1:-1;;;;;;;12990:32:1;;;;12985:2;12970:18;;12963:60;-1:-1:-1;;;13054:3:1;13039:19;13032:35;12951:3;12093:980;-1:-1:-1;;;12093:980:1:o;13078:120::-;13118:1;13144;13134:35;;13149:18;;:::i;:::-;-1:-1:-1;13183:9:1;;13078:120::o;14365:722::-;14609:6;14604:3;14597:19;14579:3;14635:2;14667:6;14662:2;14657:3;14653:12;14646:28;14705:2;14700:3;14696:12;14737:6;14731:13;14786:6;14783:1;14776:17;14829:2;14826:1;14816:16;14850:1;14860:200;14874:6;14871:1;14868:13;14860:200;;;14941:13;;-1:-1:-1;;;;;14937:39:1;14923:54;;14999:14;;;;14973:1;15036:14;;;;14889:9;14860:200;;;-1:-1:-1;15076:5:1;;14365:722;-1:-1:-1;;;;;;;;14365:722:1:o

Swarm Source

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