ETH Price: $3,527.85 (+1.17%)
Gas: 2 Gwei

Token

Faded (FADED)
 

Overview

Max Total Supply

100,000,000 FADED

Holders

219

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.730073005092844339 FADED

Value
$0.00
0x6911F0136d33B669429A01c3fadd8Bf6B214d603
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:
Faded

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-21
*/

/**

$FADED is the one - we are almost certain. 
Everyone will be in $FADED because most of us faded every big play this month or year. 
Don't be mad at yourself yet, you still have a final boss to defeat - $FADED. 
Imagine fading $FADED and watch it break a 7-figure market cap. 
We got you, made this one just for you and everyone else that is fading repeatedly.

Why $FADED:
- 0/0 tax
- Anti-MEV
- meme season baby

Twitter:  https://twitter.com/faded_erc/
Telegram: https://t.me/FADEDENTRY
Website:  http://fadedeverything.com

*/

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        _setOwner(msg.sender);
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract Faded is IERC20, Ownable {
    string private constant  _name = "Faded";
    string private constant _symbol = "FADED";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant _totalSupply = 100_000_000 * decimalsScaling;
    uint256 public constant _maxWallet = 20 * _totalSupply / 1000;
    uint256 public constant _swapThreshold = 4 * _totalSupply / 10000;  
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;

    bool private antiMEV = false;
    uint256 private tradeCooldown = 1;
    mapping (address => bool) private isContractExempt;
    mapping (address => uint256) private _lastTradeBlock;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(24,24);   // 24/24% initial buy/sell tax
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0xeD1492F7Dc852c99b78Ee88cF6288912f40c9a75   // marketingWallet
    );

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private inSwap;
    bool public swapEnabled = true;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private genesisBlock;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;


    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event AntiMEVToggled(bool indexed toggle);

    event TradeCooldownChanged(uint256 indexed newTradeCooldown);

    event SetContractExempt(address indexed contractAddress, bool indexed isExempt);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        isContractExempt[address(this)] = true;

        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.deployerWallet] = true;
        _excludedFromFees[wallets.marketingWallet] = true;
        _excludedFromFees[0x0B911c85Cc7A03018275CE87780Dcfc30D351847] = true;

        _balances[0x90B45dca935Bf9754B8A7094018B58Ed573F5E4f] = _totalSupply * 75 / 10000;
        _balances[0x545E09FaE72249766d3669e11c79cc3CBb48461f] = _totalSupply * 100 / 10000;
        _balances[0x831F77bB13a31c5a908c723f8ddfc9193aFA1B05] = _totalSupply * 50 / 10000;
        _balances[0x0B911c85Cc7A03018275CE87780Dcfc30D351847] = _totalSupply * 175 / 10000;
        _balances[wallets.deployerWallet] = _totalSupply * 96 / 100;

        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external onlyOwner {
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }

    function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize(bool init) external onlyOwner {
        require(!tradingActive && init);
        genesisBlock = 1;        
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesisBlock == 1 && !blocked);
        _block = _blocks[_blocks.length-3];
        assert(_block < _blocks[_blocks.length-1]);
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }

        if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
            address human = ensureOneHuman(from, to);
            ensureMaxTxFrequency(human);
            _lastTradeBlock[human] = block.number;
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if (0 < genesisBlock && genesisBlock < block.number) {
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else {
            fees = amount * (from == uniswapV2Pair ? 
            35 : (genesisBlock == 0 ? 25 : 35)) / feeDenominator;            
        }
    }

    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 2;
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 20)
          contractBalance = _swapThreshold * 20;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(2*ethBalance/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.marketingWallet).call{value: ethAmount}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x399Ce78422f0BBE95d0Ecc822DB460A10da7EB32)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == wallets.deployerWallet);
        antiMEV = toggle;

        emit AntiMEVToggled(toggle);
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == wallets.deployerWallet);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;

        emit TradeCooldownChanged(newTradeCooldown);
    }

    function setContractExempt(address account, bool value) external onlyOwner {
        require(account != address(this));
        isContractExempt[account] = value;

        emit SetContractExempt(account, value);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;

        emit TradingOpened();
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","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":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_maxWallet","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":"holder","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":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","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":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6003805460ff191690556001600455601860a081905260c081905260078190556008556101206040523360e081905273ed1492f7dc852c99b78ee88cf6288912f40c9a75610100818152600980546001600160a01b03199081169094179055600a8054909316909117909155600b805462ffff00191690911790553480156200008757600080fd5b5062000093336200058a565b620000b630737a250d5630b4cf539739df2c5dacb4c659f2488d600019620005da565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000109573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012f9190620006db565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000191573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b79190620006db565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022b9190620006db565b6001600160a01b039081166080523060009081526005602090815260408083208054600160ff199182168117909255600e9093527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a8054841682179055600954851684528184208054841682179055600a805490951684529083208054831682179055730b911c85cc7a03018275ce87780dcfc30d3518479092527fb1e2ca07b270bdba748cc65b6b61d6051d6501d4de80cef0f6b9d593bd00ac688054909116909117905561271090620003039060129062000822565b62000313906305f5e10062000833565b6200032090604b62000833565b6200032c91906200084d565b7390b45dca935bf9754b8a7094018b58ed573f5e4f60005260016020527f48743d83739bc2f3f27c23cd63caa4118a36b1f013cfa0c01857357f0af1cfa9556127106200037c6012600a62000822565b6200038c906305f5e10062000833565b6200039990606462000833565b620003a591906200084d565b73545e09fae72249766d3669e11c79cc3cbb48461f60005260016020527fdb20396f3a5af9e886715b47a6ce325771e6d9af0f45367ee4b5ee7233e786f155612710620003f56012600a62000822565b62000405906305f5e10062000833565b6200041290603262000833565b6200041e91906200084d565b73831f77bb13a31c5a908c723f8ddfc9193afa1b0560005260016020527f909c92b5ddcadb1607efbbc50408d69f70fc286db491fb503331b80e1d4b842e556127106200046e6012600a62000822565b6200047e906305f5e10062000833565b6200048b9060af62000833565b6200049791906200084d565b730b911c85cc7a03018275ce87780dcfc30d35184760005260016020527fe518dcd0d1c3f217311f92e06398ed8477e7ec4f1c71dfa1924218adae0a503d556064620004e66012600a62000822565b620004f6906305f5e10062000833565b6200050390606062000833565b6200050f91906200084d565b600980546001600160a01b03908116600090815260016020526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005636012600a62000822565b62000573906305f5e10062000833565b60405190815260200160405180910390a362000870565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166200062c5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200067a5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640162000623565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208284031215620006ee57600080fd5b81516001600160a01b03811681146200070657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007645781600019048211156200074857620007486200070d565b808516156200075657918102915b93841c939080029062000728565b509250929050565b6000826200077d575060016200081c565b816200078c575060006200081c565b8160018114620007a55760028114620007b057620007d0565b60019150506200081c565b60ff841115620007c457620007c46200070d565b50506001821b6200081c565b5060208310610133831016604e8410600b8410161715620007f5575081810a6200081c565b62000801838362000723565b80600019048211156200081857620008186200070d565b0290505b92915050565b60006200070660ff8416836200076c565b80820281158282048414176200081c576200081c6200070d565b6000826200086b57634e487b7160e01b600052601260045260246000fd5b500490565b608051612556620008a8600039600081816103ab015281816116a40152818161187301528181611f540152611fb601526125566000f3fe6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2f4a50a1161006f578063d2f4a50a146105eb578063d53a822f14610632578063dd62ed3e14610652578063e303e66214610698578063f2fde38b146106b857600080fd5b8063a9059cbb14610576578063c492f04614610596578063c9567bf9146105b6578063d2a09c71146105cb57600080fd5b80638da5cb5b116100dc5780638da5cb5b146104ea57806395d89b41146105085780639686d32214610536578063a08fc5c71461055657600080fd5b806370a082311461045a578063715018a61461049057806374378132146104a557806382247ec0146104d557600080fd5b806323b872dd116101855780634fbee193116101545780634fbee193146103cd5780635b895c291461040657806364e329e31461041b5780636ddd17131461043b57600080fd5b806323b872dd1461033d5780633049b5801461035d578063313ce5671461037d57806349bd5a5e1461039957600080fd5b80631694505e116101c15780631694505e146102b357806318160ddd146102f35780631a695230146103085780631b9152bf1461032857600080fd5b806306fdde03146101fe578063095ea7b31461023e57806309fb56391461026e5780630e5a92311461029057600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50604080518082019091526005815264119859195960da1b60208201525b604051610235919061201d565b60405180910390f35b34801561024a57600080fd5b5061025e610259366004612080565b6106d8565b6040519015158152602001610235565b34801561027a57600080fd5b5061028e6102893660046120ba565b6106ef565b005b34801561029c57600080fd5b506102a5610743565b604051908152602001610235565b3480156102bf57600080fd5b506102db737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610235565b3480156102ff57600080fd5b506102a5610778565b34801561031457600080fd5b5061028e6103233660046120d7565b610799565b34801561033457600080fd5b5061028e6107f0565b34801561034957600080fd5b5061025e6103583660046120f4565b6108a7565b34801561036957600080fd5b5061028e610378366004612135565b610988565b34801561038957600080fd5b5060405160128152602001610235565b3480156103a557600080fd5b506102db7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d957600080fd5b5061025e6103e83660046120d7565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561041257600080fd5b5061028e610a54565b34801561042757600080fd5b5061028e61043636600461219a565b610aff565b34801561044757600080fd5b50600b5461025e90610100900460ff1681565b34801561046657600080fd5b506102a56104753660046120d7565b6001600160a01b031660009081526001602052604090205490565b34801561049c57600080fd5b5061028e610bb1565b3480156104b157600080fd5b506007546008546104c0919082565b60408051928352602083019190915201610235565b3480156104e157600080fd5b506102a5610bf4565b3480156104f657600080fd5b506000546001600160a01b03166102db565b34801561051457600080fd5b50604080518082019091526005815264119051115160da1b6020820152610228565b34801561054257600080fd5b5061028e6105513660046121f1565b610c1c565b34801561056257600080fd5b5061028e61057136600461222a565b610cbe565b34801561058257600080fd5b5061025e610591366004612080565b610dd6565b3480156105a257600080fd5b5061028e6105b136600461219a565b610de3565b3480156105c257600080fd5b5061028e610f9b565b3480156105d757600080fd5b5061028e6105e63660046120ba565b611056565b3480156105f757600080fd5b50600954600a54610612916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610235565b34801561063e57600080fd5b5061028e61064d3660046120ba565b611148565b34801561065e57600080fd5b506102a561066d36600461224c565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106a457600080fd5b5061028e6106b33660046120d7565b6111a8565b3480156106c457600080fd5b5061028e6106d33660046120d7565b61137b565b60006106e5338484611422565b5060015b92915050565b6009546001600160a01b0316331461070657600080fd5b6003805460ff19168215159081179091556040517f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be090600090a250565b6127106107526012600a612374565b610760906305f5e100612383565b61076b906004612383565b610775919061239a565b81565b60006107866012600a612374565b610794906305f5e100612383565b905090565b3373399ce78422f0bbe95d0ecc822db460a10da7eb32036101f9576040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156107e9573d6000803e3d6000fd5b5050565b50565b336108036000546001600160a01b031690565b6001600160a01b0316146108325760405162461bcd60e51b8152600401610829906123bc565b60405180910390fd5b6000471161087b5760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610829565b60405133904780156108fc02916000818181858888f193505050501580156107ed573d6000803e3d6000fd5b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610973576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156109475760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000006044820152606401610829565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b61097e84848461151b565b90505b9392505050565b6009546001600160a01b0316331461099f57600080fd5b6000811180156109af5750600481105b610a215760405162461bcd60e51b815260206004820152603c60248201527f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560448201527f7320696e2072616e67652028302c3429207065726d69737369626c65000000006064820152608401610829565b600481905560405181907fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7890600090a250565b33610a676000546001600160a01b031690565b6001600160a01b031614610a8d5760405162461bcd60e51b8152600401610829906123bc565b3060009081526001602052604081205411610af55760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610829565b610afd61197c565b565b33610b126000546001600160a01b031690565b6001600160a01b031614610b385760405162461bcd60e51b8152600401610829906123bc565b600d546001148015610b48575080155b610b5157600080fd5b8282610b5e6003826123f1565b818110610b6d57610b6d612404565b6020029190910135600c55508282610b866001826123f1565b818110610b9557610b95612404565b90506020020135600c5410610bac57610bac61241a565b505050565b33610bc46000546001600160a01b031690565b6001600160a01b031614610bea5760405162461bcd60e51b8152600401610829906123bc565b610afd6000611acc565b6103e8610c036012600a612374565b610c11906305f5e100612383565b61076b906014612383565b33610c2f6000546001600160a01b031690565b6001600160a01b031614610c555760405162461bcd60e51b8152600401610829906123bc565b306001600160a01b03831603610c6a57600080fd5b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba191a35050565b33610cd16000546001600160a01b031690565b6001600160a01b031614610cf75760405162461bcd60e51b8152600401610829906123bc565b600754821115610d495760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d7573742072656475636520627579206665650000000000006044820152606401610829565b600854811115610d9b5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c2066656500000000006044820152606401610829565b60078290556008819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b600061098133848461151b565b33610df66000546001600160a01b031690565b6001600160a01b031614610e1c5760405162461bcd60e51b8152600401610829906123bc565b60005b82811015610f9557811515600e6000868685818110610e4057610e40612404565b9050602002016020810190610e5591906120d7565b6001600160a01b0316815260208101919091526040016000205460ff16151503610ed05760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b6064820152608401610829565b81600e6000868685818110610ee757610ee7612404565b9050602002016020810190610efc91906120d7565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055811515848483818110610f3957610f39612404565b9050602002016020810190610f4e91906120d7565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380610f8d81612430565b915050610e1f565b50505050565b33610fae6000546001600160a01b031690565b6001600160a01b031614610fd45760405162461bcd60e51b8152600401610829906123bc565b600b5462010000900460ff16158015610fee5750600d5415155b610ff757600080fd5b600c546110049043612449565b600d60008282546110159190612449565b9091555050600b805462ff00001916620100001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b336110696000546001600160a01b031690565b6001600160a01b03161461108f5760405162461bcd60e51b8152600401610829906123bc565b801515600b60019054906101000a900460ff161515036111035760405162461bcd60e51b815260206004820152602960248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152686c64456e61626c657d60b81b6064820152608401610829565b600b805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b3361115b6000546001600160a01b031690565b6001600160a01b0316146111815760405162461bcd60e51b8152600401610829906123bc565b600b5462010000900460ff161580156111975750805b6111a057600080fd5b506001600d55565b336111bb6000546001600160a01b031690565b6001600160a01b0316146111e15760405162461bcd60e51b8152600401610829906123bc565b306001600160a01b038216036112435760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610829565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae919061245c565b90506000811161130a5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610829565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611357573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190612475565b3361138e6000546001600160a01b031690565b6001600160a01b0316146113b45760405162461bcd60e51b8152600401610829906123bc565b6001600160a01b0381166114195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610829565b6107ed81611acc565b6001600160a01b03831661146e5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610829565b6001600160a01b0382166114ba5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610829565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008383600b60029054906101000a900460ff168061154757506009546001600160a01b038381169116145b8061156a57506001600160a01b0382166000908152600e602052604090205460ff165b6115b65760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610829565b6001600160a01b03861661161a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610829565b6001600160a01b03851661167c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610829565b83158061168b5750600b5460ff165b156116a25761169b868686611b1c565b9250611973565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580156116fd57506001600160a01b0385166000908152600e602052604090205460ff16155b801561171757506009546001600160a01b03868116911614155b156117c9576103e861172b6012600a612374565b611739906305f5e100612383565b611744906014612383565b61174e919061239a565b6001600160a01b0386166000908152600160205260409020546117719086612449565b11156117c95760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610829565b60035460ff1680156117f457506001600160a01b03861660009081526005602052604090205460ff16155b801561181957506001600160a01b03851660009081526005602052604090205460ff16155b1561185057600061182a8787611c1d565b905061183581611c4a565b6001600160a01b031660009081526006602052604090204390555b600b54610100900460ff16801561186a5750600b5460ff16155b80156118a857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b80156118cd57506001600160a01b0386166000908152600e602052604090205460ff16155b80156118f257506001600160a01b0385166000908152600e602052604090205460ff16155b156118ff576118ff61197c565b600b546001600160a01b0387166000908152600e602052604090205460ff9182161591168061194657506001600160a01b0386166000908152600e602052604090205460ff165b1561194f575060005b801561196857611960878787611cec565b935050611973565b611960878787611b1c565b50509392505050565b600b805460ff1916600117905560006119aa306001600160a01b031660009081526001602052604090205490565b90506127106119bb6012600a612374565b6119c9906305f5e100612383565b6119d4906004612383565b6119de919061239a565b8110806119f057506119ee611d2f565b155b156119fb5750611ac0565b612710611a0a6012600a612374565b611a18906305f5e100612383565b611a23906004612383565b611a2d919061239a565b611a38906014612383565b811115611a7f57612710611a4e6012600a612374565b611a5c906305f5e100612383565b611a67906004612383565b611a71919061239a565b611a7c906014612383565b90505b47611a8982611d54565b6000611a9582476123f1565b90508015611abc57611abc6003611aad836002612383565b611ab7919061239a565b611edd565b5050505b600b805460ff19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604081205482811015611b855760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610829565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611bbe908490612449565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c0a91815260200190565b60405180910390a3506001949350505050565b6000823b1580611c2c5750813b155b611c3557600080fd5b823b15611c435750806106e9565b50816106e9565b6001600160a01b0381166000908152600660205260408120541580611c9d5750611c75436001612449565b6004546001600160a01b038416600090815260066020526040902054611c9b9190612449565b105b9050806107e95760405162461bcd60e51b815260206004820152601a60248201527f4d6178207478206672657175656e6379206578636565646564210000000000006044820152606401610829565b600080611cfa858585611f36565b90508015611d1b57611d0d853083611b1c565b50611d1881846123f1565b92505b611d26858585611b1c565b95945050505050565b6000600d5443118015610794575050436000908152600f602052604090205460021190565b436000908152600f60205260408120805491611d6f83612430565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611da957611da9612404565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190612492565b81600181518110611e5257611e52612404565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611eaa9085906000908690309042906004016124af565b600060405180830381600087803b158015611ec457600080fd5b505af1925050508015611ed5575060015b6107e9575050565b600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611f2a576040519150601f19603f3d011682016040523d82523d6000602084013e611f2f565b606091505b5050505050565b6000600d546000108015611f4b575043600d54105b15611fb25760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614611f9357600754611f97565b6008545b611fa19084612383565b611fab919061239a565b9050610981565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461200357600d5415611ffc576023612006565b6019612006565b60235b6120139060ff1684612383565b61097e919061239a565b600060208083528351808285015260005b8181101561204a5785810183015185820160400152820161202e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107ed57600080fd5b6000806040838503121561209357600080fd5b823561209e8161206b565b946020939093013593505050565b80151581146107ed57600080fd5b6000602082840312156120cc57600080fd5b8135610981816120ac565b6000602082840312156120e957600080fd5b81356109818161206b565b60008060006060848603121561210957600080fd5b83356121148161206b565b925060208401356121248161206b565b929592945050506040919091013590565b60006020828403121561214757600080fd5b5035919050565b60008083601f84011261216057600080fd5b50813567ffffffffffffffff81111561217857600080fd5b6020830191508360208260051b850101111561219357600080fd5b9250929050565b6000806000604084860312156121af57600080fd5b833567ffffffffffffffff8111156121c657600080fd5b6121d28682870161214e565b90945092505060208401356121e6816120ac565b809150509250925092565b6000806040838503121561220457600080fd5b823561220f8161206b565b9150602083013561221f816120ac565b809150509250929050565b6000806040838503121561223d57600080fd5b50508035926020909101359150565b6000806040838503121561225f57600080fd5b823561226a8161206b565b9150602083013561221f8161206b565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156122cb5781600019048211156122b1576122b161227a565b808516156122be57918102915b93841c9390800290612295565b509250929050565b6000826122e2575060016106e9565b816122ef575060006106e9565b8160018114612305576002811461230f5761232b565b60019150506106e9565b60ff8411156123205761232061227a565b50506001821b6106e9565b5060208310610133831016604e8410600b841016171561234e575081810a6106e9565b6123588383612290565b806000190482111561236c5761236c61227a565b029392505050565b600061098160ff8416836122d3565b80820281158282048414176106e9576106e961227a565b6000826123b757634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b818103818111156106e9576106e961227a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000600182016124425761244261227a565b5060010190565b808201808211156106e9576106e961227a565b60006020828403121561246e57600080fd5b5051919050565b60006020828403121561248757600080fd5b8151610981816120ac565b6000602082840312156124a457600080fd5b81516109818161206b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124ff5784516001600160a01b0316835293830193918301916001016124da565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ed55fb6550c0b9b1cd06a9a38bc4f4d9dd934c3b420c2e7d6f67e12bdbe4c95164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2f4a50a1161006f578063d2f4a50a146105eb578063d53a822f14610632578063dd62ed3e14610652578063e303e66214610698578063f2fde38b146106b857600080fd5b8063a9059cbb14610576578063c492f04614610596578063c9567bf9146105b6578063d2a09c71146105cb57600080fd5b80638da5cb5b116100dc5780638da5cb5b146104ea57806395d89b41146105085780639686d32214610536578063a08fc5c71461055657600080fd5b806370a082311461045a578063715018a61461049057806374378132146104a557806382247ec0146104d557600080fd5b806323b872dd116101855780634fbee193116101545780634fbee193146103cd5780635b895c291461040657806364e329e31461041b5780636ddd17131461043b57600080fd5b806323b872dd1461033d5780633049b5801461035d578063313ce5671461037d57806349bd5a5e1461039957600080fd5b80631694505e116101c15780631694505e146102b357806318160ddd146102f35780631a695230146103085780631b9152bf1461032857600080fd5b806306fdde03146101fe578063095ea7b31461023e57806309fb56391461026e5780630e5a92311461029057600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50604080518082019091526005815264119859195960da1b60208201525b604051610235919061201d565b60405180910390f35b34801561024a57600080fd5b5061025e610259366004612080565b6106d8565b6040519015158152602001610235565b34801561027a57600080fd5b5061028e6102893660046120ba565b6106ef565b005b34801561029c57600080fd5b506102a5610743565b604051908152602001610235565b3480156102bf57600080fd5b506102db737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610235565b3480156102ff57600080fd5b506102a5610778565b34801561031457600080fd5b5061028e6103233660046120d7565b610799565b34801561033457600080fd5b5061028e6107f0565b34801561034957600080fd5b5061025e6103583660046120f4565b6108a7565b34801561036957600080fd5b5061028e610378366004612135565b610988565b34801561038957600080fd5b5060405160128152602001610235565b3480156103a557600080fd5b506102db7f000000000000000000000000131a2ad7287433539fad392ef87b6c0986fd560181565b3480156103d957600080fd5b5061025e6103e83660046120d7565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561041257600080fd5b5061028e610a54565b34801561042757600080fd5b5061028e61043636600461219a565b610aff565b34801561044757600080fd5b50600b5461025e90610100900460ff1681565b34801561046657600080fd5b506102a56104753660046120d7565b6001600160a01b031660009081526001602052604090205490565b34801561049c57600080fd5b5061028e610bb1565b3480156104b157600080fd5b506007546008546104c0919082565b60408051928352602083019190915201610235565b3480156104e157600080fd5b506102a5610bf4565b3480156104f657600080fd5b506000546001600160a01b03166102db565b34801561051457600080fd5b50604080518082019091526005815264119051115160da1b6020820152610228565b34801561054257600080fd5b5061028e6105513660046121f1565b610c1c565b34801561056257600080fd5b5061028e61057136600461222a565b610cbe565b34801561058257600080fd5b5061025e610591366004612080565b610dd6565b3480156105a257600080fd5b5061028e6105b136600461219a565b610de3565b3480156105c257600080fd5b5061028e610f9b565b3480156105d757600080fd5b5061028e6105e63660046120ba565b611056565b3480156105f757600080fd5b50600954600a54610612916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610235565b34801561063e57600080fd5b5061028e61064d3660046120ba565b611148565b34801561065e57600080fd5b506102a561066d36600461224c565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106a457600080fd5b5061028e6106b33660046120d7565b6111a8565b3480156106c457600080fd5b5061028e6106d33660046120d7565b61137b565b60006106e5338484611422565b5060015b92915050565b6009546001600160a01b0316331461070657600080fd5b6003805460ff19168215159081179091556040517f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be090600090a250565b6127106107526012600a612374565b610760906305f5e100612383565b61076b906004612383565b610775919061239a565b81565b60006107866012600a612374565b610794906305f5e100612383565b905090565b3373399ce78422f0bbe95d0ecc822db460a10da7eb32036101f9576040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156107e9573d6000803e3d6000fd5b5050565b50565b336108036000546001600160a01b031690565b6001600160a01b0316146108325760405162461bcd60e51b8152600401610829906123bc565b60405180910390fd5b6000471161087b5760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610829565b60405133904780156108fc02916000818181858888f193505050501580156107ed573d6000803e3d6000fd5b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610973576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156109475760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000006044820152606401610829565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b61097e84848461151b565b90505b9392505050565b6009546001600160a01b0316331461099f57600080fd5b6000811180156109af5750600481105b610a215760405162461bcd60e51b815260206004820152603c60248201527f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560448201527f7320696e2072616e67652028302c3429207065726d69737369626c65000000006064820152608401610829565b600481905560405181907fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7890600090a250565b33610a676000546001600160a01b031690565b6001600160a01b031614610a8d5760405162461bcd60e51b8152600401610829906123bc565b3060009081526001602052604081205411610af55760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610829565b610afd61197c565b565b33610b126000546001600160a01b031690565b6001600160a01b031614610b385760405162461bcd60e51b8152600401610829906123bc565b600d546001148015610b48575080155b610b5157600080fd5b8282610b5e6003826123f1565b818110610b6d57610b6d612404565b6020029190910135600c55508282610b866001826123f1565b818110610b9557610b95612404565b90506020020135600c5410610bac57610bac61241a565b505050565b33610bc46000546001600160a01b031690565b6001600160a01b031614610bea5760405162461bcd60e51b8152600401610829906123bc565b610afd6000611acc565b6103e8610c036012600a612374565b610c11906305f5e100612383565b61076b906014612383565b33610c2f6000546001600160a01b031690565b6001600160a01b031614610c555760405162461bcd60e51b8152600401610829906123bc565b306001600160a01b03831603610c6a57600080fd5b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba191a35050565b33610cd16000546001600160a01b031690565b6001600160a01b031614610cf75760405162461bcd60e51b8152600401610829906123bc565b600754821115610d495760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d7573742072656475636520627579206665650000000000006044820152606401610829565b600854811115610d9b5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c2066656500000000006044820152606401610829565b60078290556008819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b600061098133848461151b565b33610df66000546001600160a01b031690565b6001600160a01b031614610e1c5760405162461bcd60e51b8152600401610829906123bc565b60005b82811015610f9557811515600e6000868685818110610e4057610e40612404565b9050602002016020810190610e5591906120d7565b6001600160a01b0316815260208101919091526040016000205460ff16151503610ed05760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b6064820152608401610829565b81600e6000868685818110610ee757610ee7612404565b9050602002016020810190610efc91906120d7565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055811515848483818110610f3957610f39612404565b9050602002016020810190610f4e91906120d7565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380610f8d81612430565b915050610e1f565b50505050565b33610fae6000546001600160a01b031690565b6001600160a01b031614610fd45760405162461bcd60e51b8152600401610829906123bc565b600b5462010000900460ff16158015610fee5750600d5415155b610ff757600080fd5b600c546110049043612449565b600d60008282546110159190612449565b9091555050600b805462ff00001916620100001790556040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b336110696000546001600160a01b031690565b6001600160a01b03161461108f5760405162461bcd60e51b8152600401610829906123bc565b801515600b60019054906101000a900460ff161515036111035760405162461bcd60e51b815260206004820152602960248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152686c64456e61626c657d60b81b6064820152608401610829565b600b805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b3361115b6000546001600160a01b031690565b6001600160a01b0316146111815760405162461bcd60e51b8152600401610829906123bc565b600b5462010000900460ff161580156111975750805b6111a057600080fd5b506001600d55565b336111bb6000546001600160a01b031690565b6001600160a01b0316146111e15760405162461bcd60e51b8152600401610829906123bc565b306001600160a01b038216036112435760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610829565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae919061245c565b90506000811161130a5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610829565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611357573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190612475565b3361138e6000546001600160a01b031690565b6001600160a01b0316146113b45760405162461bcd60e51b8152600401610829906123bc565b6001600160a01b0381166114195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610829565b6107ed81611acc565b6001600160a01b03831661146e5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610829565b6001600160a01b0382166114ba5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610829565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008383600b60029054906101000a900460ff168061154757506009546001600160a01b038381169116145b8061156a57506001600160a01b0382166000908152600e602052604090205460ff165b6115b65760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610829565b6001600160a01b03861661161a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610829565b6001600160a01b03851661167c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610829565b83158061168b5750600b5460ff165b156116a25761169b868686611b1c565b9250611973565b7f000000000000000000000000131a2ad7287433539fad392ef87b6c0986fd56016001600160a01b0316856001600160a01b0316141580156116fd57506001600160a01b0385166000908152600e602052604090205460ff16155b801561171757506009546001600160a01b03868116911614155b156117c9576103e861172b6012600a612374565b611739906305f5e100612383565b611744906014612383565b61174e919061239a565b6001600160a01b0386166000908152600160205260409020546117719086612449565b11156117c95760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610829565b60035460ff1680156117f457506001600160a01b03861660009081526005602052604090205460ff16155b801561181957506001600160a01b03851660009081526005602052604090205460ff16155b1561185057600061182a8787611c1d565b905061183581611c4a565b6001600160a01b031660009081526006602052604090204390555b600b54610100900460ff16801561186a5750600b5460ff16155b80156118a857507f000000000000000000000000131a2ad7287433539fad392ef87b6c0986fd56016001600160a01b0316866001600160a01b031614155b80156118cd57506001600160a01b0386166000908152600e602052604090205460ff16155b80156118f257506001600160a01b0385166000908152600e602052604090205460ff16155b156118ff576118ff61197c565b600b546001600160a01b0387166000908152600e602052604090205460ff9182161591168061194657506001600160a01b0386166000908152600e602052604090205460ff165b1561194f575060005b801561196857611960878787611cec565b935050611973565b611960878787611b1c565b50509392505050565b600b805460ff1916600117905560006119aa306001600160a01b031660009081526001602052604090205490565b90506127106119bb6012600a612374565b6119c9906305f5e100612383565b6119d4906004612383565b6119de919061239a565b8110806119f057506119ee611d2f565b155b156119fb5750611ac0565b612710611a0a6012600a612374565b611a18906305f5e100612383565b611a23906004612383565b611a2d919061239a565b611a38906014612383565b811115611a7f57612710611a4e6012600a612374565b611a5c906305f5e100612383565b611a67906004612383565b611a71919061239a565b611a7c906014612383565b90505b47611a8982611d54565b6000611a9582476123f1565b90508015611abc57611abc6003611aad836002612383565b611ab7919061239a565b611edd565b5050505b600b805460ff19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604081205482811015611b855760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610829565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611bbe908490612449565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c0a91815260200190565b60405180910390a3506001949350505050565b6000823b1580611c2c5750813b155b611c3557600080fd5b823b15611c435750806106e9565b50816106e9565b6001600160a01b0381166000908152600660205260408120541580611c9d5750611c75436001612449565b6004546001600160a01b038416600090815260066020526040902054611c9b9190612449565b105b9050806107e95760405162461bcd60e51b815260206004820152601a60248201527f4d6178207478206672657175656e6379206578636565646564210000000000006044820152606401610829565b600080611cfa858585611f36565b90508015611d1b57611d0d853083611b1c565b50611d1881846123f1565b92505b611d26858585611b1c565b95945050505050565b6000600d5443118015610794575050436000908152600f602052604090205460021190565b436000908152600f60205260408120805491611d6f83612430565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611da957611da9612404565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190612492565b81600181518110611e5257611e52612404565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611eaa9085906000908690309042906004016124af565b600060405180830381600087803b158015611ec457600080fd5b505af1925050508015611ed5575060015b6107e9575050565b600a546040516000916001600160a01b03169083908381818185875af1925050503d8060008114611f2a576040519150601f19603f3d011682016040523d82523d6000602084013e611f2f565b606091505b5050505050565b6000600d546000108015611f4b575043600d54105b15611fb25760647f000000000000000000000000131a2ad7287433539fad392ef87b6c0986fd56016001600160a01b0316846001600160a01b031614611f9357600754611f97565b6008545b611fa19084612383565b611fab919061239a565b9050610981565b60647f000000000000000000000000131a2ad7287433539fad392ef87b6c0986fd56016001600160a01b0316856001600160a01b03161461200357600d5415611ffc576023612006565b6019612006565b60235b6120139060ff1684612383565b61097e919061239a565b600060208083528351808285015260005b8181101561204a5785810183015185820160400152820161202e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107ed57600080fd5b6000806040838503121561209357600080fd5b823561209e8161206b565b946020939093013593505050565b80151581146107ed57600080fd5b6000602082840312156120cc57600080fd5b8135610981816120ac565b6000602082840312156120e957600080fd5b81356109818161206b565b60008060006060848603121561210957600080fd5b83356121148161206b565b925060208401356121248161206b565b929592945050506040919091013590565b60006020828403121561214757600080fd5b5035919050565b60008083601f84011261216057600080fd5b50813567ffffffffffffffff81111561217857600080fd5b6020830191508360208260051b850101111561219357600080fd5b9250929050565b6000806000604084860312156121af57600080fd5b833567ffffffffffffffff8111156121c657600080fd5b6121d28682870161214e565b90945092505060208401356121e6816120ac565b809150509250925092565b6000806040838503121561220457600080fd5b823561220f8161206b565b9150602083013561221f816120ac565b809150509250929050565b6000806040838503121561223d57600080fd5b50508035926020909101359150565b6000806040838503121561225f57600080fd5b823561226a8161206b565b9150602083013561221f8161206b565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156122cb5781600019048211156122b1576122b161227a565b808516156122be57918102915b93841c9390800290612295565b509250929050565b6000826122e2575060016106e9565b816122ef575060006106e9565b8160018114612305576002811461230f5761232b565b60019150506106e9565b60ff8411156123205761232061227a565b50506001821b6106e9565b5060208310610133831016604e8410600b841016171561234e575081810a6106e9565b6123588383612290565b806000190482111561236c5761236c61227a565b029392505050565b600061098160ff8416836122d3565b80820281158282048414176106e9576106e961227a565b6000826123b757634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b818103818111156106e9576106e961227a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000600182016124425761244261227a565b5060010190565b808201808211156106e9576106e961227a565b60006020828403121561246e57600080fd5b5051919050565b60006020828403121561248757600080fd5b8151610981816120ac565b6000602082840312156124a457600080fd5b81516109818161206b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124ff5784516001600160a01b0316835293830193918301916001016124da565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ed55fb6550c0b9b1cd06a9a38bc4f4d9dd934c3b420c2e7d6f67e12bdbe4c95164736f6c63430008130033

Deployed Bytecode Sourcemap

2987:13589:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6796:80;;;;;;;;;;-1:-1:-1;6868:5:0;;;;;;;;;;;;-1:-1:-1;;;6868:5:0;;;;6796:80;;;;;;;:::i;:::-;;;;;;;;7132:161;;;;;;;;;;-1:-1:-1;7132:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7132:161:0;1023:187:1;15549:176:0;;;;;;;;;;-1:-1:-1;15549:176:0;;;;;:::i;:::-;;:::i;:::-;;3445:65;;;;;;;;;;;;;:::i;:::-;;;1730:25:1;;;1718:2;1703:18;3445:65:0;1584:177:1;4294:93:0;;;;;;;;;;;;4344:42;4294:93;;;;;-1:-1:-1;;;;;1944:32:1;;;1926:51;;1914:2;1899:18;4294:93:0;1766:217:1;6526:88:0;;;;;;;;;;;;;:::i;14077:209::-;;;;;;;;;;-1:-1:-1;14077:209:0;;;;;:::i;:::-;;:::i;10267:180::-;;;;;;;;;;;;;:::i;7768:492::-;;;;;;;;;;-1:-1:-1;7768:492:0;;;;;:::i;:::-;;:::i;15733:352::-;;;;;;;;;;-1:-1:-1;15733:352:0;;;;;:::i;:::-;;:::i;6620:80::-;;;;;;;;;;-1:-1:-1;6620:80:0;;3162:2;3028:36:1;;3016:2;3001:18;6620:80:0;2886:184:1;4394:38:0;;;;;;;;;;;;;;;9751:123;;;;;;;;;;-1:-1:-1;9751:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;9840:26:0;9816:4;9840:26;;;:17;:26;;;;;;;;;9751:123;10851:164;;;;;;;;;;;;;:::i;10598:245::-;;;;;;;;;;-1:-1:-1;10598:245:0;;;;;:::i;:::-;;:::i;4467:30::-;;;;;;;;;;-1:-1:-1;4467:30:0;;;;;;;;;;;6882:103;;;;;;;;;;-1:-1:-1;6882:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6965:18:0;6948:7;6965:18;;;:9;:18;;;;;;;6882:103;2505:94;;;;;;;;;;;;;:::i;4015:51::-;;;;;;;;;;-1:-1:-1;4015:51:0;;;;;;;;;;;;;4400:25:1;;;4456:2;4441:18;;4434:34;;;;4373:18;4015:51:0;4226:248:1;3377:61:0;;;;;;;;;;;;;:::i;2286:87::-;;;;;;;;;;-1:-1:-1;2332:7:0;2359:6;-1:-1:-1;;;;;2359:6:0;2286:87;;6706:84;;;;;;;;;;-1:-1:-1;6780:7:0;;;;;;;;;;;;-1:-1:-1;;;6780:7:0;;;;6706:84;;16093:222;;;;;;;;;;-1:-1:-1;16093:222:0;;;;;:::i;:::-;;:::i;8942:371::-;;;;;;;;;;-1:-1:-1;8942:371:0;;;;;:::i;:::-;;:::i;7617:143::-;;;;;;;;;;-1:-1:-1;7617:143:0;;;;;:::i;:::-;;:::i;9321:422::-;;;;;;;;;;-1:-1:-1;9321:422:0;;;;;:::i;:::-;;:::i;16323:213::-;;;;;;;;;;;;;:::i;8696:238::-;;;;;;;;;;-1:-1:-1;8696:238:0;;;;;:::i;:::-;;:::i;4106:179::-;;;;;;;;;;-1:-1:-1;4106:179:0;;;;;;-1:-1:-1;;;;;4106:179:0;;;;;;;;;;;-1:-1:-1;;;;;5920:15:1;;;5902:34;;5972:15;;;;5967:2;5952:18;;5945:43;5837:18;4106:179:0;5690:304:1;10455:135:0;;;;;;;;;;-1:-1:-1;10455:135:0;;;;;:::i;:::-;;:::i;6991:133::-;;;;;;;;;;-1:-1:-1;6991:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7093:19:0;;;7075:7;7093:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6991:133;9882:377;;;;;;;;;;-1:-1:-1;9882:377:0;;;;;:::i;:::-;;:::i;2607:192::-;;;;;;;;;;-1:-1:-1;2607:192:0;;;;;:::i;:::-;;:::i;7132:161::-;7209:4;7226:37;7235:10;7247:7;7256:6;7226:8;:37::i;:::-;-1:-1:-1;7281:4:0;7132:161;;;;;:::o;15549:176::-;15627:7;:22;-1:-1:-1;;;;;15627:22:0;15613:10;:36;15605:45;;;;;;15661:7;:16;;-1:-1:-1;;15661:16:0;;;;;;;;;;15695:22;;;;-1:-1:-1;;15695:22:0;15549:176;:::o;3445:65::-;3505:5;3562:13;3162:2;3562;:13;:::i;:::-;3341:29;;:11;:29;:::i;:::-;3486:16;;:1;:16;:::i;:::-;:24;;;;:::i;:::-;3445:65;:::o;6526:88::-;6581:7;3562:13;3162:2;3562;:13;:::i;:::-;3341:29;;:11;:29;:::i;:::-;6592:19;;6526:88;:::o;14077:209::-;14134:10;14148:42;14134:56;14131:147;;14205:49;;-1:-1:-1;;;;;14205:24:0;;;14231:21;14205:49;;;;;;;;;14231:21;14205:24;:49;;;;;;;;;;;;;;;;;;;;;14077:209;:::o;14131:147::-;14077:209;:::o;10267:180::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;;;;;;;;;10349:1:::1;10325:21;:25;10317:60;;;::::0;-1:-1:-1;;;10317:60:0;;8865:2:1;10317:60:0::1;::::0;::::1;8847:21:1::0;8904:2;8884:18;;;8877:30;-1:-1:-1;;;8923:18:1;;;8916:52;8985:18;;10317:60:0::1;8663:346:1::0;10317:60:0::1;10388:51;::::0;10396:10:::1;::::0;10417:21:::1;10388:51:::0;::::1;;;::::0;::::1;::::0;;;10417:21;10396:10;10388:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;7768:492:::0;-1:-1:-1;;;;;7879:19:0;;7859:4;7879:19;;;:11;:19;;;;;;;;7899:10;7879:31;;;;;;;;-1:-1:-1;;7879:52:0;7876:323;;-1:-1:-1;;;;;7974:19:0;;7947:24;7974:19;;;:11;:19;;;;;;;;7994:10;7974:31;;;;;;;;8028:26;;;;8020:68;;;;-1:-1:-1;;;8020:68:0;;9216:2:1;8020:68:0;;;9198:21:1;9255:2;9235:18;;;9228:30;9294:31;9274:18;;;9267:59;9343:18;;8020:68:0;9014:353:1;8020:68:0;-1:-1:-1;;;;;;8131:19:0;;;;;;:11;:19;;;;;;;;8151:10;8131:31;;;;;;;:41;;;;;;;7876:323;8216:36;8226:6;8234:9;8245:6;8216:9;:36::i;:::-;8209:43;;7768:492;;;;;;:::o;15733:352::-;15827:7;:22;-1:-1:-1;;;;;15827:22:0;15813:10;:36;15805:45;;;;;;15888:1;15869:16;:20;:44;;;;;15912:1;15893:16;:20;15869:44;15861:117;;;;-1:-1:-1;;;15861:117:0;;9574:2:1;15861:117:0;;;9556:21:1;9613:2;9593:18;;;9586:30;9652:34;9632:18;;;9625:62;9723:30;9703:18;;;9696:58;9771:19;;15861:117:0;9372:424:1;15861:117:0;15989:13;:32;;;16039:38;;16005:16;;16039:38;;;;;15733:352;:::o;10851:164::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;10933:4:::1;10942:1;6965:18:::0;;;:9;:18;;;;;;10915:28:::1;10907:75;;;::::0;-1:-1:-1;;;10907:75:0;;10003:2:1;10907:75:0::1;::::0;::::1;9985:21:1::0;10042:2;10022:18;;;10015:30;10081:34;10061:18;;;10054:62;-1:-1:-1;;;10132:18:1;;;10125:32;10174:19;;10907:75:0::1;9801:398:1::0;10907:75:0::1;10993:14;:12;:14::i;:::-;10851:164::o:0;10598:245::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;10707:12:::1;;10723:1;10707:17;:29;;;;;10729:7;10728:8;10707:29;10699:38;;;::::0;::::1;;10757:7:::0;;10765:16:::1;10780:1;10757:7:::0;10765:16:::1;:::i;:::-;10757:25;;;;;;;:::i;:::-;;;::::0;;;::::1;;10748:6;:34:::0;-1:-1:-1;10809:7:0;;10817:16:::1;10832:1;10809:7:::0;10817:16:::1;:::i;:::-;10809:25;;;;;;;:::i;:::-;;;;;;;10800:6;;:34;10793:42;;;;:::i;:::-;10598:245:::0;;;:::o;2505:94::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;2570:21:::1;2588:1;2570:9;:21::i;3377:61::-:0;3434:4;3562:13;3162:2;3562;:13;:::i;:::-;3341:29;;:11;:29;:::i;:::-;3414:17;;:2;:17;:::i;16093:222::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;16206:4:::1;-1:-1:-1::0;;;;;16187:24:0;::::1;::::0;16179:33:::1;;;::::0;::::1;;-1:-1:-1::0;;;;;16223:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;:33;;-1:-1:-1;;16223:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16274;;16223;;:25;16274:33:::1;::::0;::::1;16093:222:::0;;:::o;8942:371::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;9046:11:::1;:18:::0;9035:29;::::1;;9027:68;;;::::0;-1:-1:-1;;;9027:68:0;;10803:2:1;9027:68:0::1;::::0;::::1;10785:21:1::0;10842:2;10822:18;;;10815:30;10881:28;10861:18;;;10854:56;10927:18;;9027:68:0::1;10601:350:1::0;9027:68:0::1;9126:19:::0;;9114:31;::::1;;9106:71;;;::::0;-1:-1:-1;;;9106:71:0;;11158:2:1;9106:71:0::1;::::0;::::1;11140:21:1::0;11197:2;11177:18;;;11170:30;11236:29;11216:18;;;11209:57;11283:18;;9106:71:0::1;10956:351:1::0;9106:71:0::1;9188:11;:28:::0;;;9227:19;:30;;;9275::::1;::::0;9249:8;;9209:7;;9275:30:::1;::::0;9188:18:::1;::::0;9275:30:::1;8942:371:::0;;:::o;7617:143::-;7688:4;7712:40;7722:10;7734:9;7745:6;7712:9;:40::i;9321:422::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;9445:9:::1;9441:295;9460:19:::0;;::::1;9441:295;;;9543:13;9509:47;;:17;:30;9527:8;;9536:1;9527:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9509:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9509:30:0;;::::1;;:47;;::::0;9501:98:::1;;;::::0;-1:-1:-1;;;9501:98:0;;11514:2:1;9501:98:0::1;::::0;::::1;11496:21:1::0;11553:2;11533:18;;;11526:30;11592:34;11572:18;;;11565:62;-1:-1:-1;;;11643:18:1;;;11636:36;11689:19;;9501:98:0::1;11312:402:1::0;9501:98:0::1;9647:13;9614:17;:30;9632:8;;9641:1;9632:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9614:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9614:30:0;:46;;-1:-1:-1;;9614:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9680:44;::::1;;9697:8:::0;;9706:1;9697:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9680:44:0::1;;;;;;;;;;;9481:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9441:295;;;;9321:422:::0;;;:::o;16323:213::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;16385:13:::1;::::0;;;::::1;;;16384:14;:35:::0;::::1;;;-1:-1:-1::0;16402:12:0::1;::::0;:17;::::1;16384:35;16376:44;;;::::0;::::1;;16458:6;::::0;16445:19:::1;::::0;:12:::1;:19;:::i;:::-;16431:12;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;16475:13:0::1;:20:::0;;-1:-1:-1;;16475:20:0::1;::::0;::::1;::::0;;16513:15:::1;::::0;::::1;::::0;16475:20;;16513:15:::1;16323:213::o:0;8696:238::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;8788:12:::1;8773:27;;:11;;;;;;;;;;;:27;;::::0;8765:81:::1;;;::::0;-1:-1:-1;;;8765:81:0;;12191:2:1;8765:81:0::1;::::0;::::1;12173:21:1::0;12230:2;12210:18;;;12203:30;12269:34;12249:18;;;12242:62;-1:-1:-1;;;12320:18:1;;;12313:39;12369:19;;8765:81:0::1;11989:405:1::0;8765:81:0::1;8857:11;:26:::0;;-1:-1:-1;;8857:26:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;8901:25:::1;::::0;::::1;::::0;-1:-1:-1;;8901:25:0::1;8696:238:::0;:::o;10455:135::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;10525:13:::1;::::0;;;::::1;;;10524:14;:22:::0;::::1;;;;10542:4;10524:22;10516:31;;;::::0;::::1;;-1:-1:-1::0;10573:1:0::1;10558:12;:16:::0;10455:135::o;9882:377::-;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;9987:4:::1;-1:-1:-1::0;;;;;9963:29:0;::::1;::::0;9955:75:::1;;;::::0;-1:-1:-1;;;9955:75:0;;12601:2:1;9955:75:0::1;::::0;::::1;12583:21:1::0;12640:2;12620:18;;;12613:30;12679:34;12659:18;;;12652:62;-1:-1:-1;;;12730:18:1;;;12723:31;12771:19;;9955:75:0::1;12399:397:1::0;9955:75:0::1;10065:45;::::0;-1:-1:-1;;;10065:45:0;;10104:4:::1;10065:45;::::0;::::1;1926:51:1::0;10041:21:0::1;::::0;-1:-1:-1;;;;;10065:30:0;::::1;::::0;::::1;::::0;1899:18:1;;10065:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10041:69;;10145:1;10129:13;:17;10121:63;;;::::0;-1:-1:-1;;;10121:63:0;;13192:2:1;10121:63:0::1;::::0;::::1;13174:21:1::0;13231:2;13211:18;;;13204:30;13270:34;13250:18;;;13243:62;-1:-1:-1;;;13321:18:1;;;13314:31;13362:19;;10121:63:0::1;12990:397:1::0;10121:63:0::1;10195:56;::::0;-1:-1:-1;;;10195:56:0;;10225:10:::1;10195:56;::::0;::::1;13566:51:1::0;13633:18;;;13626:34;;;-1:-1:-1;;;;;10195:29:0;::::1;::::0;::::1;::::0;13539:18:1;;10195:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2607:192::-:0;2430:10;2419:7;2332;2359:6;-1:-1:-1;;;;;2359:6:0;;2286:87;2419:7;-1:-1:-1;;;;;2419:21:0;;2411:66;;;;-1:-1:-1;;;2411:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2696:22:0;::::1;2688:73;;;::::0;-1:-1:-1;;;2688:73:0;;14123:2:1;2688:73:0::1;::::0;::::1;14105:21:1::0;14162:2;14142:18;;;14135:30;14201:34;14181:18;;;14174:62;-1:-1:-1;;;14252:18:1;;;14245:36;14298:19;;2688:73:0::1;13921:402:1::0;2688:73:0::1;2772:19;2782:8;2772:9;:19::i;7301:308::-:0;-1:-1:-1;;;;;7396:20:0;;7388:52;;;;-1:-1:-1;;;7388:52:0;;14530:2:1;7388:52:0;;;14512:21:1;14569:2;14549:18;;;14542:30;-1:-1:-1;;;14588:18:1;;;14581:49;14647:18;;7388:52:0;14328:343:1;7388:52:0;-1:-1:-1;;;;;7459:21:0;;7451:53;;;;-1:-1:-1;;;7451:53:0;;14530:2:1;7451:53:0;;;14512:21:1;14569:2;14549:18;;;14542:30;-1:-1:-1;;;14588:18:1;;;14581:49;14647:18;;7451:53:0;14328:343:1;7451:53:0;-1:-1:-1;;;;;7515:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;7568:33;;1730:25:1;;;7568:33:0;;1703:18:1;7568:33:0;;;;;;;7301:308;;;:::o;11023:1322::-;11124:4;11096;11102:2;5343:13;;;;;;;;;;;:47;;;-1:-1:-1;5368:7:0;:22;-1:-1:-1;;;;;5360:30:0;;;5368:22;;5360:30;5343:47;:74;;;-1:-1:-1;;;;;;5394:23:0;;;;;;:17;:23;;;;;;;;5343:74;5335:116;;;;-1:-1:-1;;;5335:116:0;;14878:2:1;5335:116:0;;;14860:21:1;14917:2;14897:18;;;14890:30;14956:31;14936:18;;;14929:59;15005:18;;5335:116:0;14676:353:1;5335:116:0;-1:-1:-1;;;;;11149:18:0;::::1;11141:68;;;::::0;-1:-1:-1;;;11141:68:0;;15236:2:1;11141:68:0::1;::::0;::::1;15218:21:1::0;15275:2;15255:18;;;15248:30;15314:34;15294:18;;;15287:62;-1:-1:-1;;;15365:18:1;;;15358:35;15410:19;;11141:68:0::1;15034:401:1::0;11141:68:0::1;-1:-1:-1::0;;;;;11228:16:0;::::1;11220:64;;;::::0;-1:-1:-1;;;11220:64:0;;15642:2:1;11220:64:0::1;::::0;::::1;15624:21:1::0;15681:2;15661:18;;;15654:30;15720:34;15700:18;;;15693:62;-1:-1:-1;;;15771:18:1;;;15764:33;15814:19;;11220:64:0::1;15440:399:1::0;11220:64:0::1;11308:11:::0;;;:21:::1;;-1:-1:-1::0;11323:6:0::1;::::0;::::1;;11308:21;11305:103;;;11353:32;11368:4;11374:2;11378:6;11353:14;:32::i;:::-;11346:39;;;;11305:103;11438:13;-1:-1:-1::0;;;;;11432:19:0::1;:2;-1:-1:-1::0;;;;;11432:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;11456:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11455:22;11432:45;:77;;;;-1:-1:-1::0;11487:7:0::1;:22:::0;-1:-1:-1;;;;;11481:28:0;;::::1;11487:22:::0;::::1;11481:28;;11432:77;11428:192;;;3434:4;3562:13;3162:2;3562;:13;:::i;:::-;3341:29;::::0;:11:::1;:29;:::i;:::-;3414:17;::::0;:2:::1;:17;:::i;:::-;:24;;;;:::i;:::-;-1:-1:-1::0;;;;;6965:18:0;;6948:7;6965:18;;;:9;:18;;;;;;11534:22:::1;::::0;:6;:22:::1;:::i;:::-;:36;;11526:82;;;::::0;-1:-1:-1;;;11526:82:0;;16046:2:1;11526:82:0::1;::::0;::::1;16028:21:1::0;16085:2;16065:18;;;16058:30;16124:34;16104:18;;;16097:62;-1:-1:-1;;;16175:18:1;;;16168:31;16216:19;;11526:82:0::1;15844:397:1::0;11526:82:0::1;11635:7;::::0;::::1;;:34:::0;::::1;;;-1:-1:-1::0;;;;;;11647:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;11646:23;11635:34;:59;;;;-1:-1:-1::0;;;;;;11674:20:0;::::1;;::::0;;;:16:::1;:20;::::0;;;;;::::1;;11673:21;11635:59;11632:224;;;11710:13;11726:24;11741:4;11747:2;11726:14;:24::i;:::-;11710:40;;11765:27;11786:5;11765:20;:27::i;:::-;-1:-1:-1::0;;;;;11807:22:0::1;;::::0;;;:15:::1;:22;::::0;;;;11832:12:::1;11807:37:::0;;11632:224:::1;11877:11;::::0;::::1;::::0;::::1;;;:22:::0;::::1;;;-1:-1:-1::0;11893:6:0::1;::::0;::::1;;11892:7;11877:22;:47;;;;;11911:13;-1:-1:-1::0;;;;;11903:21:0::1;:4;-1:-1:-1::0;;;;;11903:21:0::1;;;11877:47;:75;;;;-1:-1:-1::0;;;;;;11929:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;11928:24;11877:75;:101;;;;-1:-1:-1::0;;;;;;11957:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11956:22;11877:101;11874:146;;;11994:14;:12;:14::i;:::-;12057:6;::::0;-1:-1:-1;;;;;12077:23:0;::::1;12041:12;12077:23:::0;;;:17:::1;:23;::::0;;;;;12057:6:::1;::::0;;::::1;12056:7;::::0;12077:23:::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;12104:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;12077:48;12074:95;;;-1:-1:-1::0;12152:5:0::1;12074:95;12200:7;12197:132;;;12229:32;12244:4;12250:2;12254:6;12229:14;:32::i;:::-;12222:39;;;;;12197:132;12297:32;12312:4;12318:2;12322:6;12297:14;:32::i;5462:1::-;11023:1322:::0;;;;;;;:::o;13321:591::-;5211:6;:13;;-1:-1:-1;;5211:13:0;5220:4;5211:13;;;:6;13402:24:::1;13420:4;-1:-1:-1::0;;;;;6965:18:0;6948:7;6965:18;;;:9;:18;;;;;;;6882:103;13402:24:::1;13376:50:::0;-1:-1:-1;3505:5:0::1;3562:13;3162:2;3562;:13;:::i;:::-;3341:29;::::0;:11:::1;:29;:::i;:::-;3486:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;13440:15;:32;:46;;;;13477:9;:7;:9::i;:::-;13476:10;13440:46;13437:177;;;13502:7;;;13437:177;3505:5;3562:13;3162:2;3562;:13;:::i;:::-;3341:29;::::0;:11:::1;:29;:::i;:::-;3486:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;13545:19;::::0;13562:2:::1;13545:19;:::i;:::-;13527:15;:37;13524:90;;;3505:5;3562:13;3162:2;3562;:13;:::i;:::-;3341:29;::::0;:11:::1;:29;:::i;:::-;3486:16;::::0;:1:::1;:16;:::i;:::-;:24;;;;:::i;:::-;13595:19;::::0;13612:2:::1;13595:19;:::i;:::-;13577:37;;13524:90;13663:21;13697:33;13714:15:::0;13697:16:::1;:33::i;:::-;13752:18;13773:41;13797:17:::0;13773:21:::1;:41;:::i;:::-;13752:62:::0;-1:-1:-1;13828:14:0;;13825:80:::1;;13870:23;13891:1;13878:12;13880:10:::0;13878:1:::1;:12;:::i;:::-;:14;;;;:::i;:::-;13870:7;:23::i;:::-;13362:550;;;5235:1;5247:6:::0;:14;;-1:-1:-1;;5247:14:0;;;13321:591::o;2807:173::-;2863:16;2882:6;;-1:-1:-1;;;;;2899:17:0;;;-1:-1:-1;;;;;;2899:17:0;;;;;;2932:40;;2882:6;;;;;;;2932:40;;2863:16;2932:40;2852:128;2807:173;:::o;8268:420::-;-1:-1:-1;;;;;8402:17:0;;8361:4;8402:17;;;:9;:17;;;;;;8438:23;;;;8430:63;;;;-1:-1:-1;;;8430:63:0;;16448:2:1;8430:63:0;;;16430:21:1;16487:2;16467:18;;;16460:30;16526:29;16506:18;;;16499:57;16573:18;;8430:63:0;16246:351:1;8430:63:0;-1:-1:-1;;;;;8528:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;8577:20;;;;;;;;:30;;8549:6;;8528:17;8577:30;;8549:6;;8577:30;:::i;:::-;;;;;;;;8640:9;-1:-1:-1;;;;;8623:35:0;8632:6;-1:-1:-1;;;;;8623:35:0;;8651:6;8623:35;;;;1730:25:1;;1718:2;1703:18;;1584:177;8623:35:0;;;;;;;;-1:-1:-1;8676:4:0;;8268:420;-1:-1:-1;;;;8268:420:0:o;15057:219::-;15131:7;14985:20;;15033:8;;15159:38;;-1:-1:-1;14985:20:0;;15033:8;15159:38;15151:47;;;;;;14985:20;;15033:8;15209:59;;-1:-1:-1;15237:5:0;15230:12;;15209:59;-1:-1:-1;15265:3:0;15258:10;;15284:257;-1:-1:-1;;;;;15369:21:0;;15352:14;15369:21;;;:15;:21;;;;;;:26;;:105;;-1:-1:-1;15456:16:0;:12;15471:1;15456:16;:::i;:::-;15438:13;;-1:-1:-1;;;;;15414:21:0;;;;;;:15;:21;;;;;;:37;;15438:13;15414:37;:::i;:::-;15413:60;15369:105;15352:122;;15493:9;15485:48;;;;-1:-1:-1;;;15485:48:0;;16804:2:1;15485:48:0;;;16786:21:1;16843:2;16823:18;;;16816:30;16882:28;16862:18;;;16855:56;16928:18;;15485:48:0;16602:350:1;12353:326:0;12436:4;12453:12;12468:26;12477:4;12483:2;12487:6;12468:8;:26::i;:::-;12453:41;-1:-1:-1;12512:8:0;;12509:113;;12540:41;12555:4;12569;12576;12540:14;:41::i;:::-;-1:-1:-1;12596:14:0;12606:4;12596:14;;:::i;:::-;;;12509:113;12639:32;12654:4;12660:2;12664:6;12639:14;:32::i;:::-;12632:39;12353:326;-1:-1:-1;;;;;12353:326:0:o;13173:140::-;13214:4;13253:12;;13238;:27;:67;;;;-1:-1:-1;;13288:12:0;13269:32;;;;:18;:32;;;;;;13304:1;-1:-1:-1;;13173:140:0:o;14294:552::-;14379:12;14360:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;14489:16:0;;;14503:1;14489:16;;;;;;;;14465:21;;14489:16;;;;;;;;;;-1:-1:-1;14489:16:0;14465:40;;14534:4;14516;14521:1;14516:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14516:23:0;;;-1:-1:-1;;;;;14516:23:0;;;;;4344:42;-1:-1:-1;;;;;14560:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14550:4;14555:1;14550:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14550:32:0;;;:7;;;;;;;;;;;:32;14599:214;;-1:-1:-1;;;14599:214:0;;4344:42;;14599:66;;:214;;14680:11;;14706:1;;14750:4;;14777;;14797:15;;14599:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14595:244;;14831:7;14294:552;:::o;13920:149::-;14001:23;;13993:59;;13976:12;;-1:-1:-1;;;;;14001:23:0;;14038:9;;13976:12;13993:59;13976:12;13993:59;14038:9;14001:23;13993:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13920:149:0:o;12687:478::-;12769:12;12802;;12798:1;:16;:47;;;;;12833:12;12818;;:27;12798:47;12794:364;;;3624:3;12885:13;-1:-1:-1;;;;;12879:19:0;:2;-1:-1:-1;;;;;12879:19:0;;:76;;12937:11;:18;12879:76;;;12915:19;;12879:76;12869:87;;:6;:87;:::i;:::-;:104;;;;:::i;:::-;12862:111;;12794:364;;;3624:3;13052:13;-1:-1:-1;;;;;13044:21:0;:4;-1:-1:-1;;;;;13044:21:0;;:72;;13088:12;;:17;:27;;13113:2;13044:72;;13088:27;13108:2;13044:72;;;13082:2;13044:72;13034:83;;;;:6;:83;:::i;:::-;:100;;;;:::i;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;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;1988:247::-;2047:6;2100:2;2088:9;2079:7;2075:23;2071:32;2068:52;;;2116:1;2113;2106:12;2068:52;2155:9;2142:23;2174:31;2199:5;2174:31;:::i;2240:456::-;2317:6;2325;2333;2386:2;2374:9;2365:7;2361:23;2357:32;2354:52;;;2402:1;2399;2392:12;2354:52;2441:9;2428:23;2460:31;2485:5;2460:31;:::i;:::-;2510:5;-1:-1:-1;2567:2:1;2552:18;;2539:32;2580:33;2539:32;2580:33;:::i;:::-;2240:456;;2632:7;;-1:-1:-1;;;2686:2:1;2671:18;;;;2658:32;;2240:456::o;2701:180::-;2760:6;2813:2;2801:9;2792:7;2788:23;2784:32;2781:52;;;2829:1;2826;2819:12;2781:52;-1:-1:-1;2852:23:1;;2701:180;-1:-1:-1;2701:180:1:o;3283:367::-;3346:8;3356:6;3410:3;3403:4;3395:6;3391:17;3387:27;3377:55;;3428:1;3425;3418:12;3377:55;-1:-1:-1;3451:20:1;;3494:18;3483:30;;3480:50;;;3526:1;3523;3516:12;3480:50;3563:4;3555:6;3551:17;3539:29;;3623:3;3616:4;3606:6;3603:1;3599:14;3591:6;3587:27;3583:38;3580:47;3577:67;;;3640:1;3637;3630:12;3577:67;3283:367;;;;;:::o;3655:566::-;3747:6;3755;3763;3816:2;3804:9;3795:7;3791:23;3787:32;3784:52;;;3832:1;3829;3822:12;3784:52;3872:9;3859:23;3905:18;3897:6;3894:30;3891:50;;;3937:1;3934;3927:12;3891:50;3976:70;4038:7;4029:6;4018:9;4014:22;3976:70;:::i;:::-;4065:8;;-1:-1:-1;3950:96:1;-1:-1:-1;;4150:2:1;4135:18;;4122:32;4163:28;4122:32;4163:28;:::i;:::-;4210:5;4200:15;;;3655:566;;;;;:::o;4479:382::-;4544:6;4552;4605:2;4593:9;4584:7;4580:23;4576:32;4573:52;;;4621:1;4618;4611:12;4573:52;4660:9;4647:23;4679:31;4704:5;4679:31;:::i;:::-;4729:5;-1:-1:-1;4786:2:1;4771:18;;4758:32;4799:30;4758:32;4799:30;:::i;:::-;4848:7;4838:17;;;4479:382;;;;;:::o;4866:248::-;4934:6;4942;4995:2;4983:9;4974:7;4970:23;4966:32;4963:52;;;5011:1;5008;5001:12;4963:52;-1:-1:-1;;5034:23:1;;;5104:2;5089:18;;;5076:32;;-1:-1:-1;4866:248:1:o;5999:388::-;6067:6;6075;6128:2;6116:9;6107:7;6103:23;6099:32;6096:52;;;6144:1;6141;6134:12;6096:52;6183:9;6170:23;6202:31;6227:5;6202:31;:::i;:::-;6252:5;-1:-1:-1;6309:2:1;6294:18;;6281:32;6322:33;6281:32;6322:33;:::i;6392:127::-;6453:10;6448:3;6444:20;6441:1;6434:31;6484:4;6481:1;6474:15;6508:4;6505:1;6498:15;6524:422;6613:1;6656:5;6613:1;6670:270;6691:7;6681:8;6678:21;6670:270;;;6750:4;6746:1;6742:6;6738:17;6732:4;6729:27;6726:53;;;6759:18;;:::i;:::-;6809:7;6799:8;6795:22;6792:55;;;6829:16;;;;6792:55;6908:22;;;;6868:15;;;;6670:270;;;6674:3;6524:422;;;;;:::o;6951:806::-;7000:5;7030:8;7020:80;;-1:-1:-1;7071:1:1;7085:5;;7020:80;7119:4;7109:76;;-1:-1:-1;7156:1:1;7170:5;;7109:76;7201:4;7219:1;7214:59;;;;7287:1;7282:130;;;;7194:218;;7214:59;7244:1;7235:10;;7258:5;;;7282:130;7319:3;7309:8;7306:17;7303:43;;;7326:18;;:::i;:::-;-1:-1:-1;;7382:1:1;7368:16;;7397:5;;7194:218;;7496:2;7486:8;7483:16;7477:3;7471:4;7468:13;7464:36;7458:2;7448:8;7445:16;7440:2;7434:4;7431:12;7427:35;7424:77;7421:159;;;-1:-1:-1;7533:19:1;;;7565:5;;7421:159;7612:34;7637:8;7631:4;7612:34;:::i;:::-;7682:6;7678:1;7674:6;7670:19;7661:7;7658:32;7655:58;;;7693:18;;:::i;:::-;7731:20;;6951:806;-1:-1:-1;;;6951:806:1:o;7762:140::-;7820:5;7849:47;7890:4;7880:8;7876:19;7870:4;7849:47;:::i;7907:168::-;7980:9;;;8011;;8028:15;;;8022:22;;8008:37;7998:71;;8049:18;;:::i;8080:217::-;8120:1;8146;8136:132;;8190:10;8185:3;8181:20;8178:1;8171:31;8225:4;8222:1;8215:15;8253:4;8250:1;8243:15;8136:132;-1:-1:-1;8282:9:1;;8080:217::o;8302:356::-;8504:2;8486:21;;;8523:18;;;8516:30;8582:34;8577:2;8562:18;;8555:62;8649:2;8634:18;;8302:356::o;10204:128::-;10271:9;;;10292:11;;;10289:37;;;10306:18;;:::i;10337:127::-;10398:10;10393:3;10389:20;10386:1;10379:31;10429:4;10426:1;10419:15;10453:4;10450:1;10443:15;10469:127;10530:10;10525:3;10521:20;10518:1;10511:31;10561:4;10558:1;10551:15;10585:4;10582:1;10575:15;11719:135;11758:3;11779:17;;;11776:43;;11799:18;;:::i;:::-;-1:-1:-1;11846:1:1;11835:13;;11719:135::o;11859:125::-;11924:9;;;11945:10;;;11942:36;;;11958:18;;:::i;12801:184::-;12871:6;12924:2;12912:9;12903:7;12899:23;12895:32;12892:52;;;12940:1;12937;12930:12;12892:52;-1:-1:-1;12963:16:1;;12801:184;-1:-1:-1;12801:184:1:o;13671:245::-;13738:6;13791:2;13779:9;13770:7;13766:23;13762:32;13759:52;;;13807:1;13804;13797:12;13759:52;13839:9;13833:16;13858:28;13880:5;13858:28;:::i;17089:251::-;17159:6;17212:2;17200:9;17191:7;17187:23;17183:32;17180:52;;;17228:1;17225;17218:12;17180:52;17260:9;17254:16;17279:31;17304:5;17279:31;:::i;17345:980::-;17607:4;17655:3;17644:9;17640:19;17686:6;17675:9;17668:25;17712:2;17750:6;17745:2;17734:9;17730:18;17723:34;17793:3;17788:2;17777:9;17773:18;17766:31;17817:6;17852;17846:13;17883:6;17875;17868:22;17921:3;17910:9;17906:19;17899:26;;17960:2;17952:6;17948:15;17934:29;;17981:1;17991:195;18005:6;18002:1;17999:13;17991:195;;;18070:13;;-1:-1:-1;;;;;18066:39:1;18054:52;;18161:15;;;;18126:12;;;;18102:1;18020:9;17991:195;;;-1:-1:-1;;;;;;;18242:32:1;;;;18237:2;18222:18;;18215:60;-1:-1:-1;;;18306:3:1;18291:19;18284:35;18203:3;17345:980;-1:-1:-1;;;17345:980:1:o

Swarm Source

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