ETH Price: $3,346.43 (-3.84%)

Token

The Reserve (TR)
 

Overview

Max Total Supply

100,000,000 TR

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
284,283.985885281 TR

Value
$0.00
0xc2f62f209a1c3625c5befcdfb67f23f8e8bafc4b
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TheReserve

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-26
*/

/**

______________ ______________ _____________________ __________________________________   _______________
\__    ___/   |   \_   _____/ \______   \_   _____//   _____/\_   _____/\______   \   \ /   /\_   _____/
  |    | /    ~    \    __)_   |       _/|    __)_ \_____  \  |    __)_  |       _/\   Y   /  |    __)_ 
  |    | \    Y    /        \  |    |   \|        \/        \ |        \ |    |   \ \     /   |        \
  |____|  \___|_  /_______  /  |____|_  /_______  /_______  //_______  / |____|_  /  \___/   /_______  /
                \/        \/          \/        \/        \/         \/         \/                   \/ 

W: https://thereserve.finance
X: https://x.com/TheReserveFi
T: https://t.me/ThereserveFi

The Reserve is more than a Bitcoin reserve it's the all-encompassing vault of digital wealth, 
designed for those who seek to harness the full power of the decentralized revolution.

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;

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

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal returns(bool){
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        return success; // always proceeds
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mintOnce(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }
}

contract TheReserve is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    address public  feeReceiver;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("The Reserve", "TR") 
    {   
        address router;
        address pinkLock;
        
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
            pinkLock = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE; // BSC PinkLock
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
            pinkLock = 0x5E5b9bE5fd939c578ABE5800a90C566eeEbA44a5; // BSC Testnet PinkLock
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
            pinkLock = 0x71B5759d73262FBb223956913ecF4ecC51057641; // ETH PinkLock
        } else {
            revert();
        }

        transferOwnership(0x993a892928034AdbCcD57C707A91a306E4E8f849);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

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

        feeReceiver = 0xbf62EC3088BBf53816d806e0da81bC006D787901;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[pinkLock] = true;

        _mintOnce(owner(), 100e6 * (10 ** decimals()));
        swapTokensAtAmount = totalSupply() / 5_000;

        swapEnabled = false;
    }

    receive() external payable {}

    function claimStuckTokens(address token) external onlyOwner {
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        
        IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this)));
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    event FeeReceiverChanged(address feeReceiver);

    function changeFeeReceiver(address _feeReceiver) external onlyOwner{
        require(_feeReceiver != address(0), "ER: Fee receiver cannot be the zero address");
        feeReceiver = _feeReceiver;

        emit FeeReceiverChanged(feeReceiver);
    }
    
    event TradingEnabled(bool tradingEnabled);

    bool public tradingEnabled;
    uint256 public tradingTime;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "ER: Trading already enabled.");
        tradingEnabled = true;
        swapEnabled = true;
        tradingTime = block.timestamp;

        emit TradingEnabled(tradingEnabled);
    }

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ER: transfer from the zero address");
        require(to != address(0), "ER: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "ER: Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            !_isExcludedFromFees[from] &&
            swapEnabled
        ) {
            swapping = true;

            swapAndSendFee(contractTokenBalance);     

            swapping = false;
        }

        uint256 _totalFees;
        uint256 _burnFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            if (block.timestamp > tradingTime + 15 minutes) {
                _burnFees = 0;
            } else {
                _totalFees = 230;
            }
        } else if (to == uniswapV2Pair) {
            if (block.timestamp > tradingTime + 15 minutes) {
                _burnFees = 0;
            } else {
                _totalFees = 230;
            }
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 1_000;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        if (_burnFees > 0) {
            uint256 fees = (amount * _burnFees) / 1_000;
            amount = amount - fees;
            super._transfer(from, address(0xdead), fees);
        }

        super._transfer(from, to, amount);
    }

    function swapAndSendFee(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 newBalance = address(this).balance - initialBalance;

        payable(feeReceiver).sendValue(newBalance);

        emit SwapAndSendFee(tokenAmount, newBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeReceiver","type":"address"}],"name":"FeeReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingEnabled","type":"bool"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeReceiver","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingTime","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801562000010575f80fd5b506040518060400160405280600b81526020017f54686520526573657276650000000000000000000000000000000000000000008152506040518060400160405280600281526020017f545200000000000000000000000000000000000000000000000000000000000081525081600390816200008e919062000e55565b508060049081620000a0919062000e55565b5050505f620000b4620006cc60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f806038460362000190577310ed43c718714eb63d5aa57b78b54704e256024e915073407993575c91ce7643a4d4ccacc9a98c36ee1bbe90506200021d565b60614603620001cd5773d99d1c33f9fc3444f8101754abc46c52416550d19150735e5b9be5fd939c578abe5800a90c566eeeba44a590506200021c565b6001461480620001dd5750600546145b156200021757737a250d5630b4cf539739df2c5dacb4c659f2488d91507371b5759d73262fbb223956913ecf4ecc5105764190506200021b565b5f80fd5b5b5b6200024273993a892928034adbccd57c707a91a306e4e8f849620006d360201b60201c565b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000291573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b7919062000f9e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000343919062000f9e565b6040518363ffffffff1660e01b81526004016200036292919062000fdf565b6020604051808303815f875af11580156200037f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a5919062000f9e565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047b3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620008a360201b60201c565b73bf62ec3088bbf53816d806e0da81bc006d78790160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f620004e462000a6e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006836200064862000a6e60201b60201c565b6200065862000a9660201b60201c565b600a62000666919062001193565b6305f5e100620006779190620011e3565b62000a9e60201b60201c565b6113886200069662000be860201b60201c565b620006a291906200125a565b600a819055505f600b60016101000a81548160ff021916908315150217905550505050506200159f565b5f33905090565b620006e3620006cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000774576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076b90620012ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620007e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007dc9062001383565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090b9062001417565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000985576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200097c90620014ab565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a619190620014dc565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6009905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b069062001545565b60405180910390fd5b8060025f82825462000b22919062001565565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000b76919062001565565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bdc9190620014dc565b60405180910390a35050565b5f600254905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c6d57607f821691505b60208210810362000c835762000c8262000c28565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000ce77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000caa565b62000cf3868362000caa565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d3d62000d3762000d318462000d0b565b62000d14565b62000d0b565b9050919050565b5f819050919050565b62000d588362000d1d565b62000d7062000d678262000d44565b84845462000cb6565b825550505050565b5f90565b62000d8662000d78565b62000d9381848462000d4d565b505050565b5b8181101562000dba5762000dae5f8262000d7c565b60018101905062000d99565b5050565b601f82111562000e095762000dd38162000c89565b62000dde8462000c9b565b8101602085101562000dee578190505b62000e0662000dfd8562000c9b565b83018262000d98565b50505b505050565b5f82821c905092915050565b5f62000e2b5f198460080262000e0e565b1980831691505092915050565b5f62000e45838362000e1a565b9150826002028217905092915050565b62000e608262000bf1565b67ffffffffffffffff81111562000e7c5762000e7b62000bfb565b5b62000e88825462000c55565b62000e9582828562000dbe565b5f60209050601f83116001811462000ecb575f841562000eb6578287015190505b62000ec2858262000e38565b86555062000f31565b601f19841662000edb8662000c89565b5f5b8281101562000f045784890151825560018201915060208501945060208101905062000edd565b8683101562000f24578489015162000f20601f89168262000e1a565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f688262000f3d565b9050919050565b62000f7a8162000f5c565b811462000f85575f80fd5b50565b5f8151905062000f988162000f6f565b92915050565b5f6020828403121562000fb65762000fb562000f39565b5b5f62000fc58482850162000f88565b91505092915050565b62000fd98162000f5c565b82525050565b5f60408201905062000ff45f83018562000fce565b62001003602083018462000fce565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562001094578086048111156200106c576200106b6200100a565b5b60018516156200107c5780820291505b80810290506200108c8562001037565b94506200104c565b94509492505050565b5f82620010ae576001905062001180565b81620010bd575f905062001180565b8160018114620010d65760028114620010e15762001117565b600191505062001180565b60ff841115620010f657620010f56200100a565b5b8360020a91508482111562001110576200110f6200100a565b5b5062001180565b5060208310610133831016604e8410600b8410161715620011515782820a9050838111156200114b576200114a6200100a565b5b62001180565b62001160848484600162001043565b925090508184048111156200117a57620011796200100a565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200119f8262000d0b565b9150620011ac8362001187565b9250620011db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200109d565b905092915050565b5f620011ef8262000d0b565b9150620011fc8362000d0b565b92508282026200120c8162000d0b565b915082820484148315176200122657620012256200100a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620012668262000d0b565b9150620012738362000d0b565b9250826200128657620012856200122d565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620012d760208362001291565b9150620012e482620012a1565b602082019050919050565b5f6020820190508181035f8301526200130881620012c9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6200136b60268362001291565b915062001378826200130f565b604082019050919050565b5f6020820190508181035f8301526200139c816200135d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f620013ff60248362001291565b91506200140c82620013a3565b604082019050919050565b5f6020820190508181035f8301526200143081620013f1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200149360228362001291565b9150620014a08262001437565b604082019050919050565b5f6020820190508181035f830152620014c48162001485565b9050919050565b620014d68162000d0b565b82525050565b5f602082019050620014f15f830184620014cb565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200152d601f8362001291565b91506200153a82620014f7565b602082019050919050565b5f6020820190508181035f8301526200155e816200151f565b9050919050565b5f620015718262000d0b565b91506200157e8362000d0b565b92508282019050808211156200159957620015986200100a565b5b92915050565b61327180620015ad5f395ff3fe608060405260043610610184575f3560e01c80637c08b964116100d0578063b3f0067411610089578063dd62ed3e11610063578063dd62ed3e1461057d578063e2f45605146105b9578063f2fde38b146105e3578063f9d0831a1461060b5761018b565b8063b3f0067414610501578063b8158d601461052b578063c0246668146105555761018b565b80637c08b964146103f75780638a8c523c1461041f5780638da5cb5b1461043557806395d89b411461045f578063a457c2d714610489578063a9059cbb146104c55761018b565b8063395093511161013d5780634fbee193116101175780634fbee1931461033f5780636ddd17131461037b57806370a08231146103a5578063715018a6146103e15761018b565b806339509351146102af57806349bd5a5e146102eb5780634ada218b146103155761018b565b806306fdde031461018f578063095ea7b3146101b95780631694505e146101f557806318160ddd1461021f57806323b872dd14610249578063313ce567146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a3610633565b6040516101b091906122f0565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906123a1565b6106c3565b6040516101ec91906123f9565b60405180910390f35b348015610200575f80fd5b506102096106e0565b604051610216919061246d565b60405180910390f35b34801561022a575f80fd5b50610233610705565b6040516102409190612495565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906124ae565b61070e565b60405161027c91906123f9565b60405180910390f35b348015610290575f80fd5b50610299610828565b6040516102a69190612519565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d091906123a1565b610830565b6040516102e291906123f9565b60405180910390f35b3480156102f6575f80fd5b506102ff6108d7565b60405161030c9190612541565b60405180910390f35b348015610320575f80fd5b506103296108fc565b60405161033691906123f9565b60405180910390f35b34801561034a575f80fd5b506103656004803603810190610360919061255a565b61090f565b60405161037291906123f9565b60405180910390f35b348015610386575f80fd5b5061038f610961565b60405161039c91906123f9565b60405180910390f35b3480156103b0575f80fd5b506103cb60048036038101906103c6919061255a565b610974565b6040516103d89190612495565b60405180910390f35b3480156103ec575f80fd5b506103f56109b9565b005b348015610402575f80fd5b5061041d6004803603810190610418919061255a565b610b0c565b005b34801561042a575f80fd5b50610433610cab565b005b348015610440575f80fd5b50610449610e16565b6040516104569190612541565b60405180910390f35b34801561046a575f80fd5b50610473610e3e565b60405161048091906122f0565b60405180910390f35b348015610494575f80fd5b506104af60048036038101906104aa91906123a1565b610ece565b6040516104bc91906123f9565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e691906123a1565b610fb4565b6040516104f891906123f9565b60405180910390f35b34801561050c575f80fd5b50610515610fd1565b6040516105229190612541565b60405180910390f35b348015610536575f80fd5b5061053f610ff6565b60405161054c9190612495565b60405180910390f35b348015610560575f80fd5b5061057b600480360381019061057691906125af565b610ffc565b005b348015610588575f80fd5b506105a3600480360381019061059e91906125ed565b611138565b6040516105b09190612495565b60405180910390f35b3480156105c4575f80fd5b506105cd6111ba565b6040516105da9190612495565b60405180910390f35b3480156105ee575f80fd5b506106096004803603810190610604919061255a565b6111c0565b005b348015610616575f80fd5b50610631600480360381019061062c919061255a565b611382565b005b60606003805461064290612658565b80601f016020809104026020016040519081016040528092919081815260200182805461066e90612658565b80156106b95780601f10610690576101008083540402835291602001916106b9565b820191905f5260205f20905b81548152906001019060200180831161069c57829003601f168201915b5050505050905090565b5f6106d66106cf611571565b8484611578565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610756611571565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461081157828110156107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f3906126f8565b60405180910390fd5b61081085610808611571565b858403611578565b5b61081c85858561173b565b60019150509392505050565b5f6009905090565b5f6108cd61083c611571565b848460015f610849611571565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108c89190612743565b611578565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60029054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600b60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109c1611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906127c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b14611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b99906127c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c079061284e565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610ca09190612541565b60405180910390a150565b610cb3611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d38906127c0565b60405180910390fd5b600b60029054906101000a900460ff1615610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d88906128b6565b60405180910390fd5b6001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555042600c819055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a600b60029054906101000a900460ff16604051610e0c91906123f9565b60405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e4d90612658565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7990612658565b8015610ec45780601f10610e9b57610100808354040283529160200191610ec4565b820191905f5260205f20905b815481529060010190602001808311610ea757829003601f168201915b5050505050905090565b5f8060015f610edb611571565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c90612944565b60405180910390fd5b610fa9610fa0611571565b85858403611578565b600191505092915050565b5f610fc7610fc0611571565b848461173b565b6001905092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b611004611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611089906127c0565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161112c91906123f9565b60405180910390a25050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6111c8611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d906127c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb906129d2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61138a611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f906127c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361147a57611474473373ffffffffffffffffffffffffffffffffffffffff16611ca790919063ffffffff16565b5061156e565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114d09190612541565b602060405180830381865afa1580156114eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150f9190612a04565b6040518363ffffffff1660e01b815260040161152c929190612a2f565b6020604051808303815f875af1158015611548573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156c9190612a6a565b505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd90612b05565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b90612b93565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161172e9190612495565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090612c21565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90612c89565b60405180910390fd5b600b60029054906101000a900460ff1680611878575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806118c9575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90612cf1565b60405180910390fd5b5f810361191f5761191a83835f611d5d565b611ca2565b5f61192930610974565b90505f600a54821015905080801561194d5750600b5f9054906101000a900460ff16155b80156119a5575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119f8575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a105750600b60019054906101000a900460ff165b15611a52576001600b5f6101000a81548160ff021916908315150217905550611a3882611fbc565b5f600b5f6101000a81548160ff0219169083151502179055505b5f8060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611aef575060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611b055750600b5f9054906101000a900460ff165b15611b12575f9150611c12565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611b8f57610384600c54611b769190612743565b421115611b85575f9050611b8a565b60e691505b611c11565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611c0c57610384600c54611bf39190612743565b421115611c02575f9050611c07565b60e691505b611c10565b5f91505b5b5b5f821115611c51575f6103e88387611c2a9190612d0f565b611c349190612d7d565b90508086611c429190612dad565b9550611c4f883083611d5d565b505b5f811115611c92575f6103e88287611c699190612d0f565b611c739190612d7d565b90508086611c819190612dad565b9550611c908861dead83611d5d565b505b611c9d878787611d5d565b505050505b505050565b5f81471015611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290612e2a565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff1683604051611d1090612e75565b5f6040518083038185875af1925050503d805f8114611d4a576040519150601f19603f3d011682016040523d82523d5f602084013e611d4f565b606091505b505090508091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290612ef9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090612f87565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb390613015565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f4a9190612743565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fae9190612495565b60405180910390a350505050565b5f4790505f600267ffffffffffffffff811115611fdc57611fdb613033565b5b60405190808252806020026020018201604052801561200a5781602001602082028036833780820191505090505b50905030815f8151811061202157612020613060565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e991906130a1565b816001815181106120fd576120fc613060565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016121999594939291906131bc565b5f604051808303815f87803b1580156121b0575f80fd5b505af19250505080156121c1575060015b6121cc575050612263565b5f82476121d99190612dad565b90506122258160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ca790919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612257929190613214565b60405180910390a15050505b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561229d578082015181840152602081019050612282565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122c282612266565b6122cc8185612270565b93506122dc818560208601612280565b6122e5816122a8565b840191505092915050565b5f6020820190508181035f83015261230881846122b8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61233d82612314565b9050919050565b61234d81612333565b8114612357575f80fd5b50565b5f8135905061236881612344565b92915050565b5f819050919050565b6123808161236e565b811461238a575f80fd5b50565b5f8135905061239b81612377565b92915050565b5f80604083850312156123b7576123b6612310565b5b5f6123c48582860161235a565b92505060206123d58582860161238d565b9150509250929050565b5f8115159050919050565b6123f3816123df565b82525050565b5f60208201905061240c5f8301846123ea565b92915050565b5f819050919050565b5f61243561243061242b84612314565b612412565b612314565b9050919050565b5f6124468261241b565b9050919050565b5f6124578261243c565b9050919050565b6124678161244d565b82525050565b5f6020820190506124805f83018461245e565b92915050565b61248f8161236e565b82525050565b5f6020820190506124a85f830184612486565b92915050565b5f805f606084860312156124c5576124c4612310565b5b5f6124d28682870161235a565b93505060206124e38682870161235a565b92505060406124f48682870161238d565b9150509250925092565b5f60ff82169050919050565b612513816124fe565b82525050565b5f60208201905061252c5f83018461250a565b92915050565b61253b81612333565b82525050565b5f6020820190506125545f830184612532565b92915050565b5f6020828403121561256f5761256e612310565b5b5f61257c8482850161235a565b91505092915050565b61258e816123df565b8114612598575f80fd5b50565b5f813590506125a981612585565b92915050565b5f80604083850312156125c5576125c4612310565b5b5f6125d28582860161235a565b92505060206125e38582860161259b565b9150509250929050565b5f806040838503121561260357612602612310565b5b5f6126108582860161235a565b92505060206126218582860161235a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061266f57607f821691505b6020821081036126825761268161262b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6126e2602883612270565b91506126ed82612688565b604082019050919050565b5f6020820190508181035f83015261270f816126d6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61274d8261236e565b91506127588361236e565b92508282019050808211156127705761276f612716565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127aa602083612270565b91506127b582612776565b602082019050919050565b5f6020820190508181035f8301526127d78161279e565b9050919050565b7f45523a204665652072656365697665722063616e6e6f7420626520746865207a5f8201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b5f612838602b83612270565b9150612843826127de565b604082019050919050565b5f6020820190508181035f8301526128658161282c565b9050919050565b7f45523a2054726164696e6720616c726561647920656e61626c65642e000000005f82015250565b5f6128a0601c83612270565b91506128ab8261286c565b602082019050919050565b5f6020820190508181035f8301526128cd81612894565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61292e602583612270565b9150612939826128d4565b604082019050919050565b5f6020820190508181035f83015261295b81612922565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6129bc602683612270565b91506129c782612962565b604082019050919050565b5f6020820190508181035f8301526129e9816129b0565b9050919050565b5f815190506129fe81612377565b92915050565b5f60208284031215612a1957612a18612310565b5b5f612a26848285016129f0565b91505092915050565b5f604082019050612a425f830185612532565b612a4f6020830184612486565b9392505050565b5f81519050612a6481612585565b92915050565b5f60208284031215612a7f57612a7e612310565b5b5f612a8c84828501612a56565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612aef602483612270565b9150612afa82612a95565b604082019050919050565b5f6020820190508181035f830152612b1c81612ae3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b7d602283612270565b9150612b8882612b23565b604082019050919050565b5f6020820190508181035f830152612baa81612b71565b9050919050565b7f45523a207472616e736665722066726f6d20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c0b602283612270565b9150612c1682612bb1565b604082019050919050565b5f6020820190508181035f830152612c3881612bff565b9050919050565b7f45523a207472616e7366657220746f20746865207a65726f20616464726573735f82015250565b5f612c73602083612270565b9150612c7e82612c3f565b602082019050919050565b5f6020820190508181035f830152612ca081612c67565b9050919050565b7f45523a2054726164696e67206e6f742079657420656e61626c656421000000005f82015250565b5f612cdb601c83612270565b9150612ce682612ca7565b602082019050919050565b5f6020820190508181035f830152612d0881612ccf565b9050919050565b5f612d198261236e565b9150612d248361236e565b9250828202612d328161236e565b91508282048414831517612d4957612d48612716565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d878261236e565b9150612d928361236e565b925082612da257612da1612d50565b5b828204905092915050565b5f612db78261236e565b9150612dc28361236e565b9250828203905081811115612dda57612dd9612716565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f612e14601d83612270565b9150612e1f82612de0565b602082019050919050565b5f6020820190508181035f830152612e4181612e08565b9050919050565b5f81905092915050565b50565b5f612e605f83612e48565b9150612e6b82612e52565b5f82019050919050565b5f612e7f82612e55565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ee3602583612270565b9150612eee82612e89565b604082019050919050565b5f6020820190508181035f830152612f1081612ed7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612f71602383612270565b9150612f7c82612f17565b604082019050919050565b5f6020820190508181035f830152612f9e81612f65565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612fff602683612270565b915061300a82612fa5565b604082019050919050565b5f6020820190508181035f83015261302c81612ff3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061309b81612344565b92915050565b5f602082840312156130b6576130b5612310565b5b5f6130c38482850161308d565b91505092915050565b5f819050919050565b5f6130ef6130ea6130e5846130cc565b612412565b61236e565b9050919050565b6130ff816130d5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313781612333565b82525050565b5f613148838361312e565b60208301905092915050565b5f602082019050919050565b5f61316a82613105565b613174818561310f565b935061317f8361311f565b805f5b838110156131af578151613196888261313d565b97506131a183613154565b925050600181019050613182565b5085935050505092915050565b5f60a0820190506131cf5f830188612486565b6131dc60208301876130f6565b81810360408301526131ee8186613160565b90506131fd6060830185612532565b61320a6080830184612486565b9695505050505050565b5f6040820190506132275f830185612486565b6132346020830184612486565b939250505056fea264697066735822122049403567f9d9e16ce8b4f6b76cb2ee901c640db3349988f2c30c83f45fed8b2d64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610184575f3560e01c80637c08b964116100d0578063b3f0067411610089578063dd62ed3e11610063578063dd62ed3e1461057d578063e2f45605146105b9578063f2fde38b146105e3578063f9d0831a1461060b5761018b565b8063b3f0067414610501578063b8158d601461052b578063c0246668146105555761018b565b80637c08b964146103f75780638a8c523c1461041f5780638da5cb5b1461043557806395d89b411461045f578063a457c2d714610489578063a9059cbb146104c55761018b565b8063395093511161013d5780634fbee193116101175780634fbee1931461033f5780636ddd17131461037b57806370a08231146103a5578063715018a6146103e15761018b565b806339509351146102af57806349bd5a5e146102eb5780634ada218b146103155761018b565b806306fdde031461018f578063095ea7b3146101b95780631694505e146101f557806318160ddd1461021f57806323b872dd14610249578063313ce567146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a3610633565b6040516101b091906122f0565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906123a1565b6106c3565b6040516101ec91906123f9565b60405180910390f35b348015610200575f80fd5b506102096106e0565b604051610216919061246d565b60405180910390f35b34801561022a575f80fd5b50610233610705565b6040516102409190612495565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906124ae565b61070e565b60405161027c91906123f9565b60405180910390f35b348015610290575f80fd5b50610299610828565b6040516102a69190612519565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d091906123a1565b610830565b6040516102e291906123f9565b60405180910390f35b3480156102f6575f80fd5b506102ff6108d7565b60405161030c9190612541565b60405180910390f35b348015610320575f80fd5b506103296108fc565b60405161033691906123f9565b60405180910390f35b34801561034a575f80fd5b506103656004803603810190610360919061255a565b61090f565b60405161037291906123f9565b60405180910390f35b348015610386575f80fd5b5061038f610961565b60405161039c91906123f9565b60405180910390f35b3480156103b0575f80fd5b506103cb60048036038101906103c6919061255a565b610974565b6040516103d89190612495565b60405180910390f35b3480156103ec575f80fd5b506103f56109b9565b005b348015610402575f80fd5b5061041d6004803603810190610418919061255a565b610b0c565b005b34801561042a575f80fd5b50610433610cab565b005b348015610440575f80fd5b50610449610e16565b6040516104569190612541565b60405180910390f35b34801561046a575f80fd5b50610473610e3e565b60405161048091906122f0565b60405180910390f35b348015610494575f80fd5b506104af60048036038101906104aa91906123a1565b610ece565b6040516104bc91906123f9565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e691906123a1565b610fb4565b6040516104f891906123f9565b60405180910390f35b34801561050c575f80fd5b50610515610fd1565b6040516105229190612541565b60405180910390f35b348015610536575f80fd5b5061053f610ff6565b60405161054c9190612495565b60405180910390f35b348015610560575f80fd5b5061057b600480360381019061057691906125af565b610ffc565b005b348015610588575f80fd5b506105a3600480360381019061059e91906125ed565b611138565b6040516105b09190612495565b60405180910390f35b3480156105c4575f80fd5b506105cd6111ba565b6040516105da9190612495565b60405180910390f35b3480156105ee575f80fd5b506106096004803603810190610604919061255a565b6111c0565b005b348015610616575f80fd5b50610631600480360381019061062c919061255a565b611382565b005b60606003805461064290612658565b80601f016020809104026020016040519081016040528092919081815260200182805461066e90612658565b80156106b95780601f10610690576101008083540402835291602001916106b9565b820191905f5260205f20905b81548152906001019060200180831161069c57829003601f168201915b5050505050905090565b5f6106d66106cf611571565b8484611578565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610756611571565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461081157828110156107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f3906126f8565b60405180910390fd5b61081085610808611571565b858403611578565b5b61081c85858561173b565b60019150509392505050565b5f6009905090565b5f6108cd61083c611571565b848460015f610849611571565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108c89190612743565b611578565b6001905092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60029054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600b60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109c1611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906127c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b14611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b99906127c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c079061284e565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610ca09190612541565b60405180910390a150565b610cb3611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d38906127c0565b60405180910390fd5b600b60029054906101000a900460ff1615610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d88906128b6565b60405180910390fd5b6001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555042600c819055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a600b60029054906101000a900460ff16604051610e0c91906123f9565b60405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e4d90612658565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7990612658565b8015610ec45780601f10610e9b57610100808354040283529160200191610ec4565b820191905f5260205f20905b815481529060010190602001808311610ea757829003601f168201915b5050505050905090565b5f8060015f610edb611571565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c90612944565b60405180910390fd5b610fa9610fa0611571565b85858403611578565b600191505092915050565b5f610fc7610fc0611571565b848461173b565b6001905092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b611004611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611089906127c0565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161112c91906123f9565b60405180910390a25050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6111c8611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d906127c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb906129d2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61138a611571565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f906127c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361147a57611474473373ffffffffffffffffffffffffffffffffffffffff16611ca790919063ffffffff16565b5061156e565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114d09190612541565b602060405180830381865afa1580156114eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150f9190612a04565b6040518363ffffffff1660e01b815260040161152c929190612a2f565b6020604051808303815f875af1158015611548573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156c9190612a6a565b505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd90612b05565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b90612b93565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161172e9190612495565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090612c21565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90612c89565b60405180910390fd5b600b60029054906101000a900460ff1680611878575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806118c9575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90612cf1565b60405180910390fd5b5f810361191f5761191a83835f611d5d565b611ca2565b5f61192930610974565b90505f600a54821015905080801561194d5750600b5f9054906101000a900460ff16155b80156119a5575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119f8575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a105750600b60019054906101000a900460ff165b15611a52576001600b5f6101000a81548160ff021916908315150217905550611a3882611fbc565b5f600b5f6101000a81548160ff0219169083151502179055505b5f8060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611aef575060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611b055750600b5f9054906101000a900460ff165b15611b12575f9150611c12565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611b8f57610384600c54611b769190612743565b421115611b85575f9050611b8a565b60e691505b611c11565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611c0c57610384600c54611bf39190612743565b421115611c02575f9050611c07565b60e691505b611c10565b5f91505b5b5b5f821115611c51575f6103e88387611c2a9190612d0f565b611c349190612d7d565b90508086611c429190612dad565b9550611c4f883083611d5d565b505b5f811115611c92575f6103e88287611c699190612d0f565b611c739190612d7d565b90508086611c819190612dad565b9550611c908861dead83611d5d565b505b611c9d878787611d5d565b505050505b505050565b5f81471015611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290612e2a565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff1683604051611d1090612e75565b5f6040518083038185875af1925050503d805f8114611d4a576040519150601f19603f3d011682016040523d82523d5f602084013e611d4f565b606091505b505090508091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290612ef9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090612f87565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb390613015565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f4a9190612743565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fae9190612495565b60405180910390a350505050565b5f4790505f600267ffffffffffffffff811115611fdc57611fdb613033565b5b60405190808252806020026020018201604052801561200a5781602001602082028036833780820191505090505b50905030815f8151811061202157612020613060565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e991906130a1565b816001815181106120fd576120fc613060565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016121999594939291906131bc565b5f604051808303815f87803b1580156121b0575f80fd5b505af19250505080156121c1575060015b6121cc575050612263565b5f82476121d99190612dad565b90506122258160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ca790919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612257929190613214565b60405180910390a15050505b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561229d578082015181840152602081019050612282565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122c282612266565b6122cc8185612270565b93506122dc818560208601612280565b6122e5816122a8565b840191505092915050565b5f6020820190508181035f83015261230881846122b8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61233d82612314565b9050919050565b61234d81612333565b8114612357575f80fd5b50565b5f8135905061236881612344565b92915050565b5f819050919050565b6123808161236e565b811461238a575f80fd5b50565b5f8135905061239b81612377565b92915050565b5f80604083850312156123b7576123b6612310565b5b5f6123c48582860161235a565b92505060206123d58582860161238d565b9150509250929050565b5f8115159050919050565b6123f3816123df565b82525050565b5f60208201905061240c5f8301846123ea565b92915050565b5f819050919050565b5f61243561243061242b84612314565b612412565b612314565b9050919050565b5f6124468261241b565b9050919050565b5f6124578261243c565b9050919050565b6124678161244d565b82525050565b5f6020820190506124805f83018461245e565b92915050565b61248f8161236e565b82525050565b5f6020820190506124a85f830184612486565b92915050565b5f805f606084860312156124c5576124c4612310565b5b5f6124d28682870161235a565b93505060206124e38682870161235a565b92505060406124f48682870161238d565b9150509250925092565b5f60ff82169050919050565b612513816124fe565b82525050565b5f60208201905061252c5f83018461250a565b92915050565b61253b81612333565b82525050565b5f6020820190506125545f830184612532565b92915050565b5f6020828403121561256f5761256e612310565b5b5f61257c8482850161235a565b91505092915050565b61258e816123df565b8114612598575f80fd5b50565b5f813590506125a981612585565b92915050565b5f80604083850312156125c5576125c4612310565b5b5f6125d28582860161235a565b92505060206125e38582860161259b565b9150509250929050565b5f806040838503121561260357612602612310565b5b5f6126108582860161235a565b92505060206126218582860161235a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061266f57607f821691505b6020821081036126825761268161262b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6126e2602883612270565b91506126ed82612688565b604082019050919050565b5f6020820190508181035f83015261270f816126d6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61274d8261236e565b91506127588361236e565b92508282019050808211156127705761276f612716565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127aa602083612270565b91506127b582612776565b602082019050919050565b5f6020820190508181035f8301526127d78161279e565b9050919050565b7f45523a204665652072656365697665722063616e6e6f7420626520746865207a5f8201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b5f612838602b83612270565b9150612843826127de565b604082019050919050565b5f6020820190508181035f8301526128658161282c565b9050919050565b7f45523a2054726164696e6720616c726561647920656e61626c65642e000000005f82015250565b5f6128a0601c83612270565b91506128ab8261286c565b602082019050919050565b5f6020820190508181035f8301526128cd81612894565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61292e602583612270565b9150612939826128d4565b604082019050919050565b5f6020820190508181035f83015261295b81612922565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6129bc602683612270565b91506129c782612962565b604082019050919050565b5f6020820190508181035f8301526129e9816129b0565b9050919050565b5f815190506129fe81612377565b92915050565b5f60208284031215612a1957612a18612310565b5b5f612a26848285016129f0565b91505092915050565b5f604082019050612a425f830185612532565b612a4f6020830184612486565b9392505050565b5f81519050612a6481612585565b92915050565b5f60208284031215612a7f57612a7e612310565b5b5f612a8c84828501612a56565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612aef602483612270565b9150612afa82612a95565b604082019050919050565b5f6020820190508181035f830152612b1c81612ae3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b7d602283612270565b9150612b8882612b23565b604082019050919050565b5f6020820190508181035f830152612baa81612b71565b9050919050565b7f45523a207472616e736665722066726f6d20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c0b602283612270565b9150612c1682612bb1565b604082019050919050565b5f6020820190508181035f830152612c3881612bff565b9050919050565b7f45523a207472616e7366657220746f20746865207a65726f20616464726573735f82015250565b5f612c73602083612270565b9150612c7e82612c3f565b602082019050919050565b5f6020820190508181035f830152612ca081612c67565b9050919050565b7f45523a2054726164696e67206e6f742079657420656e61626c656421000000005f82015250565b5f612cdb601c83612270565b9150612ce682612ca7565b602082019050919050565b5f6020820190508181035f830152612d0881612ccf565b9050919050565b5f612d198261236e565b9150612d248361236e565b9250828202612d328161236e565b91508282048414831517612d4957612d48612716565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d878261236e565b9150612d928361236e565b925082612da257612da1612d50565b5b828204905092915050565b5f612db78261236e565b9150612dc28361236e565b9250828203905081811115612dda57612dd9612716565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f612e14601d83612270565b9150612e1f82612de0565b602082019050919050565b5f6020820190508181035f830152612e4181612e08565b9050919050565b5f81905092915050565b50565b5f612e605f83612e48565b9150612e6b82612e52565b5f82019050919050565b5f612e7f82612e55565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ee3602583612270565b9150612eee82612e89565b604082019050919050565b5f6020820190508181035f830152612f1081612ed7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612f71602383612270565b9150612f7c82612f17565b604082019050919050565b5f6020820190508181035f830152612f9e81612f65565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612fff602683612270565b915061300a82612fa5565b604082019050919050565b5f6020820190508181035f83015261302c81612ff3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061309b81612344565b92915050565b5f602082840312156130b6576130b5612310565b5b5f6130c38482850161308d565b91505092915050565b5f819050919050565b5f6130ef6130ea6130e5846130cc565b612412565b61236e565b9050919050565b6130ff816130d5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313781612333565b82525050565b5f613148838361312e565b60208301905092915050565b5f602082019050919050565b5f61316a82613105565b613174818561310f565b935061317f8361311f565b805f5b838110156131af578151613196888261313d565b97506131a183613154565b925050600181019050613182565b5085935050505092915050565b5f60a0820190506131cf5f830188612486565b6131dc60208301876130f6565b81810360408301526131ee8186613160565b90506131fd6060830185612532565b61320a6080830184612486565b9695505050505050565b5f6040820190506132275f830185612486565b6132346020830184612486565b939250505056fea264697066735822122049403567f9d9e16ce8b4f6b76cb2ee901c640db3349988f2c30c83f45fed8b2d64736f6c63430008150033

Deployed Bytecode Sourcemap

8886:6414:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4798:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5711:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8973:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5118:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5888:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5018:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6469:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9021:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12269:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11766:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9231:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5234:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3987:148;;;;;;;;;;;;;:::i;:::-;;11953:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12337:267;;;;;;;;;;;;;:::i;:::-;;3773:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4906:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6692:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5369:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9121:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12302:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11573:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5552:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9157:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4143:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11265:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4798:100;4852:13;4885:5;4878:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4798:100;:::o;5711:169::-;5794:4;5811:39;5820:12;:10;:12::i;:::-;5834:7;5843:6;5811:8;:39::i;:::-;5868:4;5861:11;;5711:169;;;;:::o;8973:41::-;;;;;;;;;;;;;:::o;5118:108::-;5179:7;5206:12;;5199:19;;5118:108;:::o;5888:573::-;6028:4;6045:24;6072:11;:19;6084:6;6072:19;;;;;;;;;;;;;;;:33;6092:12;:10;:12::i;:::-;6072:33;;;;;;;;;;;;;;;;6045:60;;6140:17;6120:16;:37;6116:265;;6202:6;6182:16;:26;;6174:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6297:57;6306:6;6314:12;:10;:12::i;:::-;6347:6;6328:16;:25;6297:8;:57::i;:::-;6116:265;6393:36;6403:6;6411:9;6422:6;6393:9;:36::i;:::-;6449:4;6442:11;;;5888:573;;;;;:::o;5018:92::-;5076:5;5101:1;5094:8;;5018:92;:::o;6469:215::-;6557:4;6574:80;6583:12;:10;:12::i;:::-;6597:7;6643:10;6606:11;:25;6618:12;:10;:12::i;:::-;6606:25;;;;;;;;;;;;;;;:34;6632:7;6606:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6574:8;:80::i;:::-;6672:4;6665:11;;6469:215;;;;:::o;9021:29::-;;;;;;;;;;;;;:::o;12269:26::-;;;;;;;;;;;;;:::o;11766:125::-;11831:4;11855:19;:28;11875:7;11855:28;;;;;;;;;;;;;;;;;;;;;;;;;11848:35;;11766:125;;;:::o;9231:26::-;;;;;;;;;;;;;:::o;5234:127::-;5308:7;5335:9;:18;5345:7;5335:18;;;;;;;;;;;;;;;;5328:25;;5234:127;;;:::o;3987:148::-;3910:12;:10;:12::i;:::-;3900:22;;:6;;;;;;;;;;;:22;;;3892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4094:1:::1;4057:40;;4078:6;;;;;;;;;;;4057:40;;;;;;;;;;;;4125:1;4108:6;;:19;;;;;;;;;;;;;;;;;;3987:148::o:0;11953:254::-;3910:12;:10;:12::i;:::-;3900:22;;:6;;;;;;;;;;;:22;;;3892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12063:1:::1;12039:26;;:12;:26;;::::0;12031:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12138:12;12124:11;;:26;;;;;;;;;;;;;;;;;;12168:31;12187:11;;;;;;;;;;;12168:31;;;;;;:::i;:::-;;;;;;;;11953:254:::0;:::o;12337:267::-;3910:12;:10;:12::i;:::-;3900:22;;:6;;;;;;;;;;;:22;;;3892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12400:14:::1;;;;;;;;;;;12399:15;12391:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12475:4;12458:14;;:21;;;;;;;;;;;;;;;;;;12504:4;12490:11;;:18;;;;;;;;;;;;;;;;;;12533:15;12519:11;:29;;;;12566:30;12581:14;;;;;;;;;;;12566:30;;;;;;:::i;:::-;;;;;;;;12337:267::o:0;3773:79::-;3811:7;3838:6;;;;;;;;;;;3831:13;;3773:79;:::o;4906:104::-;4962:13;4995:7;4988:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4906:104;:::o;6692:413::-;6785:4;6802:24;6829:11;:25;6841:12;:10;:12::i;:::-;6829:25;;;;;;;;;;;;;;;:34;6855:7;6829:34;;;;;;;;;;;;;;;;6802:61;;6902:15;6882:16;:35;;6874:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6995:67;7004:12;:10;:12::i;:::-;7018:7;7046:15;7027:16;:34;6995:8;:67::i;:::-;7093:4;7086:11;;;6692:413;;;;:::o;5369:175::-;5455:4;5472:42;5482:12;:10;:12::i;:::-;5496:9;5507:6;5472:9;:42::i;:::-;5532:4;5525:11;;5369:175;;;;:::o;9121:27::-;;;;;;;;;;;;;:::o;12302:26::-;;;;:::o;11573:185::-;3910:12;:10;:12::i;:::-;3900:22;;:6;;;;;;;;;;;:22;;;3892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11690:8:::1;11659:19;:28;11679:7;11659:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11732:7;11716:34;;;11741:8;11716:34;;;;;;:::i;:::-;;;;;;;;11573:185:::0;;:::o;5552:151::-;5641:7;5668:11;:18;5680:5;5668:18;;;;;;;;;;;;;;;:27;5687:7;5668:27;;;;;;;;;;;;;;;;5661:34;;5552:151;;;;:::o;9157:34::-;;;;:::o;4143:244::-;3910:12;:10;:12::i;:::-;3900:22;;:6;;;;;;;;;;;:22;;;3892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4252:1:::1;4232:22;;:8;:22;;::::0;4224:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4342:8;4313:38;;4334:6;;;;;;;;;;;4313:38;;;;;;;;;;;;4371:8;4362:6;;:17;;;;;;;;;;;;;;;;;;4143:244:::0;:::o;11265:300::-;3910:12;:10;:12::i;:::-;3900:22;;:6;;;;;;;;;;;:22;;;3892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11357:3:::1;11340:21;;:5;:21;;::::0;11336:127:::1;;11378:52;11408:21;11386:10;11378:29;;;;:52;;;;:::i;:::-;;11445:7;;11336:127;11490:5;11483:22;;;11506:10;11525:5;11518:23;;;11550:4;11518:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11483:74;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3970:1;11265:300:::0;:::o;3096:98::-;3149:7;3176:10;3169:17;;3096:98;:::o;8499:380::-;8652:1;8635:19;;:5;:19;;;8627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8733:1;8714:21;;:7;:21;;;8706:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8817:6;8787:11;:18;8799:5;8787:18;;;;;;;;;;;;;;;:27;8806:7;8787:27;;;;;;;;;;;;;;;:36;;;;8855:7;8839:32;;8848:5;8839:32;;;8864:6;8839:32;;;;;;:::i;:::-;;;;;;;;8499:380;;;:::o;12612:1990::-;12725:1;12709:18;;:4;:18;;;12701:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12799:1;12785:16;;:2;:16;;;12777:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12857:14;;;;;;;;;;;:43;;;;12875:19;:25;12895:4;12875:25;;;;;;;;;;;;;;;;;;;;;;;;;12857:43;:70;;;;12904:19;:23;12924:2;12904:23;;;;;;;;;;;;;;;;;;;;;;;;;12857:70;12849:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;12994:1;12984:6;:11;12980:93;;13012:28;13028:4;13034:2;13038:1;13012:15;:28::i;:::-;13055:7;;12980:93;13079:28;13110:24;13128:4;13110:9;:24::i;:::-;13079:55;;13147:12;13186:18;;13162:20;:42;;13147:57;;13221:7;:33;;;;;13246:8;;;;;;;;;;;13245:9;13221:33;:69;;;;;13277:13;;;;;;;;;;;13271:19;;:2;:19;;;13221:69;:112;;;;;13308:19;:25;13328:4;13308:25;;;;;;;;;;;;;;;;;;;;;;;;;13307:26;13221:112;:140;;;;;13350:11;;;;;;;;;;;13221:140;13217:289;;;13399:4;13388:8;;:15;;;;;;;;;;;;;;;;;;13420:36;13435:20;13420:14;:36::i;:::-;13489:5;13478:8;;:16;;;;;;;;;;;;;;;;;;13217:289;13518:18;13547:17;13579:19;:25;13599:4;13579:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;13608:19;:23;13628:2;13608:23;;;;;;;;;;;;;;;;;;;;;;;;;13579:52;:64;;;;13635:8;;;;;;;;;;;13579:64;13575:580;;;13673:1;13660:14;;13575:580;;;13704:13;;;;;;;;;;;13696:21;;:4;:21;;;13692:463;;13770:10;13756:11;;:24;;;;:::i;:::-;13738:15;:42;13734:153;;;13813:1;13801:13;;13734:153;;;13868:3;13855:16;;13734:153;13692:463;;;13914:13;;;;;;;;;;;13908:19;;:2;:19;;;13904:251;;13980:10;13966:11;;:24;;;;:::i;:::-;13948:15;:42;13944:153;;;14023:1;14011:13;;13944:153;;;14078:3;14065:16;;13944:153;13904:251;;;14142:1;14129:14;;13904:251;13692:463;13575:580;14184:1;14171:10;:14;14167:185;;;14202:12;14241:5;14227:10;14218:6;:19;;;;:::i;:::-;14217:29;;;;:::i;:::-;14202:44;;14279:4;14270:6;:13;;;;:::i;:::-;14261:22;;14298:42;14314:4;14328;14335;14298:15;:42::i;:::-;14187:165;14167:185;14380:1;14368:9;:13;14364:185;;;14398:12;14436:5;14423:9;14414:6;:18;;;;:::i;:::-;14413:28;;;;:::i;:::-;14398:43;;14474:4;14465:6;:13;;;;:::i;:::-;14456:22;;14493:44;14509:4;14523:6;14532:4;14493:15;:44::i;:::-;14383:166;14364:185;14561:33;14577:4;14583:2;14587:6;14561:15;:33::i;:::-;12690:1912;;;;12612:1990;;;;:::o;2771:285::-;2850:4;2899:6;2874:21;:31;;2866:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2953:12;2971:9;:14;;2993:6;2971:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2952:52;;;3022:7;3015:14;;;2771:285;;;;:::o;7113:614::-;7271:1;7253:20;;:6;:20;;;7245:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7355:1;7334:23;;:9;:23;;;7326:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7410:21;7434:9;:17;7444:6;7434:17;;;;;;;;;;;;;;;;7410:41;;7487:6;7470:13;:23;;7462:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7608:6;7592:13;:22;7572:9;:17;7582:6;7572:17;;;;;;;;;;;;;;;:42;;;;7660:6;7636:9;:20;7646:9;7636:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7701:9;7684:35;;7693:6;7684:35;;;7712:6;7684:35;;;;;;:::i;:::-;;;;;;;;7234:493;7113:614;;;:::o;14610:687::-;14674:22;14699:21;14674:46;;14733:21;14771:1;14757:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14733:40;;14802:4;14784;14789:1;14784:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14828:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14818:4;14823:1;14818:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;14867:15;;;;;;;;;;;:66;;;14948:11;14974:1;14990:4;15017;15037:15;14867:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14863:243;;15088:7;;;;14863:243;15118:18;15163:14;15139:21;:38;;;;:::i;:::-;15118:59;;15190:42;15221:10;15198:11;;;;;;;;;;;15190:30;;;;:42;;;;:::i;:::-;;15250:39;15265:11;15278:10;15250:39;;;;;;;:::i;:::-;;;;;;;;14663:634;;;14610:687;;:::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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:151::-;3867:9;3900:37;3931:5;3900:37;:::i;:::-;3887:50;;3792:151;;;:::o;3949:181::-;4061:62;4117:5;4061:62;:::i;:::-;4056:3;4049:75;3949:181;;:::o;4136:272::-;4254:4;4292:2;4281:9;4277:18;4269:26;;4305:96;4398:1;4387:9;4383:17;4374:6;4305:96;:::i;:::-;4136:272;;;;:::o;4414:118::-;4501:24;4519:5;4501:24;:::i;:::-;4496:3;4489:37;4414:118;;:::o;4538:222::-;4631:4;4669:2;4658:9;4654:18;4646:26;;4682:71;4750:1;4739:9;4735:17;4726:6;4682:71;:::i;:::-;4538:222;;;;:::o;4766:619::-;4843:6;4851;4859;4908:2;4896:9;4887:7;4883:23;4879:32;4876:119;;;4914:79;;:::i;:::-;4876:119;5034:1;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5005:117;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;5289:2;5315:53;5360:7;5351:6;5340:9;5336:22;5315:53;:::i;:::-;5305:63;;5260:118;4766:619;;;;;:::o;5391:86::-;5426:7;5466:4;5459:5;5455:16;5444:27;;5391:86;;;:::o;5483:112::-;5566:22;5582:5;5566:22;:::i;:::-;5561:3;5554:35;5483:112;;:::o;5601:214::-;5690:4;5728:2;5717:9;5713:18;5705:26;;5741:67;5805:1;5794:9;5790:17;5781:6;5741:67;:::i;:::-;5601:214;;;;:::o;5821:118::-;5908:24;5926:5;5908:24;:::i;:::-;5903:3;5896:37;5821:118;;:::o;5945:222::-;6038:4;6076:2;6065:9;6061:18;6053:26;;6089:71;6157:1;6146:9;6142:17;6133:6;6089:71;:::i;:::-;5945:222;;;;:::o;6173:329::-;6232:6;6281:2;6269:9;6260:7;6256:23;6252:32;6249:119;;;6287:79;;:::i;:::-;6249:119;6407:1;6432:53;6477:7;6468:6;6457:9;6453:22;6432:53;:::i;:::-;6422:63;;6378:117;6173:329;;;;:::o;6508:116::-;6578:21;6593:5;6578:21;:::i;:::-;6571:5;6568:32;6558:60;;6614:1;6611;6604:12;6558:60;6508:116;:::o;6630:133::-;6673:5;6711:6;6698:20;6689:29;;6727:30;6751:5;6727:30;:::i;:::-;6630:133;;;;:::o;6769:468::-;6834:6;6842;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7017:1;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6988:117;7144:2;7170:50;7212:7;7203:6;7192:9;7188:22;7170:50;:::i;:::-;7160:60;;7115:115;6769:468;;;;;:::o;7243:474::-;7311:6;7319;7368:2;7356:9;7347:7;7343:23;7339:32;7336:119;;;7374:79;;:::i;:::-;7336:119;7494:1;7519:53;7564:7;7555:6;7544:9;7540:22;7519:53;:::i;:::-;7509:63;;7465:117;7621:2;7647:53;7692:7;7683:6;7672:9;7668:22;7647:53;:::i;:::-;7637:63;;7592:118;7243:474;;;;;:::o;7723:180::-;7771:77;7768:1;7761:88;7868:4;7865:1;7858:15;7892:4;7889:1;7882:15;7909:320;7953:6;7990:1;7984:4;7980:12;7970:22;;8037:1;8031:4;8027:12;8058:18;8048:81;;8114:4;8106:6;8102:17;8092:27;;8048:81;8176:2;8168:6;8165:14;8145:18;8142:38;8139:84;;8195:18;;:::i;:::-;8139:84;7960:269;7909:320;;;:::o;8235:227::-;8375:34;8371:1;8363:6;8359:14;8352:58;8444:10;8439:2;8431:6;8427:15;8420:35;8235:227;:::o;8468:366::-;8610:3;8631:67;8695:2;8690:3;8631:67;:::i;:::-;8624:74;;8707:93;8796:3;8707:93;:::i;:::-;8825:2;8820:3;8816:12;8809:19;;8468:366;;;:::o;8840:419::-;9006:4;9044:2;9033:9;9029:18;9021:26;;9093:9;9087:4;9083:20;9079:1;9068:9;9064:17;9057:47;9121:131;9247:4;9121:131;:::i;:::-;9113:139;;8840:419;;;:::o;9265:180::-;9313:77;9310:1;9303:88;9410:4;9407:1;9400:15;9434:4;9431:1;9424:15;9451:191;9491:3;9510:20;9528:1;9510:20;:::i;:::-;9505:25;;9544:20;9562:1;9544:20;:::i;:::-;9539:25;;9587:1;9584;9580:9;9573:16;;9608:3;9605:1;9602:10;9599:36;;;9615:18;;:::i;:::-;9599:36;9451:191;;;;:::o;9648:182::-;9788:34;9784:1;9776:6;9772:14;9765:58;9648:182;:::o;9836:366::-;9978:3;9999:67;10063:2;10058:3;9999:67;:::i;:::-;9992:74;;10075:93;10164:3;10075:93;:::i;:::-;10193:2;10188:3;10184:12;10177:19;;9836:366;;;:::o;10208:419::-;10374:4;10412:2;10401:9;10397:18;10389:26;;10461:9;10455:4;10451:20;10447:1;10436:9;10432:17;10425:47;10489:131;10615:4;10489:131;:::i;:::-;10481:139;;10208:419;;;:::o;10633:230::-;10773:34;10769:1;10761:6;10757:14;10750:58;10842:13;10837:2;10829:6;10825:15;10818:38;10633:230;:::o;10869:366::-;11011:3;11032:67;11096:2;11091:3;11032:67;:::i;:::-;11025:74;;11108:93;11197:3;11108:93;:::i;:::-;11226:2;11221:3;11217:12;11210:19;;10869:366;;;:::o;11241:419::-;11407:4;11445:2;11434:9;11430:18;11422:26;;11494:9;11488:4;11484:20;11480:1;11469:9;11465:17;11458:47;11522:131;11648:4;11522:131;:::i;:::-;11514:139;;11241:419;;;:::o;11666:178::-;11806:30;11802:1;11794:6;11790:14;11783:54;11666:178;:::o;11850:366::-;11992:3;12013:67;12077:2;12072:3;12013:67;:::i;:::-;12006:74;;12089:93;12178:3;12089:93;:::i;:::-;12207:2;12202:3;12198:12;12191:19;;11850:366;;;:::o;12222:419::-;12388:4;12426:2;12415:9;12411:18;12403:26;;12475:9;12469:4;12465:20;12461:1;12450:9;12446:17;12439:47;12503:131;12629:4;12503:131;:::i;:::-;12495:139;;12222:419;;;:::o;12647:224::-;12787:34;12783:1;12775:6;12771:14;12764:58;12856:7;12851:2;12843:6;12839:15;12832:32;12647:224;:::o;12877:366::-;13019:3;13040:67;13104:2;13099:3;13040:67;:::i;:::-;13033:74;;13116:93;13205:3;13116:93;:::i;:::-;13234:2;13229:3;13225:12;13218:19;;12877:366;;;:::o;13249:419::-;13415:4;13453:2;13442:9;13438:18;13430:26;;13502:9;13496:4;13492:20;13488:1;13477:9;13473:17;13466:47;13530:131;13656:4;13530:131;:::i;:::-;13522:139;;13249:419;;;:::o;13674:225::-;13814:34;13810:1;13802:6;13798:14;13791:58;13883:8;13878:2;13870:6;13866:15;13859:33;13674:225;:::o;13905:366::-;14047:3;14068:67;14132:2;14127:3;14068:67;:::i;:::-;14061:74;;14144:93;14233:3;14144:93;:::i;:::-;14262:2;14257:3;14253:12;14246:19;;13905:366;;;:::o;14277:419::-;14443:4;14481:2;14470:9;14466:18;14458:26;;14530:9;14524:4;14520:20;14516:1;14505:9;14501:17;14494:47;14558:131;14684:4;14558:131;:::i;:::-;14550:139;;14277:419;;;:::o;14702:143::-;14759:5;14790:6;14784:13;14775:22;;14806:33;14833:5;14806:33;:::i;:::-;14702:143;;;;:::o;14851:351::-;14921:6;14970:2;14958:9;14949:7;14945:23;14941:32;14938:119;;;14976:79;;:::i;:::-;14938:119;15096:1;15121:64;15177:7;15168:6;15157:9;15153:22;15121:64;:::i;:::-;15111:74;;15067:128;14851:351;;;;:::o;15208:332::-;15329:4;15367:2;15356:9;15352:18;15344:26;;15380:71;15448:1;15437:9;15433:17;15424:6;15380:71;:::i;:::-;15461:72;15529:2;15518:9;15514:18;15505:6;15461:72;:::i;:::-;15208:332;;;;;:::o;15546:137::-;15600:5;15631:6;15625:13;15616:22;;15647:30;15671:5;15647:30;:::i;:::-;15546:137;;;;:::o;15689:345::-;15756:6;15805:2;15793:9;15784:7;15780:23;15776:32;15773:119;;;15811:79;;:::i;:::-;15773:119;15931:1;15956:61;16009:7;16000:6;15989:9;15985:22;15956:61;:::i;:::-;15946:71;;15902:125;15689:345;;;;:::o;16040:223::-;16180:34;16176:1;16168:6;16164:14;16157:58;16249:6;16244:2;16236:6;16232:15;16225:31;16040:223;:::o;16269:366::-;16411:3;16432:67;16496:2;16491:3;16432:67;:::i;:::-;16425:74;;16508:93;16597:3;16508:93;:::i;:::-;16626:2;16621:3;16617:12;16610:19;;16269:366;;;:::o;16641:419::-;16807:4;16845:2;16834:9;16830:18;16822:26;;16894:9;16888:4;16884:20;16880:1;16869:9;16865:17;16858:47;16922:131;17048:4;16922:131;:::i;:::-;16914:139;;16641:419;;;:::o;17066:221::-;17206:34;17202:1;17194:6;17190:14;17183:58;17275:4;17270:2;17262:6;17258:15;17251:29;17066:221;:::o;17293:366::-;17435:3;17456:67;17520:2;17515:3;17456:67;:::i;:::-;17449:74;;17532:93;17621:3;17532:93;:::i;:::-;17650:2;17645:3;17641:12;17634:19;;17293:366;;;:::o;17665:419::-;17831:4;17869:2;17858:9;17854:18;17846:26;;17918:9;17912:4;17908:20;17904:1;17893:9;17889:17;17882:47;17946:131;18072:4;17946:131;:::i;:::-;17938:139;;17665:419;;;:::o;18090:221::-;18230:34;18226:1;18218:6;18214:14;18207:58;18299:4;18294:2;18286:6;18282:15;18275:29;18090:221;:::o;18317:366::-;18459:3;18480:67;18544:2;18539:3;18480:67;:::i;:::-;18473:74;;18556:93;18645:3;18556:93;:::i;:::-;18674:2;18669:3;18665:12;18658:19;;18317:366;;;:::o;18689:419::-;18855:4;18893:2;18882:9;18878:18;18870:26;;18942:9;18936:4;18932:20;18928:1;18917:9;18913:17;18906:47;18970:131;19096:4;18970:131;:::i;:::-;18962:139;;18689:419;;;:::o;19114:182::-;19254:34;19250:1;19242:6;19238:14;19231:58;19114:182;:::o;19302:366::-;19444:3;19465:67;19529:2;19524:3;19465:67;:::i;:::-;19458:74;;19541:93;19630:3;19541:93;:::i;:::-;19659:2;19654:3;19650:12;19643:19;;19302:366;;;:::o;19674:419::-;19840:4;19878:2;19867:9;19863:18;19855:26;;19927:9;19921:4;19917:20;19913:1;19902:9;19898:17;19891:47;19955:131;20081:4;19955:131;:::i;:::-;19947:139;;19674:419;;;:::o;20099:178::-;20239:30;20235:1;20227:6;20223:14;20216:54;20099:178;:::o;20283:366::-;20425:3;20446:67;20510:2;20505:3;20446:67;:::i;:::-;20439:74;;20522:93;20611:3;20522:93;:::i;:::-;20640:2;20635:3;20631:12;20624:19;;20283:366;;;:::o;20655:419::-;20821:4;20859:2;20848:9;20844:18;20836:26;;20908:9;20902:4;20898:20;20894:1;20883:9;20879:17;20872:47;20936:131;21062:4;20936:131;:::i;:::-;20928:139;;20655:419;;;:::o;21080:410::-;21120:7;21143:20;21161:1;21143:20;:::i;:::-;21138:25;;21177:20;21195:1;21177:20;:::i;:::-;21172:25;;21232:1;21229;21225:9;21254:30;21272:11;21254:30;:::i;:::-;21243:41;;21433:1;21424:7;21420:15;21417:1;21414:22;21394:1;21387:9;21367:83;21344:139;;21463:18;;:::i;:::-;21344:139;21128:362;21080:410;;;;:::o;21496:180::-;21544:77;21541:1;21534:88;21641:4;21638:1;21631:15;21665:4;21662:1;21655:15;21682:185;21722:1;21739:20;21757:1;21739:20;:::i;:::-;21734:25;;21773:20;21791:1;21773:20;:::i;:::-;21768:25;;21812:1;21802:35;;21817:18;;:::i;:::-;21802:35;21859:1;21856;21852:9;21847:14;;21682:185;;;;:::o;21873:194::-;21913:4;21933:20;21951:1;21933:20;:::i;:::-;21928:25;;21967:20;21985:1;21967:20;:::i;:::-;21962:25;;22011:1;22008;22004:9;21996:17;;22035:1;22029:4;22026:11;22023:37;;;22040:18;;:::i;:::-;22023:37;21873:194;;;;:::o;22073:179::-;22213:31;22209:1;22201:6;22197:14;22190:55;22073:179;:::o;22258:366::-;22400:3;22421:67;22485:2;22480:3;22421:67;:::i;:::-;22414:74;;22497:93;22586:3;22497:93;:::i;:::-;22615:2;22610:3;22606:12;22599:19;;22258:366;;;:::o;22630:419::-;22796:4;22834:2;22823:9;22819:18;22811:26;;22883:9;22877:4;22873:20;22869:1;22858:9;22854:17;22847:47;22911:131;23037:4;22911:131;:::i;:::-;22903:139;;22630:419;;;:::o;23055:147::-;23156:11;23193:3;23178:18;;23055:147;;;;:::o;23208:114::-;;:::o;23328:398::-;23487:3;23508:83;23589:1;23584:3;23508:83;:::i;:::-;23501:90;;23600:93;23689:3;23600:93;:::i;:::-;23718:1;23713:3;23709:11;23702:18;;23328:398;;;:::o;23732:379::-;23916:3;23938:147;24081:3;23938:147;:::i;:::-;23931:154;;24102:3;24095:10;;23732:379;;;:::o;24117:224::-;24257:34;24253:1;24245:6;24241:14;24234:58;24326:7;24321:2;24313:6;24309:15;24302:32;24117:224;:::o;24347:366::-;24489:3;24510:67;24574:2;24569:3;24510:67;:::i;:::-;24503:74;;24586:93;24675:3;24586:93;:::i;:::-;24704:2;24699:3;24695:12;24688:19;;24347:366;;;:::o;24719:419::-;24885:4;24923:2;24912:9;24908:18;24900:26;;24972:9;24966:4;24962:20;24958:1;24947:9;24943:17;24936:47;25000:131;25126:4;25000:131;:::i;:::-;24992:139;;24719:419;;;:::o;25144:222::-;25284:34;25280:1;25272:6;25268:14;25261:58;25353:5;25348:2;25340:6;25336:15;25329:30;25144:222;:::o;25372:366::-;25514:3;25535:67;25599:2;25594:3;25535:67;:::i;:::-;25528:74;;25611:93;25700:3;25611:93;:::i;:::-;25729:2;25724:3;25720:12;25713:19;;25372:366;;;:::o;25744:419::-;25910:4;25948:2;25937:9;25933:18;25925:26;;25997:9;25991:4;25987:20;25983:1;25972:9;25968:17;25961:47;26025:131;26151:4;26025:131;:::i;:::-;26017:139;;25744:419;;;:::o;26169:225::-;26309:34;26305:1;26297:6;26293:14;26286:58;26378:8;26373:2;26365:6;26361:15;26354:33;26169:225;:::o;26400:366::-;26542:3;26563:67;26627:2;26622:3;26563:67;:::i;:::-;26556:74;;26639:93;26728:3;26639:93;:::i;:::-;26757:2;26752:3;26748:12;26741:19;;26400:366;;;:::o;26772:419::-;26938:4;26976:2;26965:9;26961:18;26953:26;;27025:9;27019:4;27015:20;27011:1;27000:9;26996:17;26989:47;27053:131;27179:4;27053:131;:::i;:::-;27045:139;;26772:419;;;:::o;27197:180::-;27245:77;27242:1;27235:88;27342:4;27339:1;27332:15;27366:4;27363:1;27356:15;27383:180;27431:77;27428:1;27421:88;27528:4;27525:1;27518:15;27552:4;27549:1;27542:15;27569:143;27626:5;27657:6;27651:13;27642:22;;27673:33;27700:5;27673:33;:::i;:::-;27569:143;;;;:::o;27718:351::-;27788:6;27837:2;27825:9;27816:7;27812:23;27808:32;27805:119;;;27843:79;;:::i;:::-;27805:119;27963:1;27988:64;28044:7;28035:6;28024:9;28020:22;27988:64;:::i;:::-;27978:74;;27934:128;27718:351;;;;:::o;28075:85::-;28120:7;28149:5;28138:16;;28075:85;;;:::o;28166:158::-;28224:9;28257:61;28275:42;28284:32;28310:5;28284:32;:::i;:::-;28275:42;:::i;:::-;28257:61;:::i;:::-;28244:74;;28166:158;;;:::o;28330:147::-;28425:45;28464:5;28425:45;:::i;:::-;28420:3;28413:58;28330:147;;:::o;28483:114::-;28550:6;28584:5;28578:12;28568:22;;28483:114;;;:::o;28603:184::-;28702:11;28736:6;28731:3;28724:19;28776:4;28771:3;28767:14;28752:29;;28603:184;;;;:::o;28793:132::-;28860:4;28883:3;28875:11;;28913:4;28908:3;28904:14;28896:22;;28793:132;;;:::o;28931:108::-;29008:24;29026:5;29008:24;:::i;:::-;29003:3;28996:37;28931:108;;:::o;29045:179::-;29114:10;29135:46;29177:3;29169:6;29135:46;:::i;:::-;29213:4;29208:3;29204:14;29190:28;;29045:179;;;;:::o;29230:113::-;29300:4;29332;29327:3;29323:14;29315:22;;29230:113;;;:::o;29379:732::-;29498:3;29527:54;29575:5;29527:54;:::i;:::-;29597:86;29676:6;29671:3;29597:86;:::i;:::-;29590:93;;29707:56;29757:5;29707:56;:::i;:::-;29786:7;29817:1;29802:284;29827:6;29824:1;29821:13;29802:284;;;29903:6;29897:13;29930:63;29989:3;29974:13;29930:63;:::i;:::-;29923:70;;30016:60;30069:6;30016:60;:::i;:::-;30006:70;;29862:224;29849:1;29846;29842:9;29837:14;;29802:284;;;29806:14;30102:3;30095:10;;29503:608;;;29379:732;;;;:::o;30117:831::-;30380:4;30418:3;30407:9;30403:19;30395:27;;30432:71;30500:1;30489:9;30485:17;30476:6;30432:71;:::i;:::-;30513:80;30589:2;30578:9;30574:18;30565:6;30513:80;:::i;:::-;30640:9;30634:4;30630:20;30625:2;30614:9;30610:18;30603:48;30668:108;30771:4;30762:6;30668:108;:::i;:::-;30660:116;;30786:72;30854:2;30843:9;30839:18;30830:6;30786:72;:::i;:::-;30868:73;30936:3;30925:9;30921:19;30912:6;30868:73;:::i;:::-;30117:831;;;;;;;;:::o;30954:332::-;31075:4;31113:2;31102:9;31098:18;31090:26;;31126:71;31194:1;31183:9;31179:17;31170:6;31126:71;:::i;:::-;31207:72;31275:2;31264:9;31260:18;31251:6;31207:72;:::i;:::-;30954:332;;;;;:::o

Swarm Source

ipfs://49403567f9d9e16ce8b4f6b76cb2ee901c640db3349988f2c30c83f45fed8b2d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.