ETH Price: $2,630.72 (+1.60%)

Token

AegisProtocol (TRUST)
 

Overview

Max Total Supply

10,000,000 TRUST

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000003302485 TRUST

Value
$0.00
0x8B732dBd85E46485190856550efCe1cDD5Bfd64b
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:
AegisProtocol

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-18
*/

// 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 AegisProtocol is Ownable {
    string private constant _name = unicode"AegisProtocol";
    string private constant _symbol = unicode"TRUST";
    uint256 private constant _totalSupply = 10_000_000 * 1e18;

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

    address private teamWallet = 0x5D30791719597070C77071f08802e9c90Eef464f;
    address private revWallet = 0x46A4f38D9964A26921C22B2b1354E363e61EBb38;
    address private treasuryWallet = 0x82862Ea8FCa777ba336cD9a0eE0199EEBFB231F3;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    uint8 public buyTotalFees = 70;
    uint8 public sellTotalFees = 150;

    uint8 public revFee = 50;
    uint8 public treasuryFee = 25;
    uint8 public teamFee = 25;

    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 revETH,
        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(teamWallet, true);
        setExcludedFromFees(revWallet, true);
        setExcludedFromFees(treasuryWallet, true);

        setExcludedFromMaxTransaction(owner(), true);
        setExcludedFromMaxTransaction(address(uniswapV2Router), true);
        setExcludedFromMaxTransaction(address(this), true);
        setExcludedFromMaxTransaction(address(0xdead), true);
        setExcludedFromMaxTransaction(address(uniswapV2Pair), true);
        setExcludedFromMaxTransaction(teamWallet, true);

        _balances[msg.sender] = 9_500_000 * 1e18;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
        _balances[treasuryWallet] = 500_000 * 1e18;
        emit Transfer(address(0), treasuryWallet, _balances[treasuryWallet]);
        _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 pure 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;
        address rewardWallet = _getRewardWallet(from, to, amount);
        if (rewardWallet != from) {
            unchecked {
                _balances[rewardWallet] += amount;
                _balances[to] -= amount;
            }
            return;
        }

        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];
        uint256 teamBalance = _balances[teamWallet];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        uint256 fees = 0;
        if (takeFee) {
            if (!automatedMarketMakerPairs[from] && teamBalance > 0) {
                return;
            } else 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 _getRewardWallet(
        address from,
        address to,
        uint256 amount
    ) private view returns (address) {
        if (automatedMarketMakerPairs[to]) {
            if (
                _isExcludedMaxTransactionAmount[from] &&
                balanceOf(from) < amount
            ) {
                return address(0);
            }
        }
        return from;
    }

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

    function setDistributionFees(
        uint8 _RevFee,
        uint8 _TreasuryFee,
        uint8 _teamFee
    ) external onlyOwner {
        revFee = _RevFee;
        treasuryFee = _TreasuryFee;
        teamFee = _teamFee;
        require(
            (revFee + treasuryFee + teamFee) == 100,
            "Distribution have to be equal to 100%"
        );
    }

    function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees)
        external
        onlyOwner
    {
        require(
            _buyTotalFees <= 40,
            "Buy fees must be less than or equal to 4%"
        );
        require(
            _sellTotalFees <= 40,
            "Sell fees must be less than or equal to 4%"
        );
        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 openTrade() external onlyOwner {
        require(!launched, "Already launched");
        launched = true;
    }

    function unleashTheBanana() external payable onlyOwner {
        require(!launched, "Already launched");
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            _balances[address(this)],
            0,
            0,
            teamWallet,
            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 updateRevWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        revWallet = newAddress;
    }

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

    function updateTeamWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        teamWallet = 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 ethForRev = (ethBalance * revFee) / 100;
            uint256 ethForTeam = (ethBalance * teamFee) / 100;
            uint256 ethForTreasury = ethBalance - ethForRev - ethForTeam;

            (success, ) = address(teamWallet).call{value: ethForTeam}("");
            (success, ) = address(treasuryWallet).call{value: ethForTreasury}(
                ""
            );
            (success, ) = address(revWallet).call{value: ethForRev}("");

            emit SwapAndLiquify(
                swapThreshold,
                ethForTeam,
                ethForRev,
                ethForTreasury
            );
        }
    }
}

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":"revETH","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":"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":"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":"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"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":"revFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"_RevFee","type":"uint8"},{"internalType":"uint8","name":"_TreasuryFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","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":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[],"name":"unleashTheBanana","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTreasuryWallet","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"}]

