ETH Price: $2,520.28 (+1.71%)
Gas: 6.58 Gwei

Token

Hydra (HYDRA)
 

Overview

Max Total Supply

8,888,888,888 HYDRA

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,538,705.010965083067773426 HYDRA

Value
$0.00
0x3EA855779010d85E3d21C2eAC35Be056E174519c
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:
HYDRA

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
Hydra
Hydra The Dragon. Soar the skies of Ethereum.

Telegram: https://t.me/hydra
Twitter: https://twitter.com/HydrasJourney
**/
// 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 HYDRA is Ownable {
    string private constant _name = unicode"Hydra";
    string private constant _symbol = unicode"HYDRA";
    uint256 private constant _totalSupply = 8_888_888_888 * 1e18;

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

    address private revWallet = 0x794594ef698b4fE4d6771FaBBd4096EeA480A00D;
    address private treasuryWallet = 0x0084fd9276737314B7c360070360E1dC62Ffa0b9;
    address private teamWallet = 0x05230b294ADaaEdFD356C52e5417992207Fd86E1;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    uint8 public buyTotalFees = 3;
    uint8 public sellTotalFees = 3;

    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;

        address airdropWallet = 0x1e4C3Eb639CF4db8e4DB77659464350215c2E249;

        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);
        setExcludedFromMaxTransaction(revWallet, true);
        setExcludedFromMaxTransaction(treasuryWallet, true);


        _balances[msg.sender] = 1_111_111_111 * 1e18;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
        _balances[treasuryWallet] = 2_222_222_222 * 1e18;
        emit Transfer(address(0), treasuryWallet, _balances[treasuryWallet]);
        _balances[airdropWallet] = 1_111_111_111 * 1e18;
        emit Transfer(address(0), airdropWallet, _balances[airdropWallet]);
        _balances[address(this)] = 4_444_444_444 * 1e18;
        emit Transfer(address(0), address(this), _balances[address(this)]);

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

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

        bool takeFee = !swapping;

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

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

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

            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 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 <= 100, "Buy fees must be less than or equal to 100%");
        require(_sellTotalFees <= 100, "Sell fees must be less than or equal to 100%");
        buyTotalFees = _buyTotalFees;
        sellTotalFees = _sellTotalFees;
    }

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

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

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

    function openTrade() external onlyOwner {
        require(!launched, "Already launched");
        launched = true;
    }

    function unleashHydra() 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":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"unleashHydra","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"}]

