ETH Price: $2,492.45 (-3.10%)

Token

MissionMars (MMars)
 

Overview

Max Total Supply

100,000,000 MMars

Holders

142

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
238,556.517285312699848779 MMars

Value
$0.00
0xb97c03ecda2443cbdebe757bbce0aa8456cdb800
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:
MissionMars

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
    MissionMars
    Website: mission-mars.io
    Twitter: twitter.com/MissionMars_io
    Telegram: t.me/MissionMarsPortal
**/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

abstract contract Ownable {
    address private _owner;

    constructor() {
        _owner = 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 {
        _owner = address(0);
    }
}

library SafeERC20 {
    function safeTransfer(address token, address to, uint256 value) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED');
    }
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external;
}

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;

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

contract MissionMars is Ownable {
    string private constant _name = unicode"MissionMars";
    string private constant _symbol = unicode"MMars";
    uint256 private _totalSupply = 100_000_000 * 1e18;

    uint256 public maxTransactionAmount = 2_000_000 * 1e18;
    uint256 public maxWallet = 2_000_000 * 1e18;
    uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000;

    address private liqWallet = 0xfd09621Ec472B56e7a1f13014954A511237A92D7;
    address private moonWallet = 0xB62a8184c2b35757df3082011C9AE5E52773A309;
    address private technologyWallet = 0x86f7e2C90773C38145ef58Af5fefD254F5597e77;

    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    
    uint8 public buyTotalFees = 50;
    uint8 public sellTotalFees = 50;

    uint8 public liqFee = 20;
    uint8 public moonFee = 40;
    uint8 public technologyFee = 40;    

    bool private swapping;
    bool public limitsInEffect = true;
    bool private launched;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 teamETH, uint256 liqETH, uint256 TreasuryETH);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

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

    constructor() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH);
        automatedMarketMakerPairs[uniswapV2Pair] = true;

        setExcludedFromFees(owner(), true);
        setExcludedFromFees(address(this), true);
        setExcludedFromFees(address(0xdead), true);
        setExcludedFromFees(moonWallet, true);
        setExcludedFromFees(liqWallet, true);
        setExcludedFromFees(technologyWallet, true);

        setExcludedFromMaxTransaction(owner(), true);
        setExcludedFromMaxTransaction(address(uniswapV2Router), true);
        setExcludedFromMaxTransaction(address(this), true);
        setExcludedFromMaxTransaction(address(0xdead), true);
        setExcludedFromMaxTransaction(address(uniswapV2Pair), true);
        setExcludedFromMaxTransaction(moonWallet, true);
        setExcludedFromMaxTransaction(liqWallet, true);
        setExcludedFromMaxTransaction(technologyWallet, true);

        _balances[msg.sender] = 100_000_000 * 1e18;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);

        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

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

        _transfer(sender, recipient, amount);

        return true;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!launched && (from != owner() && from != address(this) && to != owner())) {
            revert("Trading not enabled");
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTx");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;

        if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 1000;
            } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 1000;
            }

            if (fees > 0) {
                unchecked {
                    amount = amount - fees;
                    _balances[from] -= fees;
                    _balances[address(this)] += fees;
                }
                emit Transfer(from, address(this), fees);
            }
        }
        unchecked {
            _balances[from] -= amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }

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

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

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

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function setDistributionFees(uint8 _liqFee, uint8 _moonFee, uint8 _technologyFee) external onlyOwner {
        liqFee = _liqFee;
        moonFee = _moonFee;
        technologyFee = _technologyFee;
        require((liqFee + moonFee + technologyFee) == 100, "Distribution have to be equal to 100%");
    }

    function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees) external onlyOwner {
        require(_buyTotalFees <= 200, "Buy fees must be less than or equal to 20%");
        require(_sellTotalFees <= 200, "Sell fees must be less than or equal to 20%");
        buyTotalFees = _buyTotalFees;
        sellTotalFees = _sellTotalFees;
    }

    function setExcludedFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setExcludedFromMaxTransaction(address account, bool excluded) public onlyOwner {
        _isExcludedMaxTransactionAmount[account] = excluded;
    }

    function airdropWallets(address[] memory addresses, uint256[] memory amounts) external onlyOwner {
        require(!launched, "Already launched");
        for (uint256 i = 0; i < addresses.length; i++) {
            require(_balances[msg.sender] >= amounts[i], "ERC20: transfer amount exceeds balance");
            _balances[addresses[i]] += amounts[i];
            _balances[msg.sender] -= amounts[i];
            emit Transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    function openTrade(bool status) external onlyOwner {
        launched = status;
    }

    function beginTrading() external payable onlyOwner {
        require(!launched, "Already launched");
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            _balances[address(this)],
            0,
            0,
            msg.sender,
            block.timestamp
        );
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed");
        automatedMarketMakerPairs[pair] = value;
    }

    function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner {
        require(newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply");
        require(newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply");
        swapTokensAtAmount = newSwapAmount;
    }

    function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner {
        require(newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%");
        maxTransactionAmount = newMaxTx * (10**18);
    }

    function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner {
        require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%");
        maxWallet = newMaxWallet * (10**18);
    }

    function updateLiqWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        liqWallet = newAddress;
    }

    function updateMoonWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        moonWallet = newAddress;
    }

    function updateTechnologyWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        technologyWallet = newAddress;
    }

    function excludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function withdrawStuckToken(address token, address to) external onlyOwner {
        uint256 _contractBalance = IERC20(token).balanceOf(address(this));
        SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer
    }

    function withdrawStuckETH(address addr) external onlyOwner {
        require(addr != address(0), "Invalid address");

        (bool success, ) = addr.call{value: address(this).balance}("");
        require(success, "Withdrawal failed");
    }

    function swapBack() private {
        uint256 swapThreshold = swapTokensAtAmount;
        bool success;

        if (balanceOf(address(this)) > swapTokensAtAmount * 20) {
            swapThreshold = swapTokensAtAmount * 20;
        }

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, 0, path, address(this), block.timestamp);

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            uint256 ethForLiq = (ethBalance * liqFee) / 100;
            uint256 ethForTechnology = (ethBalance * technologyFee) / 100;
            uint256 ethForMoonFund = ethBalance - ethForLiq - ethForTechnology;

            (success, ) = address(technologyWallet).call{value: ethForTechnology}("");
            (success, ) = address(moonWallet).call{value: ethForMoonFund}("");
            (success, ) = address(liqWallet).call{value: ethForLiq}("");

            emit SwapAndLiquify(swapThreshold, ethForTechnology, ethForLiq, ethForMoonFund);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liqETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"TreasuryETH","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"moonFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liqFee","type":"uint8"},{"internalType":"uint8","name":"_moonFee","type":"uint8"},{"internalType":"uint8","name":"_technologyFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"technologyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateLiqWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateMoonWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTechnologyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e40000006001556a01a784379d99db420000006002556a01a784379d99db420000006003556127106001546002620000459190620005f0565b6200005191906200061a565b600455600580546001600160a01b031990811673fd09621ec472b56e7a1f13014954a511237a92d7179091556006805490911673b62a8184c2b35757df3082011c9ae5e52773a309179055600780547a0100282814323286f7e2c90773c38145ef58af5fefd254f5597e77600161ff0160c81b0319909116179055348015620000d8575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000139573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015f91906200063a565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e591906200063a565b6001600160a01b031660808190525f908152600c60205260409020805460ff1916600117905562000229620002215f546001600160a01b031690565b6001620003bf565b62000236306001620003bf565b6200024561dead6001620003bf565b6006546200025e906001600160a01b03166001620003bf565b60055462000277906001600160a01b03166001620003bf565b60075462000290906001600160a01b03166001620003bf565b620002ae620002a65f546001600160a01b031690565b600162000446565b620002cf737a250d5630b4cf539739df2c5dacb4c659f2488d600162000446565b620002dc30600162000446565b620002eb61dead600162000446565b608051620002fb90600162000446565b60065462000314906001600160a01b0316600162000446565b6005546200032d906001600160a01b0316600162000446565b60075462000346906001600160a01b0316600162000446565b335f8181526008602090815260408083206a52b7d2dcc80cd2e40000009081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620003b930737a250d5630b4cf539739df2c5dacb4c659f2488d5f19620004c9565b62000669565b33620003d25f546001600160a01b031690565b6001600160a01b0316146200041c5760405162461bcd60e51b815260206004820181905260248201525f80516020620031a883398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33620004595f546001600160a01b031690565b6001600160a01b0316146200049f5760405162461bcd60e51b815260206004820181905260248201525f80516020620031a8833981519152604482015260640162000413565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0383166200052d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000413565b6001600160a01b038216620005905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000413565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b80820281158282048414176200061457634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200063557634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200064b575f80fd5b81516001600160a01b038116811462000662575f80fd5b9392505050565b608051612b1f620006895f395f818161042b01526111660152612b1f5ff3fe608060405260043610610241575f3560e01c8063715018a6116101345780639a7a23d6116100b3578063d201b01e11610078578063d201b01e146106fc578063d85ba0631461071b578063dd62ed3e1461073b578063e2f456051461077f578063e710794714610794578063f8b45b05146107b3575f80fd5b80639a7a23d614610682578063a9059cbb146106a1578063bc205ad3146106c0578063c408c245146106df578063c8c8ebe4146106e7575f80fd5b806385fb3f63116100f957806385fb3f63146105da5780638da5cb5b146105fa5780638e8fc098146106165780639060fdcf1461063657806395d89b4114610655575f80fd5b8063715018a61461053d57806373dd858c1461055157806374010ece14610570578063751039fc1461058f57806385ecafd7146105a3575f80fd5b806342966c68116101c0578063590ffdce11610185578063590ffdce1461048c5780636402511e146104ab57806366650dae146104ca5780636a486a8e146104e957806370a0823114610509575f80fd5b806342966c68146103dc578063441c0043146103fb57806349bd5a5e1461041a5780634a62bb651461044d5780634fcd24461461046d575f80fd5b806327a14fc21161020657806327a14fc21461033c57806330d35dee1461035d578063313ce5671461037c5780633c090c461461039d5780633fb0da64146103bc575f80fd5b806306fdde031461024c578063095ea7b3146102915780631694505e146102c057806318160ddd146102ff57806323b872dd1461031d575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b5060408051808201909152600b81526a4d697373696f6e4d61727360a81b60208201525b604051610288919061250d565b60405180910390f35b34801561029c575f80fd5b506102b06102ab36600461255a565b6107c8565b6040519015158152602001610288565b3480156102cb575f80fd5b506102e7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610288565b34801561030a575f80fd5b506001545b604051908152602001610288565b348015610328575f80fd5b506102b0610337366004612582565b6107de565b348015610347575f80fd5b5061035b6103563660046125bb565b610892565b005b348015610368575f80fd5b5061035b6103773660046125df565b610973565b348015610387575f80fd5b5060125b60405160ff9091168152602001610288565b3480156103a8575f80fd5b5061035b6103b7366004612611565b6109c9565b3480156103c7575f80fd5b5060075461038b90600160b01b900460ff1681565b3480156103e7575f80fd5b5061035b6103f63660046125bb565b610ad1565b348015610406575f80fd5b5061035b610415366004612651565b610ade565b348015610425575f80fd5b506102e77f000000000000000000000000000000000000000000000000000000000000000081565b348015610458575f80fd5b506007546102b090600160d01b900460ff1681565b348015610478575f80fd5b5061035b61048736600461266a565b610b5e565b348015610497575f80fd5b5061035b6104a636600461269b565b610c99565b3480156104b6575f80fd5b5061035b6104c53660046125bb565b610cfb565b3480156104d5575f80fd5b5061035b6104e436600461269b565b610e54565b3480156104f4575f80fd5b5060075461038b90600160a81b900460ff1681565b348015610514575f80fd5b5061030f610523366004612651565b6001600160a01b03165f9081526008602052604090205490565b348015610548575f80fd5b5061035b610eb6565b34801561055c575f80fd5b5061035b61056b366004612651565b610eff565b34801561057b575f80fd5b5061035b61058a3660046125bb565b610f7f565b34801561059a575f80fd5b5061035b611065565b3480156105ae575f80fd5b506102b06105bd366004612651565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156105e5575f80fd5b5060075461038b90600160b81b900460ff1681565b348015610605575f80fd5b505f546001600160a01b03166102e7565b348015610621575f80fd5b5060075461038b90600160c01b900460ff1681565b348015610641575f80fd5b5061035b610650366004612651565b6110ac565b348015610660575f80fd5b506040805180820190915260058152644d4d61727360d81b602082015261027b565b34801561068d575f80fd5b5061035b61069c36600461269b565b61112c565b3480156106ac575f80fd5b506102b06106bb36600461255a565b61120f565b3480156106cb575f80fd5b5061035b6106da3660046126d0565b61121b565b61035b6112c8565b3480156106f2575f80fd5b5061030f60025481565b348015610707575f80fd5b5061035b610716366004612651565b6113f0565b348015610726575f80fd5b5060075461038b90600160a01b900460ff1681565b348015610746575f80fd5b5061030f6107553660046126d0565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561078a575f80fd5b5061030f60045481565b34801561079f575f80fd5b5061035b6107ae3660046127c8565b611507565b3480156107be575f80fd5b5061030f60035481565b5f6107d433848461172e565b5060015b92915050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19811461087c578281101561086f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61087c853385840361172e565b610887858585611852565b506001949350505050565b336108a45f546001600160a01b031690565b6001600160a01b0316146108ca5760405162461bcd60e51b815260040161086690612882565b670de0b6b3a76400006103e86108df60015490565b6108ea9060016128cb565b6108f491906128e2565b6108fe91906128e2565b81101561095b5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b6064820152608401610866565b61096d81670de0b6b3a76400006128cb565b60035550565b336109855f546001600160a01b031690565b6001600160a01b0316146109ab5760405162461bcd60e51b815260040161086690612882565b60078054911515600160d81b0260ff60d81b19909216919091179055565b336109db5f546001600160a01b031690565b6001600160a01b031614610a015760405162461bcd60e51b815260040161086690612882565b6007805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b868516810291909117948590558404831693610a6293918104821692900416612901565b610a6c9190612901565b60ff16606414610acc5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b6064820152608401610866565b505050565b610adb3382611fa5565b50565b33610af05f546001600160a01b031690565b6001600160a01b031614610b165760405162461bcd60e51b815260040161086690612882565b6001600160a01b038116610b3c5760405162461bcd60e51b81526004016108669061291a565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610b705f546001600160a01b031690565b6001600160a01b031614610b965760405162461bcd60e51b815260040161086690612882565b60c88260ff161115610bfd5760405162461bcd60e51b815260206004820152602a60248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526975616c20746f2032302560b01b6064820152608401610866565b60c88160ff161115610c655760405162461bcd60e51b815260206004820152602b60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f72206560448201526a7175616c20746f2032302560a81b6064820152608401610866565b6007805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610cab5f546001600160a01b031690565b6001600160a01b031614610cd15760405162461bcd60e51b815260040161086690612882565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610d0d5f546001600160a01b031690565b6001600160a01b031614610d335760405162461bcd60e51b815260040161086690612882565b620186a0610d4060015490565b610d4b9060016128cb565b610d5591906128e2565b811015610dc25760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b6064820152608401610866565b6103e8610dce60015490565b610dd99060056128cb565b610de391906128e2565b811115610e4f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b6064820152608401610866565b600455565b33610e665f546001600160a01b031690565b6001600160a01b031614610e8c5760405162461bcd60e51b815260040161086690612882565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b33610ec85f546001600160a01b031690565b6001600160a01b031614610eee5760405162461bcd60e51b815260040161086690612882565b5f80546001600160a01b0319169055565b33610f115f546001600160a01b031690565b6001600160a01b031614610f375760405162461bcd60e51b815260040161086690612882565b6001600160a01b038116610f5d5760405162461bcd60e51b81526004016108669061291a565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b33610f915f546001600160a01b031690565b6001600160a01b031614610fb75760405162461bcd60e51b815260040161086690612882565b670de0b6b3a76400006103e8610fcc60015490565b610fd79060016128cb565b610fe191906128e2565b610feb91906128e2565b81101561104d5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b6064820152608401610866565b61105f81670de0b6b3a76400006128cb565b60025550565b336110775f546001600160a01b031690565b6001600160a01b03161461109d5760405162461bcd60e51b815260040161086690612882565b6007805460ff60d01b19169055565b336110be5f546001600160a01b031690565b6001600160a01b0316146110e45760405162461bcd60e51b815260040161086690612882565b6001600160a01b03811661110a5760405162461bcd60e51b81526004016108669061291a565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b3361113e5f546001600160a01b031690565b6001600160a01b0316146111645760405162461bcd60e51b815260040161086690612882565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111e55760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610866565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f6107d4338484611852565b3361122d5f546001600160a01b031690565b6001600160a01b0316146112535760405162461bcd60e51b815260040161086690612882565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611297573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bb919061294a565b9050610acc8383836120d5565b336112da5f546001600160a01b031690565b6001600160a01b0316146113005760405162461bcd60e51b815260040161086690612882565b600754600160d81b900460ff161561134d5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610866565b305f8181526008602052604080822054905163f305d71960e01b8152600481019390935260248301526044820181905260648201523360848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156113cb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610acc9190612961565b336114025f546001600160a01b031690565b6001600160a01b0316146114285760405162461bcd60e51b815260040161086690612882565b6001600160a01b0381166114705760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610866565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146114b9576040519150601f19603f3d011682016040523d82523d5f602084013e6114be565b606091505b50509050806115035760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b6044820152606401610866565b5050565b336115195f546001600160a01b031690565b6001600160a01b03161461153f5760405162461bcd60e51b815260040161086690612882565b600754600160d81b900460ff161561158c5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610866565b5f5b8251811015610acc578181815181106115a9576115a961298c565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205410156115f35760405162461bcd60e51b8152600401610866906129a0565b8181815181106116055761160561298c565b602002602001015160085f8584815181106116225761162261298c565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f82825461165791906129e6565b925050819055508181815181106116705761167061298c565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546116a991906129f9565b925050819055508281815181106116c2576116c261298c565b60200260200101516001600160a01b0316336001600160a01b03165f80516020612aca8339815191528484815181106116fd576116fd61298c565b602002602001015160405161171491815260200190565b60405180910390a38061172681612a0c565b91505061158e565b6001600160a01b0383166117905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610866565b6001600160a01b0382166117f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610866565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610866565b6001600160a01b0382166119185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610866565b5f81116119795760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610866565b600754600160d81b900460ff161580156119cd57505f546001600160a01b038481169116148015906119b457506001600160a01b0383163014155b80156119cd57505f546001600160a01b03838116911614155b15611a105760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610866565b600754600160d01b900460ff1615611cd1575f546001600160a01b03848116911614801590611a4c57505f546001600160a01b03838116911614155b8015611a6057506001600160a01b03821615155b8015611a7757506001600160a01b03821661dead14155b8015611a8d5750600754600160c81b900460ff16155b15611cd1576001600160a01b0383165f908152600c602052604090205460ff168015611ad157506001600160a01b0382165f908152600b602052604090205460ff16155b15611ba457600254811115611b365760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b6064820152608401610866565b6003546001600160a01b0383165f90815260086020526040902054611b5b90836129e6565b1115611b9f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610866565b611cd1565b6001600160a01b0382165f908152600c602052604090205460ff168015611be357506001600160a01b0383165f908152600b602052604090205460ff16155b15611c4957600254811115611b9f5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b6064820152608401610866565b6001600160a01b0382165f908152600b602052604090205460ff16611cd1576003546001600160a01b0383165f90815260086020526040902054611c8d90836129e6565b1115611cd15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610866565b600454305f90815260086020526040902054108015908190611cfd5750600754600160c81b900460ff16155b8015611d2157506001600160a01b0384165f908152600c602052604090205460ff16155b8015611d4557506001600160a01b0384165f908152600a602052604090205460ff16155b8015611d6957506001600160a01b0383165f908152600a602052604090205460ff16155b15611d97576007805460ff60c81b1916600160c81b179055611d896121fc565b6007805460ff60c81b191690555b6007546001600160a01b0385165f908152600a602052604090205460ff600160c81b909204821615911680611de357506001600160a01b0384165f908152600a602052604090205460ff165b15611deb57505f5b6001600160a01b0385165f9081526008602052604090205483811015611e235760405162461bcd60e51b8152600401610866906129a0565b5f8215611f46576001600160a01b0386165f908152600c602052604090205460ff168015611e5c5750600754600160a81b900460ff1615155b15611e8d576007546103e890611e7c90600160a81b900460ff16876128cb565b611e8691906128e2565b9050611eec565b6001600160a01b0387165f908152600c602052604090205460ff168015611ebf5750600754600160a01b900460ff1615155b15611eec576007546103e890611edf90600160a01b900460ff16876128cb565b611ee991906128e2565b90505b8015611f46576001600160a01b0387165f8181526008602090815260408083208054869003905530808452928190208054860190555184815297849003979192915f80516020612aca833981519152910160405180910390a35b6001600160a01b038088165f8181526008602052604080822080548a900390559289168082529083902080548901905591515f80516020612aca83398151915290611f949089815260200190565b60405180910390a350505050505050565b6001600160a01b0382166120055760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610866565b6001600160a01b0382165f90815260086020526040902054818110156120785760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610866565b6001600160a01b0383165f9081526008602052604081208383039055600180548492906120a69084906129f9565b90915550506040518281525f906001600160a01b038516905f80516020612aca83398151915290602001611845565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916121309190612a24565b5f604051808303815f865af19150503d805f8114612169576040519150601f19603f3d011682016040523d82523d5f602084013e61216e565b606091505b50915091508180156121985750805115806121985750808060200190518101906121989190612a3f565b6121f55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b6064820152608401610866565b5050505050565b6004545f61220b8260146128cb565b305f9081526008602052604090205411156122315760045461222e9060146128cb565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122645761226461298c565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106122ac576122ac61298c565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906123039086905f90869030904290600401612a5a565b5f604051808303815f87803b15801561231a575f80fd5b505af115801561232c573d5f803e3d5ffd5b5047925050811590506124e5576007545f9060649061235590600160b01b900460ff16846128cb565b61235f91906128e2565b6007549091505f9060649061237e90600160c01b900460ff16856128cb565b61238891906128e2565b90505f8161239684866129f9565b6123a091906129f9565b6007546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146123eb576040519150601f19603f3d011682016040523d82523d5f602084013e6123f0565b606091505b50506006546040519197506001600160a01b03169082905f81818185875af1925050503d805f811461243d576040519150601f19603f3d011682016040523d82523d5f602084013e612442565b606091505b50506005546040519197506001600160a01b03169084905f81818185875af1925050503d805f811461248f576040519150601f19603f3d011682016040523d82523d5f602084013e612494565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b838110156125055781810151838201526020016124ed565b50505f910152565b602081525f825180602084015261252b8160408501602087016124eb565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612555575f80fd5b919050565b5f806040838503121561256b575f80fd5b6125748361253f565b946020939093013593505050565b5f805f60608486031215612594575f80fd5b61259d8461253f565b92506125ab6020850161253f565b9150604084013590509250925092565b5f602082840312156125cb575f80fd5b5035919050565b8015158114610adb575f80fd5b5f602082840312156125ef575f80fd5b81356125fa816125d2565b9392505050565b803560ff81168114612555575f80fd5b5f805f60608486031215612623575f80fd5b61262c84612601565b925061263a60208501612601565b915061264860408501612601565b90509250925092565b5f60208284031215612661575f80fd5b6125fa8261253f565b5f806040838503121561267b575f80fd5b61268483612601565b915061269260208401612601565b90509250929050565b5f80604083850312156126ac575f80fd5b6126b58361253f565b915060208301356126c5816125d2565b809150509250929050565b5f80604083850312156126e1575f80fd5b6126ea8361253f565b91506126926020840161253f565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612735576127356126f8565b604052919050565b5f67ffffffffffffffff821115612756576127566126f8565b5060051b60200190565b5f82601f83011261276f575f80fd5b8135602061278461277f8361273d565b61270c565b82815260059290921b840181019181810190868411156127a2575f80fd5b8286015b848110156127bd57803583529183019183016127a6565b509695505050505050565b5f80604083850312156127d9575f80fd5b823567ffffffffffffffff808211156127f0575f80fd5b818501915085601f830112612803575f80fd5b8135602061281361277f8361273d565b82815260059290921b84018101918181019089841115612831575f80fd5b948201945b83861015612856576128478661253f565b82529482019490820190612836565b9650508601359250508082111561286b575f80fd5b5061287885828601612760565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107d8576107d86128b7565b5f826128fc57634e487b7160e01b5f52601260045260245ffd5b500490565b60ff81811683821601908111156107d8576107d86128b7565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f6020828403121561295a575f80fd5b5051919050565b5f805f60608486031215612973575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156107d8576107d86128b7565b818103818111156107d8576107d86128b7565b5f60018201612a1d57612a1d6128b7565b5060010190565b5f8251612a358184602087016124eb565b9190910192915050565b5f60208284031215612a4f575f80fd5b81516125fa816125d2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612aa85784516001600160a01b031683529383019391830191600101612a83565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206325acb7758f6585f6a0e9c9578dc4147335c29700a787dcbb505d1b8c24e6d564736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x608060405260043610610241575f3560e01c8063715018a6116101345780639a7a23d6116100b3578063d201b01e11610078578063d201b01e146106fc578063d85ba0631461071b578063dd62ed3e1461073b578063e2f456051461077f578063e710794714610794578063f8b45b05146107b3575f80fd5b80639a7a23d614610682578063a9059cbb146106a1578063bc205ad3146106c0578063c408c245146106df578063c8c8ebe4146106e7575f80fd5b806385fb3f63116100f957806385fb3f63146105da5780638da5cb5b146105fa5780638e8fc098146106165780639060fdcf1461063657806395d89b4114610655575f80fd5b8063715018a61461053d57806373dd858c1461055157806374010ece14610570578063751039fc1461058f57806385ecafd7146105a3575f80fd5b806342966c68116101c0578063590ffdce11610185578063590ffdce1461048c5780636402511e146104ab57806366650dae146104ca5780636a486a8e146104e957806370a0823114610509575f80fd5b806342966c68146103dc578063441c0043146103fb57806349bd5a5e1461041a5780634a62bb651461044d5780634fcd24461461046d575f80fd5b806327a14fc21161020657806327a14fc21461033c57806330d35dee1461035d578063313ce5671461037c5780633c090c461461039d5780633fb0da64146103bc575f80fd5b806306fdde031461024c578063095ea7b3146102915780631694505e146102c057806318160ddd146102ff57806323b872dd1461031d575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b5060408051808201909152600b81526a4d697373696f6e4d61727360a81b60208201525b604051610288919061250d565b60405180910390f35b34801561029c575f80fd5b506102b06102ab36600461255a565b6107c8565b6040519015158152602001610288565b3480156102cb575f80fd5b506102e7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610288565b34801561030a575f80fd5b506001545b604051908152602001610288565b348015610328575f80fd5b506102b0610337366004612582565b6107de565b348015610347575f80fd5b5061035b6103563660046125bb565b610892565b005b348015610368575f80fd5b5061035b6103773660046125df565b610973565b348015610387575f80fd5b5060125b60405160ff9091168152602001610288565b3480156103a8575f80fd5b5061035b6103b7366004612611565b6109c9565b3480156103c7575f80fd5b5060075461038b90600160b01b900460ff1681565b3480156103e7575f80fd5b5061035b6103f63660046125bb565b610ad1565b348015610406575f80fd5b5061035b610415366004612651565b610ade565b348015610425575f80fd5b506102e77f000000000000000000000000282f34e0809240b0576b5d46807fa51cefb0f64b81565b348015610458575f80fd5b506007546102b090600160d01b900460ff1681565b348015610478575f80fd5b5061035b61048736600461266a565b610b5e565b348015610497575f80fd5b5061035b6104a636600461269b565b610c99565b3480156104b6575f80fd5b5061035b6104c53660046125bb565b610cfb565b3480156104d5575f80fd5b5061035b6104e436600461269b565b610e54565b3480156104f4575f80fd5b5060075461038b90600160a81b900460ff1681565b348015610514575f80fd5b5061030f610523366004612651565b6001600160a01b03165f9081526008602052604090205490565b348015610548575f80fd5b5061035b610eb6565b34801561055c575f80fd5b5061035b61056b366004612651565b610eff565b34801561057b575f80fd5b5061035b61058a3660046125bb565b610f7f565b34801561059a575f80fd5b5061035b611065565b3480156105ae575f80fd5b506102b06105bd366004612651565b6001600160a01b03165f908152600a602052604090205460ff1690565b3480156105e5575f80fd5b5060075461038b90600160b81b900460ff1681565b348015610605575f80fd5b505f546001600160a01b03166102e7565b348015610621575f80fd5b5060075461038b90600160c01b900460ff1681565b348015610641575f80fd5b5061035b610650366004612651565b6110ac565b348015610660575f80fd5b506040805180820190915260058152644d4d61727360d81b602082015261027b565b34801561068d575f80fd5b5061035b61069c36600461269b565b61112c565b3480156106ac575f80fd5b506102b06106bb36600461255a565b61120f565b3480156106cb575f80fd5b5061035b6106da3660046126d0565b61121b565b61035b6112c8565b3480156106f2575f80fd5b5061030f60025481565b348015610707575f80fd5b5061035b610716366004612651565b6113f0565b348015610726575f80fd5b5060075461038b90600160a01b900460ff1681565b348015610746575f80fd5b5061030f6107553660046126d0565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561078a575f80fd5b5061030f60045481565b34801561079f575f80fd5b5061035b6107ae3660046127c8565b611507565b3480156107be575f80fd5b5061030f60035481565b5f6107d433848461172e565b5060015b92915050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19811461087c578281101561086f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61087c853385840361172e565b610887858585611852565b506001949350505050565b336108a45f546001600160a01b031690565b6001600160a01b0316146108ca5760405162461bcd60e51b815260040161086690612882565b670de0b6b3a76400006103e86108df60015490565b6108ea9060016128cb565b6108f491906128e2565b6108fe91906128e2565b81101561095b5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b6064820152608401610866565b61096d81670de0b6b3a76400006128cb565b60035550565b336109855f546001600160a01b031690565b6001600160a01b0316146109ab5760405162461bcd60e51b815260040161086690612882565b60078054911515600160d81b0260ff60d81b19909216919091179055565b336109db5f546001600160a01b031690565b6001600160a01b031614610a015760405162461bcd60e51b815260040161086690612882565b6007805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b868516810291909117948590558404831693610a6293918104821692900416612901565b610a6c9190612901565b60ff16606414610acc5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b6064820152608401610866565b505050565b610adb3382611fa5565b50565b33610af05f546001600160a01b031690565b6001600160a01b031614610b165760405162461bcd60e51b815260040161086690612882565b6001600160a01b038116610b3c5760405162461bcd60e51b81526004016108669061291a565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610b705f546001600160a01b031690565b6001600160a01b031614610b965760405162461bcd60e51b815260040161086690612882565b60c88260ff161115610bfd5760405162461bcd60e51b815260206004820152602a60248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526975616c20746f2032302560b01b6064820152608401610866565b60c88160ff161115610c655760405162461bcd60e51b815260206004820152602b60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f72206560448201526a7175616c20746f2032302560a81b6064820152608401610866565b6007805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610cab5f546001600160a01b031690565b6001600160a01b031614610cd15760405162461bcd60e51b815260040161086690612882565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610d0d5f546001600160a01b031690565b6001600160a01b031614610d335760405162461bcd60e51b815260040161086690612882565b620186a0610d4060015490565b610d4b9060016128cb565b610d5591906128e2565b811015610dc25760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b6064820152608401610866565b6103e8610dce60015490565b610dd99060056128cb565b610de391906128e2565b811115610e4f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b6064820152608401610866565b600455565b33610e665f546001600160a01b031690565b6001600160a01b031614610e8c5760405162461bcd60e51b815260040161086690612882565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b33610ec85f546001600160a01b031690565b6001600160a01b031614610eee5760405162461bcd60e51b815260040161086690612882565b5f80546001600160a01b0319169055565b33610f115f546001600160a01b031690565b6001600160a01b031614610f375760405162461bcd60e51b815260040161086690612882565b6001600160a01b038116610f5d5760405162461bcd60e51b81526004016108669061291a565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b33610f915f546001600160a01b031690565b6001600160a01b031614610fb75760405162461bcd60e51b815260040161086690612882565b670de0b6b3a76400006103e8610fcc60015490565b610fd79060016128cb565b610fe191906128e2565b610feb91906128e2565b81101561104d5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b6064820152608401610866565b61105f81670de0b6b3a76400006128cb565b60025550565b336110775f546001600160a01b031690565b6001600160a01b03161461109d5760405162461bcd60e51b815260040161086690612882565b6007805460ff60d01b19169055565b336110be5f546001600160a01b031690565b6001600160a01b0316146110e45760405162461bcd60e51b815260040161086690612882565b6001600160a01b03811661110a5760405162461bcd60e51b81526004016108669061291a565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b3361113e5f546001600160a01b031690565b6001600160a01b0316146111645760405162461bcd60e51b815260040161086690612882565b7f000000000000000000000000282f34e0809240b0576b5d46807fa51cefb0f64b6001600160a01b0316826001600160a01b0316036111e55760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610866565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f6107d4338484611852565b3361122d5f546001600160a01b031690565b6001600160a01b0316146112535760405162461bcd60e51b815260040161086690612882565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611297573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bb919061294a565b9050610acc8383836120d5565b336112da5f546001600160a01b031690565b6001600160a01b0316146113005760405162461bcd60e51b815260040161086690612882565b600754600160d81b900460ff161561134d5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610866565b305f8181526008602052604080822054905163f305d71960e01b8152600481019390935260248301526044820181905260648201523360848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af11580156113cb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610acc9190612961565b336114025f546001600160a01b031690565b6001600160a01b0316146114285760405162461bcd60e51b815260040161086690612882565b6001600160a01b0381166114705760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610866565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f81146114b9576040519150601f19603f3d011682016040523d82523d5f602084013e6114be565b606091505b50509050806115035760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b6044820152606401610866565b5050565b336115195f546001600160a01b031690565b6001600160a01b03161461153f5760405162461bcd60e51b815260040161086690612882565b600754600160d81b900460ff161561158c5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610866565b5f5b8251811015610acc578181815181106115a9576115a961298c565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205410156115f35760405162461bcd60e51b8152600401610866906129a0565b8181815181106116055761160561298c565b602002602001015160085f8584815181106116225761162261298c565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f82825461165791906129e6565b925050819055508181815181106116705761167061298c565b602002602001015160085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8282546116a991906129f9565b925050819055508281815181106116c2576116c261298c565b60200260200101516001600160a01b0316336001600160a01b03165f80516020612aca8339815191528484815181106116fd576116fd61298c565b602002602001015160405161171491815260200190565b60405180910390a38061172681612a0c565b91505061158e565b6001600160a01b0383166117905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610866565b6001600160a01b0382166117f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610866565b6001600160a01b038381165f8181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610866565b6001600160a01b0382166119185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610866565b5f81116119795760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610866565b600754600160d81b900460ff161580156119cd57505f546001600160a01b038481169116148015906119b457506001600160a01b0383163014155b80156119cd57505f546001600160a01b03838116911614155b15611a105760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610866565b600754600160d01b900460ff1615611cd1575f546001600160a01b03848116911614801590611a4c57505f546001600160a01b03838116911614155b8015611a6057506001600160a01b03821615155b8015611a7757506001600160a01b03821661dead14155b8015611a8d5750600754600160c81b900460ff16155b15611cd1576001600160a01b0383165f908152600c602052604090205460ff168015611ad157506001600160a01b0382165f908152600b602052604090205460ff16155b15611ba457600254811115611b365760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b6064820152608401610866565b6003546001600160a01b0383165f90815260086020526040902054611b5b90836129e6565b1115611b9f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610866565b611cd1565b6001600160a01b0382165f908152600c602052604090205460ff168015611be357506001600160a01b0383165f908152600b602052604090205460ff16155b15611c4957600254811115611b9f5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b6064820152608401610866565b6001600160a01b0382165f908152600b602052604090205460ff16611cd1576003546001600160a01b0383165f90815260086020526040902054611c8d90836129e6565b1115611cd15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610866565b600454305f90815260086020526040902054108015908190611cfd5750600754600160c81b900460ff16155b8015611d2157506001600160a01b0384165f908152600c602052604090205460ff16155b8015611d4557506001600160a01b0384165f908152600a602052604090205460ff16155b8015611d6957506001600160a01b0383165f908152600a602052604090205460ff16155b15611d97576007805460ff60c81b1916600160c81b179055611d896121fc565b6007805460ff60c81b191690555b6007546001600160a01b0385165f908152600a602052604090205460ff600160c81b909204821615911680611de357506001600160a01b0384165f908152600a602052604090205460ff165b15611deb57505f5b6001600160a01b0385165f9081526008602052604090205483811015611e235760405162461bcd60e51b8152600401610866906129a0565b5f8215611f46576001600160a01b0386165f908152600c602052604090205460ff168015611e5c5750600754600160a81b900460ff1615155b15611e8d576007546103e890611e7c90600160a81b900460ff16876128cb565b611e8691906128e2565b9050611eec565b6001600160a01b0387165f908152600c602052604090205460ff168015611ebf5750600754600160a01b900460ff1615155b15611eec576007546103e890611edf90600160a01b900460ff16876128cb565b611ee991906128e2565b90505b8015611f46576001600160a01b0387165f8181526008602090815260408083208054869003905530808452928190208054860190555184815297849003979192915f80516020612aca833981519152910160405180910390a35b6001600160a01b038088165f8181526008602052604080822080548a900390559289168082529083902080548901905591515f80516020612aca83398151915290611f949089815260200190565b60405180910390a350505050505050565b6001600160a01b0382166120055760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610866565b6001600160a01b0382165f90815260086020526040902054818110156120785760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610866565b6001600160a01b0383165f9081526008602052604081208383039055600180548492906120a69084906129f9565b90915550506040518281525f906001600160a01b038516905f80516020612aca83398151915290602001611845565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916121309190612a24565b5f604051808303815f865af19150503d805f8114612169576040519150601f19603f3d011682016040523d82523d5f602084013e61216e565b606091505b50915091508180156121985750805115806121985750808060200190518101906121989190612a3f565b6121f55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b6064820152608401610866565b5050505050565b6004545f61220b8260146128cb565b305f9081526008602052604090205411156122315760045461222e9060146128cb565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106122645761226461298c565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106122ac576122ac61298c565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906123039086905f90869030904290600401612a5a565b5f604051808303815f87803b15801561231a575f80fd5b505af115801561232c573d5f803e3d5ffd5b5047925050811590506124e5576007545f9060649061235590600160b01b900460ff16846128cb565b61235f91906128e2565b6007549091505f9060649061237e90600160c01b900460ff16856128cb565b61238891906128e2565b90505f8161239684866129f9565b6123a091906129f9565b6007546040519192506001600160a01b03169083905f81818185875af1925050503d805f81146123eb576040519150601f19603f3d011682016040523d82523d5f602084013e6123f0565b606091505b50506006546040519197506001600160a01b03169082905f81818185875af1925050503d805f811461243d576040519150601f19603f3d011682016040523d82523d5f602084013e612442565b606091505b50506005546040519197506001600160a01b03169084905f81818185875af1925050503d805f811461248f576040519150601f19603f3d011682016040523d82523d5f602084013e612494565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b838110156125055781810151838201526020016124ed565b50505f910152565b602081525f825180602084015261252b8160408501602087016124eb565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612555575f80fd5b919050565b5f806040838503121561256b575f80fd5b6125748361253f565b946020939093013593505050565b5f805f60608486031215612594575f80fd5b61259d8461253f565b92506125ab6020850161253f565b9150604084013590509250925092565b5f602082840312156125cb575f80fd5b5035919050565b8015158114610adb575f80fd5b5f602082840312156125ef575f80fd5b81356125fa816125d2565b9392505050565b803560ff81168114612555575f80fd5b5f805f60608486031215612623575f80fd5b61262c84612601565b925061263a60208501612601565b915061264860408501612601565b90509250925092565b5f60208284031215612661575f80fd5b6125fa8261253f565b5f806040838503121561267b575f80fd5b61268483612601565b915061269260208401612601565b90509250929050565b5f80604083850312156126ac575f80fd5b6126b58361253f565b915060208301356126c5816125d2565b809150509250929050565b5f80604083850312156126e1575f80fd5b6126ea8361253f565b91506126926020840161253f565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612735576127356126f8565b604052919050565b5f67ffffffffffffffff821115612756576127566126f8565b5060051b60200190565b5f82601f83011261276f575f80fd5b8135602061278461277f8361273d565b61270c565b82815260059290921b840181019181810190868411156127a2575f80fd5b8286015b848110156127bd57803583529183019183016127a6565b509695505050505050565b5f80604083850312156127d9575f80fd5b823567ffffffffffffffff808211156127f0575f80fd5b818501915085601f830112612803575f80fd5b8135602061281361277f8361273d565b82815260059290921b84018101918181019089841115612831575f80fd5b948201945b83861015612856576128478661253f565b82529482019490820190612836565b9650508601359250508082111561286b575f80fd5b5061287885828601612760565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107d8576107d86128b7565b5f826128fc57634e487b7160e01b5f52601260045260245ffd5b500490565b60ff81811683821601908111156107d8576107d86128b7565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f6020828403121561295a575f80fd5b5051919050565b5f805f60608486031215612973575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156107d8576107d86128b7565b818103818111156107d8576107d86128b7565b5f60018201612a1d57612a1d6128b7565b5060010190565b5f8251612a358184602087016124eb565b9190910192915050565b5f60208284031215612a4f575f80fd5b81516125fa816125d2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612aa85784516001600160a01b031683529383019391830191600101612a83565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206325acb7758f6585f6a0e9c9578dc4147335c29700a787dcbb505d1b8c24e6d564736f6c63430008150033

Deployed Bytecode Sourcemap

1881:13507:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4881:83;;;;;;;;;;-1:-1:-1;4951:5:0;;;;;;;;;;;;-1:-1:-1;;;4951:5:0;;;;4881:83;;;;;;;:::i;:::-;;;;;;;;5510:152;;;;;;;;;;-1:-1:-1;5510:152:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;5510:152:0;1107:187:1;3475:115:0;;;;;;;;;;;;3547:42;3475:115;;;;;-1:-1:-1;;;;;1489:32:1;;;1471:51;;1459:2;1444:18;3475:115:0;1299:229:1;5151:91:0;;;;;;;;;;-1:-1:-1;5222:12:0;;5151:91;;;1679:25:1;;;1667:2;1652:18;5151:91:0;1533:177:1;6181:520:0;;;;;;;;;;-1:-1:-1;6181:520:0;;;;;:::i;:::-;;:::i;12794:235::-;;;;;;;;;;-1:-1:-1;12794:235:0;;;;;:::i;:::-;;:::i;:::-;;11526:87;;;;;;;;;;-1:-1:-1;11526:87:0;;;;;:::i;:::-;;:::i;5067:76::-;;;;;;;;;;-1:-1:-1;5133:2:0;5067:76;;;2774:4:1;2762:17;;;2744:36;;2732:2;2717:18;5067:76:0;2602:184:1;10051:308:0;;;;;;;;;;-1:-1:-1;10051:308:0;;;;;:::i;:::-;;:::i;2679:24::-;;;;;;;;;;-1:-1:-1;2679:24:0;;;;-1:-1:-1;;;2679:24:0;;;;;;9394:81;;;;;;;;;;-1:-1:-1;9394:81:0;;;;;:::i;:::-;;:::i;13220:177::-;;;;;;;;;;-1:-1:-1;13220:177:0;;;;;:::i;:::-;;:::i;3597:38::-;;;;;;;;;;;;;;;2814:33;;;;;;;;;;-1:-1:-1;2814:33:0;;;;-1:-1:-1;;;2814:33:0;;;;;;10367:341;;;;;;;;;;-1:-1:-1;10367:341:0;;;;;:::i;:::-;;:::i;10716:136::-;;;;;;;;;;-1:-1:-1;10716:136:0;;;;;:::i;:::-;;:::i;12181:361::-;;;;;;;;;;-1:-1:-1;12181:361:0;;;;;:::i;:::-;;:::i;10860:158::-;;;;;;;;;;-1:-1:-1;10860:158:0;;;;;:::i;:::-;;:::i;2639:31::-;;;;;;;;;;-1:-1:-1;2639:31:0;;;;-1:-1:-1;;;2639:31:0;;;;;;5250:110;;;;;;;;;;-1:-1:-1;5250:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5334:18:0;5307:7;5334:18;;;:9;:18;;;;;;;5250:110;578:92;;;;;;;;;;;;;:::i;13037:175::-;;;;;;;;;;-1:-1:-1;13037:175:0;;;;;:::i;:::-;;:::i;12550:236::-;;;;;;;;;;-1:-1:-1;12550:236:0;;;;;:::i;:::-;;:::i;9959:84::-;;;;;;;;;;;;;:::i;13602:123::-;;;;;;;;;;-1:-1:-1;13602:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;13689:28:0;13665:4;13689:28;;;:19;:28;;;;;;;;;13602:123;2710:25;;;;;;;;;;-1:-1:-1;2710:25:0;;;;-1:-1:-1;;;2710:25:0;;;;;;357:87;;;;;;;;;;-1:-1:-1;403:7:0;430:6;-1:-1:-1;;;;;430:6:0;357:87;;2742:31;;;;;;;;;;-1:-1:-1;2742:31:0;;;;-1:-1:-1;;;2742:31:0;;;;;;13405:189;;;;;;;;;;-1:-1:-1;13405:189:0;;;;;:::i;:::-;;:::i;4972:87::-;;;;;;;;;;-1:-1:-1;5044:7:0;;;;;;;;;;;;-1:-1:-1;;;5044:7:0;;;;4972:87;;11962:211;;;;;;;;;;-1:-1:-1;11962:211:0;;;;;:::i;:::-;;:::i;6015:158::-;;;;;;;;;;-1:-1:-1;6015:158:0;;;;;:::i;:::-;;:::i;13733:240::-;;;;;;;;;;-1:-1:-1;13733:240:0;;;;;:::i;:::-;;:::i;11621:333::-;;;:::i;2092:54::-;;;;;;;;;;;;;;;;13981:247;;;;;;;;;;-1:-1:-1;13981:247:0;;;;;:::i;:::-;;:::i;2602:30::-;;;;;;;;;;-1:-1:-1;2602:30:0;;;;-1:-1:-1;;;2602:30:0;;;;;;5368:134;;;;;;;;;;-1:-1:-1;5368:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;5467:18:0;;;5440:7;5467:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5368:134;2203:62;;;;;;;;;;;;;;;;11026:492;;;;;;;;;;-1:-1:-1;11026:492:0;;;;;:::i;:::-;;:::i;2153:43::-;;;;;;;;;;;;;;;;5510:152;5578:4;5595:37;5604:10;5616:7;5625:6;5595:8;:37::i;:::-;-1:-1:-1;5650:4:0;5510:152;;;;;:::o;6181:520::-;-1:-1:-1;;;;;6316:19:0;;6272:4;6316:19;;;:11;:19;;;;;;;;6336:10;6316:31;;;;;;;;-1:-1:-1;;6362:37:0;;6358:263;;6444:6;6424:16;:26;;6416:79;;;;-1:-1:-1;;;6416:79:0;;7140:2:1;6416:79:0;;;7122:21:1;7179:2;7159:18;;;7152:30;7218:34;7198:18;;;7191:62;-1:-1:-1;;;7269:18:1;;;7262:38;7317:19;;6416:79:0;;;;;;;;;6539:55;6548:6;6556:10;6587:6;6568:16;:25;6539:8;:55::i;:::-;6633:36;6643:6;6651:9;6662:6;6633:9;:36::i;:::-;-1:-1:-1;6689:4:0;;6181:520;-1:-1:-1;;;;6181:520:0:o;12794:235::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;12929:4:::1;12921;12900:13;5222:12:::0;;;5151:91;12900:13:::1;:17;::::0;12916:1:::1;12900:17;:::i;:::-;12899:26;;;;:::i;:::-;12898:35;;;;:::i;:::-;12882:12;:51;;12874:101;;;::::0;-1:-1:-1;;;12874:101:0;;8437:2:1;12874:101:0::1;::::0;::::1;8419:21:1::0;8476:2;8456:18;;;8449:30;8515:34;8495:18;;;8488:62;-1:-1:-1;;;8566:18:1;;;8559:35;8611:19;;12874:101:0::1;8235:401:1::0;12874:101:0::1;12998:23;:12:::0;13014:6:::1;12998:23;:::i;:::-;12986:9;:35:::0;-1:-1:-1;12794:235:0:o;11526:87::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;11588:8:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;11588:17:0::1;-1:-1:-1::0;;;;11588:17:0;;::::1;::::0;;;::::1;::::0;;11526:87::o;10051:308::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;10163:6:::1;:16:::0;;-1:-1:-1;;;;10190:18:0;-1:-1:-1;;;10163:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;10190:18:0;;;;;-1:-1:-1;;;10190:18:0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;;10219:30:0::1;-1:-1:-1::0;;;10219:30:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10288:13;::::1;::::0;::::1;::::0;10269:16:::1;::::0;10278:7;;::::1;::::0;::::1;::::0;10269:6;::::1;;:16;:::i;:::-;:32;;;;:::i;:::-;10268:41;;10306:3;10268:41;10260:91;;;::::0;-1:-1:-1;;;10260:91:0;;8996:2:1;10260:91:0::1;::::0;::::1;8978:21:1::0;9035:2;9015:18;;;9008:30;9074:34;9054:18;;;9047:62;-1:-1:-1;;;9125:18:1;;;9118:35;9170:19;;10260:91:0::1;8794:401:1::0;10260:91:0::1;10051:308:::0;;;:::o;9394:81::-;9443:24;9449:10;9461:5;9443;:24::i;:::-;9394:81;:::o;13220:177::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13304:24:0;::::1;13296:59;;;;-1:-1:-1::0;;;13296:59:0::1;;;;;;;:::i;:::-;13366:10;:23:::0;;-1:-1:-1;;;;;;13366:23:0::1;-1:-1:-1::0;;;;;13366:23:0;;;::::1;::::0;;;::::1;::::0;;13220:177::o;10367:341::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;10482:3:::1;10465:13;:20;;;;10457:75;;;::::0;-1:-1:-1;;;10457:75:0;;9753:2:1;10457:75:0::1;::::0;::::1;9735:21:1::0;9792:2;9772:18;;;9765:30;9831:34;9811:18;;;9804:62;-1:-1:-1;;;9882:18:1;;;9875:40;9932:19;;10457:75:0::1;9551:406:1::0;10457:75:0::1;10569:3;10551:14;:21;;;;10543:77;;;::::0;-1:-1:-1;;;10543:77:0;;10164:2:1;10543:77:0::1;::::0;::::1;10146:21:1::0;10203:2;10183:18;;;10176:30;10242:34;10222:18;;;10215:62;-1:-1:-1;;;10293:18:1;;;10286:41;10344:19;;10543:77:0::1;9962:407:1::0;10543:77:0::1;10631:12;:28:::0;;-1:-1:-1;;;;10670:30:0;-1:-1:-1;;;10631:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;10670:30:0;;-1:-1:-1;;;10670:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10367:341::o;10716:136::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10805:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;10805:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10716:136::o;12181:361::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;12306:6:::1;12285:13;5222:12:::0;;;5151:91;12285:13:::1;:17;::::0;12301:1:::1;12285:17;:::i;:::-;12284:28;;;;:::i;:::-;12267:13;:45;;12259:111;;;::::0;-1:-1:-1;;;12259:111:0;;10576:2:1;12259:111:0::1;::::0;::::1;10558:21:1::0;10615:2;10595:18;;;10588:30;10654:34;10634:18;;;10627:62;-1:-1:-1;;;10705:18:1;;;10698:51;10766:19;;12259:111:0::1;10374:417:1::0;12259:111:0::1;12428:4;12407:13;5222:12:::0;;;5151:91;12407:13:::1;:17;::::0;12423:1:::1;12407:17;:::i;:::-;12406:26;;;;:::i;:::-;12389:13;:43;;12381:108;;;::::0;-1:-1:-1;;;12381:108:0;;10998:2:1;12381:108:0::1;::::0;::::1;10980:21:1::0;11037:2;11017:18;;;11010:30;11076:34;11056:18;;;11049:62;-1:-1:-1;;;11127:18:1;;;11120:50;11187:19;;12381:108:0::1;10796:416:1::0;12381:108:0::1;12500:18;:34:::0;12181:361::o;10860:158::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10959:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;10959:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10860:158::o;578:92::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;660:1:::1;643:19:::0;;-1:-1:-1;;;;;;643:19:0::1;::::0;;578:92::o;13037:175::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13120:24:0;::::1;13112:59;;;;-1:-1:-1::0;;;13112:59:0::1;;;;;;;:::i;:::-;13182:9;:22:::0;;-1:-1:-1;;;;;;13182:22:0::1;-1:-1:-1::0;;;;;13182:22:0;;;::::1;::::0;;;::::1;::::0;;13037:175::o;12550:236::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;12674:4:::1;12666;12645:13;5222:12:::0;;;5151:91;12645:13:::1;:17;::::0;12661:1:::1;12645:17;:::i;:::-;12644:26;;;;:::i;:::-;12643:35;;;;:::i;:::-;12631:8;:47;;12623:102;;;::::0;-1:-1:-1;;;12623:102:0;;11419:2:1;12623:102:0::1;::::0;::::1;11401:21:1::0;11458:2;11438:18;;;11431:30;11497:34;11477:18;;;11470:62;-1:-1:-1;;;11548:18:1;;;11541:40;11598:19;;12623:102:0::1;11217:406:1::0;12623:102:0::1;12759:19;:8:::0;12771:6:::1;12759:19;:::i;:::-;12736:20;:42:::0;-1:-1:-1;12550:236:0:o;9959:84::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;10013:14:::1;:22:::0;;-1:-1:-1;;;;10013:22:0::1;::::0;;9959:84::o;13405:189::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13495:24:0;::::1;13487:59;;;;-1:-1:-1::0;;;13487:59:0::1;;;;;;;:::i;:::-;13557:16;:29:::0;;-1:-1:-1;;;;;;13557:29:0::1;-1:-1:-1::0;;;;;13557:29:0;;;::::1;::::0;;;::::1;::::0;;13405:189::o;11962:211::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;12071:13:::1;-1:-1:-1::0;;;;;12063:21:0::1;:4;-1:-1:-1::0;;;;;12063:21:0::1;::::0;12055:60:::1;;;::::0;-1:-1:-1;;;12055:60:0;;11830:2:1;12055:60:0::1;::::0;::::1;11812:21:1::0;11869:2;11849:18;;;11842:30;11908:28;11888:18;;;11881:56;11954:18;;12055:60:0::1;11628:350:1::0;12055:60:0::1;-1:-1:-1::0;;;;;12126:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;12126:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11962:211::o;6015:158::-;6086:4;6103:40;6113:10;6125:9;6136:6;6103:9;:40::i;13733:240::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;13845:38:::1;::::0;-1:-1:-1;;;13845:38:0;;13877:4:::1;13845:38;::::0;::::1;1471:51:1::0;13818:24:0::1;::::0;-1:-1:-1;;;;;13845:23:0;::::1;::::0;::::1;::::0;1444:18:1;;13845:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13818:65;;13894:51;13917:5;13924:2;13928:16;13894:22;:51::i;11621:333::-:0;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;11692:8:::1;::::0;-1:-1:-1;;;11692:8:0;::::1;;;11691:9;11683:38;;;::::0;-1:-1:-1;;;11683:38:0;;12374:2:1;11683:38:0::1;::::0;::::1;12356:21:1::0;12413:2;12393:18;;;12386:30;-1:-1:-1;;;12432:18:1;;;12425:46;12488:18;;11683:38:0::1;12172:340:1::0;11683:38:0::1;11804:4;11824:24;::::0;;;:9:::1;:24;::::0;;;;;;11732:214;;-1:-1:-1;;;11732:214:0;;::::1;::::0;::::1;12858:34:1::0;;;;12908:18;;;12901:34;12951:18;;;12944:34;;;12994:18;;;12987:34;11895:10:0::1;13037:19:1::0;;;13030:44;11920:15:0::1;13090:19:1::0;;;13083:35;3547:42:0::1;::::0;11732:31:::1;::::0;11771:9:::1;::::0;12792:19:1;;11732:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13981:247::-:0;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14059:18:0;::::1;14051:46;;;::::0;-1:-1:-1;;;14051:46:0;;13642:2:1;14051:46:0::1;::::0;::::1;13624:21:1::0;13681:2;13661:18;;;13654:30;-1:-1:-1;;;13700:18:1;;;13693:45;13755:18;;14051:46:0::1;13440:339:1::0;14051:46:0::1;14111:12;14129:4;-1:-1:-1::0;;;;;14129:9:0::1;14146:21;14129:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14110:62;;;14191:7;14183:37;;;::::0;-1:-1:-1;;;14183:37:0;;14196:2:1;14183:37:0::1;::::0;::::1;14178:21:1::0;14235:2;14215:18;;;14208:30;-1:-1:-1;;;14254:18:1;;;14247:47;14311:18;;14183:37:0::1;13994:341:1::0;14183:37:0::1;14040:188;13981:247:::0;:::o;11026:492::-;503:10;492:7;403;430:6;-1:-1:-1;;;;;430:6:0;;357:87;492:7;-1:-1:-1;;;;;492:21:0;;484:66;;;;-1:-1:-1;;;484:66:0;;;;;;;:::i;:::-;11143:8:::1;::::0;-1:-1:-1;;;11143:8:0;::::1;;;11142:9;11134:38;;;::::0;-1:-1:-1;;;11134:38:0;;12374:2:1;11134:38:0::1;::::0;::::1;12356:21:1::0;12413:2;12393:18;;;12386:30;-1:-1:-1;;;12432:18:1;;;12425:46;12488:18;;11134:38:0::1;12172:340:1::0;11134:38:0::1;11188:9;11183:328;11207:9;:16;11203:1;:20;11183:328;;;11278:7;11286:1;11278:10;;;;;;;;:::i;:::-;;;;;;;11253:9;:21;11263:10;-1:-1:-1::0;;;;;11253:21:0::1;-1:-1:-1::0;;;;;11253:21:0::1;;;;;;;;;;;;;:35;;11245:86;;;;-1:-1:-1::0;;;11245:86:0::1;;;;;;;:::i;:::-;11373:7;11381:1;11373:10;;;;;;;;:::i;:::-;;;;;;;11346:9;:23;11356:9;11366:1;11356:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11346:23:0::1;-1:-1:-1::0;;;;;11346:23:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11423:7;11431:1;11423:10;;;;;;;;:::i;:::-;;;;;;;11398:9;:21;11408:10;-1:-1:-1::0;;;;;11398:21:0::1;-1:-1:-1::0;;;;;11398:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11474:9;11484:1;11474:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11453:46:0::1;11462:10;-1:-1:-1::0;;;;;11453:46:0::1;-1:-1:-1::0;;;;;;;;;;;11488:7:0::1;11496:1;11488:10;;;;;;;;:::i;:::-;;;;;;;11453:46;;;;1679:25:1::0;;1667:2;1652:18;;1533:177;11453:46:0::1;;;;;;;;11225:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11183:328;;5670:337:::0;-1:-1:-1;;;;;5763:19:0;;5755:68;;;;-1:-1:-1;;;5755:68:0;;15484:2:1;5755:68:0;;;15466:21:1;15523:2;15503:18;;;15496:30;15562:34;15542:18;;;15535:62;-1:-1:-1;;;15613:18:1;;;15606:34;15657:19;;5755:68:0;15282:400:1;5755:68:0;-1:-1:-1;;;;;5842:21:0;;5834:68;;;;-1:-1:-1;;;5834:68:0;;15889:2:1;5834:68:0;;;15871:21:1;15928:2;15908:18;;;15901:30;15967:34;15947:18;;;15940:62;-1:-1:-1;;;16018:18:1;;;16011:32;16060:19;;5834:68:0;15687:398:1;5834:68:0;-1:-1:-1;;;;;5915:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5967:32;;1679:25:1;;;5967:32:0;;1652:18:1;5967:32:0;;;;;;;;5670:337;;;:::o;6709:2677::-;-1:-1:-1;;;;;6797:18:0;;6789:68;;;;-1:-1:-1;;;6789:68:0;;16292:2:1;6789:68:0;;;16274:21:1;16331:2;16311:18;;;16304:30;16370:34;16350:18;;;16343:62;-1:-1:-1;;;16421:18:1;;;16414:35;16466:19;;6789:68:0;16090:401:1;6789:68:0;-1:-1:-1;;;;;6876:16:0;;6868:64;;;;-1:-1:-1;;;6868:64:0;;16698:2:1;6868:64:0;;;16680:21:1;16737:2;16717:18;;;16710:30;16776:34;16756:18;;;16749:62;-1:-1:-1;;;16827:18:1;;;16820:33;16870:19;;6868:64:0;16496:399:1;6868:64:0;6960:1;6951:6;:10;6943:64;;;;-1:-1:-1;;;6943:64:0;;17102:2:1;6943:64:0;;;17084:21:1;17141:2;17121:18;;;17114:30;17180:34;17160:18;;;17153:62;-1:-1:-1;;;17231:18:1;;;17224:39;17280:19;;6943:64:0;16900:405:1;6943:64:0;7025:8;;-1:-1:-1;;;7025:8:0;;;;7024:9;:72;;;;-1:-1:-1;403:7:0;430:6;-1:-1:-1;;;;;7038:15:0;;;430:6;;7038:15;;;;:40;;-1:-1:-1;;;;;;7057:21:0;;7073:4;7057:21;;7038:40;:57;;;;-1:-1:-1;403:7:0;430:6;-1:-1:-1;;;;;7082:13:0;;;430:6;;7082:13;;7038:57;7020:134;;;7113:29;;-1:-1:-1;;;7113:29:0;;17512:2:1;7113:29:0;;;17494:21:1;17551:2;17531:18;;;17524:30;-1:-1:-1;;;17570:18:1;;;17563:49;17629:18;;7113:29:0;17310:343:1;7020:134:0;7170:14;;-1:-1:-1;;;7170:14:0;;;;7166:830;;;403:7;430:6;-1:-1:-1;;;;;7205:15:0;;;430:6;;7205:15;;;;:32;;-1:-1:-1;403:7:0;430:6;-1:-1:-1;;;;;7224:13:0;;;430:6;;7224:13;;7205:32;:52;;;;-1:-1:-1;;;;;;7241:16:0;;;;7205:52;:77;;;;-1:-1:-1;;;;;;7261:21:0;;7275:6;7261:21;;7205:77;:90;;;;-1:-1:-1;7287:8:0;;-1:-1:-1;;;7287:8:0;;;;7286:9;7205:90;7201:784;;;-1:-1:-1;;;;;7320:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;7356:35:0;;;;;;:31;:35;;;;;;;;7355:36;7320:71;7316:654;;;7434:20;;7424:6;:30;;7416:80;;;;-1:-1:-1;;;7416:80:0;;17860:2:1;7416:80:0;;;17842:21:1;17899:2;17879:18;;;17872:30;17938:34;17918:18;;;17911:62;-1:-1:-1;;;17989:18:1;;;17982:35;18034:19;;7416:80:0;17658:401:1;7416:80:0;7553:9;;-1:-1:-1;;;;;5334:18:0;;5307:7;5334:18;;;:9;:18;;;;;;7527:22;;:6;:22;:::i;:::-;:35;;7519:67;;;;-1:-1:-1;;;7519:67:0;;18266:2:1;7519:67:0;;;18248:21:1;18305:2;18285:18;;;18278:30;-1:-1:-1;;;18324:18:1;;;18317:49;18383:18;;7519:67:0;18064:343:1;7519:67:0;7316:654;;;-1:-1:-1;;;;;7616:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;7650:37:0;;;;;;:31;:37;;;;;;;;7649:38;7616:71;7612:358;;;7730:20;;7720:6;:30;;7712:80;;;;-1:-1:-1;;;7712:80:0;;18614:2:1;7712:80:0;;;18596:21:1;18653:2;18633:18;;;18626:30;18692:34;18672:18;;;18665:62;-1:-1:-1;;;18743:18:1;;;18736:36;18789:19;;7712:80:0;18412:402:1;7612:358:0;-1:-1:-1;;;;;7823:35:0;;;;;;:31;:35;;;;;;;;7818:152;;7917:9;;-1:-1:-1;;;;;5334:18:0;;5307:7;5334:18;;;:9;:18;;;;;;7891:22;;:6;:22;:::i;:::-;:35;;7883:67;;;;-1:-1:-1;;;7883:67:0;;18266:2:1;7883:67:0;;;18248:21:1;18305:2;18285:18;;;18278:30;-1:-1:-1;;;18324:18:1;;;18317:49;18383:18;;7883:67:0;18064:343:1;7883:67:0;8051:18;;8041:4;8008:12;5334:18;;;:9;:18;;;;;;-1:-1:-1;8023:46:0;;;;;8086:20;;-1:-1:-1;8098:8:0;;-1:-1:-1;;;8098:8:0;;;;8097:9;8086:20;:56;;;;-1:-1:-1;;;;;;8111:31:0;;;;;;:25;:31;;;;;;;;8110:32;8086:56;:86;;;;-1:-1:-1;;;;;;8147:25:0;;;;;;:19;:25;;;;;;;;8146:26;8086:86;:114;;;;-1:-1:-1;;;;;;8177:23:0;;;;;;:19;:23;;;;;;;;8176:24;8086:114;8082:218;;;8217:8;:15;;-1:-1:-1;;;;8217:15:0;-1:-1:-1;;;8217:15:0;;;8247:10;:8;:10::i;:::-;8272:8;:16;;-1:-1:-1;;;;8272:16:0;;;8082:218;8328:8;;-1:-1:-1;;;;;8353:25:0;;8312:12;8353:25;;;:19;:25;;;;;;8328:8;-1:-1:-1;;;8328:8:0;;;;;8327:9;;8353:25;;:52;;-1:-1:-1;;;;;;8382:23:0;;;;;;:19;:23;;;;;;;;8353:52;8349:100;;;-1:-1:-1;8432:5:0;8349:100;-1:-1:-1;;;;;8485:15:0;;8461:21;8485:15;;;:9;:15;;;;;;8519:23;;;;8511:74;;;;-1:-1:-1;;;8511:74:0;;;;;;;:::i;:::-;8598:12;8629:7;8625:602;;;-1:-1:-1;;;;;8657:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;8690:13:0;;-1:-1:-1;;;8690:13:0;;;;:17;;8657:50;8653:264;;;8745:13;;8762:4;;8736:22;;-1:-1:-1;;;8745:13:0;;;;8736:6;:22;:::i;:::-;8735:31;;;;:::i;:::-;8728:38;;8653:264;;;-1:-1:-1;;;;;8792:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;8827:12:0;;-1:-1:-1;;;8827:12:0;;;;:16;;8792:51;8788:129;;;8881:12;;8897:4;;8872:21;;-1:-1:-1;;;8881:12:0;;;;8872:6;:21;:::i;:::-;8871:30;;;;:::i;:::-;8864:37;;8788:129;8937:8;;8933:283;;-1:-1:-1;;;;;9044:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;9108:4;9090:24;;;;;;;:32;;;;;;9165:35;1679:25:1;;;9008:13:0;;;;;9108:4;;9044:15;-1:-1:-1;;;;;;;;;;;9165:35:0;1652:18:1;9165:35:0;;;;;;;8933:283;-1:-1:-1;;;;;9262:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;9302:13;;;;;;;;;;:23;;;;;;9352:26;;-1:-1:-1;;;;;;;;;;;9352:26:0;;;9281:6;1679:25:1;;1667:2;1652:18;;1533:177;9352:26:0;;;;;;;;6778:2608;;;;6709:2677;;;:::o;9483:468::-;-1:-1:-1;;;;;9567:21:0;;9559:67;;;;-1:-1:-1;;;9559:67:0;;19021:2:1;9559:67:0;;;19003:21:1;19060:2;19040:18;;;19033:30;19099:34;19079:18;;;19072:62;-1:-1:-1;;;19150:18:1;;;19143:31;19191:19;;9559:67:0;18819:397:1;9559:67:0;-1:-1:-1;;;;;9664:18:0;;9639:22;9664:18;;;:9;:18;;;;;;9701:24;;;;9693:71;;;;-1:-1:-1;;;9693:71:0;;19423:2:1;9693:71:0;;;19405:21:1;19462:2;19442:18;;;19435:30;19501:34;19481:18;;;19474:62;-1:-1:-1;;;19552:18:1;;;19545:32;19594:19;;9693:71:0;19221:398:1;9693:71:0;-1:-1:-1;;;;;9800:18:0;;;;;;:9;:18;;;;;9821:23;;;9800:44;;9866:12;:22;;9838:6;;9800:18;9866:22;;9838:6;;9866:22;:::i;:::-;;;;-1:-1:-1;;9906:37:0;;1679:25:1;;;9932:1:0;;-1:-1:-1;;;;;9906:37:0;;;-1:-1:-1;;;;;;;;;;;9906:37:0;1667:2:1;1652:18;9906:37:0;1533:177:1;702:320:0;833:59;;;-1:-1:-1;;;;;19816:32:1;;;833:59:0;;;19798:51:1;19865:18;;;;19858:34;;;833:59:0;;;;;;;;;;19771:18:1;;;;833:59:0;;;;;;;-1:-1:-1;;;;;833:59:0;-1:-1:-1;;;833:59:0;;;822:71;;-1:-1:-1;;;;822:10:0;;;;:71;;833:59;822:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;786:107;;;;912:7;:57;;;;-1:-1:-1;924:11:0;;:16;;:44;;;955:4;944:24;;;;;;;;;;;;:::i;:::-;904:110;;;;-1:-1:-1;;;904:110:0;;20647:2:1;904:110:0;;;20629:21:1;20686:2;20666:18;;;20659:30;20725:34;20705:18;;;20698:62;-1:-1:-1;;;20776:18:1;;;20769:38;20824:19;;904:110:0;20445:404:1;904:110:0;775:247;;702:320;;;:::o;14236:1149::-;14299:18;;14275:21;14384:23;14299:18;14405:2;14384:23;:::i;:::-;14375:4;5307:7;5334:18;;;:9;:18;;;;;;14357:50;14353:122;;;14440:18;;:23;;14461:2;14440:23;:::i;:::-;14424:39;;14353:122;14511:16;;;14525:1;14511:16;;;;;;;;14487:21;;14511:16;;;;;;;;;;-1:-1:-1;14511:16:0;14487:40;;14556:4;14538;14543:1;14538:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14538:23:0;;;-1:-1:-1;;;;;14538:23:0;;;;;2547:42;14572:4;14577:1;14572:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14572:14:0;;;:7;;;;;;;;;;;:14;14599:122;;-1:-1:-1;;;14599:122:0;;3547:42;;14599:66;;:122;;14666:13;;14681:1;;14684:4;;14698;;14705:15;;14599:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14755:21:0;;-1:-1:-1;;14791:14:0;;;-1:-1:-1;14787:591:0;;14856:6;;14822:17;;14866:3;;14843:19;;-1:-1:-1;;;14856:6:0;;;;14843:10;:19;:::i;:::-;14842:27;;;;:::i;:::-;14925:13;;14822:47;;-1:-1:-1;14884:24:0;;14942:3;;14912:26;;-1:-1:-1;;;14925:13:0;;;;14912:10;:26;:::i;:::-;14911:34;;;;:::i;:::-;14884:61;-1:-1:-1;14960:22:0;14884:61;14985:22;14998:9;14985:10;:22;:::i;:::-;:41;;;;:::i;:::-;15065:16;;15057:59;;14960:66;;-1:-1:-1;;;;;;15065:16:0;;15095;;15057:59;;;;15095:16;15065;15057:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15153:10:0;;15145:51;;15043:73;;-1:-1:-1;;;;;;15153:10:0;;15177:14;;15145:51;;;;15177:14;15153:10;15145:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15233:9:0;;15225:45;;15131:65;;-1:-1:-1;;;;;;15233:9:0;;15256;;15225:45;;;;15256:9;15233;15225:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15292:74:0;;;22070:25:1;;;22126:2;22111:18;;22104:34;;;22154:18;;;22147:34;;;22212:2;22197:18;;22190:34;;;15211:59:0;;-1:-1:-1;15292:74:0;;22057:3:1;22042:19;15292:74:0;;;;;;;14807:571;;;14787:591;14264:1121;;;;14236:1149::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1715:328::-;1792:6;1800;1808;1861:2;1849:9;1840:7;1836:23;1832:32;1829:52;;;1877:1;1874;1867:12;1829:52;1900:29;1919:9;1900:29;:::i;:::-;1890:39;;1948:38;1982:2;1971:9;1967:18;1948:38;:::i;:::-;1938:48;;2033:2;2022:9;2018:18;2005:32;1995:42;;1715:328;;;;;:::o;2048:180::-;2107:6;2160:2;2148:9;2139:7;2135:23;2131:32;2128:52;;;2176:1;2173;2166:12;2128:52;-1:-1:-1;2199:23:1;;2048:180;-1:-1:-1;2048:180:1:o;2233:118::-;2319:5;2312:13;2305:21;2298:5;2295:32;2285:60;;2341:1;2338;2331:12;2356:241;2412:6;2465:2;2453:9;2444:7;2440:23;2436:32;2433:52;;;2481:1;2478;2471:12;2433:52;2520:9;2507:23;2539:28;2561:5;2539:28;:::i;:::-;2586:5;2356:241;-1:-1:-1;;;2356:241:1:o;2791:156::-;2857:20;;2917:4;2906:16;;2896:27;;2886:55;;2937:1;2934;2927:12;2952:322;3023:6;3031;3039;3092:2;3080:9;3071:7;3067:23;3063:32;3060:52;;;3108:1;3105;3098:12;3060:52;3131:27;3148:9;3131:27;:::i;:::-;3121:37;;3177:36;3209:2;3198:9;3194:18;3177:36;:::i;:::-;3167:46;;3232:36;3264:2;3253:9;3249:18;3232:36;:::i;:::-;3222:46;;2952:322;;;;;:::o;3279:186::-;3338:6;3391:2;3379:9;3370:7;3366:23;3362:32;3359:52;;;3407:1;3404;3397:12;3359:52;3430:29;3449:9;3430:29;:::i;3678:252::-;3742:6;3750;3803:2;3791:9;3782:7;3778:23;3774:32;3771:52;;;3819:1;3816;3809:12;3771:52;3842:27;3859:9;3842:27;:::i;:::-;3832:37;;3888:36;3920:2;3909:9;3905:18;3888:36;:::i;:::-;3878:46;;3678:252;;;;;:::o;3935:315::-;4000:6;4008;4061:2;4049:9;4040:7;4036:23;4032:32;4029:52;;;4077:1;4074;4067:12;4029:52;4100:29;4119:9;4100:29;:::i;:::-;4090:39;;4179:2;4168:9;4164:18;4151:32;4192:28;4214:5;4192:28;:::i;:::-;4239:5;4229:15;;;3935:315;;;;;:::o;4255:260::-;4323:6;4331;4384:2;4372:9;4363:7;4359:23;4355:32;4352:52;;;4400:1;4397;4390:12;4352:52;4423:29;4442:9;4423:29;:::i;:::-;4413:39;;4471:38;4505:2;4494:9;4490:18;4471:38;:::i;4520:127::-;4581:10;4576:3;4572:20;4569:1;4562:31;4612:4;4609:1;4602:15;4636:4;4633:1;4626:15;4652:275;4723:2;4717:9;4788:2;4769:13;;-1:-1:-1;;4765:27:1;4753:40;;4823:18;4808:34;;4844:22;;;4805:62;4802:88;;;4870:18;;:::i;:::-;4906:2;4899:22;4652:275;;-1:-1:-1;4652:275:1:o;4932:183::-;4992:4;5025:18;5017:6;5014:30;5011:56;;;5047:18;;:::i;:::-;-1:-1:-1;5092:1:1;5088:14;5104:4;5084:25;;4932:183::o;5120:662::-;5174:5;5227:3;5220:4;5212:6;5208:17;5204:27;5194:55;;5245:1;5242;5235:12;5194:55;5281:6;5268:20;5307:4;5331:60;5347:43;5387:2;5347:43;:::i;:::-;5331:60;:::i;:::-;5425:15;;;5511:1;5507:10;;;;5495:23;;5491:32;;;5456:12;;;;5535:15;;;5532:35;;;5563:1;5560;5553:12;5532:35;5599:2;5591:6;5587:15;5611:142;5627:6;5622:3;5619:15;5611:142;;;5693:17;;5681:30;;5731:12;;;;5644;;5611:142;;;-1:-1:-1;5771:5:1;5120:662;-1:-1:-1;;;;;;5120:662:1:o;5787:1146::-;5905:6;5913;5966:2;5954:9;5945:7;5941:23;5937:32;5934:52;;;5982:1;5979;5972:12;5934:52;6022:9;6009:23;6051:18;6092:2;6084:6;6081:14;6078:34;;;6108:1;6105;6098:12;6078:34;6146:6;6135:9;6131:22;6121:32;;6191:7;6184:4;6180:2;6176:13;6172:27;6162:55;;6213:1;6210;6203:12;6162:55;6249:2;6236:16;6271:4;6295:60;6311:43;6351:2;6311:43;:::i;6295:60::-;6389:15;;;6471:1;6467:10;;;;6459:19;;6455:28;;;6420:12;;;;6495:19;;;6492:39;;;6527:1;6524;6517:12;6492:39;6551:11;;;;6571:148;6587:6;6582:3;6579:15;6571:148;;;6653:23;6672:3;6653:23;:::i;:::-;6641:36;;6604:12;;;;6697;;;;6571:148;;;6738:5;-1:-1:-1;;6781:18:1;;6768:32;;-1:-1:-1;;6812:16:1;;;6809:36;;;6841:1;6838;6831:12;6809:36;;6864:63;6919:7;6908:8;6897:9;6893:24;6864:63;:::i;:::-;6854:73;;;5787:1146;;;;;:::o;7347:356::-;7549:2;7531:21;;;7568:18;;;7561:30;7627:34;7622:2;7607:18;;7600:62;7694:2;7679:18;;7347:356::o;7708:127::-;7769:10;7764:3;7760:20;7757:1;7750:31;7800:4;7797:1;7790:15;7824:4;7821:1;7814:15;7840:168;7913:9;;;7944;;7961:15;;;7955:22;;7941:37;7931:71;;7982:18;;:::i;8013:217::-;8053:1;8079;8069:132;;8123:10;8118:3;8114:20;8111:1;8104:31;8158:4;8155:1;8148:15;8186:4;8183:1;8176:15;8069:132;-1:-1:-1;8215:9:1;;8013:217::o;8641:148::-;8729:4;8708:12;;;8722;;;8704:31;;8747:13;;8744:39;;;8763:18;;:::i;9200:346::-;9402:2;9384:21;;;9441:2;9421:18;;;9414:30;-1:-1:-1;;;9475:2:1;9460:18;;9453:52;9537:2;9522:18;;9200:346::o;11983:184::-;12053:6;12106:2;12094:9;12085:7;12081:23;12077:32;12074:52;;;12122:1;12119;12112:12;12074:52;-1:-1:-1;12145:16:1;;11983:184;-1:-1:-1;11983:184:1:o;13129:306::-;13217:6;13225;13233;13286:2;13274:9;13265:7;13261:23;13257:32;13254:52;;;13302:1;13299;13292:12;13254:52;13331:9;13325:16;13315:26;;13381:2;13370:9;13366:18;13360:25;13350:35;;13425:2;13414:9;13410:18;13404:25;13394:35;;13129:306;;;;;:::o;14340:127::-;14401:10;14396:3;14392:20;14389:1;14382:31;14432:4;14429:1;14422:15;14456:4;14453:1;14446:15;14472:402;14674:2;14656:21;;;14713:2;14693:18;;;14686:30;14752:34;14747:2;14732:18;;14725:62;-1:-1:-1;;;14818:2:1;14803:18;;14796:36;14864:3;14849:19;;14472:402::o;14879:125::-;14944:9;;;14965:10;;;14962:36;;;14978:18;;:::i;15009:128::-;15076:9;;;15097:11;;;15094:37;;;15111:18;;:::i;15142:135::-;15181:3;15202:17;;;15199:43;;15222:18;;:::i;:::-;-1:-1:-1;15269:1:1;15258:13;;15142:135::o;19903:287::-;20032:3;20070:6;20064:13;20086:66;20145:6;20140:3;20133:4;20125:6;20121:17;20086:66;:::i;:::-;20168:16;;;;;19903:287;-1:-1:-1;;19903:287:1:o;20195:245::-;20262:6;20315:2;20303:9;20294:7;20290:23;20286:32;20283:52;;;20331:1;20328;20321:12;20283:52;20363:9;20357:16;20382:28;20404:5;20382:28;:::i;20854:980::-;21116:4;21164:3;21153:9;21149:19;21195:6;21184:9;21177:25;21221:2;21259:6;21254:2;21243:9;21239:18;21232:34;21302:3;21297:2;21286:9;21282:18;21275:31;21326:6;21361;21355:13;21392:6;21384;21377:22;21430:3;21419:9;21415:19;21408:26;;21469:2;21461:6;21457:15;21443:29;;21490:1;21500:195;21514:6;21511:1;21508:13;21500:195;;;21579:13;;-1:-1:-1;;;;;21575:39:1;21563:52;;21670:15;;;;21635:12;;;;21611:1;21529:9;21500:195;;;-1:-1:-1;;;;;;;21751:32:1;;;;21746:2;21731:18;;21724:60;-1:-1:-1;;;21815:3:1;21800:19;21793:35;21712:3;20854:980;-1:-1:-1;;;20854:980:1:o

Swarm Source

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