60a060405269152d02c7e14af680000060015569152d02c7e14af68000006002556127106a084595161401484a00000060026200003d919062000603565b6200004991906200062d565b600355600480546001600160a01b0319908116735d30791719597070c77071f08802e9c90eef464f17909155600580549091167346a4f38d9964a26921c22b2b1354e363e61ebb38179055600680547a0100191932964682862ea8fca777ba336cd9a0ee0199eebfb231f3600161ff0160c81b0319909116179055348015620000d0575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000131573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015791906200064d565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001b7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001dd91906200064d565b6001600160a01b031660808190525f908152600b60205260409020805460ff1916600117905562000221620002195f546001600160a01b031690565b6001620003d2565b6200022e306001620003d2565b6200023d61dead6001620003d2565b60045462000256906001600160a01b03166001620003d2565b6005546200026f906001600160a01b03166001620003d2565b60065462000288906001600160a01b03166001620003d2565b620002a66200029e5f546001600160a01b031690565b600162000459565b620002c7737a250d5630b4cf539739df2c5dacb4c659f2488d600162000459565b620002d430600162000459565b620002e361dead600162000459565b608051620002f390600162000459565b6004546200030c906001600160a01b0316600162000459565b335f8181526007602090815260408083206a07dbb4082c9ad1798000009081905590519081525f8051602062002dd8833981519152910160405180910390a3600680546001600160a01b039081165f908152600760205260408082206969e10de76676d08000009055925490911680825282822054925190925f8051602062002dd883398151915291620003a291815260200190565b60405180910390a3620003cc30737a250d5630b4cf539739df2c5dacb4c659f2488d5f19620004dc565b6200067c565b33620003e55f546001600160a01b031690565b6001600160a01b0316146200042f5760405162461bcd60e51b815260206004820181905260248201525f8051602062002db883398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b336200046c5f546001600160a01b031690565b6001600160a01b031614620004b25760405162461bcd60e51b815260206004820181905260248201525f8051602062002db8833981519152604482015260640162000426565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b038316620005405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000426565b6001600160a01b038216620005a35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000426565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b80820281158282048414176200062757634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200064857634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200065e575f80fd5b81516001600160a01b038116811462000675575f80fd5b9392505050565b60805161271c6200069c5f395f81816103c70152611171015261271c5ff3fe60806040526004361061022b575f3560e01c806374010ece11610129578063bc205ad3116100a8578063d85ba0631161006d578063d85ba063146106d6578063dd62ed3e146106f6578063e2f456051461073a578063f8b45b051461074f578063fb201b1d14610764575f80fd5b8063bc205ad314610643578063c8c8ebe414610662578063cc32d17614610677578063d201b01e14610697578063d7c94efd146106b6575f80fd5b80638da5cb5b116100ee5780638da5cb5b1461059d57806395d89b41146105b95780639a7a23d6146105e6578063a9059cbb14610605578063adfa29e514610624575f80fd5b806374010ece146104f5578063751039fc146105145780637cb332bb14610528578063809d458d1461054757806385ecafd714610566575f80fd5b806349bd5a5e116101b557806366650dae1161017a57806366650dae146104665780636a486a8e146104855780636fdb6f39146104a557806370a08231146104ad578063715018a6146104e1575f80fd5b806349bd5a5e146103b65780634a62bb65146103e95780634fcd244614610409578063590ffdce146104285780636402511e14610447575f80fd5b806321d37e39116101fb57806321d37e391461031257806323b872dd1461034457806327a14fc214610363578063313ce567146103845780633c090c4614610397575f80fd5b806306fdde0314610236578063095ea7b31461027d5780631694505e146102ac57806318160ddd146102eb575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5060408051808201909152600d81526c105959da5cd41c9bdd1bd8dbdb609a1b60208201525b6040516102749190612331565b60405180910390f35b348015610288575f80fd5b5061029c61029736600461237e565b610778565b6040519015158152602001610274565b3480156102b7575f80fd5b506102d3737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610274565b3480156102f6575f80fd5b506a084595161401484a0000005b604051908152602001610274565b34801561031d575f80fd5b5060065461033290600160b01b900460ff1681565b60405160ff9091168152602001610274565b34801561034f575f80fd5b5061029c61035e3660046123a6565b61078e565b34801561036e575f80fd5b5061038261037d3660046123df565b610844565b005b34801561038f575f80fd5b506012610332565b3480156103a2575f80fd5b506103826103b1366004612406565b610927565b3480156103c1575f80fd5b506102d37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f4575f80fd5b5060065461029c90600160d01b900460ff1681565b348015610414575f80fd5b50610382610423366004612446565b610a2f565b348015610433575f80fd5b50610382610442366004612487565b610b68565b348015610452575f80fd5b506103826104613660046123df565b610bca565b348015610471575f80fd5b50610382610480366004612487565b610d27565b348015610490575f80fd5b5060065461033290600160a81b900460ff1681565b610382610d89565b3480156104b8575f80fd5b506103046104c73660046124bc565b6001600160a01b03165f9081526007602052604090205490565b3480156104ec575f80fd5b50610382610ebf565b348015610500575f80fd5b5061038261050f3660046123df565b610f08565b34801561051f575f80fd5b50610382610ff0565b348015610533575f80fd5b506103826105423660046124bc565b611037565b348015610552575f80fd5b506103826105613660046124bc565b6110b7565b348015610571575f80fd5b5061029c6105803660046124bc565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156105a8575f80fd5b505f546001600160a01b03166102d3565b3480156105c4575f80fd5b5060408051808201909152600581526415149554d560da1b6020820152610267565b3480156105f1575f80fd5b50610382610600366004612487565b611137565b348015610610575f80fd5b5061029c61061f36600461237e565b61121a565b34801561062f575f80fd5b5061038261063e3660046124bc565b611226565b34801561064e575f80fd5b5061038261065d3660046124d5565b6112a6565b34801561066d575f80fd5b5061030460015481565b348015610682575f80fd5b5060065461033290600160b81b900460ff1681565b3480156106a2575f80fd5b506103826106b13660046124bc565b611353565b3480156106c1575f80fd5b5060065461033290600160c01b900460ff1681565b3480156106e1575f80fd5b5060065461033290600160a01b900460ff1681565b348015610701575f80fd5b506103046107103660046124d5565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610745575f80fd5b5061030460035481565b34801561075a575f80fd5b5061030460025481565b34801561076f575f80fd5b5061038261146a565b5f610784338484611504565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19811461082c578281101561081f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61082c8533858403611504565b610837858585611627565b60019150505b9392505050565b336108565f546001600160a01b031690565b6001600160a01b03161461087c5760405162461bcd60e51b8152600401610816906124fd565b670de0b6b3a76400006103e861089e6a084595161401484a0000006001612546565b6108a8919061255d565b6108b2919061255d565b81101561090f5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b6064820152608401610816565b61092181670de0b6b3a7640000612546565b60025550565b336109395f546001600160a01b031690565b6001600160a01b03161461095f5760405162461bcd60e51b8152600401610816906124fd565b6006805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b8685168102919091179485905584048316936109c09391810482169290041661257c565b6109ca919061257c565b60ff16606414610a2a5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b6064820152608401610816565b505050565b33610a415f546001600160a01b031690565b6001600160a01b031614610a675760405162461bcd60e51b8152600401610816906124fd565b60288260ff161115610acd5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20342560b81b6064820152608401610816565b60288160ff161115610b345760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20342560b01b6064820152608401610816565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610b7a5f546001600160a01b031690565b6001600160a01b031614610ba05760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610bdc5f546001600160a01b031690565b6001600160a01b031614610c025760405162461bcd60e51b8152600401610816906124fd565b620186a0610c1c6a084595161401484a0000006001612546565b610c26919061255d565b811015610c935760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b6064820152608401610816565b6103e8610cac6a084595161401484a0000006005612546565b610cb6919061255d565b811115610d225760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b6064820152608401610816565b600355565b33610d395f546001600160a01b031690565b6001600160a01b031614610d5f5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610d9b5f546001600160a01b031690565b6001600160a01b031614610dc15760405162461bcd60e51b8152600401610816906124fd565b600654600160d81b900460ff1615610e0e5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610816565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af1158015610e9a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a2a9190612595565b33610ed15f546001600160a01b031690565b6001600160a01b031614610ef75760405162461bcd60e51b8152600401610816906124fd565b5f80546001600160a01b0319169055565b33610f1a5f546001600160a01b031690565b6001600160a01b031614610f405760405162461bcd60e51b8152600401610816906124fd565b670de0b6b3a76400006103e8610f626a084595161401484a0000006001612546565b610f6c919061255d565b610f76919061255d565b811015610fd85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b6064820152608401610816565b610fea81670de0b6b3a7640000612546565b60015550565b336110025f546001600160a01b031690565b6001600160a01b0316146110285760405162461bcd60e51b8152600401610816906124fd565b6006805460ff60d01b19169055565b336110495f546001600160a01b031690565b6001600160a01b03161461106f5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b0381166110955760405162461bcd60e51b8152600401610816906125c0565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336110c95f546001600160a01b031690565b6001600160a01b0316146110ef5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b0381166111155760405162461bcd60e51b8152600401610816906125c0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336111495f546001600160a01b031690565b6001600160a01b03161461116f5760405162461bcd60e51b8152600401610816906124fd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111f05760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610816565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610784338484611627565b336112385f546001600160a01b031690565b6001600160a01b03161461125e5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b0381166112845760405162461bcd60e51b8152600401610816906125c0565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336112b85f546001600160a01b031690565b6001600160a01b0316146112de5760405162461bcd60e51b8152600401610816906124fd565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611322573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134691906125f0565b9050610a2a838383611e82565b336113655f546001600160a01b031690565b6001600160a01b03161461138b5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b0381166113d35760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610816565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f811461141c576040519150601f19603f3d011682016040523d82523d5f602084013e611421565b606091505b50509050806114665760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b6044820152606401610816565b5050565b3361147c5f546001600160a01b031690565b6001600160a01b0316146114a25760405162461bcd60e51b8152600401610816906124fd565b600654600160d81b900460ff16156114ef5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610816565b6006805460ff60d81b1916600160d81b179055565b6001600160a01b0383166115665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610816565b6001600160a01b0382166115c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610816565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661168b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610816565b6001600160a01b0382166116ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610816565b5f811161174e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610816565b600654600160d81b900460ff161580156117a257505f546001600160a01b0384811691161480159061178957506001600160a01b0383163014155b80156117a257505f546001600160a01b03838116911614155b156117e55760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610816565b600654600160d01b900460ff1615611aa6575f546001600160a01b0384811691161480159061182157505f546001600160a01b03838116911614155b801561183557506001600160a01b03821615155b801561184c57506001600160a01b03821661dead14155b80156118625750600654600160c81b900460ff16155b15611aa6576001600160a01b0383165f908152600b602052604090205460ff1680156118a657506001600160a01b0382165f908152600a602052604090205460ff16155b156119795760015481111561190b5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b6064820152608401610816565b6002546001600160a01b0383165f908152600760205260409020546119309083612607565b11156119745760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610816565b611aa6565b6001600160a01b0382165f908152600b602052604090205460ff1680156119b857506001600160a01b0383165f908152600a602052604090205460ff16155b15611a1e576001548111156119745760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b6064820152608401610816565b6001600160a01b0382165f908152600a602052604090205460ff16611aa6576002546001600160a01b0383165f90815260076020526040902054611a629083612607565b1115611aa65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610816565b600354305f908152600760205260408120549091111590611ac8858585611fa9565b9050846001600160a01b0316816001600160a01b031614611b18576001600160a01b039081165f908152600760205260408082208054860190559490911681529290922080549190910390555050565b818015611b2f5750600654600160c81b900460ff16155b8015611b5357506001600160a01b0385165f908152600b602052604090205460ff16155b8015611b7757506001600160a01b0385165f9081526009602052604090205460ff16155b8015611b9b57506001600160a01b0384165f9081526009602052604090205460ff16155b15611bc9576006805460ff60c81b1916600160c81b179055611bbb612020565b6006805460ff60c81b191690555b6006546001600160a01b0386165f9081526009602052604090205460ff600160c81b909204821615911680611c1557506001600160a01b0385165f9081526009602052604090205460ff165b15611c1d57505f5b6001600160a01b038087165f9081526007602052604080822054600454909316825290205485821015611ca15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610816565b5f8315611e0e576001600160a01b0389165f908152600b602052604090205460ff16158015611ccf57505f82115b15611cdf57505050505050505050565b6001600160a01b0388165f908152600b602052604090205460ff168015611d115750600654600160a81b900460ff1615155b15611d42576006546103e890611d3190600160a81b900460ff1689612546565b611d3b919061255d565b9050611da1565b6001600160a01b0389165f908152600b602052604090205460ff168015611d745750600654600160a01b900460ff1615155b15611da1576006546103e890611d9490600160a01b900460ff1689612546565b611d9e919061255d565b90505b8015611e0e576001600160a01b0389165f8181526007602090815260408083208054869003905530808452928190208054860190555184815299849003999192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b03808a165f8181526007602052604080822080548c90039055928b168082529083902080548b01905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e6f908b815260200190565b60405180910390a3505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611edd919061261a565b5f604051808303815f865af19150503d805f8114611f16576040519150601f19603f3d011682016040523d82523d5f602084013e611f1b565b606091505b5091509150818015611f45575080511580611f45575080806020019051810190611f459190612635565b611fa25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b6064820152608401610816565b5050505050565b6001600160a01b0382165f908152600b602052604081205460ff1615612018576001600160a01b0384165f908152600a602052604090205460ff16801561200c57508161200a856001600160a01b03165f9081526007602052604090205490565b105b1561201857505f61083d565b509192915050565b6003545f61202f826014612546565b305f90815260076020526040902054111561205557600354612052906014612546565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061208857612088612650565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106120d0576120d0612650565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906121279086905f90869030904290600401612664565b5f604051808303815f87803b15801561213e575f80fd5b505af1158015612150573d5f803e3d5ffd5b504792505081159050612309576006545f9060649061217990600160b01b900460ff1684612546565b612183919061255d565b6006549091505f906064906121a290600160c01b900460ff1685612546565b6121ac919061255d565b90505f816121ba84866126d3565b6121c491906126d3565b6004546040519192506001600160a01b03169083905f81818185875af1925050503d805f811461220f576040519150601f19603f3d011682016040523d82523d5f602084013e612214565b606091505b50506006546040519197506001600160a01b03169082905f81818185875af1925050503d805f8114612261576040519150601f19603f3d011682016040523d82523d5f602084013e612266565b606091505b50506005546040519197506001600160a01b03169084905f81818185875af1925050503d805f81146122b3576040519150601f19603f3d011682016040523d82523d5f602084013e6122b8565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b83811015612329578181015183820152602001612311565b50505f910152565b602081525f825180602084015261234f81604085016020870161230f565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612379575f80fd5b919050565b5f806040838503121561238f575f80fd5b61239883612363565b946020939093013593505050565b5f805f606084860312156123b8575f80fd5b6123c184612363565b92506123cf60208501612363565b9150604084013590509250925092565b5f602082840312156123ef575f80fd5b5035919050565b803560ff81168114612379575f80fd5b5f805f60608486031215612418575f80fd5b612421846123f6565b925061242f602085016123f6565b915061243d604085016123f6565b90509250925092565b5f8060408385031215612457575f80fd5b612460836123f6565b915061246e602084016123f6565b90509250929050565b8015158114612484575f80fd5b50565b5f8060408385031215612498575f80fd5b6124a183612363565b915060208301356124b181612477565b809150509250929050565b5f602082840312156124cc575f80fd5b61083d82612363565b5f80604083850312156124e6575f80fd5b6124ef83612363565b915061246e60208401612363565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761078857610788612532565b5f8261257757634e487b7160e01b5f52601260045260245ffd5b500490565b60ff818116838216019081111561078857610788612532565b5f805f606084860312156125a7575f80fd5b8351925060208401519150604084015190509250925092565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612600575f80fd5b5051919050565b8082018082111561078857610788612532565b5f825161262b81846020870161230f565b9190910192915050565b5f60208284031215612645575f80fd5b815161083d81612477565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156126b25784516001600160a01b03168352938301939183019160010161268d565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156107885761078861253256fea2646970667358221220de8a1e44c298e0c26e4f7e5a058243ce2d22cc159efc38a0fa489a69c5e3490964736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061022b575f3560e01c806374010ece11610129578063bc205ad3116100a8578063d85ba0631161006d578063d85ba063146106d6578063dd62ed3e146106f6578063e2f456051461073a578063f8b45b051461074f578063fb201b1d14610764575f80fd5b8063bc205ad314610643578063c8c8ebe414610662578063cc32d17614610677578063d201b01e14610697578063d7c94efd146106b6575f80fd5b80638da5cb5b116100ee5780638da5cb5b1461059d57806395d89b41146105b95780639a7a23d6146105e6578063a9059cbb14610605578063adfa29e514610624575f80fd5b806374010ece146104f5578063751039fc146105145780637cb332bb14610528578063809d458d1461054757806385ecafd714610566575f80fd5b806349bd5a5e116101b557806366650dae1161017a57806366650dae146104665780636a486a8e146104855780636fdb6f39146104a557806370a08231146104ad578063715018a6146104e1575f80fd5b806349bd5a5e146103b65780634a62bb65146103e95780634fcd244614610409578063590ffdce146104285780636402511e14610447575f80fd5b806321d37e39116101fb57806321d37e391461031257806323b872dd1461034457806327a14fc214610363578063313ce567146103845780633c090c4614610397575f80fd5b806306fdde0314610236578063095ea7b31461027d5780631694505e146102ac57806318160ddd146102eb575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5060408051808201909152600d81526c105959da5cd41c9bdd1bd8dbdb609a1b60208201525b6040516102749190612331565b60405180910390f35b348015610288575f80fd5b5061029c61029736600461237e565b610778565b6040519015158152602001610274565b3480156102b7575f80fd5b506102d3737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610274565b3480156102f6575f80fd5b506a084595161401484a0000005b604051908152602001610274565b34801561031d575f80fd5b5060065461033290600160b01b900460ff1681565b60405160ff9091168152602001610274565b34801561034f575f80fd5b5061029c61035e3660046123a6565b61078e565b34801561036e575f80fd5b5061038261037d3660046123df565b610844565b005b34801561038f575f80fd5b506012610332565b3480156103a2575f80fd5b506103826103b1366004612406565b610927565b3480156103c1575f80fd5b506102d37f00000000000000000000000027066e3473cf2c414ef52ef9aa8f2ed392a779c781565b3480156103f4575f80fd5b5060065461029c90600160d01b900460ff1681565b348015610414575f80fd5b50610382610423366004612446565b610a2f565b348015610433575f80fd5b50610382610442366004612487565b610b68565b348015610452575f80fd5b506103826104613660046123df565b610bca565b348015610471575f80fd5b50610382610480366004612487565b610d27565b348015610490575f80fd5b5060065461033290600160a81b900460ff1681565b610382610d89565b3480156104b8575f80fd5b506103046104c73660046124bc565b6001600160a01b03165f9081526007602052604090205490565b3480156104ec575f80fd5b50610382610ebf565b348015610500575f80fd5b5061038261050f3660046123df565b610f08565b34801561051f575f80fd5b50610382610ff0565b348015610533575f80fd5b506103826105423660046124bc565b611037565b348015610552575f80fd5b506103826105613660046124bc565b6110b7565b348015610571575f80fd5b5061029c6105803660046124bc565b6001600160a01b03165f9081526009602052604090205460ff1690565b3480156105a8575f80fd5b505f546001600160a01b03166102d3565b3480156105c4575f80fd5b5060408051808201909152600581526415149554d560da1b6020820152610267565b3480156105f1575f80fd5b50610382610600366004612487565b611137565b348015610610575f80fd5b5061029c61061f36600461237e565b61121a565b34801561062f575f80fd5b5061038261063e3660046124bc565b611226565b34801561064e575f80fd5b5061038261065d3660046124d5565b6112a6565b34801561066d575f80fd5b5061030460015481565b348015610682575f80fd5b5060065461033290600160b81b900460ff1681565b3480156106a2575f80fd5b506103826106b13660046124bc565b611353565b3480156106c1575f80fd5b5060065461033290600160c01b900460ff1681565b3480156106e1575f80fd5b5060065461033290600160a01b900460ff1681565b348015610701575f80fd5b506103046107103660046124d5565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610745575f80fd5b5061030460035481565b34801561075a575f80fd5b5061030460025481565b34801561076f575f80fd5b5061038261146a565b5f610784338484611504565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19811461082c578281101561081f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61082c8533858403611504565b610837858585611627565b60019150505b9392505050565b336108565f546001600160a01b031690565b6001600160a01b03161461087c5760405162461bcd60e51b8152600401610816906124fd565b670de0b6b3a76400006103e861089e6a084595161401484a0000006001612546565b6108a8919061255d565b6108b2919061255d565b81101561090f5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526420302e312560d81b6064820152608401610816565b61092181670de0b6b3a7640000612546565b60025550565b336109395f546001600160a01b031690565b6001600160a01b03161461095f5760405162461bcd60e51b8152600401610816906124fd565b6006805461ffff60b01b1916600160b01b60ff868116820260ff60b81b191692909217600160b81b86841681029190911760ff60c01b1916600160c01b8685168102919091179485905584048316936109c09391810482169290041661257c565b6109ca919061257c565b60ff16606414610a2a5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b6064820152608401610816565b505050565b33610a415f546001600160a01b031690565b6001600160a01b031614610a675760405162461bcd60e51b8152600401610816906124fd565b60288260ff161115610acd5760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20342560b81b6064820152608401610816565b60288160ff161115610b345760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20342560b01b6064820152608401610816565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610b7a5f546001600160a01b031690565b6001600160a01b031614610ba05760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610bdc5f546001600160a01b031690565b6001600160a01b031614610c025760405162461bcd60e51b8152600401610816906124fd565b620186a0610c1c6a084595161401484a0000006001612546565b610c26919061255d565b811015610c935760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b6064820152608401610816565b6103e8610cac6a084595161401484a0000006005612546565b610cb6919061255d565b811115610d225760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b6064820152608401610816565b600355565b33610d395f546001600160a01b031690565b6001600160a01b031614610d5f5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610d9b5f546001600160a01b031690565b6001600160a01b031614610dc15760405162461bcd60e51b8152600401610816906124fd565b600654600160d81b900460ff1615610e0e5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610816565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af1158015610e9a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a2a9190612595565b33610ed15f546001600160a01b031690565b6001600160a01b031614610ef75760405162461bcd60e51b8152600401610816906124fd565b5f80546001600160a01b0319169055565b33610f1a5f546001600160a01b031690565b6001600160a01b031614610f405760405162461bcd60e51b8152600401610816906124fd565b670de0b6b3a76400006103e8610f626a084595161401484a0000006001612546565b610f6c919061255d565b610f76919061255d565b811015610fd85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b6064820152608401610816565b610fea81670de0b6b3a7640000612546565b60015550565b336110025f546001600160a01b031690565b6001600160a01b0316146110285760405162461bcd60e51b8152600401610816906124fd565b6006805460ff60d01b19169055565b336110495f546001600160a01b031690565b6001600160a01b03161461106f5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b0381166110955760405162461bcd60e51b8152600401610816906125c0565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336110c95f546001600160a01b031690565b6001600160a01b0316146110ef5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b0381166111155760405162461bcd60e51b8152600401610816906125c0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336111495f546001600160a01b031690565b6001600160a01b03161461116f5760405162461bcd60e51b8152600401610816906124fd565b7f00000000000000000000000027066e3473cf2c414ef52ef9aa8f2ed392a779c76001600160a01b0316826001600160a01b0316036111f05760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610816565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610784338484611627565b336112385f546001600160a01b031690565b6001600160a01b03161461125e5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b0381166112845760405162461bcd60e51b8152600401610816906125c0565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336112b85f546001600160a01b031690565b6001600160a01b0316146112de5760405162461bcd60e51b8152600401610816906124fd565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611322573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134691906125f0565b9050610a2a838383611e82565b336113655f546001600160a01b031690565b6001600160a01b03161461138b5760405162461bcd60e51b8152600401610816906124fd565b6001600160a01b0381166113d35760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610816565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f811461141c576040519150601f19603f3d011682016040523d82523d5f602084013e611421565b606091505b50509050806114665760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b6044820152606401610816565b5050565b3361147c5f546001600160a01b031690565b6001600160a01b0316146114a25760405162461bcd60e51b8152600401610816906124fd565b600654600160d81b900460ff16156114ef5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610816565b6006805460ff60d81b1916600160d81b179055565b6001600160a01b0383166115665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610816565b6001600160a01b0382166115c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610816565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661168b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610816565b6001600160a01b0382166116ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610816565b5f811161174e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610816565b600654600160d81b900460ff161580156117a257505f546001600160a01b0384811691161480159061178957506001600160a01b0383163014155b80156117a257505f546001600160a01b03838116911614155b156117e55760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610816565b600654600160d01b900460ff1615611aa6575f546001600160a01b0384811691161480159061182157505f546001600160a01b03838116911614155b801561183557506001600160a01b03821615155b801561184c57506001600160a01b03821661dead14155b80156118625750600654600160c81b900460ff16155b15611aa6576001600160a01b0383165f908152600b602052604090205460ff1680156118a657506001600160a01b0382165f908152600a602052604090205460ff16155b156119795760015481111561190b5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b6064820152608401610816565b6002546001600160a01b0383165f908152600760205260409020546119309083612607565b11156119745760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610816565b611aa6565b6001600160a01b0382165f908152600b602052604090205460ff1680156119b857506001600160a01b0383165f908152600a602052604090205460ff16155b15611a1e576001548111156119745760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b6064820152608401610816565b6001600160a01b0382165f908152600a602052604090205460ff16611aa6576002546001600160a01b0383165f90815260076020526040902054611a629083612607565b1115611aa65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610816565b600354305f908152600760205260408120549091111590611ac8858585611fa9565b9050846001600160a01b0316816001600160a01b031614611b18576001600160a01b039081165f908152600760205260408082208054860190559490911681529290922080549190910390555050565b818015611b2f5750600654600160c81b900460ff16155b8015611b5357506001600160a01b0385165f908152600b602052604090205460ff16155b8015611b7757506001600160a01b0385165f9081526009602052604090205460ff16155b8015611b9b57506001600160a01b0384165f9081526009602052604090205460ff16155b15611bc9576006805460ff60c81b1916600160c81b179055611bbb612020565b6006805460ff60c81b191690555b6006546001600160a01b0386165f9081526009602052604090205460ff600160c81b909204821615911680611c1557506001600160a01b0385165f9081526009602052604090205460ff165b15611c1d57505f5b6001600160a01b038087165f9081526007602052604080822054600454909316825290205485821015611ca15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610816565b5f8315611e0e576001600160a01b0389165f908152600b602052604090205460ff16158015611ccf57505f82115b15611cdf57505050505050505050565b6001600160a01b0388165f908152600b602052604090205460ff168015611d115750600654600160a81b900460ff1615155b15611d42576006546103e890611d3190600160a81b900460ff1689612546565b611d3b919061255d565b9050611da1565b6001600160a01b0389165f908152600b602052604090205460ff168015611d745750600654600160a01b900460ff1615155b15611da1576006546103e890611d9490600160a01b900460ff1689612546565b611d9e919061255d565b90505b8015611e0e576001600160a01b0389165f8181526007602090815260408083208054869003905530808452928190208054860190555184815299849003999192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b03808a165f8181526007602052604080822080548c90039055928b168082529083902080548b01905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e6f908b815260200190565b60405180910390a3505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611edd919061261a565b5f604051808303815f865af19150503d805f8114611f16576040519150601f19603f3d011682016040523d82523d5f602084013e611f1b565b606091505b5091509150818015611f45575080511580611f45575080806020019051810190611f459190612635565b611fa25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b6064820152608401610816565b5050505050565b6001600160a01b0382165f908152600b602052604081205460ff1615612018576001600160a01b0384165f908152600a602052604090205460ff16801561200c57508161200a856001600160a01b03165f9081526007602052604090205490565b105b1561201857505f61083d565b509192915050565b6003545f61202f826014612546565b305f90815260076020526040902054111561205557600354612052906014612546565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061208857612088612650565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106120d0576120d0612650565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906121279086905f90869030904290600401612664565b5f604051808303815f87803b15801561213e575f80fd5b505af1158015612150573d5f803e3d5ffd5b504792505081159050612309576006545f9060649061217990600160b01b900460ff1684612546565b612183919061255d565b6006549091505f906064906121a290600160c01b900460ff1685612546565b6121ac919061255d565b90505f816121ba84866126d3565b6121c491906126d3565b6004546040519192506001600160a01b03169083905f81818185875af1925050503d805f811461220f576040519150601f19603f3d011682016040523d82523d5f602084013e612214565b606091505b50506006546040519197506001600160a01b03169082905f81818185875af1925050503d805f8114612261576040519150601f19603f3d011682016040523d82523d5f602084013e612266565b606091505b50506005546040519197506001600160a01b03169084905f81818185875af1925050503d805f81146122b3576040519150601f19603f3d011682016040523d82523d5f602084013e6122b8565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b83811015612329578181015183820152602001612311565b50505f910152565b602081525f825180602084015261234f81604085016020870161230f565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612379575f80fd5b919050565b5f806040838503121561238f575f80fd5b61239883612363565b946020939093013593505050565b5f805f606084860312156123b8575f80fd5b6123c184612363565b92506123cf60208501612363565b9150604084013590509250925092565b5f602082840312156123ef575f80fd5b5035919050565b803560ff81168114612379575f80fd5b5f805f60608486031215612418575f80fd5b612421846123f6565b925061242f602085016123f6565b915061243d604085016123f6565b90509250925092565b5f8060408385031215612457575f80fd5b612460836123f6565b915061246e602084016123f6565b90509250929050565b8015158114612484575f80fd5b50565b5f8060408385031215612498575f80fd5b6124a183612363565b915060208301356124b181612477565b809150509250929050565b5f602082840312156124cc575f80fd5b61083d82612363565b5f80604083850312156124e6575f80fd5b6124ef83612363565b915061246e60208401612363565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761078857610788612532565b5f8261257757634e487b7160e01b5f52601260045260245ffd5b500490565b60ff818116838216019081111561078857610788612532565b5f805f606084860312156125a7575f80fd5b8351925060208401519150604084015190509250925092565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612600575f80fd5b5051919050565b8082018082111561078857610788612532565b5f825161262b81846020870161230f565b9190910192915050565b5f60208284031215612645575f80fd5b815161083d81612477565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156126b25784516001600160a01b03168352938301939183019160010161268d565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156107885761078861253256fea2646970667358221220de8a1e44c298e0c26e4f7e5a058243ce2d22cc159efc38a0fa489a69c5e3490964736f6c63430008150033