60a06040526a4986f44622f73835e000006001556a4986f44622f73835e000006002556127106b1cb8b7702ae75fb695e000006002620000409190620006d9565b6200004c919062000703565b600355600480546001600160a01b031990811673794594ef698b4fe4d6771fabbd4096eea480a00d17909155600580549091167284fd9276737314b7c360070360e1dc62ffa0b9179055600680547a0100191932030305230b294adaaedfd356c52e5417992207fd86e1600161ff0160c81b0319909116179055348015620000d2575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000133573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000159919062000723565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001b9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001df919062000723565b6001600160a01b031660808190525f908152600b60205260409020805460ff19166001179055731e4c3eb639cf4db8e4db77659464350215c2e24962000238620002305f546001600160a01b031690565b6001620004a8565b62000245306001620004a8565b6200025461dead6001620004a8565b6006546200026d906001600160a01b03166001620004a8565b60045462000286906001600160a01b03166001620004a8565b6005546200029f906001600160a01b03166001620004a8565b620002bd620002b55f546001600160a01b031690565b60016200052f565b620002de737a250d5630b4cf539739df2c5dacb4c659f2488d60016200052f565b620002eb3060016200052f565b620002fa61dead60016200052f565b6080516200030a9060016200052f565b60065462000323906001600160a01b031660016200052f565b6004546200033c906001600160a01b031660016200052f565b60055462000355906001600160a01b031660016200052f565b335f8181526007602090815260408083206b039716ee055cebf6d2bc00009081905590519081525f8051602062003d13833981519152910160405180910390a3600580546001600160a01b039081165f908152600760205260408082206b072e2ddc0ab9d7eda57800009055925490911680825282822054925190925f8051602062003d1383398151915291620003ee91815260200190565b60405180910390a36001600160a01b0381165f8181526007602090815260408083206b039716ee055cebf6d2bc00009081905590519081525f8051602062003d13833981519152910160405180910390a3305f8181526007602090815260408083206b0e5c5bb81573afdb4af000009081905590519081525f8051602062003d13833981519152910160405180910390a3620004a130737a250d5630b4cf539739df2c5dacb4c659f2488d5f19620005b2565b5062000752565b33620004bb5f546001600160a01b031690565b6001600160a01b031614620005055760405162461bcd60e51b815260206004820181905260248201525f8051602062003cf383398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33620005425f546001600160a01b031690565b6001600160a01b031614620005885760405162461bcd60e51b815260206004820181905260248201525f8051602062003cf38339815191526044820152606401620004fc565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b038316620006165760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004fc565b6001600160a01b038216620006795760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004fc565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8082028115828204841417620006fd57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200071e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000734575f80fd5b81516001600160a01b03811681146200074b575f80fd5b9392505050565b608051613581620007725f395f818161046e015261165001526135815ff3fe6080604052600436106102ae575f3560e01c80637cb332bb11610165578063c8c8ebe4116100c6578063dd62ed3e1161007c578063e710794711610062578063e710794714610871578063f8b45b0514610890578063fb201b1d146108a5575f80fd5b8063dd62ed3e14610818578063e2f456051461085c575f80fd5b8063d201b01e116100ac578063d201b01e14610793578063d7c94efd146107b2578063d85ba063146107e7575f80fd5b8063c8c8ebe41461074a578063cc32d1761461075f575f80fd5b80639a7a23d61161011b578063adfa29e511610101578063adfa29e514610704578063bac1bbbf14610723578063bc205ad31461072b575f80fd5b80639a7a23d6146106c6578063a9059cbb146106e5575f80fd5b806385ecafd71161014b57806385ecafd71461062e5780638da5cb5b1461066557806395d89b4114610681575f80fd5b80637cb332bb146105f0578063809d458d1461060f575f80fd5b80634a62bb651161020f5780636a486a8e116101c5578063715018a6116101ab578063715018a6146105a957806374010ece146105bd578063751039fc146105dc575f80fd5b80636a486a8e1461054357806370a0823114610575575f80fd5b8063590ffdce116101f5578063590ffdce146104e65780636402511e1461050557806366650dae14610524575f80fd5b80634a62bb65146104905780634fcd2446146104c7575f80fd5b806323b872dd11610264578063313ce5671161024a578063313ce5671461042b5780633c090c461461043e57806349bd5a5e1461045d575f80fd5b806323b872dd146103eb57806327a14fc21461040a575f80fd5b80631694505e116102945780631694505e1461033f57806318160ddd1461037e57806321d37e39146103a6575f80fd5b806306fdde03146102b9578063095ea7b314610310575f80fd5b366102b557005b5f80fd5b3480156102c4575f80fd5b5060408051808201909152600581527f487964726100000000000000000000000000000000000000000000000000000060208201525b6040516103079190612f93565b60405180910390f35b34801561031b575f80fd5b5061032f61032a366004612ffe565b6108b9565b6040519015158152602001610307565b34801561034a575f80fd5b50610366737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610307565b348015610389575f80fd5b506b1cb8b7702ae75fb695e000005b604051908152602001610307565b3480156103b1575f80fd5b506006546103d990760100000000000000000000000000000000000000000000900460ff1681565b60405160ff9091168152602001610307565b3480156103f6575f80fd5b5061032f610405366004613026565b6108cf565b348015610415575f80fd5b5061042961042436600461305f565b6109b7565b005b348015610436575f80fd5b5060126103d9565b348015610449575f80fd5b50610429610458366004613086565b610ae3565b348015610468575f80fd5b506103667f000000000000000000000000000000000000000000000000000000000000000081565b34801561049b575f80fd5b5060065461032f907a010000000000000000000000000000000000000000000000000000900460ff1681565b3480156104d2575f80fd5b506104296104e13660046130c6565b610cbf565b3480156104f1575f80fd5b50610429610500366004613107565b610ea7565b348015610510575f80fd5b5061042961051f36600461305f565b610f57565b34801561052f575f80fd5b5061042961053e366004613107565b6110f7565b34801561054e575f80fd5b506006546103d9907501000000000000000000000000000000000000000000900460ff1681565b348015610580575f80fd5b5061039861058f36600461313c565b6001600160a01b03165f9081526007602052604090205490565b3480156105b4575f80fd5b506104296111a7565b3480156105c8575f80fd5b506104296105d736600461305f565b611238565b3480156105e7575f80fd5b50610429611364565b3480156105fb575f80fd5b5061042961060a36600461313c565b6113f6565b34801561061a575f80fd5b5061042961062936600461313c565b6114ee565b348015610639575f80fd5b5061032f61064836600461313c565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610670575f80fd5b505f546001600160a01b0316610366565b34801561068c575f80fd5b5060408051808201909152600581527f485944524100000000000000000000000000000000000000000000000000000060208201526102fa565b3480156106d1575f80fd5b506104296106e0366004613107565b6115e6565b3480156106f0575f80fd5b5061032f6106ff366004612ffe565b611717565b34801561070f575f80fd5b5061042961071e36600461313c565b611723565b61042961181b565b348015610736575f80fd5b5061042961074536600461315c565b6119bf565b348015610755575f80fd5b5061039860015481565b34801561076a575f80fd5b506006546103d99077010000000000000000000000000000000000000000000000900460ff1681565b34801561079e575f80fd5b506104296107ad36600461313c565b611ab5565b3480156107bd575f80fd5b506006546103d9907801000000000000000000000000000000000000000000000000900460ff1681565b3480156107f2575f80fd5b506006546103d99074010000000000000000000000000000000000000000900460ff1681565b348015610823575f80fd5b5061039861083236600461315c565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610867575f80fd5b5061039860035481565b34801561087c575f80fd5b5061042961088b36600461328b565b611c16565b34801561089b575f80fd5b5061039860025481565b3480156108b0575f80fd5b50610429611efb565b5f6108c533848461201d565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109a157828110156109945760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109a1853385840361201d565b6109ac858585612174565b506001949350505050565b336109c95f546001600160a01b031690565b6001600160a01b031614610a1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b670de0b6b3a76400006103e8610a426b1cb8b7702ae75fb695e000006001613372565b610a4c9190613389565b610a569190613389565b811015610acb5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201527f20302e3125000000000000000000000000000000000000000000000000000000606482015260840161098b565b610add81670de0b6b3a7640000613372565b60025550565b33610af55f546001600160a01b031690565b6001600160a01b031614610b4b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b600680547fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000060ff86811682027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff1692909217770100000000000000000000000000000000000000000000008684168102919091177fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000868516810291909117948590558404831693610c38939181048216929004166133c1565b610c4291906133c1565b60ff16606414610cba5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f60448201527f2031303025000000000000000000000000000000000000000000000000000000606482015260840161098b565b505050565b33610cd15f546001600160a01b031690565b6001600160a01b031614610d275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b60648260ff161115610da15760405162461bcd60e51b815260206004820152602b60248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201527f75616c20746f2031303025000000000000000000000000000000000000000000606482015260840161098b565b60648160ff161115610e1b5760405162461bcd60e51b815260206004820152602c60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f72206560448201527f7175616c20746f20313030250000000000000000000000000000000000000000606482015260840161098b565b600680547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000060ff948516027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff161775010000000000000000000000000000000000000000009290931691909102919091179055565b33610eb95f546001600160a01b031690565b6001600160a01b031614610f0f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b03919091165f90815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b33610f695f546001600160a01b031690565b6001600160a01b031614610fbf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b620186a0610fda6b1cb8b7702ae75fb695e000006001613372565b610fe49190613389565b8110156110595760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e30303125206f662074686520737570706c790000000000000000000000606482015260840161098b565b6103e86110736b1cb8b7702ae75fb695e000006005613372565b61107d9190613389565b8111156110f25760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e3525206f662074686520737570706c79000000000000000000000000606482015260840161098b565b600355565b336111095f546001600160a01b031690565b6001600160a01b03161461115f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b03919091165f908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b336111b95f546001600160a01b031690565b6001600160a01b03161461120f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3361124a5f546001600160a01b031690565b6001600160a01b0316146112a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b670de0b6b3a76400006103e86112c36b1cb8b7702ae75fb695e000006001613372565b6112cd9190613389565b6112d79190613389565b81101561134c5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f77657260448201527f207468616e20302e312500000000000000000000000000000000000000000000606482015260840161098b565b61135e81670de0b6b3a7640000613372565b60015550565b336113765f546001600160a01b031690565b6001600160a01b0316146113cc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b600680547fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169055565b336114085f546001600160a01b031690565b6001600160a01b03161461145e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b0381166114b45760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f00000000000000000000604482015260640161098b565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336115005f546001600160a01b031690565b6001600160a01b0316146115565760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b0381166115ac5760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f00000000000000000000604482015260640161098b565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336115f85f546001600160a01b031690565b6001600160a01b03161461164e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036116cf5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f766564000000000000604482015260640161098b565b6001600160a01b03919091165f908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b5f6108c5338484612174565b336117355f546001600160a01b031690565b6001600160a01b03161461178b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b0381166117e15760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f00000000000000000000604482015260640161098b565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b3361182d5f546001600160a01b031690565b6001600160a01b0316146118835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6006547b01000000000000000000000000000000000000000000000000000000900460ff16156118f55760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e6368656400000000000000000000000000000000604482015260640161098b565b305f818152600760205260408082205460065491517ff305d719000000000000000000000000000000000000000000000000000000008152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561199a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cba91906133da565b336119d15f546001600160a01b031690565b6001600160a01b031614611a275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611a84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa89190613405565b9050610cba838383612ad7565b33611ac75f546001600160a01b031690565b6001600160a01b031614611b1d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b038116611b735760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015260640161098b565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611bbc576040519150601f19603f3d011682016040523d82523d5f602084013e611bc1565b606091505b5050905080611c125760405162461bcd60e51b815260206004820152601160248201527f5769746864726177616c206661696c6564000000000000000000000000000000604482015260640161098b565b5050565b33611c285f546001600160a01b031690565b6001600160a01b031614611c7e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6006547b01000000000000000000000000000000000000000000000000000000900460ff1615611cf05760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e6368656400000000000000000000000000000000604482015260640161098b565b5f5b8251811015610cba57818181518110611d0d57611d0d61341c565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f20541015611dad5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161098b565b818181518110611dbf57611dbf61341c565b602002602001015160075f858481518110611ddc57611ddc61341c565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254611e119190613449565b92505081905550818181518110611e2a57611e2a61341c565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f828254611e63919061345c565b92505081905550828181518110611e7c57611e7c61341c565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110611eca57611eca61341c565b6020026020010151604051611ee191815260200190565b60405180910390a380611ef38161346f565b915050611cf2565b33611f0d5f546001600160a01b031690565b6001600160a01b031614611f635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6006547b01000000000000000000000000000000000000000000000000000000900460ff1615611fd55760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e6368656400000000000000000000000000000000604482015260640161098b565b600680547fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff167b01000000000000000000000000000000000000000000000000000000179055565b6001600160a01b0383166120985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161098b565b6001600160a01b0382166121145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161098b565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166121f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161098b565b6001600160a01b03821661226c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161098b565b5f81116122e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161098b565b6006547b01000000000000000000000000000000000000000000000000000000900460ff1615801561234d57505f546001600160a01b0384811691161480159061233457506001600160a01b0383163014155b801561234d57505f546001600160a01b03838116911614155b1561239a5760405162461bcd60e51b815260206004820152601360248201527f54726164696e67206e6f7420656e61626c656400000000000000000000000000604482015260640161098b565b6006547a010000000000000000000000000000000000000000000000000000900460ff16156126cb575f546001600160a01b038481169116148015906123ed57505f546001600160a01b03838116911614155b801561240157506001600160a01b03821615155b801561241857506001600160a01b03821661dead14155b80156124445750600654790100000000000000000000000000000000000000000000000000900460ff16155b156126cb576001600160a01b0383165f908152600b602052604090205460ff16801561248857506001600160a01b0382165f908152600a602052604090205460ff16155b1561257d576001548111156125055760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785478000000000000000000000000000000000000000000000000000000606482015260840161098b565b6002546001600160a01b0383165f9081526007602052604090205461252a9083613449565b11156125785760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c657420657863656564656400000000000000000000000000604482015260640161098b565b6126cb565b6001600160a01b0382165f908152600b602052604090205460ff1680156125bc57506001600160a01b0383165f908152600a602052604090205460ff16155b15612639576001548111156125785760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617854780000000000000000000000000000000000000000000000000000606482015260840161098b565b6001600160a01b0382165f908152600a602052604090205460ff166126cb576002546001600160a01b0383165f9081526007602052604090205461267d9083613449565b11156126cb5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c657420657863656564656400000000000000000000000000604482015260640161098b565b600354305f9081526007602052604090205410801590819061270d5750600654790100000000000000000000000000000000000000000000000000900460ff16155b801561273157506001600160a01b0384165f908152600b602052604090205460ff16155b801561275557506001600160a01b0384165f9081526009602052604090205460ff16155b801561277957506001600160a01b0383165f9081526009602052604090205460ff16155b156127f357600680547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167901000000000000000000000000000000000000000000000000001790556127ca612c41565b600680547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff1690555b6006546001600160a01b0385165f9081526009602052604090205460ff79010000000000000000000000000000000000000000000000000090920482161591168061285557506001600160a01b0384165f9081526009602052604090205460ff165b1561285d57505f5b6001600160a01b0385165f90815260076020526040902054838110156128eb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161098b565b5f8215612a65576001600160a01b0386165f908152600b602052604090205460ff16801561293657506006547501000000000000000000000000000000000000000000900460ff1615155b1561297857600654606490612967907501000000000000000000000000000000000000000000900460ff1687613372565b6129719190613389565b90506129f8565b6001600160a01b0387165f908152600b602052604090205460ff1680156129bb575060065474010000000000000000000000000000000000000000900460ff1615155b156129f8576006546064906129eb9074010000000000000000000000000000000000000000900460ff1687613372565b6129f59190613389565b90505b8015612a65576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612ac69089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f92839290871691612b6091906134a6565b5f604051808303815f865af19150503d805f8114612b99576040519150601f19603f3d011682016040523d82523d5f602084013e612b9e565b606091505b5091509150818015612bc8575080511580612bc8575080806020019051810190612bc891906134c1565b612c3a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e53464560448201527f525f4641494c4544000000000000000000000000000000000000000000000000606482015260840161098b565b5050505050565b6003545f612c50826014613372565b305f908152600760205260409020541115612c7657600354612c73906014613372565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612ca957612ca961341c565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612cf157612cf161341c565b6001600160a01b03909216602092830291909101909101526040517f791ac947000000000000000000000000000000000000000000000000000000008152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790612d619086905f908690309042906004016134dc565b5f604051808303815f87803b158015612d78575f80fd5b505af1158015612d8a573d5f803e3d5ffd5b504792505081159050612f6b576006545f90606490612dc690760100000000000000000000000000000000000000000000900460ff1684613372565b612dd09190613389565b6006549091505f90606490612e04907801000000000000000000000000000000000000000000000000900460ff1685613372565b612e0e9190613389565b90505f81612e1c848661345c565b612e26919061345c565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114612e71576040519150601f19603f3d011682016040523d82523d5f602084013e612e76565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f8114612ec3576040519150601f19603f3d011682016040523d82523d5f602084013e612ec8565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f8114612f15576040519150601f19603f3d011682016040523d82523d5f602084013e612f1a565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b83811015612f8b578181015183820152602001612f73565b50505f910152565b602081525f8251806020840152612fb1816040850160208701612f71565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80356001600160a01b0381168114612ff9575f80fd5b919050565b5f806040838503121561300f575f80fd5b61301883612fe3565b946020939093013593505050565b5f805f60608486031215613038575f80fd5b61304184612fe3565b925061304f60208501612fe3565b9150604084013590509250925092565b5f6020828403121561306f575f80fd5b5035919050565b803560ff81168114612ff9575f80fd5b5f805f60608486031215613098575f80fd5b6130a184613076565b92506130af60208501613076565b91506130bd60408501613076565b90509250925092565b5f80604083850312156130d7575f80fd5b6130e083613076565b91506130ee60208401613076565b90509250929050565b8015158114613104575f80fd5b50565b5f8060408385031215613118575f80fd5b61312183612fe3565b91506020830135613131816130f7565b809150509250929050565b5f6020828403121561314c575f80fd5b61315582612fe3565b9392505050565b5f806040838503121561316d575f80fd5b61317683612fe3565b91506130ee60208401612fe3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156131f8576131f8613184565b604052919050565b5f67ffffffffffffffff82111561321957613219613184565b5060051b60200190565b5f82601f830112613232575f80fd5b8135602061324761324283613200565b6131b1565b82815260059290921b84018101918181019086841115613265575f80fd5b8286015b848110156132805780358352918301918301613269565b509695505050505050565b5f806040838503121561329c575f80fd5b823567ffffffffffffffff808211156132b3575f80fd5b818501915085601f8301126132c6575f80fd5b813560206132d661324283613200565b82815260059290921b840181019181810190898411156132f4575f80fd5b948201945b838610156133195761330a86612fe3565b825294820194908201906132f9565b9650508601359250508082111561332e575f80fd5b5061333b85828601613223565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176108c9576108c9613345565b5f826133bc577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b60ff81811683821601908111156108c9576108c9613345565b5f805f606084860312156133ec575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215613415575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156108c9576108c9613345565b818103818111156108c9576108c9613345565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361349f5761349f613345565b5060010190565b5f82516134b7818460208701612f71565b9190910192915050565b5f602082840312156134d1575f80fd5b8151613155816130f7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561352a5784516001600160a01b031683529383019391830191600101613505565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b0c68a7764d268cbd5d5f024c4e1530496a643b9782b256e6348cd07f8da0a5564736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106102ae575f3560e01c80637cb332bb11610165578063c8c8ebe4116100c6578063dd62ed3e1161007c578063e710794711610062578063e710794714610871578063f8b45b0514610890578063fb201b1d146108a5575f80fd5b8063dd62ed3e14610818578063e2f456051461085c575f80fd5b8063d201b01e116100ac578063d201b01e14610793578063d7c94efd146107b2578063d85ba063146107e7575f80fd5b8063c8c8ebe41461074a578063cc32d1761461075f575f80fd5b80639a7a23d61161011b578063adfa29e511610101578063adfa29e514610704578063bac1bbbf14610723578063bc205ad31461072b575f80fd5b80639a7a23d6146106c6578063a9059cbb146106e5575f80fd5b806385ecafd71161014b57806385ecafd71461062e5780638da5cb5b1461066557806395d89b4114610681575f80fd5b80637cb332bb146105f0578063809d458d1461060f575f80fd5b80634a62bb651161020f5780636a486a8e116101c5578063715018a6116101ab578063715018a6146105a957806374010ece146105bd578063751039fc146105dc575f80fd5b80636a486a8e1461054357806370a0823114610575575f80fd5b8063590ffdce116101f5578063590ffdce146104e65780636402511e1461050557806366650dae14610524575f80fd5b80634a62bb65146104905780634fcd2446146104c7575f80fd5b806323b872dd11610264578063313ce5671161024a578063313ce5671461042b5780633c090c461461043e57806349bd5a5e1461045d575f80fd5b806323b872dd146103eb57806327a14fc21461040a575f80fd5b80631694505e116102945780631694505e1461033f57806318160ddd1461037e57806321d37e39146103a6575f80fd5b806306fdde03146102b9578063095ea7b314610310575f80fd5b366102b557005b5f80fd5b3480156102c4575f80fd5b5060408051808201909152600581527f487964726100000000000000000000000000000000000000000000000000000060208201525b6040516103079190612f93565b60405180910390f35b34801561031b575f80fd5b5061032f61032a366004612ffe565b6108b9565b6040519015158152602001610307565b34801561034a575f80fd5b50610366737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610307565b348015610389575f80fd5b506b1cb8b7702ae75fb695e000005b604051908152602001610307565b3480156103b1575f80fd5b506006546103d990760100000000000000000000000000000000000000000000900460ff1681565b60405160ff9091168152602001610307565b3480156103f6575f80fd5b5061032f610405366004613026565b6108cf565b348015610415575f80fd5b5061042961042436600461305f565b6109b7565b005b348015610436575f80fd5b5060126103d9565b348015610449575f80fd5b50610429610458366004613086565b610ae3565b348015610468575f80fd5b506103667f0000000000000000000000008489c53bc871d99e271565956b61df3d00d0b6c381565b34801561049b575f80fd5b5060065461032f907a010000000000000000000000000000000000000000000000000000900460ff1681565b3480156104d2575f80fd5b506104296104e13660046130c6565b610cbf565b3480156104f1575f80fd5b50610429610500366004613107565b610ea7565b348015610510575f80fd5b5061042961051f36600461305f565b610f57565b34801561052f575f80fd5b5061042961053e366004613107565b6110f7565b34801561054e575f80fd5b506006546103d9907501000000000000000000000000000000000000000000900460ff1681565b348015610580575f80fd5b5061039861058f36600461313c565b6001600160a01b03165f9081526007602052604090205490565b3480156105b4575f80fd5b506104296111a7565b3480156105c8575f80fd5b506104296105d736600461305f565b611238565b3480156105e7575f80fd5b50610429611364565b3480156105fb575f80fd5b5061042961060a36600461313c565b6113f6565b34801561061a575f80fd5b5061042961062936600461313c565b6114ee565b348015610639575f80fd5b5061032f61064836600461313c565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610670575f80fd5b505f546001600160a01b0316610366565b34801561068c575f80fd5b5060408051808201909152600581527f485944524100000000000000000000000000000000000000000000000000000060208201526102fa565b3480156106d1575f80fd5b506104296106e0366004613107565b6115e6565b3480156106f0575f80fd5b5061032f6106ff366004612ffe565b611717565b34801561070f575f80fd5b5061042961071e36600461313c565b611723565b61042961181b565b348015610736575f80fd5b5061042961074536600461315c565b6119bf565b348015610755575f80fd5b5061039860015481565b34801561076a575f80fd5b506006546103d99077010000000000000000000000000000000000000000000000900460ff1681565b34801561079e575f80fd5b506104296107ad36600461313c565b611ab5565b3480156107bd575f80fd5b506006546103d9907801000000000000000000000000000000000000000000000000900460ff1681565b3480156107f2575f80fd5b506006546103d99074010000000000000000000000000000000000000000900460ff1681565b348015610823575f80fd5b5061039861083236600461315c565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610867575f80fd5b5061039860035481565b34801561087c575f80fd5b5061042961088b36600461328b565b611c16565b34801561089b575f80fd5b5061039860025481565b3480156108b0575f80fd5b50610429611efb565b5f6108c533848461201d565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109a157828110156109945760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109a1853385840361201d565b6109ac858585612174565b506001949350505050565b336109c95f546001600160a01b031690565b6001600160a01b031614610a1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b670de0b6b3a76400006103e8610a426b1cb8b7702ae75fb695e000006001613372565b610a4c9190613389565b610a569190613389565b811015610acb5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201527f20302e3125000000000000000000000000000000000000000000000000000000606482015260840161098b565b610add81670de0b6b3a7640000613372565b60025550565b33610af55f546001600160a01b031690565b6001600160a01b031614610b4b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b600680547fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000060ff86811682027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff1692909217770100000000000000000000000000000000000000000000008684168102919091177fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000868516810291909117948590558404831693610c38939181048216929004166133c1565b610c4291906133c1565b60ff16606414610cba5760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f60448201527f2031303025000000000000000000000000000000000000000000000000000000606482015260840161098b565b505050565b33610cd15f546001600160a01b031690565b6001600160a01b031614610d275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b60648260ff161115610da15760405162461bcd60e51b815260206004820152602b60248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201527f75616c20746f2031303025000000000000000000000000000000000000000000606482015260840161098b565b60648160ff161115610e1b5760405162461bcd60e51b815260206004820152602c60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f72206560448201527f7175616c20746f20313030250000000000000000000000000000000000000000606482015260840161098b565b600680547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000060ff948516027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff161775010000000000000000000000000000000000000000009290931691909102919091179055565b33610eb95f546001600160a01b031690565b6001600160a01b031614610f0f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b03919091165f90815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b33610f695f546001600160a01b031690565b6001600160a01b031614610fbf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b620186a0610fda6b1cb8b7702ae75fb695e000006001613372565b610fe49190613389565b8110156110595760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e30303125206f662074686520737570706c790000000000000000000000606482015260840161098b565b6103e86110736b1cb8b7702ae75fb695e000006005613372565b61107d9190613389565b8111156110f25760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e3525206f662074686520737570706c79000000000000000000000000606482015260840161098b565b600355565b336111095f546001600160a01b031690565b6001600160a01b03161461115f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b03919091165f908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b336111b95f546001600160a01b031690565b6001600160a01b03161461120f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3361124a5f546001600160a01b031690565b6001600160a01b0316146112a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b670de0b6b3a76400006103e86112c36b1cb8b7702ae75fb695e000006001613372565b6112cd9190613389565b6112d79190613389565b81101561134c5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f77657260448201527f207468616e20302e312500000000000000000000000000000000000000000000606482015260840161098b565b61135e81670de0b6b3a7640000613372565b60015550565b336113765f546001600160a01b031690565b6001600160a01b0316146113cc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b600680547fffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff169055565b336114085f546001600160a01b031690565b6001600160a01b03161461145e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b0381166114b45760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f00000000000000000000604482015260640161098b565b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336115005f546001600160a01b031690565b6001600160a01b0316146115565760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b0381166115ac5760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f00000000000000000000604482015260640161098b565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336115f85f546001600160a01b031690565b6001600160a01b03161461164e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b7f0000000000000000000000008489c53bc871d99e271565956b61df3d00d0b6c36001600160a01b0316826001600160a01b0316036116cf5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f766564000000000000604482015260640161098b565b6001600160a01b03919091165f908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b5f6108c5338484612174565b336117355f546001600160a01b031690565b6001600160a01b03161461178b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b0381166117e15760405162461bcd60e51b815260206004820152601660248201527f416464726573732063616e6e6f74206265207a65726f00000000000000000000604482015260640161098b565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b3361182d5f546001600160a01b031690565b6001600160a01b0316146118835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6006547b01000000000000000000000000000000000000000000000000000000900460ff16156118f55760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e6368656400000000000000000000000000000000604482015260640161098b565b305f818152600760205260408082205460065491517ff305d719000000000000000000000000000000000000000000000000000000008152600481019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561199a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cba91906133da565b336119d15f546001600160a01b031690565b6001600160a01b031614611a275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015611a84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa89190613405565b9050610cba838383612ad7565b33611ac75f546001600160a01b031690565b6001600160a01b031614611b1d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6001600160a01b038116611b735760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015260640161098b565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114611bbc576040519150601f19603f3d011682016040523d82523d5f602084013e611bc1565b606091505b5050905080611c125760405162461bcd60e51b815260206004820152601160248201527f5769746864726177616c206661696c6564000000000000000000000000000000604482015260640161098b565b5050565b33611c285f546001600160a01b031690565b6001600160a01b031614611c7e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6006547b01000000000000000000000000000000000000000000000000000000900460ff1615611cf05760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e6368656400000000000000000000000000000000604482015260640161098b565b5f5b8251811015610cba57818181518110611d0d57611d0d61341c565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f20541015611dad5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161098b565b818181518110611dbf57611dbf61341c565b602002602001015160075f858481518110611ddc57611ddc61341c565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254611e119190613449565b92505081905550818181518110611e2a57611e2a61341c565b602002602001015160075f336001600160a01b03166001600160a01b031681526020019081526020015f205f828254611e63919061345c565b92505081905550828181518110611e7c57611e7c61341c565b60200260200101516001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110611eca57611eca61341c565b6020026020010151604051611ee191815260200190565b60405180910390a380611ef38161346f565b915050611cf2565b33611f0d5f546001600160a01b031690565b6001600160a01b031614611f635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098b565b6006547b01000000000000000000000000000000000000000000000000000000900460ff1615611fd55760405162461bcd60e51b815260206004820152601060248201527f416c7265616479206c61756e6368656400000000000000000000000000000000604482015260640161098b565b600680547fffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff167b01000000000000000000000000000000000000000000000000000000179055565b6001600160a01b0383166120985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161098b565b6001600160a01b0382166121145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161098b565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166121f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161098b565b6001600160a01b03821661226c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161098b565b5f81116122e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161098b565b6006547b01000000000000000000000000000000000000000000000000000000900460ff1615801561234d57505f546001600160a01b0384811691161480159061233457506001600160a01b0383163014155b801561234d57505f546001600160a01b03838116911614155b1561239a5760405162461bcd60e51b815260206004820152601360248201527f54726164696e67206e6f7420656e61626c656400000000000000000000000000604482015260640161098b565b6006547a010000000000000000000000000000000000000000000000000000900460ff16156126cb575f546001600160a01b038481169116148015906123ed57505f546001600160a01b03838116911614155b801561240157506001600160a01b03821615155b801561241857506001600160a01b03821661dead14155b80156124445750600654790100000000000000000000000000000000000000000000000000900460ff16155b156126cb576001600160a01b0383165f908152600b602052604090205460ff16801561248857506001600160a01b0382165f908152600a602052604090205460ff16155b1561257d576001548111156125055760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785478000000000000000000000000000000000000000000000000000000606482015260840161098b565b6002546001600160a01b0383165f9081526007602052604090205461252a9083613449565b11156125785760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c657420657863656564656400000000000000000000000000604482015260640161098b565b6126cb565b6001600160a01b0382165f908152600b602052604090205460ff1680156125bc57506001600160a01b0383165f908152600a602052604090205460ff16155b15612639576001548111156125785760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617854780000000000000000000000000000000000000000000000000000606482015260840161098b565b6001600160a01b0382165f908152600a602052604090205460ff166126cb576002546001600160a01b0383165f9081526007602052604090205461267d9083613449565b11156126cb5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c657420657863656564656400000000000000000000000000604482015260640161098b565b600354305f9081526007602052604090205410801590819061270d5750600654790100000000000000000000000000000000000000000000000000900460ff16155b801561273157506001600160a01b0384165f908152600b602052604090205460ff16155b801561275557506001600160a01b0384165f9081526009602052604090205460ff16155b801561277957506001600160a01b0383165f9081526009602052604090205460ff16155b156127f357600680547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff167901000000000000000000000000000000000000000000000000001790556127ca612c41565b600680547fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff1690555b6006546001600160a01b0385165f9081526009602052604090205460ff79010000000000000000000000000000000000000000000000000090920482161591168061285557506001600160a01b0384165f9081526009602052604090205460ff165b1561285d57505f5b6001600160a01b0385165f90815260076020526040902054838110156128eb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161098b565b5f8215612a65576001600160a01b0386165f908152600b602052604090205460ff16801561293657506006547501000000000000000000000000000000000000000000900460ff1615155b1561297857600654606490612967907501000000000000000000000000000000000000000000900460ff1687613372565b6129719190613389565b90506129f8565b6001600160a01b0387165f908152600b602052604090205460ff1680156129bb575060065474010000000000000000000000000000000000000000900460ff1615155b156129f8576006546064906129eb9074010000000000000000000000000000000000000000900460ff1687613372565b6129f59190613389565b90505b8015612a65576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612ac69089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f92839290871691612b6091906134a6565b5f604051808303815f865af19150503d805f8114612b99576040519150601f19603f3d011682016040523d82523d5f602084013e612b9e565b606091505b5091509150818015612bc8575080511580612bc8575080806020019051810190612bc891906134c1565b612c3a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e53464560448201527f525f4641494c4544000000000000000000000000000000000000000000000000606482015260840161098b565b5050505050565b6003545f612c50826014613372565b305f908152600760205260409020541115612c7657600354612c73906014613372565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612ca957612ca961341c565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612cf157612cf161341c565b6001600160a01b03909216602092830291909101909101526040517f791ac947000000000000000000000000000000000000000000000000000000008152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790612d619086905f908690309042906004016134dc565b5f604051808303815f87803b158015612d78575f80fd5b505af1158015612d8a573d5f803e3d5ffd5b504792505081159050612f6b576006545f90606490612dc690760100000000000000000000000000000000000000000000900460ff1684613372565b612dd09190613389565b6006549091505f90606490612e04907801000000000000000000000000000000000000000000000000900460ff1685613372565b612e0e9190613389565b90505f81612e1c848661345c565b612e26919061345c565b6006546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114612e71576040519150601f19603f3d011682016040523d82523d5f602084013e612e76565b606091505b50506005546040519197506001600160a01b03169082905f81818185875af1925050503d805f8114612ec3576040519150601f19603f3d011682016040523d82523d5f602084013e612ec8565b606091505b50506004546040519197506001600160a01b03169084905f81818185875af1925050503d805f8114612f15576040519150601f19603f3d011682016040523d82523d5f602084013e612f1a565b606091505b50506040805189815260208101859052908101859052606081018390529096507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f9060800160405180910390a15050505b50505050565b5f5b83811015612f8b578181015183820152602001612f73565b50505f910152565b602081525f8251806020840152612fb1816040850160208701612f71565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80356001600160a01b0381168114612ff9575f80fd5b919050565b5f806040838503121561300f575f80fd5b61301883612fe3565b946020939093013593505050565b5f805f60608486031215613038575f80fd5b61304184612fe3565b925061304f60208501612fe3565b9150604084013590509250925092565b5f6020828403121561306f575f80fd5b5035919050565b803560ff81168114612ff9575f80fd5b5f805f60608486031215613098575f80fd5b6130a184613076565b92506130af60208501613076565b91506130bd60408501613076565b90509250925092565b5f80604083850312156130d7575f80fd5b6130e083613076565b91506130ee60208401613076565b90509250929050565b8015158114613104575f80fd5b50565b5f8060408385031215613118575f80fd5b61312183612fe3565b91506020830135613131816130f7565b809150509250929050565b5f6020828403121561314c575f80fd5b61315582612fe3565b9392505050565b5f806040838503121561316d575f80fd5b61317683612fe3565b91506130ee60208401612fe3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156131f8576131f8613184565b604052919050565b5f67ffffffffffffffff82111561321957613219613184565b5060051b60200190565b5f82601f830112613232575f80fd5b8135602061324761324283613200565b6131b1565b82815260059290921b84018101918181019086841115613265575f80fd5b8286015b848110156132805780358352918301918301613269565b509695505050505050565b5f806040838503121561329c575f80fd5b823567ffffffffffffffff808211156132b3575f80fd5b818501915085601f8301126132c6575f80fd5b813560206132d661324283613200565b82815260059290921b840181019181810190898411156132f4575f80fd5b948201945b838610156133195761330a86612fe3565b825294820194908201906132f9565b9650508601359250508082111561332e575f80fd5b5061333b85828601613223565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176108c9576108c9613345565b5f826133bc577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b60ff81811683821601908111156108c9576108c9613345565b5f805f606084860312156133ec575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215613415575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156108c9576108c9613345565b818103818111156108c9576108c9613345565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361349f5761349f613345565b5060010190565b5f82516134b7818460208701612f71565b9190910192915050565b5f602082840312156134d1575f80fd5b8151613155816130f7565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561352a5784516001600160a01b031683529383019391830191600101613505565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b0c68a7764d268cbd5d5f024c4e1530496a643b9782b256e6348cd07f8da0a5564736f6c63430008150033

