BNB Price: $695.21 (-4.77%)
Gas: 1 GWei
 

Overview

Max Total Supply

1,000,000,000KOMA

Holders

39,068 ( 6.466%)

Total Transfers

-

Market

Price

$0.1058 @ 0.000152 BNB (+6.96%)

Onchain Market Cap

$105,829,694.41

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Koma is a dog-themed token built around community-driven decentralization and adoption.

Market

Volume (24H):$41,887,372.20
Market Capitalization:$0.00
Circulating Supply:0.00 KOMA
Market Data Source: Coinmarketcap


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
KOMA

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2024-10-06
*/

pragma solidity 0.8.18;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function circulatingSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address _owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable newOwner) public onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(owner, newOwner); // Emit old and new owner
        owner = newOwner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }

    event OwnershipTransferred(address oldOwner, address newOwner);
}

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

    function getPool(
        address tokenA,
        address tokenB,
        uint24 fee
    ) external view returns (address pair);
}

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

    function WETH() external pure returns (address);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract KOMA is IERC20, Ownable {
    string private constant _name = "Koma Inu";
    string private constant _symbol = "KOMA";
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 1_000_000_000 * (10 ** _decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    bool private tradingOpen = false;
    uint256 private initStartTime; // variable to track the start time of the initialization period
    IRouter router;
    address public pair;
    uint256 public buyFee = 500;
    uint256 public sellFee = 500;
    uint256 private initFee = 3000;
    uint256 private denominator = 10000;
    bool public swapAndLiqEnabled = true;
    bool private swapping;
    uint256 public TOKEN_SALE_THRESHOLD;
    address payable public marketing_receiver;

    uint256 private constant MAX_BUY_FEE = 500; // 5%
    uint256 private constant MAX_SELL_FEE = 500; // 5%

    uint256 private constant BUY_TAX_DURATION = 15 seconds; // Duration for buy tax
    uint256 private constant SELL_TAX_DURATION = 30 minutes; // Duration for sell tax
    uint256 private constant INITIAL_BUY_TAX = 3000; // 30%
    uint256 private constant INITIAL_SELL_TAX = 3000; // 30%

    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        address _pair = IFactory(0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73)
            .createPair(_router.WETH(), address(this));
        marketing_receiver = payable(
            0xd9F7ad3EF33B57b1305280FB1233e863056e3343);
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[address(marketing_receiver)] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
        TOKEN_SALE_THRESHOLD = 500_000 * (10 ** _decimals); // Initialize with default value
    }

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

    function getOwner() external view override returns (address) {
        return owner;
    }

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

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

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

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

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

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

    function circulatingSupply() public view override returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(address(0));
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        swapBack(sender, recipient, balanceOf(address(this)));
        _balances[sender] -= amount;
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] += amountReceived;
        emit Transfer(sender, recipient, amountReceived);
    }

    function setStructure(uint256 _buy, uint256 _sell) external onlyOwner {
        require(
            _buy <= MAX_BUY_FEE && _sell <= MAX_SELL_FEE,
            "Fees exceed maximum limits"
        );
        buyFee = _buy;
        sellFee = _sell;
        emit StructureUpdated(_buy, _sell);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(tokens);
        uint256 deltaBalance = address(this).balance - initialBalance;

        // Send all ETH directly to the marketing wallet
        if (deltaBalance > 0) {
            (bool success, ) = marketing_receiver.call{value: deltaBalance}("");
            if (!success) {
                emit TransferFailed(deltaBalance);
            }
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function shouldSwapBack(
        address sender,
        address recipient
    ) internal view returns (bool) {
        bool aboveThreshold = balanceOf(address(this)) >= TOKEN_SALE_THRESHOLD;
        return
            !swapping &&
            swapAndLiqEnabled &&
            !isFeeExempt[sender] &&
            recipient == pair &&
            aboveThreshold;
    }

    function swapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (shouldSwapBack(sender, recipient)) {
            swapAndLiquify(amount); // Swap the entire balance
        }
    }

    function shouldTakeFee(
        address sender,
        address recipient
    ) internal view returns (bool) {
        bool isBuy = sender == pair;
        bool isSell = recipient == pair;
        return
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            (isBuy || isSell);
    }

    function getTotalFee(
        address sender,
        address recipient
    ) public view returns (uint256) {
        if (recipient == pair) {
            // Selling
            if (block.timestamp < initStartTime + SELL_TAX_DURATION) {
                uint256 timeElapsed = block.timestamp - initStartTime;
                uint256 sellTax = INITIAL_SELL_TAX -
                    ((INITIAL_SELL_TAX - sellFee) * timeElapsed) /
                    SELL_TAX_DURATION;
                return sellTax;
            }
            return sellFee; // After duration, return sellFee
        }
        if (sender == pair) {
            // Buying
            if (block.timestamp < initStartTime + BUY_TAX_DURATION) {
                uint256 timeElapsed = block.timestamp - initStartTime;
                uint256 buyTax = INITIAL_BUY_TAX -
                    ((INITIAL_BUY_TAX - buyFee) * timeElapsed) /
                    BUY_TAX_DURATION;
                return buyTax;
            }
            return buyFee; // After duration, return buyFee
        }
        return 0; // For transfers
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 totalFee = getTotalFee(sender, recipient);
        if (totalFee > 0) {
            uint256 feeAmount = (amount * totalFee) / denominator; // Multiply first to maintain precision
            _balances[address(this)] += feeAmount;
            emit Transfer(sender, address(this), feeAmount);
            return amount - feeAmount;
        }
        return amount;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, msg.sender, currentAllowance - amount);
        _transfer(sender, recipient, 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 startTrading() external onlyOwner {
        require(!tradingOpen, "Trading already enabled");
        tradingOpen = true;
        initStartTime = block.timestamp; // Set the start time to the current block timestamp
    }

    function checkTradingAllowed(
        address sender,
        address recipient
    ) internal view {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingOpen, "ERC20: Trading is not allowed");
        }
    }

    function rescueETH() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function rescueERC20(address _address, uint256 _amount) external onlyOwner {
        require(_address != address(this), "Cannot rescue this token itself");
        IERC20(_address).transfer(msg.sender, _amount);
    }

    // Function to update the marketing receiver
    function setMarketingReceiver(address newReceiver) external onlyOwner {
        require(newReceiver != address(0), "Invalid address: zero address");
        marketing_receiver = payable(newReceiver);
        emit MarketingReceiverUpdated(newReceiver);
    }

    // Function to update the TOKEN_SALE_THRESHOLD
    function setTokenSaleThreshold(uint256 newThreshold) external onlyOwner {
        require(newThreshold > 0, "Threshold must be greater than zero");
        TOKEN_SALE_THRESHOLD = newThreshold;
        emit TokenSaleThresholdUpdated(newThreshold);
    }

    function setSwapAndLiqEnabled(bool _enabled) external onlyOwner {
        swapAndLiqEnabled = _enabled;
        emit SwapAndLiqEnabledUpdated(_enabled);
    }

    // Declare events
    event StructureUpdated(uint256 buyFee, uint256 sellFee);
    event MarketingReceiverUpdated(address newReceiver);
    event TokenSaleThresholdUpdated(uint256 newThreshold);
    event SwapAndLiqEnabledUpdated(bool enabled);
    event TransferFailed(uint256 amount);
}

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":"address","name":"newReceiver","type":"address"}],"name":"MarketingReceiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"StructureUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiqEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"TokenSaleThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferFailed","type":"event"},{"inputs":[],"name":"TOKEN_SALE_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_receiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newReceiver","type":"address"}],"name":"setMarketingReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiqEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"setTokenSaleThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiqEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000664565b633b9aca00620000259190620006b5565b6001556000600560006101000a81548160ff0219169083151502179055506101f46009556101f4600a55610bb8600b55612710600c556001600d60006101000a81548160ff0219169083151502179055503480156200008357600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060007310ed43c718714eb63d5aa57b78b54704e256024e9050600073ca143ce32fe78f1f7019d7d551a6402fc5350c7373ffffffffffffffffffffffffffffffffffffffff1663c9c653968373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200015d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018391906200076a565b306040518363ffffffff1660e01b8152600401620001a3929190620007ad565b6020604051808303816000875af1158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e991906200076a565b905073d9f7ad3ef33b57b1305280fb1233e863056e3343600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620004949190620007eb565b60405180910390a36012600a620004ac919062000664565b6207a120620004bc9190620006b5565b600e81905550505062000808565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005585780860481111562000530576200052f620004ca565b5b6001851615620005405780820291505b80810290506200055085620004f9565b945062000510565b94509492505050565b60008262000573576001905062000646565b8162000583576000905062000646565b81600181146200059c5760028114620005a757620005dd565b600191505062000646565b60ff841115620005bc57620005bb620004ca565b5b8360020a915084821115620005d657620005d5620004ca565b5b5062000646565b5060208310610133831016604e8410600b8410161715620006175782820a905083811115620006115762000610620004ca565b5b62000646565b62000626848484600162000506565b9250905081840481111562000640576200063f620004ca565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000671826200064d565b91506200067e8362000657565b9250620006ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000561565b905092915050565b6000620006c2826200064d565b9150620006cf836200064d565b9250828202620006df816200064d565b91508282048414831517620006f957620006f8620004ca565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007328262000705565b9050919050565b620007448162000725565b81146200075057600080fd5b50565b600081519050620007648162000739565b92915050565b60006020828403121562000783576200078262000700565b5b6000620007938482850162000753565b91505092915050565b620007a78162000725565b82525050565b6000604082019050620007c460008301856200079c565b620007d360208301846200079c565b9392505050565b620007e5816200064d565b82525050565b6000602082019050620008026000830184620007da565b92915050565b61335280620008186000396000f3fe6080604052600436106101d15760003560e01c8063715018a6116100f75780639358928b11610095578063d18afa8511610064578063d18afa8514610661578063d2d55dde1461068a578063dd62ed3e146106c7578063f2fde38b14610704576101d8565b80639358928b146105a357806395d89b41146105ce578063a8aa1b31146105f9578063a9059cbb14610624576101d8565b806378b78d09116100d157806378b78d09146104fb57806385ae099f14610524578063893d20e81461054f5780638cd4426d1461057a576101d8565b8063715018a61461049057806375b62532146104a757806376685e68146104d0576101d8565b80632f54bf6e1161016f57806348ff2b8b1161013e57806348ff2b8b146103d65780635f7bcd70146103ff578063677bff1b1461042a57806370a0823114610453576101d8565b80632f54bf6e14610306578063313ce567146103435780633f4218e01461036e57806347062402146103ab576101d8565b806320800a00116101ab57806320800a001461027057806323b872dd14610287578063293230b8146102c45780632b14ca56146102db576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261072d565b6040516101ff91906122a4565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061235f565b61076a565b60405161023c91906123ba565b60405180910390f35b34801561025157600080fd5b5061025a610781565b60405161026791906123e4565b60405180910390f35b34801561027c57600080fd5b5061028561078b565b005b34801561029357600080fd5b506102ae60048036038101906102a991906123ff565b61081c565b6040516102bb91906123ba565b60405180910390f35b3480156102d057600080fd5b506102d961090e565b005b3480156102e757600080fd5b506102f06109ca565b6040516102fd91906123e4565b60405180910390f35b34801561031257600080fd5b5061032d60048036038101906103289190612452565b6109d0565b60405161033a91906123ba565b60405180910390f35b34801561034f57600080fd5b50610358610a29565b604051610365919061249b565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190612452565b610a32565b6040516103a291906123ba565b60405180910390f35b3480156103b757600080fd5b506103c0610a52565b6040516103cd91906123e4565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906124e2565b610a58565b005b34801561040b57600080fd5b50610414610afb565b6040516104219190612543565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061255e565b610b21565b005b34801561045f57600080fd5b5061047a60048036038101906104759190612452565b610bed565b60405161048791906123e4565b60405180910390f35b34801561049c57600080fd5b506104a5610c36565b005b3480156104b357600080fd5b506104ce60048036038101906104c99190612452565b610d1b565b005b3480156104dc57600080fd5b506104e5610e4d565b6040516104f291906123e4565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061258b565b610e53565b005b34801561053057600080fd5b50610539610eef565b60405161054691906123ba565b60405180910390f35b34801561055b57600080fd5b50610564610f02565b60405161057191906125c7565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c919061235f565b610f2b565b005b3480156105af57600080fd5b506105b8611064565b6040516105c591906123e4565b60405180910390f35b3480156105da57600080fd5b506105e3611097565b6040516105f091906122a4565b60405180910390f35b34801561060557600080fd5b5061060e6110d4565b60405161061b91906125c7565b60405180910390f35b34801561063057600080fd5b5061064b6004803603810190610646919061235f565b6110fa565b60405161065891906123ba565b60405180910390f35b34801561066d57600080fd5b50610688600480360381019061068391906125e2565b611111565b005b34801561069657600080fd5b506106b160048036038101906106ac9190612622565b6111f7565b6040516106be91906123e4565b60405180910390f35b3480156106d357600080fd5b506106ee60048036038101906106e99190612622565b611398565b6040516106fb91906123e4565b60405180910390f35b34801561071057600080fd5b5061072b6004803603810190610726919061268e565b61141f565b005b60606040518060400160405280600881526020017f4b6f6d6120496e75000000000000000000000000000000000000000000000000815250905090565b6000610777338484611572565b6001905092915050565b6000600154905090565b610794336109d0565b6107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca90612707565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610819573d6000803e3d6000fd5b50565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d890612799565b60405180910390fd5b6108f7853385846108f291906127e8565b611572565b61090285858561173b565b60019150509392505050565b610917336109d0565b610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d90612707565b60405180910390fd5b600560009054906101000a900460ff16156109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099d90612868565b60405180910390fd5b6001600560006101000a81548160ff02191690831515021790555042600681905550565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60046020528060005260406000206000915054906101000a900460ff1681565b60095481565b610a61336109d0565b610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790612707565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b2a336109d0565b610b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6090612707565b60405180910390fd5b60008111610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba3906128fa565b60405180910390fd5b80600e819055507f4ef2674a26c2ddc8607c49b40e20049a376cd815432565215997724825f0b39c81604051610be291906123e4565b60405180910390a150565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c3f336109d0565b610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590612707565b60405180910390fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051610cd092919061291a565b60405180910390a160008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d24336109d0565b610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90612707565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc99061298f565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1a9ebc3770a8a35e7494c4635aaedfa9f174ae61261b6e3aac36aeffc590cb6481604051610e4291906125c7565b60405180910390a150565b600e5481565b610e5c336109d0565b610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290612707565b60405180910390fd5b80600d60006101000a81548160ff0219169083151502179055507f2cfb1325100433fcb70fe63f837093ad5189b45f611699ffd2260af812a7657b81604051610ee491906123ba565b60405180910390a150565b600d60009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f34336109d0565b610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90612707565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd8906129fb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161101c929190612a1b565b6020604051808303816000875af115801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190612a59565b505050565b60006110706000610bed565b61107b61dead610bed565b60015461108891906127e8565b61109291906127e8565b905090565b60606040518060400160405280600481526020017f4b4f4d4100000000000000000000000000000000000000000000000000000000815250905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061110733848461173b565b6001905092915050565b61111a336109d0565b611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115090612707565b60405180910390fd5b6101f4821115801561116d57506101f48111155b6111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a390612ad2565b60405180910390fd5b8160098190555080600a819055507f951510f4368d3e96165c41d3b73449381754ecddccc3b2b00a25d9b2007ab4b282826040516111eb929190612af2565b60405180910390a15050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c45761070860065461125e9190612b1b565b4210156112ba5760006006544261127591906127e8565b9050600061070882600a54610bb861128d91906127e8565b6112979190612b4f565b6112a19190612bc0565b610bb86112ae91906127e8565b90508092505050611392565b600a549050611392565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138d57600f6006546113289190612b1b565b4210156113835760006006544261133f91906127e8565b90506000600f82600954610bb861135691906127e8565b6113609190612b4f565b61136a9190612bc0565b610bb861137791906127e8565b90508092505050611392565b6009549050611392565b600090505b92915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611428336109d0565b611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90612707565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90612c63565b60405180910390fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611527929190612ce2565b60405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612d7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790612e0f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161172e91906123e4565b60405180910390a3505050565b61174683838361189e565b6117508383611a0f565b611763838361175e30610bed565b611b0c565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117b291906127e8565b9250508190555060006117c58484611b2a565b6117cf57816117db565b6117da848484611c94565b5b905080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461182c9190612b1b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161189091906123e4565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490612ea1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390612f33565b60405180910390fd5b600081116119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690612fc5565b60405180910390fd5b6119c883610bed565b811115611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190613057565b60405180910390fd5b505050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab35750600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b0857600560009054906101000a900460ff16611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906130c3565b60405180910390fd5b5b5050565b611b168383611da5565b15611b2557611b2481611ea2565b5b505050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c795750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c8a57508180611c895750805b5b9250505092915050565b600080611ca185856111f7565b90506000811115611d99576000600c548285611cbd9190612b4f565b611cc79190612bc0565b905080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d189190612b1b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d7c91906123e4565b60405180910390a38084611d9091906127e8565b92505050611d9e565b829150505b9392505050565b600080600e54611db430610bed565b10159050600d60019054906101000a900460ff16158015611de15750600d60009054906101000a900460ff165b8015611e375750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e905750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611e995750805b91505092915050565b6001600d60016101000a81548160ff0219169083151502179055506000479050611ecb82611fd1565b60008147611ed991906127e8565b90506000811115611fb1576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611f2c90613114565b60006040518083038185875af1925050503d8060008114611f69576040519150601f19603f3d011682016040523d82523d6000602084013e611f6e565b606091505b5050905080611faf577fc39ba1a9a812115efec13c9546b7b109574823d9c12ff09ebcc4ba5d47153ec682604051611fa691906123e4565b60405180910390a15b505b50506000600d60016101000a81548160ff02191690831515021790555050565b6000600267ffffffffffffffff811115611fee57611fed613129565b5b60405190808252806020026020018201604052801561201c5781602001602082028036833780820191505090505b509050308160008151811061203457612033613158565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ff919061319c565b8160018151811061211357612112613158565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061217a30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611572565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121de9594939291906132c2565b600060405180830381600087803b1580156121f857600080fd5b505af115801561220c573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561224e578082015181840152602081019050612233565b60008484015250505050565b6000601f19601f8301169050919050565b600061227682612214565b612280818561221f565b9350612290818560208601612230565b6122998161225a565b840191505092915050565b600060208201905081810360008301526122be818461226b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122f6826122cb565b9050919050565b612306816122eb565b811461231157600080fd5b50565b600081359050612323816122fd565b92915050565b6000819050919050565b61233c81612329565b811461234757600080fd5b50565b60008135905061235981612333565b92915050565b60008060408385031215612376576123756122c6565b5b600061238485828601612314565b92505060206123958582860161234a565b9150509250929050565b60008115159050919050565b6123b48161239f565b82525050565b60006020820190506123cf60008301846123ab565b92915050565b6123de81612329565b82525050565b60006020820190506123f960008301846123d5565b92915050565b600080600060608486031215612418576124176122c6565b5b600061242686828701612314565b935050602061243786828701612314565b92505060406124488682870161234a565b9150509250925092565b600060208284031215612468576124676122c6565b5b600061247684828501612314565b91505092915050565b600060ff82169050919050565b6124958161247f565b82525050565b60006020820190506124b0600083018461248c565b92915050565b6124bf8161239f565b81146124ca57600080fd5b50565b6000813590506124dc816124b6565b92915050565b600080604083850312156124f9576124f86122c6565b5b600061250785828601612314565b9250506020612518858286016124cd565b9150509250929050565b600061252d826122cb565b9050919050565b61253d81612522565b82525050565b60006020820190506125586000830184612534565b92915050565b600060208284031215612574576125736122c6565b5b60006125828482850161234a565b91505092915050565b6000602082840312156125a1576125a06122c6565b5b60006125af848285016124cd565b91505092915050565b6125c1816122eb565b82525050565b60006020820190506125dc60008301846125b8565b92915050565b600080604083850312156125f9576125f86122c6565b5b60006126078582860161234a565b92505060206126188582860161234a565b9150509250929050565b60008060408385031215612639576126386122c6565b5b600061264785828601612314565b925050602061265885828601612314565b9150509250929050565b61266b81612522565b811461267657600080fd5b50565b60008135905061268881612662565b92915050565b6000602082840312156126a4576126a36122c6565b5b60006126b284828501612679565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006126f160068361221f565b91506126fc826126bb565b602082019050919050565b60006020820190508181036000830152612720816126e4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061278360288361221f565b915061278e82612727565b604082019050919050565b600060208201905081810360008301526127b281612776565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127f382612329565b91506127fe83612329565b9250828203905081811115612816576128156127b9565b5b92915050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b600061285260178361221f565b915061285d8261281c565b602082019050919050565b6000602082019050818103600083015261288181612845565b9050919050565b7f5468726573686f6c64206d7573742062652067726561746572207468616e207a60008201527f65726f0000000000000000000000000000000000000000000000000000000000602082015250565b60006128e460238361221f565b91506128ef82612888565b604082019050919050565b60006020820190508181036000830152612913816128d7565b9050919050565b600060408201905061292f60008301856125b8565b61293c60208301846125b8565b9392505050565b7f496e76616c696420616464726573733a207a65726f2061646472657373000000600082015250565b6000612979601d8361221f565b915061298482612943565b602082019050919050565b600060208201905081810360008301526129a88161296c565b9050919050565b7f43616e6e6f7420726573637565207468697320746f6b656e20697473656c6600600082015250565b60006129e5601f8361221f565b91506129f0826129af565b602082019050919050565b60006020820190508181036000830152612a14816129d8565b9050919050565b6000604082019050612a3060008301856125b8565b612a3d60208301846123d5565b9392505050565b600081519050612a53816124b6565b92915050565b600060208284031215612a6f57612a6e6122c6565b5b6000612a7d84828501612a44565b91505092915050565b7f4665657320657863656564206d6178696d756d206c696d697473000000000000600082015250565b6000612abc601a8361221f565b9150612ac782612a86565b602082019050919050565b60006020820190508181036000830152612aeb81612aaf565b9050919050565b6000604082019050612b0760008301856123d5565b612b1460208301846123d5565b9392505050565b6000612b2682612329565b9150612b3183612329565b9250828201905080821115612b4957612b486127b9565b5b92915050565b6000612b5a82612329565b9150612b6583612329565b9250828202612b7381612329565b91508282048414831517612b8a57612b896127b9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bcb82612329565b9150612bd683612329565b925082612be657612be5612b91565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612c4d60268361221f565b9150612c5882612bf1565b604082019050919050565b60006020820190508181036000830152612c7c81612c40565b9050919050565b6000819050919050565b6000612ca8612ca3612c9e846122cb565b612c83565b6122cb565b9050919050565b6000612cba82612c8d565b9050919050565b6000612ccc82612caf565b9050919050565b612cdc81612cc1565b82525050565b6000604082019050612cf760008301856125b8565b612d046020830184612cd3565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d6760248361221f565b9150612d7282612d0b565b604082019050919050565b60006020820190508181036000830152612d9681612d5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612df960228361221f565b9150612e0482612d9d565b604082019050919050565b60006020820190508181036000830152612e2881612dec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e8b60258361221f565b9150612e9682612e2f565b604082019050919050565b60006020820190508181036000830152612eba81612e7e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612f1d60238361221f565b9150612f2882612ec1565b604082019050919050565b60006020820190508181036000830152612f4c81612f10565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612faf60298361221f565b9150612fba82612f53565b604082019050919050565b60006020820190508181036000830152612fde81612fa2565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061304160318361221f565b915061304c82612fe5565b604082019050919050565b6000602082019050818103600083015261307081613034565b9050919050565b7f45524332303a2054726164696e67206973206e6f7420616c6c6f776564000000600082015250565b60006130ad601d8361221f565b91506130b882613077565b602082019050919050565b600060208201905081810360008301526130dc816130a0565b9050919050565b600081905092915050565b50565b60006130fe6000836130e3565b9150613109826130ee565b600082019050919050565b600061311f826130f1565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613196816122fd565b92915050565b6000602082840312156131b2576131b16122c6565b5b60006131c084828501613187565b91505092915050565b6000819050919050565b60006131ee6131e96131e4846131c9565b612c83565b612329565b9050919050565b6131fe816131d3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613239816122eb565b82525050565b600061324b8383613230565b60208301905092915050565b6000602082019050919050565b600061326f82613204565b613279818561320f565b935061328483613220565b8060005b838110156132b557815161329c888261323f565b97506132a783613257565b925050600181019050613288565b5085935050505092915050565b600060a0820190506132d760008301886123d5565b6132e460208301876131f5565b81810360408301526132f68186613264565b905061330560608301856125b8565b61331260808301846123d5565b969550505050505056fea2646970667358221220126ad80261d0be11bf997702a5774eb2768f00b4a79056cbfaf89733cc03f09164736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063715018a6116100f75780639358928b11610095578063d18afa8511610064578063d18afa8514610661578063d2d55dde1461068a578063dd62ed3e146106c7578063f2fde38b14610704576101d8565b80639358928b146105a357806395d89b41146105ce578063a8aa1b31146105f9578063a9059cbb14610624576101d8565b806378b78d09116100d157806378b78d09146104fb57806385ae099f14610524578063893d20e81461054f5780638cd4426d1461057a576101d8565b8063715018a61461049057806375b62532146104a757806376685e68146104d0576101d8565b80632f54bf6e1161016f57806348ff2b8b1161013e57806348ff2b8b146103d65780635f7bcd70146103ff578063677bff1b1461042a57806370a0823114610453576101d8565b80632f54bf6e14610306578063313ce567146103435780633f4218e01461036e57806347062402146103ab576101d8565b806320800a00116101ab57806320800a001461027057806323b872dd14610287578063293230b8146102c45780632b14ca56146102db576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261072d565b6040516101ff91906122a4565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061235f565b61076a565b60405161023c91906123ba565b60405180910390f35b34801561025157600080fd5b5061025a610781565b60405161026791906123e4565b60405180910390f35b34801561027c57600080fd5b5061028561078b565b005b34801561029357600080fd5b506102ae60048036038101906102a991906123ff565b61081c565b6040516102bb91906123ba565b60405180910390f35b3480156102d057600080fd5b506102d961090e565b005b3480156102e757600080fd5b506102f06109ca565b6040516102fd91906123e4565b60405180910390f35b34801561031257600080fd5b5061032d60048036038101906103289190612452565b6109d0565b60405161033a91906123ba565b60405180910390f35b34801561034f57600080fd5b50610358610a29565b604051610365919061249b565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190612452565b610a32565b6040516103a291906123ba565b60405180910390f35b3480156103b757600080fd5b506103c0610a52565b6040516103cd91906123e4565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906124e2565b610a58565b005b34801561040b57600080fd5b50610414610afb565b6040516104219190612543565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061255e565b610b21565b005b34801561045f57600080fd5b5061047a60048036038101906104759190612452565b610bed565b60405161048791906123e4565b60405180910390f35b34801561049c57600080fd5b506104a5610c36565b005b3480156104b357600080fd5b506104ce60048036038101906104c99190612452565b610d1b565b005b3480156104dc57600080fd5b506104e5610e4d565b6040516104f291906123e4565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d919061258b565b610e53565b005b34801561053057600080fd5b50610539610eef565b60405161054691906123ba565b60405180910390f35b34801561055b57600080fd5b50610564610f02565b60405161057191906125c7565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c919061235f565b610f2b565b005b3480156105af57600080fd5b506105b8611064565b6040516105c591906123e4565b60405180910390f35b3480156105da57600080fd5b506105e3611097565b6040516105f091906122a4565b60405180910390f35b34801561060557600080fd5b5061060e6110d4565b60405161061b91906125c7565b60405180910390f35b34801561063057600080fd5b5061064b6004803603810190610646919061235f565b6110fa565b60405161065891906123ba565b60405180910390f35b34801561066d57600080fd5b50610688600480360381019061068391906125e2565b611111565b005b34801561069657600080fd5b506106b160048036038101906106ac9190612622565b6111f7565b6040516106be91906123e4565b60405180910390f35b3480156106d357600080fd5b506106ee60048036038101906106e99190612622565b611398565b6040516106fb91906123e4565b60405180910390f35b34801561071057600080fd5b5061072b6004803603810190610726919061268e565b61141f565b005b60606040518060400160405280600881526020017f4b6f6d6120496e75000000000000000000000000000000000000000000000000815250905090565b6000610777338484611572565b6001905092915050565b6000600154905090565b610794336109d0565b6107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca90612707565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610819573d6000803e3d6000fd5b50565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d890612799565b60405180910390fd5b6108f7853385846108f291906127e8565b611572565b61090285858561173b565b60019150509392505050565b610917336109d0565b610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d90612707565b60405180910390fd5b600560009054906101000a900460ff16156109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099d90612868565b60405180910390fd5b6001600560006101000a81548160ff02191690831515021790555042600681905550565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60046020528060005260406000206000915054906101000a900460ff1681565b60095481565b610a61336109d0565b610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790612707565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b2a336109d0565b610b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6090612707565b60405180910390fd5b60008111610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba3906128fa565b60405180910390fd5b80600e819055507f4ef2674a26c2ddc8607c49b40e20049a376cd815432565215997724825f0b39c81604051610be291906123e4565b60405180910390a150565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c3f336109d0565b610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590612707565b60405180910390fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000604051610cd092919061291a565b60405180910390a160008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d24336109d0565b610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90612707565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc99061298f565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1a9ebc3770a8a35e7494c4635aaedfa9f174ae61261b6e3aac36aeffc590cb6481604051610e4291906125c7565b60405180910390a150565b600e5481565b610e5c336109d0565b610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290612707565b60405180910390fd5b80600d60006101000a81548160ff0219169083151502179055507f2cfb1325100433fcb70fe63f837093ad5189b45f611699ffd2260af812a7657b81604051610ee491906123ba565b60405180910390a150565b600d60009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f34336109d0565b610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90612707565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd8906129fb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161101c929190612a1b565b6020604051808303816000875af115801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190612a59565b505050565b60006110706000610bed565b61107b61dead610bed565b60015461108891906127e8565b61109291906127e8565b905090565b60606040518060400160405280600481526020017f4b4f4d4100000000000000000000000000000000000000000000000000000000815250905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061110733848461173b565b6001905092915050565b61111a336109d0565b611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115090612707565b60405180910390fd5b6101f4821115801561116d57506101f48111155b6111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a390612ad2565b60405180910390fd5b8160098190555080600a819055507f951510f4368d3e96165c41d3b73449381754ecddccc3b2b00a25d9b2007ab4b282826040516111eb929190612af2565b60405180910390a15050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c45761070860065461125e9190612b1b565b4210156112ba5760006006544261127591906127e8565b9050600061070882600a54610bb861128d91906127e8565b6112979190612b4f565b6112a19190612bc0565b610bb86112ae91906127e8565b90508092505050611392565b600a549050611392565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138d57600f6006546113289190612b1b565b4210156113835760006006544261133f91906127e8565b90506000600f82600954610bb861135691906127e8565b6113609190612b4f565b61136a9190612bc0565b610bb861137791906127e8565b90508092505050611392565b6009549050611392565b600090505b92915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611428336109d0565b611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90612707565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90612c63565b60405180910390fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611527929190612ce2565b60405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612d7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790612e0f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161172e91906123e4565b60405180910390a3505050565b61174683838361189e565b6117508383611a0f565b611763838361175e30610bed565b611b0c565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117b291906127e8565b9250508190555060006117c58484611b2a565b6117cf57816117db565b6117da848484611c94565b5b905080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461182c9190612b1b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161189091906123e4565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490612ea1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390612f33565b60405180910390fd5b600081116119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690612fc5565b60405180910390fd5b6119c883610bed565b811115611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190613057565b60405180910390fd5b505050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab35750600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b0857600560009054906101000a900460ff16611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906130c3565b60405180910390fd5b5b5050565b611b168383611da5565b15611b2557611b2481611ea2565b5b505050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c795750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c8a57508180611c895750805b5b9250505092915050565b600080611ca185856111f7565b90506000811115611d99576000600c548285611cbd9190612b4f565b611cc79190612bc0565b905080600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d189190612b1b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d7c91906123e4565b60405180910390a38084611d9091906127e8565b92505050611d9e565b829150505b9392505050565b600080600e54611db430610bed565b10159050600d60019054906101000a900460ff16158015611de15750600d60009054906101000a900460ff165b8015611e375750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e905750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611e995750805b91505092915050565b6001600d60016101000a81548160ff0219169083151502179055506000479050611ecb82611fd1565b60008147611ed991906127e8565b90506000811115611fb1576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611f2c90613114565b60006040518083038185875af1925050503d8060008114611f69576040519150601f19603f3d011682016040523d82523d6000602084013e611f6e565b606091505b5050905080611faf577fc39ba1a9a812115efec13c9546b7b109574823d9c12ff09ebcc4ba5d47153ec682604051611fa691906123e4565b60405180910390a15b505b50506000600d60016101000a81548160ff02191690831515021790555050565b6000600267ffffffffffffffff811115611fee57611fed613129565b5b60405190808252806020026020018201604052801561201c5781602001602082028036833780820191505090505b509050308160008151811061203457612033613158565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ff919061319c565b8160018151811061211357612112613158565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061217a30600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611572565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121de9594939291906132c2565b600060405180830381600087803b1580156121f857600080fd5b505af115801561220c573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561224e578082015181840152602081019050612233565b60008484015250505050565b6000601f19601f8301169050919050565b600061227682612214565b612280818561221f565b9350612290818560208601612230565b6122998161225a565b840191505092915050565b600060208201905081810360008301526122be818461226b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122f6826122cb565b9050919050565b612306816122eb565b811461231157600080fd5b50565b600081359050612323816122fd565b92915050565b6000819050919050565b61233c81612329565b811461234757600080fd5b50565b60008135905061235981612333565b92915050565b60008060408385031215612376576123756122c6565b5b600061238485828601612314565b92505060206123958582860161234a565b9150509250929050565b60008115159050919050565b6123b48161239f565b82525050565b60006020820190506123cf60008301846123ab565b92915050565b6123de81612329565b82525050565b60006020820190506123f960008301846123d5565b92915050565b600080600060608486031215612418576124176122c6565b5b600061242686828701612314565b935050602061243786828701612314565b92505060406124488682870161234a565b9150509250925092565b600060208284031215612468576124676122c6565b5b600061247684828501612314565b91505092915050565b600060ff82169050919050565b6124958161247f565b82525050565b60006020820190506124b0600083018461248c565b92915050565b6124bf8161239f565b81146124ca57600080fd5b50565b6000813590506124dc816124b6565b92915050565b600080604083850312156124f9576124f86122c6565b5b600061250785828601612314565b9250506020612518858286016124cd565b9150509250929050565b600061252d826122cb565b9050919050565b61253d81612522565b82525050565b60006020820190506125586000830184612534565b92915050565b600060208284031215612574576125736122c6565b5b60006125828482850161234a565b91505092915050565b6000602082840312156125a1576125a06122c6565b5b60006125af848285016124cd565b91505092915050565b6125c1816122eb565b82525050565b60006020820190506125dc60008301846125b8565b92915050565b600080604083850312156125f9576125f86122c6565b5b60006126078582860161234a565b92505060206126188582860161234a565b9150509250929050565b60008060408385031215612639576126386122c6565b5b600061264785828601612314565b925050602061265885828601612314565b9150509250929050565b61266b81612522565b811461267657600080fd5b50565b60008135905061268881612662565b92915050565b6000602082840312156126a4576126a36122c6565b5b60006126b284828501612679565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006126f160068361221f565b91506126fc826126bb565b602082019050919050565b60006020820190508181036000830152612720816126e4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061278360288361221f565b915061278e82612727565b604082019050919050565b600060208201905081810360008301526127b281612776565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127f382612329565b91506127fe83612329565b9250828203905081811115612816576128156127b9565b5b92915050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b600061285260178361221f565b915061285d8261281c565b602082019050919050565b6000602082019050818103600083015261288181612845565b9050919050565b7f5468726573686f6c64206d7573742062652067726561746572207468616e207a60008201527f65726f0000000000000000000000000000000000000000000000000000000000602082015250565b60006128e460238361221f565b91506128ef82612888565b604082019050919050565b60006020820190508181036000830152612913816128d7565b9050919050565b600060408201905061292f60008301856125b8565b61293c60208301846125b8565b9392505050565b7f496e76616c696420616464726573733a207a65726f2061646472657373000000600082015250565b6000612979601d8361221f565b915061298482612943565b602082019050919050565b600060208201905081810360008301526129a88161296c565b9050919050565b7f43616e6e6f7420726573637565207468697320746f6b656e20697473656c6600600082015250565b60006129e5601f8361221f565b91506129f0826129af565b602082019050919050565b60006020820190508181036000830152612a14816129d8565b9050919050565b6000604082019050612a3060008301856125b8565b612a3d60208301846123d5565b9392505050565b600081519050612a53816124b6565b92915050565b600060208284031215612a6f57612a6e6122c6565b5b6000612a7d84828501612a44565b91505092915050565b7f4665657320657863656564206d6178696d756d206c696d697473000000000000600082015250565b6000612abc601a8361221f565b9150612ac782612a86565b602082019050919050565b60006020820190508181036000830152612aeb81612aaf565b9050919050565b6000604082019050612b0760008301856123d5565b612b1460208301846123d5565b9392505050565b6000612b2682612329565b9150612b3183612329565b9250828201905080821115612b4957612b486127b9565b5b92915050565b6000612b5a82612329565b9150612b6583612329565b9250828202612b7381612329565b91508282048414831517612b8a57612b896127b9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bcb82612329565b9150612bd683612329565b925082612be657612be5612b91565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612c4d60268361221f565b9150612c5882612bf1565b604082019050919050565b60006020820190508181036000830152612c7c81612c40565b9050919050565b6000819050919050565b6000612ca8612ca3612c9e846122cb565b612c83565b6122cb565b9050919050565b6000612cba82612c8d565b9050919050565b6000612ccc82612caf565b9050919050565b612cdc81612cc1565b82525050565b6000604082019050612cf760008301856125b8565b612d046020830184612cd3565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d6760248361221f565b9150612d7282612d0b565b604082019050919050565b60006020820190508181036000830152612d9681612d5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612df960228361221f565b9150612e0482612d9d565b604082019050919050565b60006020820190508181036000830152612e2881612dec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e8b60258361221f565b9150612e9682612e2f565b604082019050919050565b60006020820190508181036000830152612eba81612e7e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612f1d60238361221f565b9150612f2882612ec1565b604082019050919050565b60006020820190508181036000830152612f4c81612f10565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612faf60298361221f565b9150612fba82612f53565b604082019050919050565b60006020820190508181036000830152612fde81612fa2565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061304160318361221f565b915061304c82612fe5565b604082019050919050565b6000602082019050818103600083015261307081613034565b9050919050565b7f45524332303a2054726164696e67206973206e6f7420616c6c6f776564000000600082015250565b60006130ad601d8361221f565b91506130b882613077565b602082019050919050565b600060208201905081810360008301526130dc816130a0565b9050919050565b600081905092915050565b50565b60006130fe6000836130e3565b9150613109826130ee565b600082019050919050565b600061311f826130f1565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613196816122fd565b92915050565b6000602082840312156131b2576131b16122c6565b5b60006131c084828501613187565b91505092915050565b6000819050919050565b60006131ee6131e96131e4846131c9565b612c83565b612329565b9050919050565b6131fe816131d3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613239816122eb565b82525050565b600061324b8383613230565b60208301905092915050565b6000602082019050919050565b600061326f82613204565b613279818561320f565b935061328483613220565b8060005b838110156132b557815161329c888261323f565b97506132a783613257565b925050600181019050613288565b5085935050505092915050565b600060a0820190506132d760008301886123d5565b6132e460208301876131f5565b81810360408301526132f68186613264565b905061330560608301856125b8565b61331260808301846123d5565b969550505050505056fea2646970667358221220126ad80261d0be11bf997702a5774eb2768f00b4a79056cbfaf89733cc03f09164736f6c63430008120033