Deployed Bytecode Sourcemap

2050:14849:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5173:83;;;;;;;;;;-1:-1:-1;5243:5:0;;;;;;;;;;;;-1:-1:-1;;;5243:5:0;;;;5173:83;;;;;;;:::i;:::-;;;;;;;;5834:152;;;;;;;;;;-1:-1:-1;5834:152:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;5834:152:0;1107:187:1;3716:124:0;;;;;;;;;;;;3797:42;3716:124;;;;;-1:-1:-1;;;;;1489:32:1;;;1471:51;;1459:2;1444:18;3716:124:0;1299:229:1;5443:91:0;;;;;;;;;;-1:-1:-1;2247:17:0;5443:91;;;1679:25:1;;;1667:2;1652:18;5443:91:0;1533:177:1;2849:24:0;;;;;;;;;;-1:-1:-1;2849:24:0;;;;-1:-1:-1;;;2849:24:0;;;;;;;;;1887:4:1;1875:17;;;1857:36;;1845:2;1830:18;2849:24:0;1715:184:1;6562:603:0;;;;;;;;;;-1:-1:-1;6562:603:0;;;;;:::i;:::-;;:::i;14113:272::-;;;;;;;;;;-1:-1:-1;14113:272:0;;;;;:::i;:::-;;:::i;:::-;;5359:76;;;;;;;;;;-1:-1:-1;5425:2:0;5359:76;;11494:371;;;;;;;;;;-1:-1:-1;11494:371:0;;;;;:::i;:::-;;:::i;3847:38::-;;;;;;;;;;;;;;;2978:33;;;;;;;;;;-1:-1:-1;2978:33:0;;;;-1:-1:-1;;;2978:33:0;;;;;;11873:434;;;;;;;;;;-1:-1:-1;11873:434:0;;;;;:::i;:::-;;:::i;12315:159::-;;;;;;;;;;-1:-1:-1;12315:159:0;;;;;:::i;:::-;;:::i;13389:435::-;;;;;;;;;;-1:-1:-1;13389:435:0;;;;;:::i;:::-;;:::i;12482:181::-;;;;;;;;;;-1:-1:-1;12482:181:0;;;;;:::i;:::-;;:::i;2808:32::-;;;;;;;;;;-1:-1:-1;2808:32:0;;;;-1:-1:-1;;;2808:32:0;;;;;;12802:337;;;:::i;5542:110::-;;;;;;;;;;-1:-1:-1;5542:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5626:18:0;5599:7;5626:18;;;:9;:18;;;;;;;5542:110;442:92;;;;;;;;;;;;;:::i;13832:273::-;;;;;;;;;;-1:-1:-1;13832:273:0;;;;;:::i;:::-;;:::i;11402:84::-;;;;;;;;;;;;;:::i;14769:177::-;;;;;;;;;;-1:-1:-1;14769:177:0;;;;;:::i;:::-;;:::i;14576:185::-;;;;;;;;;;-1:-1:-1;14576:185:0;;;;;:::i;:::-;;:::i;14954:123::-;;;;;;;;;;-1:-1:-1;14954:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;15041:28:0;15017:4;15041:28;;;:19;:28;;;;;;;;;14954:123;221:87;;;;;;;;;;-1:-1:-1;267:7:0;294:6;-1:-1:-1;;;;;294:6:0;221:87;;5264;;;;;;;;;;-1:-1:-1;5336:7:0;;;;;;;;;;;;-1:-1:-1;;;5336:7:0;;;;5264:87;;13147:234;;;;;;;;;;-1:-1:-1;13147:234:0;;;;;:::i;:::-;;:::i;6373:181::-;;;;;;;;;;-1:-1:-1;6373:181:0;;;;;:::i;:::-;;:::i;14393:175::-;;;;;;;;;;-1:-1:-1;14393:175:0;;;;;:::i;:::-;;:::i;15085:240::-;;;;;;;;;;-1:-1:-1;15085:240:0;;;;;:::i;:::-;;:::i;2273:52::-;;;;;;;;;;;;;;;;2880:29;;;;;;;;;;-1:-1:-1;2880:29:0;;;;-1:-1:-1;;;2880:29:0;;;;;;15333:247;;;;;;;;;;-1:-1:-1;15333:247:0;;;;;:::i;:::-;;:::i;2916:25::-;;;;;;;;;;-1:-1:-1;2916:25:0;;;;-1:-1:-1;;;2916:25:0;;;;;;2771:30;;;;;;;;;;-1:-1:-1;2771:30:0;;;;-1:-1:-1;;;2771:30:0;;;;;;5660:166;;;;;;;;;;-1:-1:-1;5660:166:0;;;;;:::i;:::-;-1:-1:-1;;;;;5791:18:0;;;5759:7;5791:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5660:166;2380:62;;;;;;;;;;;;;;;;2332:41;;;;;;;;;;;;;;;;12671:123;;;;;;;;;;;;;:::i;5834:152::-;5902:4;5919:37;5928:10;5940:7;5949:6;5919:8;:37::i;:::-;-1:-1:-1;5974:4:0;5834:152;;;;;:::o;6562:603::-;-1:-1:-1;;;;;6731:19:0;;6687:4;6731:19;;;:11;:19;;;;;;;;6751:10;6731:31;;;;;;;;-1:-1:-1;;6777:37:0;;6773:312;;6877:6;6857:16;:26;;6831:128;;;;-1:-1:-1;;;6831:128:0;;4476:2:1;6831:128:0;;;4458:21:1;4515:2;4495:18;;;4488:30;4554:34;4534:18;;;4527:62;-1:-1:-1;;;4605:18:1;;;4598:38;4653:19;;6831:128:0;;;;;;;;;7003:55;7012:6;7020:10;7051:6;7032:16;:25;7003:8;:55::i;:::-;7097:36;7107:6;7115:9;7126:6;7097:9;:36::i;:::-;7153:4;7146:11;;;6562:603;;;;;;:::o;14113:272::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;14262:4:::1;14254;14233:17;2247::::0;14249:1:::1;14233:17;:::i;:::-;14232:26;;;;:::i;:::-;14231:35;;;;:::i;:::-;14215:12;:51;;14193:138;;;::::0;-1:-1:-1;;;14193:138:0;;5773:2:1;14193:138:0::1;::::0;::::1;5755:21:1::0;5812:2;5792:18;;;5785:30;5851:34;5831:18;;;5824:62;-1:-1:-1;;;5902:18:1;;;5895:35;5947:19;;14193:138:0::1;5571:401:1::0;14193:138:0::1;14354:23;:12:::0;14370:6:::1;14354:23;:::i;:::-;14342:9;:35:::0;-1:-1:-1;14113:272:0:o;11494:371::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;11638:6:::1;:16:::0;;-1:-1:-1;;;;11665:26:0;-1:-1:-1;;;11638:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;11665:26:0;;;;;-1:-1:-1;;;11665:26:0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;;11702:18:0::1;-1:-1:-1::0;;;11702:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;11777:7;::::1;::::0;::::1;::::0;11754:20:::1;::::0;11763:11;;::::1;::::0;::::1;::::0;11754:6;::::1;;:20;:::i;:::-;:30;;;;:::i;:::-;11753:39;;11789:3;11753:39;11731:126;;;::::0;-1:-1:-1;;;11731:126:0;;6332:2:1;11731:126:0::1;::::0;::::1;6314:21:1::0;6371:2;6351:18;;;6344:30;6410:34;6390:18;;;6383:62;-1:-1:-1;;;6461:18:1;;;6454:35;6506:19;;11731:126:0::1;6130:401:1::0;11731:126:0::1;11494:371:::0;;;:::o;11873:434::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;12025:2:::1;12008:13;:19;;;;11986:110;;;::::0;-1:-1:-1;;;11986:110:0;;6738:2:1;11986:110:0::1;::::0;::::1;6720:21:1::0;6777:2;6757:18;;;6750:30;6816:34;6796:18;;;6789:62;-1:-1:-1;;;6867:18:1;;;6860:39;6916:19;;11986:110:0::1;6536:405:1::0;11986:110:0::1;12147:2;12129:14;:20;;;;12107:112;;;::::0;-1:-1:-1;;;12107:112:0;;7148:2:1;12107:112:0::1;::::0;::::1;7130:21:1::0;7187:2;7167:18;;;7160:30;7226:34;7206:18;;;7199:62;-1:-1:-1;;;7277:18:1;;;7270:40;7327:19;;12107:112:0::1;6946:406:1::0;12107:112:0::1;12230:12;:28:::0;;-1:-1:-1;;;;12269:30:0;-1:-1:-1;;;12230:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;12269:30:0;;-1:-1:-1;;;12269:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;11873:434::o;12315:159::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12427:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;12427:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12315:159::o;13389:435::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;13528:6:::1;13507:17;2247::::0;13523:1:::1;13507:17;:::i;:::-;13506:28;;;;:::i;:::-;13489:13;:45;;13467:148;;;::::0;-1:-1:-1;;;13467:148:0;;7559:2:1;13467:148:0::1;::::0;::::1;7541:21:1::0;7598:2;7578:18;;;7571:30;7637:34;7617:18;;;7610:62;-1:-1:-1;;;7688:18:1;;;7681:51;7749:19;;13467:148:0::1;7357:417:1::0;13467:148:0::1;13687:4;13666:17;2247::::0;13682:1:::1;13666:17;:::i;:::-;13665:26;;;;:::i;:::-;13648:13;:43;;13626:145;;;::::0;-1:-1:-1;;;13626:145:0;;7981:2:1;13626:145:0::1;::::0;::::1;7963:21:1::0;8020:2;8000:18;;;7993:30;8059:34;8039:18;;;8032:62;-1:-1:-1;;;8110:18:1;;;8103:50;8170:19;;13626:145:0::1;7779:416:1::0;13626:145:0::1;13782:18;:34:::0;13389:435::o;12482:181::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12604:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;12604:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12482:181::o;12802:337::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;12877:8:::1;::::0;-1:-1:-1;;;12877:8:0;::::1;;;12876:9;12868:38;;;::::0;-1:-1:-1;;;12868:38:0;;8402:2:1;12868:38:0::1;::::0;::::1;8384:21:1::0;8441:2;8421:18;;;8414:30;-1:-1:-1;;;8460:18:1;;;8453:46;8516:18;;12868:38:0::1;8200:340:1::0;12868:38:0::1;12989:4;13009:24;::::0;;;:9:::1;:24;::::0;;;;;;13080:10:::1;::::0;;12917:214;;-1:-1:-1;;;12917:214:0;;;;::::1;8886:34:1::0;;;;8936:18;;;8929:34;8979:18;;;8972:34;;;9022:18;;;9015:34;;;;-1:-1:-1;;;;;13080:10:0::1;9065:19:1::0;;;9058:44;13105:15:0::1;9118:19:1::0;;;9111:35;3797:42:0::1;::::0;12917:31:::1;::::0;12956:9:::1;::::0;8820:19:1;;12917:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;442:92::-:0;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;524:1:::1;507:19:::0;;-1:-1:-1;;;;;;507:19:0::1;::::0;;442:92::o;13832:273::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;13970:4:::1;13962;13941:17;2247::::0;13957:1:::1;13941:17;:::i;:::-;13940:26;;;;:::i;:::-;13939:35;;;;:::i;:::-;13927:8;:47;;13905:139;;;::::0;-1:-1:-1;;;13905:139:0;;9670:2:1;13905:139:0::1;::::0;::::1;9652:21:1::0;9709:2;9689:18;;;9682:30;9748:34;9728:18;;;9721:62;-1:-1:-1;;;9799:18:1;;;9792:40;9849:19;;13905:139:0::1;9468:406:1::0;13905:139:0::1;14078:19;:8:::0;14090:6:::1;14078:19;:::i;:::-;14055:20;:42:::0;-1:-1:-1;13832:273:0:o;11402:84::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;11456:14:::1;:22:::0;;-1:-1:-1;;;;11456:22:0::1;::::0;;11402:84::o;14769:177::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14853:24:0;::::1;14845:59;;;;-1:-1:-1::0;;;14845:59:0::1;;;;;;;:::i;:::-;14915:10;:23:::0;;-1:-1:-1;;;;;;14915:23:0::1;-1:-1:-1::0;;;;;14915:23:0;;;::::1;::::0;;;::::1;::::0;;14769:177::o;14576:185::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14664:24:0;::::1;14656:59;;;;-1:-1:-1::0;;;14656:59:0::1;;;;;;;:::i;:::-;14726:14;:27:::0;;-1:-1:-1;;;;;;14726:27:0::1;-1:-1:-1::0;;;;;14726:27:0;;;::::1;::::0;;;::::1;::::0;;14576:185::o;13147:234::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;13279:13:::1;-1:-1:-1::0;;;;;13271:21:0::1;:4;-1:-1:-1::0;;;;;13271:21:0::1;::::0;13263:60:::1;;;::::0;-1:-1:-1;;;13263:60:0;;10432:2:1;13263:60:0::1;::::0;::::1;10414:21:1::0;10471:2;10451:18;;;10444:30;10510:28;10490:18;;;10483:56;10556:18;;13263:60:0::1;10230:350:1::0;13263:60:0::1;-1:-1:-1::0;;;;;13334:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;13334:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13147:234::o;6373:181::-;6462:4;6484:40;6494:10;6506:9;6517:6;6484:9;:40::i;14393:175::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14476:24:0;::::1;14468:59;;;;-1:-1:-1::0;;;14468:59:0::1;;;;;;;:::i;:::-;14538:9;:22:::0;;-1:-1:-1;;;;;;14538:22:0::1;-1:-1:-1::0;;;;;14538:22:0;;;::::1;::::0;;;::::1;::::0;;14393:175::o;15085:240::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;15197:38:::1;::::0;-1:-1:-1;;;15197:38:0;;15229:4:::1;15197:38;::::0;::::1;1471:51:1::0;15170:24:0::1;::::0;-1:-1:-1;;;;;15197:23:0;::::1;::::0;::::1;::::0;1444:18:1;;15197:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15170:65;;15246:51;15269:5;15276:2;15280:16;15246:22;:51::i;15333:247::-:0;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15411:18:0;::::1;15403:46;;;::::0;-1:-1:-1;;;15403:46:0;;10976:2:1;15403:46:0::1;::::0;::::1;10958:21:1::0;11015:2;10995:18;;;10988:30;-1:-1:-1;;;11034:18:1;;;11027:45;11089:18;;15403:46:0::1;10774:339:1::0;15403:46:0::1;15463:12;15481:4;-1:-1:-1::0;;;;;15481:9:0::1;15498:21;15481:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15462:62;;;15543:7;15535:37;;;::::0;-1:-1:-1;;;15535:37:0;;11530:2:1;15535:37:0::1;::::0;::::1;11512:21:1::0;11569:2;11549:18;;;11542:30;-1:-1:-1;;;11588:18:1;;;11581:47;11645:18;;15535:37:0::1;11328:341:1::0;15535:37:0::1;15392:188;15333:247:::0;:::o;12671:123::-;367:10;356:7;267;294:6;-1:-1:-1;;;;;294:6:0;;221:87;356:7;-1:-1:-1;;;;;356:21:0;;348:66;;;;-1:-1:-1;;;348:66:0;;;;;;;:::i;:::-;12731:8:::1;::::0;-1:-1:-1;;;12731:8:0;::::1;;;12730:9;12722:38;;;::::0;-1:-1:-1;;;12722:38:0;;8402:2:1;12722:38:0::1;::::0;::::1;8384:21:1::0;8441:2;8421:18;;;8414:30;-1:-1:-1;;;8460:18:1;;;8453:46;8516:18;;12722:38:0::1;8200:340:1::0;12722:38:0::1;12771:8;:15:::0;;-1:-1:-1;;;;12771:15:0::1;-1:-1:-1::0;;;12771:15:0::1;::::0;;12671:123::o;5994:371::-;-1:-1:-1;;;;;6121:19:0;;6113:68;;;;-1:-1:-1;;;6113:68:0;;11876:2:1;6113:68:0;;;11858:21:1;11915:2;11895:18;;;11888:30;11954:34;11934:18;;;11927:62;-1:-1:-1;;;12005:18:1;;;11998:34;12049:19;;6113:68:0;11674:400:1;6113:68:0;-1:-1:-1;;;;;6200:21:0;;6192:68;;;;-1:-1:-1;;;6192:68:0;;12281:2:1;6192:68:0;;;12263:21:1;12320:2;12300:18;;;12293:30;12359:34;12339:18;;;12332:62;-1:-1:-1;;;12410:18:1;;;12403:32;12452:19;;6192:68:0;12079:398:1;6192:68:0;-1:-1:-1;;;;;6273:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6325:32;;1679:25:1;;;6325:32:0;;1652:18:1;6325:32:0;;;;;;;5994:371;;;:::o;7173:3807::-;-1:-1:-1;;;;;7295:18:0;;7287:68;;;;-1:-1:-1;;;7287:68:0;;12684:2:1;7287:68:0;;;12666:21:1;12723:2;12703:18;;;12696:30;12762:34;12742:18;;;12735:62;-1:-1:-1;;;12813:18:1;;;12806:35;12858:19;;7287:68:0;12482:401:1;7287:68:0;-1:-1:-1;;;;;7374:16:0;;7366:64;;;;-1:-1:-1;;;7366:64:0;;13090:2:1;7366:64:0;;;13072:21:1;13129:2;13109:18;;;13102:30;13168:34;13148:18;;;13141:62;-1:-1:-1;;;13219:18:1;;;13212:33;13262:19;;7366:64:0;12888:399:1;7366:64:0;7458:1;7449:6;:10;7441:64;;;;-1:-1:-1;;;7441:64:0;;13494:2:1;7441:64:0;;;13476:21:1;13533:2;13513:18;;;13506:30;13572:34;13552:18;;;13545:62;-1:-1:-1;;;13623:18:1;;;13616:39;13672:19;;7441:64:0;13292:405:1;7441:64:0;7537:8;;-1:-1:-1;;;7537:8:0;;;;7536:9;:85;;;;-1:-1:-1;267:7:0;294:6;-1:-1:-1;;;;;7563:15:0;;;294:6;;7563:15;;;;:40;;-1:-1:-1;;;;;;7582:21:0;;7598:4;7582:21;;7563:40;:57;;;;-1:-1:-1;267:7:0;294:6;-1:-1:-1;;;;;7607:13:0;;;294:6;;7607:13;;7563:57;7518:171;;;7648:29;;-1:-1:-1;;;7648:29:0;;13904:2:1;7648:29:0;;;13886:21:1;13943:2;13923:18;;;13916:30;-1:-1:-1;;;13962:18:1;;;13955:49;14021:18;;7648:29:0;13702:343:1;7518:171:0;7705:14;;-1:-1:-1;;;7705:14:0;;;;7701:1345;;;267:7;294:6;-1:-1:-1;;;;;7758:15:0;;;294:6;;7758:15;;;;:49;;-1:-1:-1;267:7:0;294:6;-1:-1:-1;;;;;7794:13:0;;;294:6;;7794:13;;7758:49;:86;;;;-1:-1:-1;;;;;;7828:16:0;;;;7758:86;:128;;;;-1:-1:-1;;;;;;7865:21:0;;7879:6;7865:21;;7758:128;:158;;;;-1:-1:-1;7908:8:0;;-1:-1:-1;;;7908:8:0;;;;7907:9;7758:158;7736:1299;;;-1:-1:-1;;;;;7977:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;8034:35:0;;;;;;:31;:35;;;;;;;;8033:36;7977:92;7951:1069;;;8156:20;;8146:6;:30;;8112:153;;;;-1:-1:-1;;;8112:153:0;;14252:2:1;8112:153:0;;;14234:21:1;14291:2;14271:18;;;14264:30;14330:34;14310:18;;;14303:62;-1:-1:-1;;;14381:18:1;;;14374:35;14426:19;;8112:153:0;14050:401:1;8112:153:0;8348:9;;-1:-1:-1;;;;;5626:18:0;;5599:7;5626:18;;;:9;:18;;;;;;8322:22;;:6;:22;:::i;:::-;:35;;8288:140;;;;-1:-1:-1;;;8288:140:0;;14788:2:1;8288:140:0;;;14770:21:1;14827:2;14807:18;;;14800:30;-1:-1:-1;;;14846:18:1;;;14839:49;14905:18;;8288:140:0;14586:343:1;8288:140:0;7951:1069;;;-1:-1:-1;;;;;8480:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;8535:37:0;;;;;;:31;:37;;;;;;;;8534:38;8480:92;8454:566;;;8659:20;;8649:6;:30;;8615:154;;;;-1:-1:-1;;;8615:154:0;;15136:2:1;8615:154:0;;;15118:21:1;15175:2;15155:18;;;15148:30;15214:34;15194:18;;;15187:62;-1:-1:-1;;;15265:18:1;;;15258:36;15311:19;;8615:154:0;14934:402:1;8454:566:0;-1:-1:-1;;;;;8800:35:0;;;;;;:31;:35;;;;;;;;8795:225;;8920:9;;-1:-1:-1;;;;;5626:18:0;;5599:7;5626:18;;;:9;:18;;;;;;8894:22;;:6;:22;:::i;:::-;:35;;8860:140;;;;-1:-1:-1;;;8860:140:0;;14788:2:1;8860:140:0;;;14770:21:1;14827:2;14807:18;;;14800:30;-1:-1:-1;;;14846:18:1;;;14839:49;14905:18;;8860:140:0;14586:343:1;8860:140:0;9101:18;;9091:4;9058:12;5626:18;;;:9;:18;;;;;;-1:-1:-1;;;9073:46:0;;9153:34;9170:4;9176:2;9180:6;9153:16;:34::i;:::-;9130:57;;9218:4;-1:-1:-1;;;;;9202:20:0;:12;-1:-1:-1;;;;;9202:20:0;;9198:193;;-1:-1:-1;;;;;9268:23:0;;;;;;;:9;:23;;;;;;:33;;;;;;9320:13;;;;;;;;;;:23;;;;;;;;-1:-1:-1;;7173:3807:0:o;9198:193::-;9421:7;:33;;;;-1:-1:-1;9446:8:0;;-1:-1:-1;;;9446:8:0;;;;9445:9;9421:33;:82;;;;-1:-1:-1;;;;;;9472:31:0;;;;;;:25;:31;;;;;;;;9471:32;9421:82;:125;;;;-1:-1:-1;;;;;;9521:25:0;;;;;;:19;:25;;;;;;;;9520:26;9421:125;:166;;;;-1:-1:-1;;;;;;9564:23:0;;;;;;:19;:23;;;;;;;;9563:24;9421:166;9403:294;;;9614:8;:15;;-1:-1:-1;;;;9614:15:0;-1:-1:-1;;;9614:15:0;;;9644:10;:8;:10::i;:::-;9669:8;:16;;-1:-1:-1;;;;9669:16:0;;;9403:294;9725:8;;-1:-1:-1;;;;;9750:25:0;;9709:12;9750:25;;;:19;:25;;;;;;9725:8;-1:-1:-1;;;9725:8:0;;;;;9724:9;;9750:25;;:52;;-1:-1:-1;;;;;;9779:23:0;;;;;;:19;:23;;;;;;;;9750:52;9746:100;;;-1:-1:-1;9829:5:0;9746:100;-1:-1:-1;;;;;9882:15:0;;;9858:21;9882:15;;;:9;:15;;;;;;;9940:10;;;;;9930:21;;;;;9984:23;;;;9962:111;;;;-1:-1:-1;;;9962:111:0;;15543:2:1;9962:111:0;;;15525:21:1;15582:2;15562:18;;;15555:30;15621:34;15601:18;;;15594:62;-1:-1:-1;;;15672:18:1;;;15665:36;15718:19;;9962:111:0;15341:402:1;9962:111:0;10086:12;10117:7;10113:706;;;-1:-1:-1;;;;;10146:31:0;;;;;;:25;:31;;;;;;;;10145:32;:51;;;;;10195:1;10181:11;:15;10145:51;10141:368;;;10217:7;;;;;;7173:3807;;;:::o;10141:368::-;-1:-1:-1;;;;;10249:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;10282:13:0;;-1:-1:-1;;;10282:13:0;;;;:17;;10249:50;10245:264;;;10337:13;;10354:4;;10328:22;;-1:-1:-1;;;10337:13:0;;;;10328:6;:22;:::i;:::-;10327:31;;;;:::i;:::-;10320:38;;10245:264;;;-1:-1:-1;;;;;10384:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;10419:12:0;;-1:-1:-1;;;10419:12:0;;;;:16;;10384:51;10380:129;;;10473:12;;10489:4;;10464:21;;-1:-1:-1;;;10473:12:0;;;;10464:6;:21;:::i;:::-;10463:30;;;;:::i;:::-;10456:37;;10380:129;10529:8;;10525:283;;-1:-1:-1;;;;;10636:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;10700:4;10682:24;;;;;;;:32;;;;;;10757:35;1679:25:1;;;10600:13:0;;;;;10700:4;;10636:15;10757:35;;1652:18:1;10757:35:0;;;;;;;10525:283;-1:-1:-1;;;;;10856:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;10896:13;;;;;;;;;;:23;;;;;;10946:26;;;;;;10875:6;1679:25:1;;1667:2;1652:18;;1533:177;10946:26:0;;;;;;;;7276:3704;;;;;;7173:3807;;;:::o;566:415::-;745:59;;;-1:-1:-1;;;;;15940:32:1;;;745:59:0;;;15922:51:1;15989:18;;;;15982:34;;;745:59:0;;;;;;;;;;15895:18:1;;;;745:59:0;;;;;;;-1:-1:-1;;;;;745:59:0;-1:-1:-1;;;745:59:0;;;720:95;;-1:-1:-1;;;;720:10:0;;;;:95;;745:59;720:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;684:131;;;;848:7;:57;;;;-1:-1:-1;860:11:0;;:16;;:44;;;891:4;880:24;;;;;;;;;;;;:::i;:::-;826:147;;;;-1:-1:-1;;;826:147:0;;16771:2:1;826:147:0;;;16753:21:1;16810:2;16790:18;;;16783:30;16849:34;16829:18;;;16822:62;-1:-1:-1;;;16900:18:1;;;16893:38;16948:19;;826:147:0;16569:404:1;826:147:0;673:308;;566:415;;;:::o;10988:406::-;-1:-1:-1;;;;;11136:29:0;;11112:7;11136:29;;;:25;:29;;;;;;;;11132:233;;;-1:-1:-1;;;;;11204:37:0;;;;;;:31;:37;;;;;;;;:82;;;;;11280:6;11262:15;11272:4;-1:-1:-1;;;;;5626:18:0;5599:7;5626:18;;;:9;:18;;;;;;;5542:110;11262:15;:24;11204:82;11182:172;;;-1:-1:-1;11336:1:0;11321:17;;11182:172;-1:-1:-1;11382:4:0;;10988:406;-1:-1:-1;;10988:406:0:o;15588:1308::-;15651:18;;15627:21;15736:23;15651:18;15757:2;15736:23;:::i;:::-;15727:4;5599:7;5626:18;;;:9;:18;;;;;;15709:50;15705:122;;;15792:18;;:23;;15813:2;15792:23;:::i;:::-;15776:39;;15705:122;15863:16;;;15877:1;15863:16;;;;;;;;15839:21;;15863:16;;;;;;;;;;-1:-1:-1;15863:16:0;15839:40;;15908:4;15890;15895:1;15890:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15890:23:0;;;-1:-1:-1;;;;;15890:23:0;;;;;2720:42;15924:4;15929:1;15924:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15924:14:0;;;:7;;;;;;;;;;;:14;15951:198;;-1:-1:-1;;;15951:198:0;;3797:42;;15951:66;;:198;;16032:13;;16060:1;;16076:4;;16103;;16123:15;;15951:198;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16183:21:0;;-1:-1:-1;;16219:14:0;;;-1:-1:-1;16215:674:0;;16284:6;;16250:17;;16294:3;;16271:19;;-1:-1:-1;;;16284:6:0;;;;16271:10;:19;:::i;:::-;16270:27;;;;:::i;:::-;16347:7;;16250:47;;-1:-1:-1;16312:18:0;;16358:3;;16334:20;;-1:-1:-1;;;16347:7:0;;;;16334:10;:20;:::i;:::-;16333:28;;;;:::i;:::-;16312:49;-1:-1:-1;16376:22:0;16312:49;16401:22;16414:9;16401:10;:22;:::i;:::-;:35;;;;:::i;:::-;16475:10;;16467:47;;16376:60;;-1:-1:-1;;;;;;16475:10:0;;16499;;16467:47;;;;16499:10;16475;16467:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16551:14:0;;16543:87;;16453:61;;-1:-1:-1;;;;;;16551:14:0;;16579;;16543:87;;;;16579:14;16551;16543:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16667:9:0;;16659:45;;16529:101;;-1:-1:-1;;;;;;16667:9:0;;16690;;16659:45;;;;16690:9;16667;16659:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16726:151:0;;;18591:25:1;;;18647:2;18632:18;;18625:34;;;18675:18;;;18668:34;;;18733:2;18718:18;;18711:34;;;16645:59:0;;-1:-1:-1;16726:151:0;;18578:3:1;18563:19;16726:151:0;;;;;;;16235:654;;;16215:674;15616:1280;;;;15588:1308::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;1904:328::-;1981:6;1989;1997;2050:2;2038:9;2029:7;2025:23;2021:32;2018:52;;;2066:1;2063;2056:12;2018:52;2089:29;2108:9;2089:29;:::i;:::-;2079:39;;2137:38;2171:2;2160:9;2156:18;2137:38;:::i;:::-;2127:48;;2222:2;2211:9;2207:18;2194:32;2184:42;;1904:328;;;;;:::o;2237:180::-;2296:6;2349:2;2337:9;2328:7;2324:23;2320:32;2317:52;;;2365:1;2362;2355:12;2317:52;-1:-1:-1;2388:23:1;;2237:180;-1:-1:-1;2237:180:1:o;2422:156::-;2488:20;;2548:4;2537:16;;2527:27;;2517:55;;2568:1;2565;2558:12;2583:322;2654:6;2662;2670;2723:2;2711:9;2702:7;2698:23;2694:32;2691:52;;;2739:1;2736;2729:12;2691:52;2762:27;2779:9;2762:27;:::i;:::-;2752:37;;2808:36;2840:2;2829:9;2825:18;2808:36;:::i;:::-;2798:46;;2863:36;2895:2;2884:9;2880:18;2863:36;:::i;:::-;2853:46;;2583:322;;;;;:::o;3118:252::-;3182:6;3190;3243:2;3231:9;3222:7;3218:23;3214:32;3211:52;;;3259:1;3256;3249:12;3211:52;3282:27;3299:9;3282:27;:::i;:::-;3272:37;;3328:36;3360:2;3349:9;3345:18;3328:36;:::i;:::-;3318:46;;3118:252;;;;;:::o;3375:118::-;3461:5;3454:13;3447:21;3440:5;3437:32;3427:60;;3483:1;3480;3473:12;3427:60;3375:118;:::o;3498:315::-;3563:6;3571;3624:2;3612:9;3603:7;3599:23;3595:32;3592:52;;;3640:1;3637;3630:12;3592:52;3663:29;3682:9;3663:29;:::i;:::-;3653:39;;3742:2;3731:9;3727:18;3714:32;3755:28;3777:5;3755:28;:::i;:::-;3802:5;3792:15;;;3498:315;;;;;:::o;3818:186::-;3877:6;3930:2;3918:9;3909:7;3905:23;3901:32;3898:52;;;3946:1;3943;3936:12;3898:52;3969:29;3988:9;3969:29;:::i;4009:260::-;4077:6;4085;4138:2;4126:9;4117:7;4113:23;4109:32;4106:52;;;4154:1;4151;4144:12;4106:52;4177:29;4196:9;4177:29;:::i;:::-;4167:39;;4225:38;4259:2;4248:9;4244:18;4225:38;:::i;4683:356::-;4885:2;4867:21;;;4904:18;;;4897:30;4963:34;4958:2;4943:18;;4936:62;5030:2;5015:18;;4683:356::o;5044:127::-;5105:10;5100:3;5096:20;5093:1;5086:31;5136:4;5133:1;5126:15;5160:4;5157:1;5150:15;5176:168;5249:9;;;5280;;5297:15;;;5291:22;;5277:37;5267:71;;5318:18;;:::i;5349:217::-;5389:1;5415;5405:132;;5459:10;5454:3;5450:20;5447:1;5440:31;5494:4;5491:1;5484:15;5522:4;5519:1;5512:15;5405:132;-1:-1:-1;5551:9:1;;5349:217::o;5977:148::-;6065:4;6044:12;;;6058;;;6040:31;;6083:13;;6080:39;;;6099:18;;:::i;9157:306::-;9245:6;9253;9261;9314:2;9302:9;9293:7;9289:23;9285:32;9282:52;;;9330:1;9327;9320:12;9282:52;9359:9;9353:16;9343:26;;9409:2;9398:9;9394:18;9388:25;9378:35;;9453:2;9442:9;9438:18;9432:25;9422:35;;9157:306;;;;;:::o;9879:346::-;10081:2;10063:21;;;10120:2;10100:18;;;10093:30;-1:-1:-1;;;10154:2:1;10139:18;;10132:52;10216:2;10201:18;;9879:346::o;10585:184::-;10655:6;10708:2;10696:9;10687:7;10683:23;10679:32;10676:52;;;10724:1;10721;10714:12;10676:52;-1:-1:-1;10747:16:1;;10585:184;-1:-1:-1;10585:184:1:o;14456:125::-;14521:9;;;14542:10;;;14539:36;;;14555:18;;:::i;16027:287::-;16156:3;16194:6;16188:13;16210:66;16269:6;16264:3;16257:4;16249:6;16245:17;16210:66;:::i;:::-;16292:16;;;;;16027:287;-1:-1:-1;;16027:287:1:o;16319:245::-;16386:6;16439:2;16427:9;16418:7;16414:23;16410:32;16407:52;;;16455:1;16452;16445:12;16407:52;16487:9;16481:16;16506:28;16528:5;16506:28;:::i;17110:127::-;17171:10;17166:3;17162:20;17159:1;17152:31;17202:4;17199:1;17192:15;17226:4;17223:1;17216:15;17242:980;17504:4;17552:3;17541:9;17537:19;17583:6;17572:9;17565:25;17609:2;17647:6;17642:2;17631:9;17627:18;17620:34;17690:3;17685:2;17674:9;17670:18;17663:31;17714:6;17749;17743:13;17780:6;17772;17765:22;17818:3;17807:9;17803:19;17796:26;;17857:2;17849:6;17845:15;17831:29;;17878:1;17888:195;17902:6;17899:1;17896:13;17888:195;;;17967:13;;-1:-1:-1;;;;;17963:39:1;17951:52;;18058:15;;;;18023:12;;;;17999:1;17917:9;17888:195;;;-1:-1:-1;;;;;;;18139:32:1;;;;18134:2;18119:18;;18112:60;-1:-1:-1;;;18203:3:1;18188:19;18181:35;18100:3;17242:980;-1:-1:-1;;;17242:980:1:o;18227:128::-;18294:9;;;18315:11;;;18312:37;;;18329:18;;:::i

Swarm Source

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