Deployed Bytecode Sourcemap

1885:13406:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5357:83;;;;;;;;;;-1:-1:-1;5427:5:0;;;;;;;;;;;;;;;;;5357:83;;;;;;;:::i;:::-;;;;;;;;5986:152;;;;;;;;;;-1:-1:-1;5986:152:0;;;;;:::i;:::-;;:::i;:::-;;;1354:14:1;;1347:22;1329:41;;1317:2;1302:18;5986:152:0;1189:187:1;3464:115:0;;;;;;;;;;;;3536:42;3464:115;;;;;-1:-1:-1;;;;;1571:55:1;;;1553:74;;1541:2;1526:18;3464:115:0;1381:252:1;5627:91:0;;;;;;;;;;-1:-1:-1;2066:20:0;5627:91;;;1784:25:1;;;1772:2;1757:18;5627:91:0;1638:177:1;2674:24:0;;;;;;;;;;-1:-1:-1;2674:24:0;;;;;;;;;;;;;;1992:4:1;1980:17;;;1962:36;;1950:2;1935:18;2674:24:0;1820:184:1;6657:520:0;;;;;;;;;;-1:-1:-1;6657:520:0;;;;;:::i;:::-;;:::i;12733:235::-;;;;;;;;;;-1:-1:-1;12733:235:0;;;;;:::i;:::-;;:::i;:::-;;5543:76;;;;;;;;;;-1:-1:-1;5609:2:0;5543:76;;9960:300;;;;;;;;;;-1:-1:-1;9960:300:0;;;;;:::i;:::-;;:::i;3586:38::-;;;;;;;;;;;;;;;2803:33;;;;;;;;;;-1:-1:-1;2803:33:0;;;;;;;;;;;10268:343;;;;;;;;;;-1:-1:-1;10268:343:0;;;;;:::i;:::-;;:::i;10619:136::-;;;;;;;;;;-1:-1:-1;10619:136:0;;;;;:::i;:::-;;:::i;12120:361::-;;;;;;;;;;-1:-1:-1;12120:361:0;;;;;:::i;:::-;;:::i;10763:158::-;;;;;;;;;;-1:-1:-1;10763:158:0;;;;;:::i;:::-;;:::i;2635:30::-;;;;;;;;;;-1:-1:-1;2635:30:0;;;;;;;;;;;5726:110;;;;;;;;;;-1:-1:-1;5726:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;5810:18:0;5783:7;5810:18;;;:9;:18;;;;;;;5726:110;582:92;;;;;;;;;;;;;:::i;12489:236::-;;;;;;;;;;-1:-1:-1;12489:236:0;;;;;:::i;:::-;;:::i;9868:84::-;;;;;;;;;;;;;:::i;13352:177::-;;;;;;;;;;-1:-1:-1;13352:177:0;;;;;:::i;:::-;;:::i;13159:185::-;;;;;;;;;;-1:-1:-1;13159:185:0;;;;;:::i;:::-;;:::i;13537:123::-;;;;;;;;;;-1:-1:-1;13537:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;13624:28:0;13600:4;13624:28;;;:19;:28;;;;;;;;;13537:123;361:87;;;;;;;;;;-1:-1:-1;407:7:0;434:6;-1:-1:-1;;;;;434:6:0;361:87;;5448;;;;;;;;;;-1:-1:-1;5520:7:0;;;;;;;;;;;;;;;;;5448:87;;11901:211;;;;;;;;;;-1:-1:-1;11901:211:0;;;;;:::i;:::-;;:::i;6491:158::-;;;;;;;;;;-1:-1:-1;6491:158:0;;;;;:::i;:::-;;:::i;12976:175::-;;;;;;;;;;-1:-1:-1;12976:175:0;;;;;:::i;:::-;;:::i;11560:333::-;;;:::i;13668:240::-;;;;;;;;;;-1:-1:-1;13668:240:0;;;;;:::i;:::-;;:::i;2095:55::-;;;;;;;;;;;;;;;;2705:29;;;;;;;;;;-1:-1:-1;2705:29:0;;;;;;;;;;;13916:247;;;;;;;;;;-1:-1:-1;13916:247:0;;;;;:::i;:::-;;:::i;2741:25::-;;;;;;;;;;-1:-1:-1;2741:25:0;;;;;;;;;;;2599:29;;;;;;;;;;-1:-1:-1;2599:29:0;;;;;;;;;;;5844:134;;;;;;;;;;-1:-1:-1;5844:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;5943:18:0;;;5916:7;5943:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5844:134;2208:62;;;;;;;;;;;;;;;;10929:492;;;;;;;;;;-1:-1:-1;10929:492:0;;;;;:::i;:::-;;:::i;2157:44::-;;;;;;;;;;;;;;;;11429:123;;;;;;;;;;;;;:::i;5986:152::-;6054:4;6071:37;6080:10;6092:7;6101:6;6071:8;:37::i;:::-;-1:-1:-1;6126:4:0;5986:152;;;;;:::o;6657:520::-;-1:-1:-1;;;;;6792:19:0;;6748:4;6792:19;;;:11;:19;;;;;;;;6812:10;6792:31;;;;;;;;6858:17;6838:37;;6834:263;;6920:6;6900:16;:26;;6892:79;;;;-1:-1:-1;;;6892:79:0;;7138:2:1;6892:79:0;;;7120:21:1;7177:2;7157:18;;;7150:30;7216:34;7196:18;;;7189:62;7287:10;7267:18;;;7260:38;7315:19;;6892:79:0;;;;;;;;;7015:55;7024:6;7032:10;7063:6;7044:16;:25;7015:8;:55::i;:::-;7109:36;7119:6;7127:9;7138:6;7109:9;:36::i;:::-;-1:-1:-1;7165:4:0;;6657:520;-1:-1:-1;;;;6657:520:0:o;12733:235::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;12868:4:::1;12860;12839:17;2066:20:::0;12855:1:::1;12839:17;:::i;:::-;12838:26;;;;:::i;:::-;12837:35;;;;:::i;:::-;12821:12;:51;;12813:101;;;::::0;-1:-1:-1;;;12813:101:0;;8549:2:1;12813:101:0::1;::::0;::::1;8531:21:1::0;8588:2;8568:18;;;8561:30;8627:34;8607:18;;;8600:62;8698:7;8678:18;;;8671:35;8723:19;;12813:101:0::1;8347:401:1::0;12813:101:0::1;12937:23;:12:::0;12953:6:::1;12937:23;:::i;:::-;12925:9;:35:::0;-1:-1:-1;12733:235:0:o;9960:300::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;10070:6:::1;:16:::0;;10097:26;;10070:16;::::1;::::0;;::::1;::::0;::::1;10097:26:::0;;;;;;;;;::::1;::::0;::::1;::::0;;;::::1;10134:18:::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;10195:7;::::1;::::0;::::1;::::0;10172:20:::1;::::0;10181:11;;::::1;::::0;::::1;::::0;10172:6;::::1;;:20;:::i;:::-;:30;;;;:::i;:::-;10171:39;;10207:3;10171:39;10163:89;;;::::0;-1:-1:-1;;;10163:89:0;;9108:2:1;10163:89:0::1;::::0;::::1;9090:21:1::0;9147:2;9127:18;;;9120:30;9186:34;9166:18;;;9159:62;9257:7;9237:18;;;9230:35;9282:19;;10163:89:0::1;8906:401:1::0;10163:89:0::1;9960:300:::0;;;:::o;10268:343::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;10383:3:::1;10366:13;:20;;;;10358:76;;;::::0;-1:-1:-1;;;10358:76:0;;9514:2:1;10358:76:0::1;::::0;::::1;9496:21:1::0;9553:2;9533:18;;;9526:30;9592:34;9572:18;;;9565:62;9663:13;9643:18;;;9636:41;9694:19;;10358:76:0::1;9312:407:1::0;10358:76:0::1;10471:3;10453:14;:21;;;;10445:78;;;::::0;-1:-1:-1;;;10445:78:0;;9926:2:1;10445:78:0::1;::::0;::::1;9908:21:1::0;9965:2;9945:18;;;9938:30;10004:34;9984:18;;;9977:62;10075:14;10055:18;;;10048:42;10107:19;;10445:78:0::1;9724:408:1::0;10445:78:0::1;10534:12;:28:::0;;10573:30;;10534:28;::::1;::::0;;::::1;;10573:30:::0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;10268:343::o;10619:136::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;-1:-1:-1;;;;;10708:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;10619:136::o;12120:361::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;12245:6:::1;12224:17;2066:20:::0;12240:1:::1;12224:17;:::i;:::-;12223:28;;;;:::i;:::-;12206:13;:45;;12198:111;;;::::0;-1:-1:-1;;;12198:111:0;;10339:2:1;12198:111:0::1;::::0;::::1;10321:21:1::0;10378:2;10358:18;;;10351:30;10417:34;10397:18;;;10390:62;10488:23;10468:18;;;10461:51;10529:19;;12198:111:0::1;10137:417:1::0;12198:111:0::1;12367:4;12346:17;2066:20:::0;12362:1:::1;12346:17;:::i;:::-;12345:26;;;;:::i;:::-;12328:13;:43;;12320:108;;;::::0;-1:-1:-1;;;12320:108:0;;10761:2:1;12320:108:0::1;::::0;::::1;10743:21:1::0;10800:2;10780:18;;;10773:30;10839:34;10819:18;;;10812:62;10910:22;10890:18;;;10883:50;10950:19;;12320:108:0::1;10559:416:1::0;12320:108:0::1;12439:18;:34:::0;12120:361::o;10763:158::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;-1:-1:-1;;;;;10862:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;10763:158::o;582:92::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;664:1:::1;647:19:::0;;;::::1;::::0;;582:92::o;12489:236::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;12613:4:::1;12605;12584:17;2066:20:::0;12600:1:::1;12584:17;:::i;:::-;12583:26;;;;:::i;:::-;12582:35;;;;:::i;:::-;12570:8;:47;;12562:102;;;::::0;-1:-1:-1;;;12562:102:0;;11182:2:1;12562:102:0::1;::::0;::::1;11164:21:1::0;11221:2;11201:18;;;11194:30;11260:34;11240:18;;;11233:62;11331:12;11311:18;;;11304:40;11361:19;;12562:102:0::1;10980:406:1::0;12562:102:0::1;12698:19;:8:::0;12710:6:::1;12698:19;:::i;:::-;12675:20;:42:::0;-1:-1:-1;12489:236:0:o;9868:84::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;9922:14:::1;:22:::0;;;::::1;::::0;;9868:84::o;13352:177::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;-1:-1:-1;;;;;13436:24:0;::::1;13428:59;;;::::0;-1:-1:-1;;;13428:59:0;;11593:2:1;13428:59:0::1;::::0;::::1;11575:21:1::0;11632:2;11612:18;;;11605:30;11671:24;11651:18;;;11644:52;11713:18;;13428:59:0::1;11391:346:1::0;13428:59:0::1;13498:10;:23:::0;;;::::1;-1:-1:-1::0;;;;;13498:23:0;;;::::1;::::0;;;::::1;::::0;;13352:177::o;13159:185::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;-1:-1:-1;;;;;13247:24:0;::::1;13239:59;;;::::0;-1:-1:-1;;;13239:59:0;;11593:2:1;13239:59:0::1;::::0;::::1;11575:21:1::0;11632:2;11612:18;;;11605:30;11671:24;11651:18;;;11644:52;11713:18;;13239:59:0::1;11391:346:1::0;13239:59:0::1;13309:14;:27:::0;;;::::1;-1:-1:-1::0;;;;;13309:27:0;;;::::1;::::0;;;::::1;::::0;;13159:185::o;11901:211::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;12010:13:::1;-1:-1:-1::0;;;;;12002:21:0::1;:4;-1:-1:-1::0;;;;;12002:21:0::1;::::0;11994:60:::1;;;::::0;-1:-1:-1;;;11994:60:0;;11944:2:1;11994:60:0::1;::::0;::::1;11926:21:1::0;11983:2;11963:18;;;11956:30;12022:28;12002:18;;;11995:56;12068:18;;11994:60:0::1;11742:350:1::0;11994:60:0::1;-1:-1:-1::0;;;;;12065:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;11901:211::o;6491:158::-;6562:4;6579:40;6589:10;6601:9;6612:6;6579:9;:40::i;12976:175::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;-1:-1:-1;;;;;13059:24:0;::::1;13051:59;;;::::0;-1:-1:-1;;;13051:59:0;;11593:2:1;13051:59:0::1;::::0;::::1;11575:21:1::0;11632:2;11612:18;;;11605:30;11671:24;11651:18;;;11644:52;11713:18;;13051:59:0::1;11391:346:1::0;13051:59:0::1;13121:9;:22:::0;;;::::1;-1:-1:-1::0;;;;;13121:22:0;;;::::1;::::0;;;::::1;::::0;;12976:175::o;11560:333::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;11631:8:::1;::::0;;;::::1;;;11630:9;11622:38;;;::::0;-1:-1:-1;;;11622:38:0;;12299:2:1;11622:38:0::1;::::0;::::1;12281:21:1::0;12338:2;12318:18;;;12311:30;12377:18;12357;;;12350:46;12413:18;;11622:38:0::1;12097:340:1::0;11622:38:0::1;11743:4;11763:24;::::0;;;:9:::1;:24;::::0;;;;;;11834:10:::1;::::0;11671:214;;;;;::::1;::::0;::::1;12806:34:1::0;;;;12856:18;;;12849:34;12899:18;;;12892:34;;;12942:18;;;12935:34;;;;-1:-1:-1;;;;;11834:10:0::1;12985:19:1::0;;;12978:44;11859:15:0::1;13038:19:1::0;;;13031:35;3536:42:0::1;::::0;11671:31:::1;::::0;11710:9:::1;::::0;12717:19:1;;11671:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13668:240::-:0;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;13780:38:::1;::::0;;;;13812:4:::1;13780:38;::::0;::::1;1553:74:1::0;13753:24:0::1;::::0;-1:-1:-1;;;;;13780:23:0;::::1;::::0;::::1;::::0;1526:18:1;;13780:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13753:65;;13829:51;13852:5;13859:2;13863:16;13829:22;:51::i;13916:247::-:0;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;-1:-1:-1;;;;;13994:18:0;::::1;13986:46;;;::::0;-1:-1:-1;;;13986:46:0;;13779:2:1;13986:46:0::1;::::0;::::1;13761:21:1::0;13818:2;13798:18;;;13791:30;13857:17;13837:18;;;13830:45;13892:18;;13986:46:0::1;13577:339:1::0;13986:46:0::1;14046:12;14064:4;-1:-1:-1::0;;;;;14064:9:0::1;14081:21;14064:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14045:62;;;14126:7;14118:37;;;::::0;-1:-1:-1;;;14118:37:0;;14333:2:1;14118:37:0::1;::::0;::::1;14315:21:1::0;14372:2;14352:18;;;14345:30;14411:19;14391:18;;;14384:47;14448:18;;14118:37:0::1;14131:341:1::0;14118:37:0::1;13975:188;13916:247:::0;:::o;10929:492::-;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;11046:8:::1;::::0;;;::::1;;;11045:9;11037:38;;;::::0;-1:-1:-1;;;11037:38:0;;12299:2:1;11037:38:0::1;::::0;::::1;12281:21:1::0;12338:2;12318:18;;;12311:30;12377:18;12357;;;12350:46;12413:18;;11037:38:0::1;12097:340:1::0;11037:38:0::1;11091:9;11086:328;11110:9;:16;11106:1;:20;11086:328;;;11181:7;11189:1;11181:10;;;;;;;;:::i;:::-;;;;;;;11156:9;:21;11166:10;-1:-1:-1::0;;;;;11156:21:0::1;-1:-1:-1::0;;;;;11156:21:0::1;;;;;;;;;;;;;:35;;11148:86;;;::::0;-1:-1:-1;;;11148:86:0;;14868:2:1;11148:86:0::1;::::0;::::1;14850:21:1::0;14907:2;14887:18;;;14880:30;14946:34;14926:18;;;14919:62;15017:8;14997:18;;;14990:36;15043:19;;11148:86:0::1;14666:402:1::0;11148:86:0::1;11276:7;11284:1;11276:10;;;;;;;;:::i;:::-;;;;;;;11249:9;:23;11259:9;11269:1;11259:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11249:23:0::1;-1:-1:-1::0;;;;;11249:23:0::1;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;11326:7;11334:1;11326:10;;;;;;;;:::i;:::-;;;;;;;11301:9;:21;11311:10;-1:-1:-1::0;;;;;11301:21:0::1;-1:-1:-1::0;;;;;11301:21:0::1;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11377:9;11387:1;11377:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;11356:46:0::1;11365:10;-1:-1:-1::0;;;;;11356:46:0::1;;11391:7;11399:1;11391:10;;;;;;;;:::i;:::-;;;;;;;11356:46;;;;1784:25:1::0;;1772:2;1757:18;;1638:177;11356:46:0::1;;;;;;;;11128:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11086:328;;11429:123:::0;507:10;496:7;407;434:6;-1:-1:-1;;;;;434:6:0;;361:87;496:7;-1:-1:-1;;;;;496:21:0;;488:66;;;;-1:-1:-1;;;488:66:0;;7547:2:1;488:66:0;;;7529:21:1;;;7566:18;;;7559:30;7625:34;7605:18;;;7598:62;7677:18;;488:66:0;7345:356:1;488:66:0;11489:8:::1;::::0;;;::::1;;;11488:9;11480:38;;;::::0;-1:-1:-1;;;11480:38:0;;12299:2:1;11480:38:0::1;::::0;::::1;12281:21:1::0;12338:2;12318:18;;;12311:30;12377:18;12357;;;12350:46;12413:18;;11480:38:0::1;12097:340:1::0;11480:38:0::1;11529:8;:15:::0;;;::::1;::::0;::::1;::::0;;11429:123::o;6146:337::-;-1:-1:-1;;;;;6239:19:0;;6231:68;;;;-1:-1:-1;;;6231:68:0;;15738:2:1;6231:68:0;;;15720:21:1;15777:2;15757:18;;;15750:30;15816:34;15796:18;;;15789:62;15887:6;15867:18;;;15860:34;15911:19;;6231:68:0;15536:400:1;6231:68:0;-1:-1:-1;;;;;6318:21:0;;6310:68;;;;-1:-1:-1;;;6310:68:0;;16143:2:1;6310:68:0;;;16125:21:1;16182:2;16162:18;;;16155:30;16221:34;16201:18;;;16194:62;16292:4;16272:18;;;16265:32;16314:19;;6310:68:0;15941:398:1;6310:68:0;-1:-1:-1;;;;;6391:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6443:32;;1784:25:1;;;6443:32:0;;1757:18:1;6443:32:0;;;;;;;6146:337;;;:::o;7185:2675::-;-1:-1:-1;;;;;7273:18:0;;7265:68;;;;-1:-1:-1;;;7265:68:0;;16546:2:1;7265:68:0;;;16528:21:1;16585:2;16565:18;;;16558:30;16624:34;16604:18;;;16597:62;16695:7;16675:18;;;16668:35;16720:19;;7265:68:0;16344:401:1;7265:68:0;-1:-1:-1;;;;;7352:16:0;;7344:64;;;;-1:-1:-1;;;7344:64:0;;16952:2:1;7344:64:0;;;16934:21:1;16991:2;16971:18;;;16964:30;17030:34;17010:18;;;17003:62;17101:5;17081:18;;;17074:33;17124:19;;7344:64:0;16750:399:1;7344:64:0;7436:1;7427:6;:10;7419:64;;;;-1:-1:-1;;;7419:64:0;;17356:2:1;7419:64:0;;;17338:21:1;17395:2;17375:18;;;17368:30;17434:34;17414:18;;;17407:62;17505:11;17485:18;;;17478:39;17534:19;;7419:64:0;17154:405:1;7419:64:0;7501:8;;;;;;;7500:9;:72;;;;-1:-1:-1;407:7:0;434:6;-1:-1:-1;;;;;7514:15:0;;;434:6;;7514:15;;;;:40;;-1:-1:-1;;;;;;7533:21:0;;7549:4;7533:21;;7514:40;:57;;;;-1:-1:-1;407:7:0;434:6;-1:-1:-1;;;;;7558:13:0;;;434:6;;7558:13;;7514:57;7496:134;;;7589:29;;-1:-1:-1;;;7589:29:0;;17766:2:1;7589:29:0;;;17748:21:1;17805:2;17785:18;;;17778:30;17844:21;17824:18;;;17817:49;17883:18;;7589:29:0;17564:343:1;7496:134:0;7646:14;;;;;;;7642:830;;;407:7;434:6;-1:-1:-1;;;;;7681:15:0;;;434:6;;7681:15;;;;:32;;-1:-1:-1;407:7:0;434:6;-1:-1:-1;;;;;7700:13:0;;;434:6;;7700:13;;7681:32;:52;;;;-1:-1:-1;;;;;;7717:16:0;;;;7681:52;:77;;;;-1:-1:-1;;;;;;7737:21:0;;7751:6;7737:21;;7681:77;:90;;;;-1:-1:-1;7763:8:0;;;;;;;7762:9;7681:90;7677:784;;;-1:-1:-1;;;;;7796:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;7832:35:0;;;;;;:31;:35;;;;;;;;7831:36;7796:71;7792:654;;;7910:20;;7900:6;:30;;7892:80;;;;-1:-1:-1;;;7892:80:0;;18114:2:1;7892:80:0;;;18096:21:1;18153:2;18133:18;;;18126:30;18192:34;18172:18;;;18165:62;18263:7;18243:18;;;18236:35;18288:19;;7892:80:0;17912:401:1;7892:80:0;8029:9;;-1:-1:-1;;;;;5810:18:0;;5783:7;5810:18;;;:9;:18;;;;;;8003:22;;:6;:22;:::i;:::-;:35;;7995:67;;;;-1:-1:-1;;;7995:67:0;;18520:2:1;7995:67:0;;;18502:21:1;18559:2;18539:18;;;18532:30;18598:21;18578:18;;;18571:49;18637:18;;7995:67:0;18318:343:1;7995:67:0;7792:654;;;-1:-1:-1;;;;;8092:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;8126:37:0;;;;;;:31;:37;;;;;;;;8125:38;8092:71;8088:358;;;8206:20;;8196:6;:30;;8188:80;;;;-1:-1:-1;;;8188:80:0;;18868:2:1;8188:80:0;;;18850:21:1;18907:2;18887:18;;;18880:30;18946:34;18926:18;;;18919:62;19017:8;18997:18;;;18990:36;19043:19;;8188:80:0;18666:402:1;8088:358:0;-1:-1:-1;;;;;8299:35:0;;;;;;:31;:35;;;;;;;;8294:152;;8393:9;;-1:-1:-1;;;;;5810:18:0;;5783:7;5810:18;;;:9;:18;;;;;;8367:22;;:6;:22;:::i;:::-;:35;;8359:67;;;;-1:-1:-1;;;8359:67:0;;18520:2:1;8359:67:0;;;18502:21:1;18559:2;18539:18;;;18532:30;18598:21;18578:18;;;18571:49;18637:18;;8359:67:0;18318:343:1;8359:67:0;8527:18;;8517:4;8484:12;5810:18;;;:9;:18;;;;;;-1:-1:-1;8499:46:0;;;;;8562:20;;-1:-1:-1;8574:8:0;;;;;;;8573:9;8562:20;:56;;;;-1:-1:-1;;;;;;8587:31:0;;;;;;:25;:31;;;;;;;;8586:32;8562:56;:86;;;;-1:-1:-1;;;;;;8623:25:0;;;;;;:19;:25;;;;;;;;8622:26;8562:86;:114;;;;-1:-1:-1;;;;;;8653:23:0;;;;;;:19;:23;;;;;;;;8652:24;8562:114;8558:218;;;8693:8;:15;;;;;;;;8723:10;:8;:10::i;:::-;8748:8;:16;;;;;;8558:218;8804:8;;-1:-1:-1;;;;;8829:25:0;;8788:12;8829:25;;;:19;:25;;;;;;8804:8;;;;;;;8803:9;;8829:25;;:52;;-1:-1:-1;;;;;;8858:23:0;;;;;;:19;:23;;;;;;;;8829:52;8825:100;;;-1:-1:-1;8908:5:0;8825:100;-1:-1:-1;;;;;8961:15:0;;8937:21;8961:15;;;:9;:15;;;;;;8995:23;;;;8987:74;;;;-1:-1:-1;;;8987:74:0;;14868:2:1;8987:74:0;;;14850:21:1;14907:2;14887:18;;;14880:30;14946:34;14926:18;;;14919:62;15017:8;14997:18;;;14990:36;15043:19;;8987:74:0;14666:402:1;8987:74:0;9074:12;9105:7;9101:600;;;-1:-1:-1;;;;;9133:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;9166:13:0;;;;;;;:17;;9133:50;9129:262;;;9221:13;;9238:3;;9212:22;;9221:13;;;;;9212:6;:22;:::i;:::-;9211:30;;;;:::i;:::-;9204:37;;9129:262;;;-1:-1:-1;;;;;9267:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;9302:12:0;;;;;;;:16;;9267:51;9263:128;;;9356:12;;9372:3;;9347:21;;9356:12;;;;;9347:6;:21;:::i;:::-;9346:29;;;;:::i;:::-;9339:36;;9263:128;9411:8;;9407:283;;-1:-1:-1;;;;;9518:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;9582:4;9564:24;;;;;;;:32;;;;;;9639:35;1784:25:1;;;9482:13:0;;;;;9582:4;;9518:15;9639:35;;1757:18:1;9639:35:0;;;;;;;9407:283;-1:-1:-1;;;;;9736:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;9776:13;;;;;;;;;;:23;;;;;;9826:26;;;;;;9755:6;1784:25:1;;1772:2;1757:18;;1638:177;9826:26:0;;;;;;;;7254:2606;;;;7185:2675;;;:::o;706:320::-;837:59;;;-1:-1:-1;;;;;19265:55:1;;;837:59:0;;;19247:74:1;19337:18;;;;19330:34;;;837:59:0;;;;;;;;;;19220:18:1;;;;837:59:0;;;;;;;;;860:24;837:59;;;826:71;;-1:-1:-1;;;;826:10:0;;;;:71;;837:59;826:71;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;790:107;;;;916:7;:57;;;;-1:-1:-1;928:11:0;;:16;;:44;;;959:4;948:24;;;;;;;;;;;;:::i;:::-;908:110;;;;-1:-1:-1;;;908:110:0;;20119:2:1;908:110:0;;;20101:21:1;20158:2;20138:18;;;20131:30;20197:34;20177:18;;;20170:62;20268:10;20248:18;;;20241:38;20296:19;;908:110:0;19917:404:1;908:110:0;779:247;;706:320;;;:::o;14171:1117::-;14234:18;;14210:21;14319:23;14234:18;14340:2;14319:23;:::i;:::-;14310:4;5783:7;5810:18;;;:9;:18;;;;;;14292:50;14288:122;;;14375:18;;:23;;14396:2;14375:23;:::i;:::-;14359:39;;14288:122;14446:16;;;14460:1;14446:16;;;;;;;;14422:21;;14446:16;;;;;;;;;;-1:-1:-1;14446:16:0;14422:40;;14491:4;14473;14478:1;14473:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14473:23:0;;;-1:-1:-1;;;;;14473:23:0;;;;;2548:42;14507:4;14512:1;14507:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14507:14:0;;;:7;;;;;;;;;;;:14;14534:122;;;;;3536:42;;14534:66;;:122;;14601:13;;14616:1;;14619:4;;14633;;14640:15;;14534:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14690:21:0;;-1:-1:-1;;14726:14:0;;;-1:-1:-1;14722:559:0;;14791:6;;14757:17;;14801:3;;14778:19;;14791:6;;;;;14778:10;:19;:::i;:::-;14777:27;;;;:::i;:::-;14854:7;;14757:47;;-1:-1:-1;14819:18:0;;14865:3;;14841:20;;14854:7;;;;;14841:10;:20;:::i;:::-;14840:28;;;;:::i;:::-;14819:49;-1:-1:-1;14883:22:0;14819:49;14908:22;14921:9;14908:10;:22;:::i;:::-;:35;;;;:::i;:::-;14982:10;;14974:47;;14883:60;;-1:-1:-1;;;;;;14982:10:0;;15006;;14974:47;;;;15006:10;14982;14974:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15058:14:0;;15050:55;;14960:61;;-1:-1:-1;;;;;;15058:14:0;;15086;;15050:55;;;;15086:14;15058;15050:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15142:9:0;;15134:45;;15036:69;;-1:-1:-1;;;;;;15142:9:0;;15165;;15134:45;;;;15165:9;15142;15134:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15201:68:0;;;21588:25:1;;;21644:2;21629:18;;21622:34;;;21672:18;;;21665:34;;;21730:2;21715:18;;21708:34;;;15120:59:0;;-1:-1:-1;15201:68:0;;21575:3:1;21560:19;15201:68:0;;;;;;;14742:539;;;14722:559;14199:1089;;;;14171:1117::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:455::-;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;:::-;640:2;628:15;645:66;624:88;609:104;;;;715:2;605:113;;269:455;-1:-1:-1;;269:455:1:o;729:196::-;797:20;;-1:-1:-1;;;;;846:54:1;;836:65;;826:93;;915:1;912;905:12;826:93;729:196;;;:::o;930:254::-;998:6;1006;1059:2;1047:9;1038:7;1034:23;1030:32;1027:52;;;1075:1;1072;1065:12;1027:52;1098:29;1117:9;1098:29;:::i;:::-;1088:39;1174:2;1159:18;;;;1146:32;;-1:-1:-1;;;930:254:1:o;2009:328::-;2086:6;2094;2102;2155:2;2143:9;2134:7;2130:23;2126:32;2123:52;;;2171:1;2168;2161:12;2123:52;2194:29;2213:9;2194:29;:::i;:::-;2184:39;;2242:38;2276:2;2265:9;2261:18;2242:38;:::i;:::-;2232:48;;2327:2;2316:9;2312:18;2299:32;2289:42;;2009:328;;;;;:::o;2342:180::-;2401:6;2454:2;2442:9;2433:7;2429:23;2425:32;2422:52;;;2470:1;2467;2460:12;2422:52;-1:-1:-1;2493:23:1;;2342:180;-1:-1:-1;2342:180:1:o;2527:156::-;2593:20;;2653:4;2642:16;;2632:27;;2622:55;;2673:1;2670;2663:12;2688:322;2759:6;2767;2775;2828:2;2816:9;2807:7;2803:23;2799:32;2796:52;;;2844:1;2841;2834:12;2796:52;2867:27;2884:9;2867:27;:::i;:::-;2857:37;;2913:36;2945:2;2934:9;2930:18;2913:36;:::i;:::-;2903:46;;2968:36;3000:2;2989:9;2985:18;2968:36;:::i;:::-;2958:46;;2688:322;;;;;:::o;3246:252::-;3310:6;3318;3371:2;3359:9;3350:7;3346:23;3342:32;3339:52;;;3387:1;3384;3377:12;3339:52;3410:27;3427:9;3410:27;:::i;:::-;3400:37;;3456:36;3488:2;3477:9;3473:18;3456:36;:::i;:::-;3446:46;;3246:252;;;;;:::o;3503:118::-;3589:5;3582:13;3575:21;3568:5;3565:32;3555:60;;3611:1;3608;3601:12;3555:60;3503:118;:::o;3626:315::-;3691:6;3699;3752:2;3740:9;3731:7;3727:23;3723:32;3720:52;;;3768:1;3765;3758:12;3720:52;3791:29;3810:9;3791:29;:::i;:::-;3781:39;;3870:2;3859:9;3855:18;3842:32;3883:28;3905:5;3883:28;:::i;:::-;3930:5;3920:15;;;3626:315;;;;;:::o;3946:186::-;4005:6;4058:2;4046:9;4037:7;4033:23;4029:32;4026:52;;;4074:1;4071;4064:12;4026:52;4097:29;4116:9;4097:29;:::i;:::-;4087:39;3946:186;-1:-1:-1;;;3946:186:1:o;4137:260::-;4205:6;4213;4266:2;4254:9;4245:7;4241:23;4237:32;4234:52;;;4282:1;4279;4272:12;4234:52;4305:29;4324:9;4305:29;:::i;:::-;4295:39;;4353:38;4387:2;4376:9;4372:18;4353:38;:::i;4402:184::-;4454:77;4451:1;4444:88;4551:4;4548:1;4541:15;4575:4;4572:1;4565:15;4591:334;4662:2;4656:9;4718:2;4708:13;;4723:66;4704:86;4692:99;;4821:18;4806:34;;4842:22;;;4803:62;4800:88;;;4868:18;;:::i;:::-;4904:2;4897:22;4591:334;;-1:-1:-1;4591:334:1:o;4930:183::-;4990:4;5023:18;5015:6;5012:30;5009:56;;;5045:18;;:::i;:::-;-1:-1:-1;5090:1:1;5086:14;5102:4;5082:25;;4930:183::o;5118:662::-;5172:5;5225:3;5218:4;5210:6;5206:17;5202:27;5192:55;;5243:1;5240;5233:12;5192:55;5279:6;5266:20;5305:4;5329:60;5345:43;5385:2;5345:43;:::i;:::-;5329:60;:::i;:::-;5423:15;;;5509:1;5505:10;;;;5493:23;;5489:32;;;5454:12;;;;5533:15;;;5530:35;;;5561:1;5558;5551:12;5530:35;5597:2;5589:6;5585:15;5609:142;5625:6;5620:3;5617:15;5609:142;;;5691:17;;5679:30;;5729:12;;;;5642;;5609:142;;;-1:-1:-1;5769:5:1;5118:662;-1:-1:-1;;;;;;5118:662:1:o;5785:1146::-;5903:6;5911;5964:2;5952:9;5943:7;5939:23;5935:32;5932:52;;;5980:1;5977;5970:12;5932:52;6020:9;6007:23;6049:18;6090:2;6082:6;6079:14;6076:34;;;6106:1;6103;6096:12;6076:34;6144:6;6133:9;6129:22;6119:32;;6189:7;6182:4;6178:2;6174:13;6170:27;6160:55;;6211:1;6208;6201:12;6160:55;6247:2;6234:16;6269:4;6293:60;6309:43;6349:2;6309:43;:::i;6293:60::-;6387:15;;;6469:1;6465:10;;;;6457:19;;6453:28;;;6418:12;;;;6493:19;;;6490:39;;;6525:1;6522;6515:12;6490:39;6549:11;;;;6569:148;6585:6;6580:3;6577:15;6569:148;;;6651:23;6670:3;6651:23;:::i;:::-;6639:36;;6602:12;;;;6695;;;;6569:148;;;6736:5;-1:-1:-1;;6779:18:1;;6766:32;;-1:-1:-1;;6810:16:1;;;6807:36;;;6839:1;6836;6829:12;6807:36;;6862:63;6917:7;6906:8;6895:9;6891:24;6862:63;:::i;:::-;6852:73;;;5785:1146;;;;;:::o;7706:184::-;7758:77;7755:1;7748:88;7855:4;7852:1;7845:15;7879:4;7876:1;7869:15;7895:168;7968:9;;;7999;;8016:15;;;8010:22;;7996:37;7986:71;;8037:18;;:::i;8068:274::-;8108:1;8134;8124:189;;8169:77;8166:1;8159:88;8270:4;8267:1;8260:15;8298:4;8295:1;8288:15;8124:189;-1:-1:-1;8327:9:1;;8068:274::o;8753:148::-;8841:4;8820:12;;;8834;;;8816:31;;8859:13;;8856:39;;;8875:18;;:::i;13077:306::-;13165:6;13173;13181;13234:2;13222:9;13213:7;13209:23;13205:32;13202:52;;;13250:1;13247;13240:12;13202:52;13279:9;13273:16;13263:26;;13329:2;13318:9;13314:18;13308:25;13298:35;;13373:2;13362:9;13358:18;13352:25;13342:35;;13077:306;;;;;:::o;13388:184::-;13458:6;13511:2;13499:9;13490:7;13486:23;13482:32;13479:52;;;13527:1;13524;13517:12;13479:52;-1:-1:-1;13550:16:1;;13388:184;-1:-1:-1;13388:184:1:o;14477:::-;14529:77;14526:1;14519:88;14626:4;14623:1;14616:15;14650:4;14647:1;14640:15;15073:125;15138:9;;;15159:10;;;15156:36;;;15172:18;;:::i;15203:128::-;15270:9;;;15291:11;;;15288:37;;;15305:18;;:::i;15336:195::-;15375:3;15406:66;15399:5;15396:77;15393:103;;15476:18;;:::i;:::-;-1:-1:-1;15523:1:1;15512:13;;15336:195::o;19375:287::-;19504:3;19542:6;19536:13;19558:66;19617:6;19612:3;19605:4;19597:6;19593:17;19558:66;:::i;:::-;19640:16;;;;;19375:287;-1:-1:-1;;19375:287:1:o;19667:245::-;19734:6;19787:2;19775:9;19766:7;19762:23;19758:32;19755:52;;;19803:1;19800;19793:12;19755:52;19835:9;19829:16;19854:28;19876:5;19854:28;:::i;20326:1026::-;20588:4;20636:3;20625:9;20621:19;20667:6;20656:9;20649:25;20693:2;20731:6;20726:2;20715:9;20711:18;20704:34;20774:3;20769:2;20758:9;20754:18;20747:31;20798:6;20833;20827:13;20864:6;20856;20849:22;20902:3;20891:9;20887:19;20880:26;;20941:2;20933:6;20929:15;20915:29;;20962:1;20972:218;20986:6;20983:1;20980:13;20972:218;;;21051:13;;-1:-1:-1;;;;;21047:62:1;21035:75;;21165:15;;;;21130:12;;;;21008:1;21001:9;20972:218;;;-1:-1:-1;;;;;;;21246:55:1;;;;21241:2;21226:18;;21219:83;-1:-1:-1;;;21333:3:1;21318:19;21311:35;21207:3;20326:1026;-1:-1:-1;;;20326:1026:1:o

Swarm Source

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