Deployed Bytecode Sourcemap

3510:11828:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5820:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6940:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6197:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13894:110;;;;;;;;;;;;;:::i;:::-;;12558:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13390:234;;;;;;;;;;;;;:::i;:::-;;4150:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1379:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6006:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3879:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4116:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6808:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4377:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14611:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6305:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1803:138;;;;;;;;;;;;;:::i;:::-;;14290:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4335:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14875:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4264:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6097:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14012:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7132:148;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5911:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4090:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6432:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8419:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10905:1114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6630:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1490:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5820:83;5857:13;5890:5;;;;;;;;;;;;;;;;;5883:12;;5820:83;:::o;6940:184::-;7040:4;7057:37;7066:10;7078:7;7087:6;7057:8;:37::i;:::-;7112:4;7105:11;;6940:184;;;;:::o;6197:100::-;6250:7;6277:12;;6270:19;;6197:100;:::o;13894:110::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13953:10:::1;13945:28;;:51;13974:21;13945:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13894:110::o:0;12558:477::-;12690:4;12707:24;12734:11;:19;12746:6;12734:19;;;;;;;;;;;;;;;:31;12754:10;12734:31;;;;;;;;;;;;;;;;12707:58;;12818:6;12798:16;:26;;12776:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;12903:55;12912:6;12920:10;12951:6;12932:16;:25;;;;:::i;:::-;12903:8;:55::i;:::-;12969:36;12979:6;12987:9;12998:6;12969:9;:36::i;:::-;13023:4;13016:11;;;12558:477;;;;;:::o;13390:234::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13453:11:::1;;;;;;;;;;;13452:12;13444:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13517:4;13503:11;;:18;;;;;;;;;;;;;;;;;;13548:15;13532:13;:31;;;;13390:234::o:0;4150:28::-;;;;:::o;1379:103::-;1434:4;1469:5;;;;;;;;;;;1458:16;;:7;:16;;;1451:23;;1379:103;;;:::o;6006:83::-;6047:5;3681:2;6065:16;;6006:83;:::o;3879:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;4116:27::-;;;;:::o;6808:124::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6916:8:::1;6892:11;:21;6904:8;6892:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;6808:124:::0;;:::o;4377:41::-;;;;;;;;;;;;;:::o;14611:256::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14717:1:::1;14702:12;:16;14694:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14792:12;14769:20;:35;;;;14820:39;14846:12;14820:39;;;;;;:::i;:::-;;;;;;;;14611:256:::0;:::o;6305:119::-;6371:7;6398:9;:18;6408:7;6398:18;;;;;;;;;;;;;;;;6391:25;;6305:119;;;:::o;1803:138::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1865:39:::1;1886:5;::::0;::::1;;;;;;;;1901:1;1865:39;;;;;;;:::i;:::-;;;;;;;;1931:1;1915:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;1803:138::o:0;14290:261::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14402:1:::1;14379:25;;:11;:25;;::::0;14371:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14478:11;14449:18;;:41;;;;;;;;;;;;;;;;;;14506:37;14531:11;14506:37;;;;;;:::i;:::-;;;;;;;;14290:261:::0;:::o;4335:35::-;;;;:::o;14875:161::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14970:8:::1;14950:17;;:28;;;;;;;;;;;;;;;;;;14994:34;15019:8;14994:34;;;;;;:::i;:::-;;;;;;;;14875:161:::0;:::o;4264:36::-;;;;;;;;;;;;;:::o;6097:92::-;6149:7;6176:5;;;;;;;;;;;6169:12;;6097:92;:::o;14012:220::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14126:4:::1;14106:25;;:8;:25;;::::0;14098:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14185:8;14178:25;;;14204:10;14216:7;14178:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14012:220:::0;;:::o;7132:148::-;7191:7;7251:21;7269:1;7251:9;:21::i;:::-;7233:15;4974:42;7233:9;:15::i;:::-;7218:12;;:30;;;;:::i;:::-;:54;;;;:::i;:::-;7211:61;;7132:148;:::o;5911:87::-;5950:13;5983:7;;;;;;;;;;;;;;;;;5976:14;;5911:87;:::o;4090:19::-;;;;;;;;;;;;;:::o;6432:190::-;6535:4;6552:40;6562:10;6574:9;6585:6;6552:9;:40::i;:::-;6610:4;6603:11;;6432:190;;;;:::o;8419:304::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4466:3:::1;8522:4;:19;;:44;;;;;4522:3;8545:5;:21;;8522:44;8500:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;8640:4;8631:6;:13;;;;8665:5;8655:7;:15;;;;8686:29;8703:4;8709:5;8686:29;;;;;;;:::i;:::-;;;;;;;;8419:304:::0;;:::o;10905:1114::-;11007:7;11044:4;;;;;;;;;;;11031:17;;:9;:17;;;11027:476;;4670:10;11111:13;;:33;;;;:::i;:::-;11093:15;:51;11089:340;;;11165:19;11205:13;;11187:15;:31;;;;:::i;:::-;11165:53;;11237:15;4670:10;11327:11;11316:7;;4817:4;11297:26;;;;:::i;:::-;11296:42;;;;:::i;:::-;11295:85;;;;:::i;:::-;4817:4;11255:125;;;;:::i;:::-;11237:143;;11406:7;11399:14;;;;;;11089:340;11450:7;;11443:14;;;;11027:476;11527:4;;;;;;;;;;;11517:14;;:6;:14;;;11513:463;;4584:10;11593:13;;:32;;;;:::i;:::-;11575:15;:50;11571:333;;;11646:19;11686:13;;11668:15;:31;;;;:::i;:::-;11646:53;;11718:14;4584:10;11804:11;11794:6;;4755:4;11776:24;;;;:::i;:::-;11775:40;;;;:::i;:::-;11774:82;;;;:::i;:::-;4755:4;11735:121;;;;:::i;:::-;11718:138;;11882:6;11875:13;;;;;;11571:333;11925:6;;11918:13;;;;11513:463;11993:1;11986:8;;10905:1114;;;;;:::o;6630:170::-;6737:7;6764:11;:19;6776:6;6764:19;;;;;;;;;;;;;;;:28;6784:7;6764:28;;;;;;;;;;;;;;;;6757:35;;6630:170;;;;:::o;1490:305::-;1321:19;1329:10;1321:7;:19::i;:::-;1313:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1613:1:::1;1593:22;;:8;:22;;::::0;1571:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1697:37;1718:5;::::0;::::1;;;;;;;;1725:8;1697:37;;;;;;;:::i;:::-;;;;;;;;1779:8;1771:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1490:305:::0;:::o;13043:339::-;13155:1;13137:20;;:6;:20;;;13129:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13236:1;13217:21;;:7;:21;;;13209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13319:6;13288:11;:19;13300:6;13288:19;;;;;;;;;;;;;;;:28;13308:7;13288:28;;;;;;;;;;;;;;;:37;;;;13358:7;13341:33;;13350:6;13341:33;;;13367:6;13341:33;;;;;;:::i;:::-;;;;;;;;13043:339;;;:::o;7844:567::-;7967:37;7978:6;7986:9;7997:6;7967:10;:37::i;:::-;8015:38;8035:6;8043:9;8015:19;:38::i;:::-;8064:53;8073:6;8081:9;8092:24;8110:4;8092:9;:24::i;:::-;8064:8;:53::i;:::-;8149:6;8128:9;:17;8138:6;8128:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;8166:22;8191:32;8205:6;8213:9;8191:13;:32::i;:::-;:104;;8289:6;8191:104;;;8239:34;8247:6;8255:9;8266:6;8239:7;:34::i;:::-;8191:104;8166:129;;8330:14;8306:9;:20;8316:9;8306:20;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;8377:9;8360:43;;8369:6;8360:43;;;8388:14;8360:43;;;;;;:::i;:::-;;;;;;;;7956:455;7844:567;;;:::o;7288:548::-;7444:1;7426:20;;:6;:20;;;7418:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7528:1;7507:23;;:9;:23;;;7499:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7620:1;7603:6;:19;7581:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7734:17;7744:6;7734:9;:17::i;:::-;7724:6;:27;;7702:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;7288:548;;;:::o;13632:254::-;13751:11;:19;13763:6;13751:19;;;;;;;;;;;;;;;;;;;;;;;;;13750:20;:47;;;;;13775:11;:22;13787:9;13775:22;;;;;;;;;;;;;;;;;;;;;;;;;13774:23;13750:47;13746:133;;;13822:11;;;;;;;;;;;13814:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13746:133;13632:254;;:::o;10319:245::-;10446:33;10461:6;10469:9;10446:14;:33::i;:::-;10442:115;;;10496:22;10511:6;10496:14;:22::i;:::-;10442:115;10319:245;;;:::o;10572:325::-;10678:4;10695:10;10718:4;;;;;;;;;;;10708:14;;:6;:14;;;10695:27;;10733:11;10760:4;;;;;;;;;;;10747:17;;:9;:17;;;10733:31;;10796:11;:19;10808:6;10796:19;;;;;;;;;;;;;;;;;;;;;;;;;10795:20;:60;;;;;10833:11;:22;10845:9;10833:22;;;;;;;;;;;;;;;;;;;;;;;;;10832:23;10795:60;:94;;;;;10873:5;:15;;;;10882:6;10873:15;10795:94;10775:114;;;;10572:325;;;;:::o;12027:523::-;12147:7;12167:16;12186:30;12198:6;12206:9;12186:11;:30::i;:::-;12167:49;;12242:1;12231:8;:12;12227:292;;;12260:17;12302:11;;12290:8;12281:6;:17;;;;:::i;:::-;12280:33;;;;:::i;:::-;12260:53;;12396:9;12368;:24;12386:4;12368:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;12450:4;12425:42;;12434:6;12425:42;;;12457:9;12425:42;;;;;;:::i;:::-;;;;;;;;12498:9;12489:6;:18;;;;:::i;:::-;12482:25;;;;;;12227:292;12536:6;12529:13;;;12027:523;;;;;;:::o;9933:378::-;10040:4;10057:19;10107:20;;10079:24;10097:4;10079:9;:24::i;:::-;:48;;10057:70;;10159:8;;;;;;;;;;;10158:9;:43;;;;;10184:17;;;;;;;;;;;10158:43;:80;;;;;10219:11;:19;10231:6;10219:19;;;;;;;;;;;;;;;;;;;;;;;;;10218:20;10158:80;:114;;;;;10268:4;;;;;;;;;;;10255:17;;:9;:17;;;10158:114;:145;;;;;10289:14;10158:145;10138:165;;;9933:378;;;;:::o;8731:514::-;4882:4;4871:8;;:15;;;;;;;;;;;;;;;;;;8802:22:::1;8827:21;8802:46;;8859:24;8876:6;8859:16;:24::i;:::-;8894:20;8941:14;8917:21;:38;;;;:::i;:::-;8894:61;;9045:1;9030:12;:16;9026:212;;;9064:12;9082:18;;;;;;;;;;;:23;;9113:12;9082:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9063:67;;;9150:7;9145:82;;9183:28;9198:12;9183:28;;;;;;:::i;:::-;;;;;;;;9145:82;9048:190;9026:212;8791:454;;4920:5:::0;4909:8;;:16;;;;;;;;;;;;;;;;;;8731:514;:::o;9253:444::-;9319:21;9357:1;9343:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9319:40;;9388:4;9370;9375:1;9370:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9414:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9404:4;9409:1;9404:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9438:53;9455:4;9470:6;;;;;;;;;;;9479:11;9438:8;:53::i;:::-;9502:6;;;;;;;;;;;:57;;;9574:11;9600:1;9616:4;9643;9663:15;9502:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9308:389;9253:444;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:104::-;5968:7;5997:24;6015:5;5997:24;:::i;:::-;5986:35;;5923:104;;;:::o;6033:142::-;6136:32;6162:5;6136:32;:::i;:::-;6131:3;6124:45;6033:142;;:::o;6181:254::-;6290:4;6328:2;6317:9;6313:18;6305:26;;6341:87;6425:1;6414:9;6410:17;6401:6;6341:87;:::i;:::-;6181:254;;;;:::o;6441:329::-;6500:6;6549:2;6537:9;6528:7;6524:23;6520:32;6517:119;;;6555:79;;:::i;:::-;6517:119;6675:1;6700:53;6745:7;6736:6;6725:9;6721:22;6700:53;:::i;:::-;6690:63;;6646:117;6441:329;;;;:::o;6776:323::-;6832:6;6881:2;6869:9;6860:7;6856:23;6852:32;6849:119;;;6887:79;;:::i;:::-;6849:119;7007:1;7032:50;7074:7;7065:6;7054:9;7050:22;7032:50;:::i;:::-;7022:60;;6978:114;6776:323;;;;:::o;7105:118::-;7192:24;7210:5;7192:24;:::i;:::-;7187:3;7180:37;7105:118;;:::o;7229:222::-;7322:4;7360:2;7349:9;7345:18;7337:26;;7373:71;7441:1;7430:9;7426:17;7417:6;7373:71;:::i;:::-;7229:222;;;;:::o;7457:474::-;7525:6;7533;7582:2;7570:9;7561:7;7557:23;7553:32;7550:119;;;7588:79;;:::i;:::-;7550:119;7708:1;7733:53;7778:7;7769:6;7758:9;7754:22;7733:53;:::i;:::-;7723:63;;7679:117;7835:2;7861:53;7906:7;7897:6;7886:9;7882:22;7861:53;:::i;:::-;7851:63;;7806:118;7457:474;;;;;:::o;7937:::-;8005:6;8013;8062:2;8050:9;8041:7;8037:23;8033:32;8030:119;;;8068:79;;:::i;:::-;8030:119;8188:1;8213:53;8258:7;8249:6;8238:9;8234:22;8213:53;:::i;:::-;8203:63;;8159:117;8315:2;8341:53;8386:7;8377:6;8366:9;8362:22;8341:53;:::i;:::-;8331:63;;8286:118;7937:474;;;;;:::o;8417:138::-;8498:32;8524:5;8498:32;:::i;:::-;8491:5;8488:43;8478:71;;8545:1;8542;8535:12;8478:71;8417:138;:::o;8561:155::-;8615:5;8653:6;8640:20;8631:29;;8669:41;8704:5;8669:41;:::i;:::-;8561:155;;;;:::o;8722:345::-;8789:6;8838:2;8826:9;8817:7;8813:23;8809:32;8806:119;;;8844:79;;:::i;:::-;8806:119;8964:1;8989:61;9042:7;9033:6;9022:9;9018:22;8989:61;:::i;:::-;8979:71;;8935:125;8722:345;;;;:::o;9073:156::-;9213:8;9209:1;9201:6;9197:14;9190:32;9073:156;:::o;9235:365::-;9377:3;9398:66;9462:1;9457:3;9398:66;:::i;:::-;9391:73;;9473:93;9562:3;9473:93;:::i;:::-;9591:2;9586:3;9582:12;9575:19;;9235:365;;;:::o;9606:419::-;9772:4;9810:2;9799:9;9795:18;9787:26;;9859:9;9853:4;9849:20;9845:1;9834:9;9830:17;9823:47;9887:131;10013:4;9887:131;:::i;:::-;9879:139;;9606:419;;;:::o;10031:227::-;10171:34;10167:1;10159:6;10155:14;10148:58;10240:10;10235:2;10227:6;10223:15;10216:35;10031:227;:::o;10264:366::-;10406:3;10427:67;10491:2;10486:3;10427:67;:::i;:::-;10420:74;;10503:93;10592:3;10503:93;:::i;:::-;10621:2;10616:3;10612:12;10605:19;;10264:366;;;:::o;10636:419::-;10802:4;10840:2;10829:9;10825:18;10817:26;;10889:9;10883:4;10879:20;10875:1;10864:9;10860:17;10853:47;10917:131;11043:4;10917:131;:::i;:::-;10909:139;;10636:419;;;:::o;11061:180::-;11109:77;11106:1;11099:88;11206:4;11203:1;11196:15;11230:4;11227:1;11220:15;11247:194;11287:4;11307:20;11325:1;11307:20;:::i;:::-;11302:25;;11341:20;11359:1;11341:20;:::i;:::-;11336:25;;11385:1;11382;11378:9;11370:17;;11409:1;11403:4;11400:11;11397:37;;;11414:18;;:::i;:::-;11397:37;11247:194;;;;:::o;11447:173::-;11587:25;11583:1;11575:6;11571:14;11564:49;11447:173;:::o;11626:366::-;11768:3;11789:67;11853:2;11848:3;11789:67;:::i;:::-;11782:74;;11865:93;11954:3;11865:93;:::i;:::-;11983:2;11978:3;11974:12;11967:19;;11626:366;;;:::o;11998:419::-;12164:4;12202:2;12191:9;12187:18;12179:26;;12251:9;12245:4;12241:20;12237:1;12226:9;12222:17;12215:47;12279:131;12405:4;12279:131;:::i;:::-;12271:139;;11998:419;;;:::o;12423:222::-;12563:34;12559:1;12551:6;12547:14;12540:58;12632:5;12627:2;12619:6;12615:15;12608:30;12423:222;:::o;12651:366::-;12793:3;12814:67;12878:2;12873:3;12814:67;:::i;:::-;12807:74;;12890:93;12979:3;12890:93;:::i;:::-;13008:2;13003:3;12999:12;12992:19;;12651:366;;;:::o;13023:419::-;13189:4;13227:2;13216:9;13212:18;13204:26;;13276:9;13270:4;13266:20;13262:1;13251:9;13247:17;13240:47;13304:131;13430:4;13304:131;:::i;:::-;13296:139;;13023:419;;;:::o;13448:332::-;13569:4;13607:2;13596:9;13592:18;13584:26;;13620:71;13688:1;13677:9;13673:17;13664:6;13620:71;:::i;:::-;13701:72;13769:2;13758:9;13754:18;13745:6;13701:72;:::i;:::-;13448:332;;;;;:::o;13786:179::-;13926:31;13922:1;13914:6;13910:14;13903:55;13786:179;:::o;13971:366::-;14113:3;14134:67;14198:2;14193:3;14134:67;:::i;:::-;14127:74;;14210:93;14299:3;14210:93;:::i;:::-;14328:2;14323:3;14319:12;14312:19;;13971:366;;;:::o;14343:419::-;14509:4;14547:2;14536:9;14532:18;14524:26;;14596:9;14590:4;14586:20;14582:1;14571:9;14567:17;14560:47;14624:131;14750:4;14624:131;:::i;:::-;14616:139;;14343:419;;;:::o;14768:181::-;14908:33;14904:1;14896:6;14892:14;14885:57;14768:181;:::o;14955:366::-;15097:3;15118:67;15182:2;15177:3;15118:67;:::i;:::-;15111:74;;15194:93;15283:3;15194:93;:::i;:::-;15312:2;15307:3;15303:12;15296:19;;14955:366;;;:::o;15327:419::-;15493:4;15531:2;15520:9;15516:18;15508:26;;15580:9;15574:4;15570:20;15566:1;15555:9;15551:17;15544:47;15608:131;15734:4;15608:131;:::i;:::-;15600:139;;15327:419;;;:::o;15752:332::-;15873:4;15911:2;15900:9;15896:18;15888:26;;15924:71;15992:1;15981:9;15977:17;15968:6;15924:71;:::i;:::-;16005:72;16073:2;16062:9;16058:18;16049:6;16005:72;:::i;:::-;15752:332;;;;;:::o;16090:137::-;16144:5;16175:6;16169:13;16160:22;;16191:30;16215:5;16191:30;:::i;:::-;16090:137;;;;:::o;16233:345::-;16300:6;16349:2;16337:9;16328:7;16324:23;16320:32;16317:119;;;16355:79;;:::i;:::-;16317:119;16475:1;16500:61;16553:7;16544:6;16533:9;16529:22;16500:61;:::i;:::-;16490:71;;16446:125;16233:345;;;;:::o;16584:176::-;16724:28;16720:1;16712:6;16708:14;16701:52;16584:176;:::o;16766:366::-;16908:3;16929:67;16993:2;16988:3;16929:67;:::i;:::-;16922:74;;17005:93;17094:3;17005:93;:::i;:::-;17123:2;17118:3;17114:12;17107:19;;16766:366;;;:::o;17138:419::-;17304:4;17342:2;17331:9;17327:18;17319:26;;17391:9;17385:4;17381:20;17377:1;17366:9;17362:17;17355:47;17419:131;17545:4;17419:131;:::i;:::-;17411:139;;17138:419;;;:::o;17563:332::-;17684:4;17722:2;17711:9;17707:18;17699:26;;17735:71;17803:1;17792:9;17788:17;17779:6;17735:71;:::i;:::-;17816:72;17884:2;17873:9;17869:18;17860:6;17816:72;:::i;:::-;17563:332;;;;;:::o;17901:191::-;17941:3;17960:20;17978:1;17960:20;:::i;:::-;17955:25;;17994:20;18012:1;17994:20;:::i;:::-;17989:25;;18037:1;18034;18030:9;18023:16;;18058:3;18055:1;18052:10;18049:36;;;18065:18;;:::i;:::-;18049:36;17901:191;;;;:::o;18098:410::-;18138:7;18161:20;18179:1;18161:20;:::i;:::-;18156:25;;18195:20;18213:1;18195:20;:::i;:::-;18190:25;;18250:1;18247;18243:9;18272:30;18290:11;18272:30;:::i;:::-;18261:41;;18451:1;18442:7;18438:15;18435:1;18432:22;18412:1;18405:9;18385:83;18362:139;;18481:18;;:::i;:::-;18362:139;18146:362;18098:410;;;;:::o;18514:180::-;18562:77;18559:1;18552:88;18659:4;18656:1;18649:15;18683:4;18680:1;18673:15;18700:185;18740:1;18757:20;18775:1;18757:20;:::i;:::-;18752:25;;18791:20;18809:1;18791:20;:::i;:::-;18786:25;;18830:1;18820:35;;18835:18;;:::i;:::-;18820:35;18877:1;18874;18870:9;18865:14;;18700:185;;;;:::o;18891:225::-;19031:34;19027:1;19019:6;19015:14;19008:58;19100:8;19095:2;19087:6;19083:15;19076:33;18891:225;:::o;19122:366::-;19264:3;19285:67;19349:2;19344:3;19285:67;:::i;:::-;19278:74;;19361:93;19450:3;19361:93;:::i;:::-;19479:2;19474:3;19470:12;19463:19;;19122:366;;;:::o;19494:419::-;19660:4;19698:2;19687:9;19683:18;19675:26;;19747:9;19741:4;19737:20;19733:1;19722:9;19718:17;19711:47;19775:131;19901:4;19775:131;:::i;:::-;19767:139;;19494:419;;;:::o;19919:60::-;19947:3;19968:5;19961:12;;19919:60;;;:::o;19985:142::-;20035:9;20068:53;20086:34;20095:24;20113:5;20095:24;:::i;:::-;20086:34;:::i;:::-;20068:53;:::i;:::-;20055:66;;19985:142;;;:::o;20133:126::-;20183:9;20216:37;20247:5;20216:37;:::i;:::-;20203:50;;20133:126;;;:::o;20265:134::-;20323:9;20356:37;20387:5;20356:37;:::i;:::-;20343:50;;20265:134;;;:::o;20405:147::-;20500:45;20539:5;20500:45;:::i;:::-;20495:3;20488:58;20405:147;;:::o;20558:348::-;20687:4;20725:2;20714:9;20710:18;20702:26;;20738:71;20806:1;20795:9;20791:17;20782:6;20738:71;:::i;:::-;20819:80;20895:2;20884:9;20880:18;20871:6;20819:80;:::i;:::-;20558:348;;;;;:::o;20912:223::-;21052:34;21048:1;21040:6;21036:14;21029:58;21121:6;21116:2;21108:6;21104:15;21097:31;20912:223;:::o;21141:366::-;21283:3;21304:67;21368:2;21363:3;21304:67;:::i;:::-;21297:74;;21380:93;21469:3;21380:93;:::i;:::-;21498:2;21493:3;21489:12;21482:19;;21141:366;;;:::o;21513:419::-;21679:4;21717:2;21706:9;21702:18;21694:26;;21766:9;21760:4;21756:20;21752:1;21741:9;21737:17;21730:47;21794:131;21920:4;21794:131;:::i;:::-;21786:139;;21513:419;;;:::o;21938:221::-;22078:34;22074:1;22066:6;22062:14;22055:58;22147:4;22142:2;22134:6;22130:15;22123:29;21938:221;:::o;22165:366::-;22307:3;22328:67;22392:2;22387:3;22328:67;:::i;:::-;22321:74;;22404:93;22493:3;22404:93;:::i;:::-;22522:2;22517:3;22513:12;22506:19;;22165:366;;;:::o;22537:419::-;22703:4;22741:2;22730:9;22726:18;22718:26;;22790:9;22784:4;22780:20;22776:1;22765:9;22761:17;22754:47;22818:131;22944:4;22818:131;:::i;:::-;22810:139;;22537:419;;;:::o;22962:224::-;23102:34;23098:1;23090:6;23086:14;23079:58;23171:7;23166:2;23158:6;23154:15;23147:32;22962:224;:::o;23192:366::-;23334:3;23355:67;23419:2;23414:3;23355:67;:::i;:::-;23348:74;;23431:93;23520:3;23431:93;:::i;:::-;23549:2;23544:3;23540:12;23533:19;;23192:366;;;:::o;23564:419::-;23730:4;23768:2;23757:9;23753:18;23745:26;;23817:9;23811:4;23807:20;23803:1;23792:9;23788:17;23781:47;23845:131;23971:4;23845:131;:::i;:::-;23837:139;;23564:419;;;:::o;23989:222::-;24129:34;24125:1;24117:6;24113:14;24106:58;24198:5;24193:2;24185:6;24181:15;24174:30;23989:222;:::o;24217:366::-;24359:3;24380:67;24444:2;24439:3;24380:67;:::i;:::-;24373:74;;24456:93;24545:3;24456:93;:::i;:::-;24574:2;24569:3;24565:12;24558:19;;24217:366;;;:::o;24589:419::-;24755:4;24793:2;24782:9;24778:18;24770:26;;24842:9;24836:4;24832:20;24828:1;24817:9;24813:17;24806:47;24870:131;24996:4;24870:131;:::i;:::-;24862:139;;24589:419;;;:::o;25014:228::-;25154:34;25150:1;25142:6;25138:14;25131:58;25223:11;25218:2;25210:6;25206:15;25199:36;25014:228;:::o;25248:366::-;25390:3;25411:67;25475:2;25470:3;25411:67;:::i;:::-;25404:74;;25487:93;25576:3;25487:93;:::i;:::-;25605:2;25600:3;25596:12;25589:19;;25248:366;;;:::o;25620:419::-;25786:4;25824:2;25813:9;25809:18;25801:26;;25873:9;25867:4;25863:20;25859:1;25848:9;25844:17;25837:47;25901:131;26027:4;25901:131;:::i;:::-;25893:139;;25620:419;;;:::o;26045:236::-;26185:34;26181:1;26173:6;26169:14;26162:58;26254:19;26249:2;26241:6;26237:15;26230:44;26045:236;:::o;26287:366::-;26429:3;26450:67;26514:2;26509:3;26450:67;:::i;:::-;26443:74;;26526:93;26615:3;26526:93;:::i;:::-;26644:2;26639:3;26635:12;26628:19;;26287:366;;;:::o;26659:419::-;26825:4;26863:2;26852:9;26848:18;26840:26;;26912:9;26906:4;26902:20;26898:1;26887:9;26883:17;26876:47;26940:131;27066:4;26940:131;:::i;:::-;26932:139;;26659:419;;;:::o;27084:179::-;27224:31;27220:1;27212:6;27208:14;27201:55;27084:179;:::o;27269:366::-;27411:3;27432:67;27496:2;27491:3;27432:67;:::i;:::-;27425:74;;27508:93;27597:3;27508:93;:::i;:::-;27626:2;27621:3;27617:12;27610:19;;27269:366;;;:::o;27641:419::-;27807:4;27845:2;27834:9;27830:18;27822:26;;27894:9;27888:4;27884:20;27880:1;27869:9;27865:17;27858:47;27922:131;28048:4;27922:131;:::i;:::-;27914:139;;27641:419;;;:::o;28066:147::-;28167:11;28204:3;28189:18;;28066:147;;;;:::o;28219:114::-;;:::o;28339:398::-;28498:3;28519:83;28600:1;28595:3;28519:83;:::i;:::-;28512:90;;28611:93;28700:3;28611:93;:::i;:::-;28729:1;28724:3;28720:11;28713:18;;28339:398;;;:::o;28743:379::-;28927:3;28949:147;29092:3;28949:147;:::i;:::-;28942:154;;29113:3;29106:10;;28743:379;;;:::o;29128:180::-;29176:77;29173:1;29166:88;29273:4;29270:1;29263:15;29297:4;29294:1;29287:15;29314:180;29362:77;29359:1;29352:88;29459:4;29456:1;29449:15;29483:4;29480:1;29473:15;29500:143;29557:5;29588:6;29582:13;29573:22;;29604:33;29631:5;29604:33;:::i;:::-;29500:143;;;;:::o;29649:351::-;29719:6;29768:2;29756:9;29747:7;29743:23;29739:32;29736:119;;;29774:79;;:::i;:::-;29736:119;29894:1;29919:64;29975:7;29966:6;29955:9;29951:22;29919:64;:::i;:::-;29909:74;;29865:128;29649:351;;;;:::o;30006:85::-;30051:7;30080:5;30069:16;;30006:85;;;:::o;30097:158::-;30155:9;30188:61;30206:42;30215:32;30241:5;30215:32;:::i;:::-;30206:42;:::i;:::-;30188:61;:::i;:::-;30175:74;;30097:158;;;:::o;30261:147::-;30356:45;30395:5;30356:45;:::i;:::-;30351:3;30344:58;30261:147;;:::o;30414:114::-;30481:6;30515:5;30509:12;30499:22;;30414:114;;;:::o;30534:184::-;30633:11;30667:6;30662:3;30655:19;30707:4;30702:3;30698:14;30683:29;;30534:184;;;;:::o;30724:132::-;30791:4;30814:3;30806:11;;30844:4;30839:3;30835:14;30827:22;;30724:132;;;:::o;30862:108::-;30939:24;30957:5;30939:24;:::i;:::-;30934:3;30927:37;30862:108;;:::o;30976:179::-;31045:10;31066:46;31108:3;31100:6;31066:46;:::i;:::-;31144:4;31139:3;31135:14;31121:28;;30976:179;;;;:::o;31161:113::-;31231:4;31263;31258:3;31254:14;31246:22;;31161:113;;;:::o;31310:732::-;31429:3;31458:54;31506:5;31458:54;:::i;:::-;31528:86;31607:6;31602:3;31528:86;:::i;:::-;31521:93;;31638:56;31688:5;31638:56;:::i;:::-;31717:7;31748:1;31733:284;31758:6;31755:1;31752:13;31733:284;;;31834:6;31828:13;31861:63;31920:3;31905:13;31861:63;:::i;:::-;31854:70;;31947:60;32000:6;31947:60;:::i;:::-;31937:70;;31793:224;31780:1;31777;31773:9;31768:14;;31733:284;;;31737:14;32033:3;32026:10;;31434:608;;;31310:732;;;;:::o;32048:831::-;32311:4;32349:3;32338:9;32334:19;32326:27;;32363:71;32431:1;32420:9;32416:17;32407:6;32363:71;:::i;:::-;32444:80;32520:2;32509:9;32505:18;32496:6;32444:80;:::i;:::-;32571:9;32565:4;32561:20;32556:2;32545:9;32541:18;32534:48;32599:108;32702:4;32693:6;32599:108;:::i;:::-;32591:116;;32717:72;32785:2;32774:9;32770:18;32761:6;32717:72;:::i;:::-;32799:73;32867:3;32856:9;32852:19;32843:6;32799:73;:::i;:::-;32048:831;;;;;;;;:::o

Swarm Source

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