S Price: $0.584403 (-2.10%)

Token

FARMER (FARM)

Overview

Max Total Supply

1,000,000 FARM

Holders

6

Market

Price

$0.00 @ 0.000000 S

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2.535490640510643394 FARM

Value
$0.00
0xc1fc3a6915850c1e2bd3b6f1f27144f53c91a5f4
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x140c758C...f444d8530
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
FARMER

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-03-02
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

// OpenZeppelin Contracts v5.0.1

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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);
}

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 */
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism
 */
abstract contract Ownable {
    address private _owner;

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

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert("Ownable: new owner is the zero address");
        }
        _transferOwnership(initialOwner);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 */
abstract contract ERC20 is IERC20 {
    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 returns (string memory) {
        return _name;
    }

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

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

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

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

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(address from, address to, uint256 amount) public virtual returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(from, to, amount);
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, 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);
    }

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

interface IMetropolisRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

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

interface IMetropolisFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

// FARMER Token Contract
contract FARMER is ERC20, ReentrancyGuard, Ownable {
    // Constants
    uint256 public constant TOTAL_SUPPLY = 1_000_000 * 10**18;
    uint256 public constant TAX_RATE = 5; // 5%
    uint256 public constant LIQUIDITY_TAX = 25; // 2.5%
    uint256 public constant AIRDROP_TAX = 25; // 2.5%
    uint256 public constant MIN_HOLDER_AMOUNT = 10 * 10**18; // 10 tokens
    uint256 public constant MIN_TOKENS_FOR_PROCESS = 1000 * 10**18; // 1000 token minimum for both operations

    // Metropolis DEX addresses
    IMetropolisRouter public metropolisRouter;
    IMetropolisFactory public immutable metropolisFactory;
    address public immutable sonicToken;
    address public liquidityPair;

    // Holder tracking
    mapping(address => bool) public isHolder;
    address[] public holders;

    // Events
    event LiquidityAdded(uint256 tokenAmount, uint256 sonicAmount);
    event AirdropDistributed(uint256 amount, uint256 holdersCount);

    uint256 private _pendingLiquidityTokens;
    uint256 private _pendingAirdropTokens;

    constructor() ERC20("FARMER", "FARM") Ownable(msg.sender) {
        metropolisRouter = IMetropolisRouter(0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3);
        metropolisFactory = IMetropolisFactory(0x1570300e9cFEC66c9Fb0C8bc14366C86EB170Ad0);
        sonicToken = metropolisRouter.WETH();

        // Mint all tokens to contract first
        _mint(address(this), TOTAL_SUPPLY);
        
        // Create pair
        liquidityPair = metropolisFactory.createPair(address(this), sonicToken);
        
        // Approve router for full supply
        _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, amount);
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        super._afterTokenTransfer(from, to, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        if (from == owner() || to == owner()) {
            super._transfer(from, to, amount);
            _updateHolder(from);
            _updateHolder(to);
        } else {
            bool isSellOrBuy = to == liquidityPair || from == liquidityPair;
            
            if (isSellOrBuy) {
                uint256 totalTax = (amount * TAX_RATE) / 100;
                uint256 liquidityTax = (totalTax * LIQUIDITY_TAX) / 100;
                uint256 airdropTax = (totalTax * AIRDROP_TAX) / 100;
                uint256 transferAmount = amount - totalTax;
                
                // Transfer the tax to contract
                super._transfer(from, address(this), totalTax);
                // Transfer the remaining amount
                super._transfer(from, to, transferAmount);

                // Accumulate tokens for liquidity and airdrop
                _pendingLiquidityTokens += liquidityTax;
                _pendingAirdropTokens += airdropTax;

                // Process both when total accumulated tokens reach 1000
                if ((_pendingLiquidityTokens + _pendingAirdropTokens) >= MIN_TOKENS_FOR_PROCESS && 
                    holders.length > 0) {
                    _processLiquidityAndAirdrop();
                }
            } else {
                super._transfer(from, to, amount);
            }
            
            _updateHolder(from);
            _updateHolder(to);
        }
    }

    function _updateHolder(address account) private {
        if (account != liquidityPair && account != address(this)) {
            uint256 balance = balanceOf(account);
            bool isCurrentlyHolder = isHolder[account];
            
            if (balance >= MIN_HOLDER_AMOUNT && !isCurrentlyHolder) {
                isHolder[account] = true;
                holders.push(account);
            } else if (balance < MIN_HOLDER_AMOUNT && isCurrentlyHolder) {
                isHolder[account] = false;
                _removeHolder(account);
            }
        }
    }

    function _removeHolder(address account) private {
        for (uint256 i = 0; i < holders.length; i++) {
            if (holders[i] == account) {
                holders[i] = holders[holders.length - 1];
                holders.pop();
                break;
            }
        }
    }

    function _processLiquidityAndAirdrop() private {
        uint256 tokensForLiquidity = _pendingLiquidityTokens;
        uint256 tokensForAirdrop = _pendingAirdropTokens;
        _pendingLiquidityTokens = 0;
        _pendingAirdropTokens = 0;

        uint256 totalTokens = tokensForLiquidity + tokensForAirdrop;
        
        // Convert all tokens to WETH first
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = metropolisRouter.WETH();
        
        _approve(address(this), address(metropolisRouter), totalTokens);
        
        try metropolisRouter.swapExactTokensForTokens(
            totalTokens,
            0, // minimum output amount
            path,
            address(this),
            block.timestamp
        ) {
            uint256 wethBalance = IERC20(metropolisRouter.WETH()).balanceOf(address(this));
            if (wethBalance > 0) {
                // Calculate proportions
                uint256 wethForLiquidity = (wethBalance * tokensForLiquidity) / totalTokens;
                uint256 wethForAirdrop = wethBalance - wethForLiquidity;

                // Process liquidity first
                if (wethForLiquidity > 0) {
                    _approve(address(this), address(metropolisRouter), tokensForLiquidity / 2);
                    IERC20(metropolisRouter.WETH()).approve(address(metropolisRouter), wethForLiquidity);
                    
                    try metropolisRouter.addLiquidity(
                        address(this),
                        metropolisRouter.WETH(),
                        tokensForLiquidity / 2,
                        wethForLiquidity,
                        0,
                        0,
                        address(this),
                        block.timestamp
                    ) {
                        emit LiquidityAdded(tokensForLiquidity / 2, wethForLiquidity);
                    } catch {
                        _pendingLiquidityTokens = tokensForLiquidity;
                    }
                }

                // Then process airdrop
                if (wethForAirdrop > 0 && holders.length > 0) {
                    uint256 amountPerHolder = wethForAirdrop / holders.length;
                    
                    if (amountPerHolder > 0) {
                        for (uint256 i = 0; i < holders.length && i < 100; i++) {
                            try IERC20(metropolisRouter.WETH()).transfer(holders[i], amountPerHolder) {
                                // Transfer successful
                            } catch {
                                continue;
                            }
                        }
                        
                        emit AirdropDistributed(wethForAirdrop, holders.length);
                    }
                }
            }
        } catch {
            // If the swap fails, restore both pending amounts
            _pendingLiquidityTokens = tokensForLiquidity;
            _pendingAirdropTokens = tokensForAirdrop;
        }
    }

    // View functions
    function getHolderCount() external view returns (uint256) {
        return holders.length;
    }
    
    function getHolders() external view returns (address[] memory) {
        return holders;
    }

    // Initial liquidity function (must be called by owner with ETH)
    function addInitialLiquidity(uint256 tokenAmount) external payable onlyOwner {
        require(msg.value > 0, "Must provide ETH for initial liquidity");
        require(tokenAmount > 0, "Must provide token amount for initial liquidity");
        require(
            IERC20(address(this)).balanceOf(msg.sender) >= tokenAmount,
            "Insufficient token balance for liquidity"
        );

        // Approve router to spend tokens
        _approve(msg.sender, address(metropolisRouter), tokenAmount);

        // Add liquidity with minimal checks
        try metropolisRouter.addLiquidityETH{value: msg.value}(
            address(this),
            tokenAmount,
            0,              // No minimum token amount
            0,              // No minimum ETH amount
            msg.sender,     // LP tokens will go to owner directly
            block.timestamp // Immediate execution
        ) {
            emit LiquidityAdded(tokenAmount, msg.value);
        } catch {
            // If failed, revert the approval
            _approve(msg.sender, address(metropolisRouter), 0);
            revert("Failed to add liquidity");
        }

        // Return any unused ETH
        uint256 remainingETH = address(this).balance;
        if (remainingETH > 0) {
            payable(msg.sender).transfer(remainingETH);
        }
    }

    function setRouter(address _router) external onlyOwner {
        require(_router != address(0), "Invalid router address");
        metropolisRouter = IMetropolisRouter(_router);
    }

    function rescueTokens(address _token, uint256 _amount) external onlyOwner {
        require(_token != address(this), "Cannot rescue FARMER tokens");
        IERC20(_token).transfer(owner(), _amount);
    }

    // Transfer tokens to owner
    function withdrawTokensToOwner(uint256 amount) external onlyOwner {
        require(
            IERC20(address(this)).balanceOf(address(this)) >= amount,
            "Insufficient balance"
        );
        _transfer(address(this), msg.sender, amount);
    }

    // View functions for pending amounts
    function getPendingLiquidityTokens() external view returns (uint256) {
        return _pendingLiquidityTokens;
    }

    function getPendingAirdropTokens() external view returns (uint256) {
        return _pendingAirdropTokens;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"holdersCount","type":"uint256"}],"name":"AirdropDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sonicAmount","type":"uint256"}],"name":"LiquidityAdded","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":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":[],"name":"AIRDROP_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_HOLDER_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_TOKENS_FOR_PROCESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"addInitialLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAirdropTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingLiquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisFactory","outputs":[{"internalType":"contract IMetropolisFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisRouter","outputs":[{"internalType":"contract IMetropolisRouter","name":"","type":"address"}],"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":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sonicToken","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokensToOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801562000010575f80fd5b50336040518060400160405280600681526020017f4641524d455200000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4641524d0000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000a43565b508060049081620000a1919062000a43565b50505060016005819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001149062000bab565b60405180910390fd5b6200012e81620003b260201b60201c565b507395a7e403d7cf20f675ff9273d66e94d35ba49fa360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731570300e9cfec66c9fb0c8bc14366c86eb170ad073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025c919062000c30565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620002ab3069d3c21bcecceda10000006200047560201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663c9c653963060a0516040518363ffffffff1660e01b8152600401620002ec92919062000c71565b6020604051808303815f875af115801562000309573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032f919062000c30565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ac3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000620005da60201b60201c565b62000ec5565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004dd9062000cea565b60405180910390fd5b620004f95f8383620007a560201b60201c565b8060025f8282546200050c919062000d37565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005bb919062000d82565b60405180910390a3620005d65f8383620007bd60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200064b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006429062000e11565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006b39062000ea5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000798919062000d82565b60405180910390a3505050565b620007b8838383620007d560201b60201c565b505050565b620007d0838383620007da60201b60201c565b505050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200085b57607f821691505b60208210810362000871576200087062000816565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000898565b620008e1868362000898565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200092b620009256200091f84620008f9565b62000902565b620008f9565b9050919050565b5f819050919050565b62000946836200090b565b6200095e620009558262000932565b848454620008a4565b825550505050565b5f90565b6200097462000966565b620009818184846200093b565b505050565b5b81811015620009a8576200099c5f826200096a565b60018101905062000987565b5050565b601f821115620009f757620009c18162000877565b620009cc8462000889565b81016020851015620009dc578190505b620009f4620009eb8562000889565b83018262000986565b50505b505050565b5f82821c905092915050565b5f62000a195f1984600802620009fc565b1980831691505092915050565b5f62000a33838362000a08565b9150826002028217905092915050565b62000a4e82620007df565b67ffffffffffffffff81111562000a6a5762000a69620007e9565b5b62000a76825462000843565b62000a83828285620009ac565b5f60209050601f83116001811462000ab9575f841562000aa4578287015190505b62000ab0858262000a26565b86555062000b1f565b601f19841662000ac98662000877565b5f5b8281101562000af25784890151825560018201915060208501945060208101905062000acb565b8683101562000b12578489015162000b0e601f89168262000a08565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000b9360268362000b27565b915062000ba08262000b37565b604082019050919050565b5f6020820190508181035f83015262000bc48162000b85565b9050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bfa8262000bcf565b9050919050565b62000c0c8162000bee565b811462000c17575f80fd5b50565b5f8151905062000c2a8162000c01565b92915050565b5f6020828403121562000c485762000c4762000bcb565b5b5f62000c578482850162000c1a565b91505092915050565b62000c6b8162000bee565b82525050565b5f60408201905062000c865f83018562000c60565b62000c95602083018462000c60565b9392505050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000cd2601f8362000b27565b915062000cdf8262000c9c565b602082019050919050565b5f6020820190508181035f83015262000d038162000cc4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d4382620008f9565b915062000d5083620008f9565b925082820190508082111562000d6b5762000d6a62000d0a565b5b92915050565b62000d7c81620008f9565b82525050565b5f60208201905062000d975f83018462000d71565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000df960248362000b27565b915062000e068262000d9d565b604082019050919050565b5f6020820190508181035f83015262000e2a8162000deb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000e8d60228362000b27565b915062000e9a8262000e31565b604082019050919050565b5f6020820190508181035f83015262000ebe8162000e7f565b9050919050565b60805160a05161398462000ee75f395f610b9c01525f61119f01526139845ff3fe6080604052600436106101db575f3560e01c806379304bec11610101578063a9059cbb11610094578063d4e123a611610063578063d4e123a6146106ac578063dd62ed3e146106d6578063f2fde38b14610712578063fd7c9fab1461073a576101e2565b8063a9059cbb146105e2578063bc531dae1461061e578063c0d7865514610648578063d4d7b19a14610670576101e2565b80638da5cb5b116100d05780638da5cb5b1461053a578063902d55a51461056457806395a6e2541461058e57806395d89b41146105b8576101e2565b806379304bec14610494578063808a5457146104bc57806381f0549f146104e657806383f170be14610510576101e2565b806341a22cc2116101795780635fe8e7cc116101485780635fe8e7cc146103da57806362b6327a1461040457806370a082311461042e5780637136982b1461046a576101e2565b806341a22cc214610342578063461a3a951461035e57806357376198146103885780635d76b04c146103b0576101e2565b806318160ddd116101b557806318160ddd1461027657806323b872dd146102a05780632a11ced0146102dc578063313ce56714610318576101e2565b806306fdde03146101e657806308dee2b414610210578063095ea7b31461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610764565b6040516102079190612732565b60405180910390f35b34801561021b575f80fd5b506102246107f4565b604051610231919061276a565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190612818565b6107fd565b60405161026d9190612870565b60405180910390f35b348015610281575f80fd5b5061028a610818565b604051610297919061276a565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612889565b610821565b6040516102d39190612870565b60405180910390f35b3480156102e7575f80fd5b5061030260048036038101906102fd91906128d9565b610848565b60405161030f9190612913565b60405180910390f35b348015610323575f80fd5b5061032c610883565b6040516103399190612947565b60405180910390f35b61035c600480360381019061035791906128d9565b61088b565b005b348015610369575f80fd5b50610372610b9a565b60405161037f9190612913565b60405180910390f35b348015610393575f80fd5b506103ae60048036038101906103a99190612818565b610bbe565b005b3480156103bb575f80fd5b506103c4610cbb565b6040516103d1919061276a565b60405180910390f35b3480156103e5575f80fd5b506103ee610cc4565b6040516103fb9190612a17565b60405180910390f35b34801561040f575f80fd5b50610418610d4f565b6040516104259190612a92565b60405180910390f35b348015610439575f80fd5b50610454600480360381019061044f9190612aab565b610d74565b604051610461919061276a565b60405180910390f35b348015610475575f80fd5b5061047e610db9565b60405161048b919061276a565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b591906128d9565b610dc5565b005b3480156104c7575f80fd5b506104d0610e95565b6040516104dd9190612913565b60405180910390f35b3480156104f1575f80fd5b506104fa610eba565b604051610507919061276a565b60405180910390f35b34801561051b575f80fd5b50610524610ebf565b604051610531919061276a565b60405180910390f35b348015610545575f80fd5b5061054e610ec4565b60405161055b9190612913565b60405180910390f35b34801561056f575f80fd5b50610578610eec565b604051610585919061276a565b60405180910390f35b348015610599575f80fd5b506105a2610efa565b6040516105af919061276a565b60405180910390f35b3480156105c3575f80fd5b506105cc610f07565b6040516105d99190612732565b60405180910390f35b3480156105ed575f80fd5b5061060860048036038101906106039190612818565b610f97565b6040516106159190612870565b60405180910390f35b348015610629575f80fd5b50610632610fb2565b60405161063f919061276a565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190612aab565b610fb7565b005b34801561067b575f80fd5b5061069660048036038101906106919190612aab565b611070565b6040516106a39190612870565b60405180910390f35b3480156106b7575f80fd5b506106c061108d565b6040516106cd919061276a565b60405180910390f35b3480156106e1575f80fd5b506106fc60048036038101906106f79190612ad6565b611099565b604051610709919061276a565b60405180910390f35b34801561071d575f80fd5b5061073860048036038101906107339190612aab565b61111b565b005b348015610745575f80fd5b5061074e61119d565b60405161075b9190612b34565b60405180910390f35b60606003805461077390612b7a565b80601f016020809104026020016040519081016040528092919081815260200182805461079f90612b7a565b80156107ea5780601f106107c1576101008083540402835291602001916107ea565b820191905f5260205f20905b8154815290600101906020018083116107cd57829003601f168201915b5050505050905090565b5f600b54905090565b5f8033905061080d8185856111c1565b600191505092915050565b5f600254905090565b5f80339050610831858285611384565b61083c85858561140f565b60019150509392505050565b600a8181548110610857575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b61089361166a565b5f34116108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc90612c1a565b60405180910390fd5b5f8111610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e90612ca8565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016109519190612913565b602060405180830381865afa15801561096c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109909190612cda565b10156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c890612d75565b60405180910390fd5b6109fd3360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836111c1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f8033426040518863ffffffff1660e01b8152600401610a6296959493929190612dcc565b60606040518083038185885af193505050508015610a9e57506040513d601f19601f82011682018060405250810190610a9b9190612e2b565b60015b610b0957610ace3360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6111c1565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090612ec5565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610b3d929190612ee3565b60405180910390a15f4790505f811115610b96573373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b94573d5f803e3d5ffd5b505b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610bc661166a565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90612f54565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610c58610ec4565b836040518363ffffffff1660e01b8152600401610c76929190612f72565b6020604051808303815f875af1158015610c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb69190612fc3565b505050565b5f600c54905090565b6060600a805480602002602001604051908101604052809291908181526020018280548015610d4557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610cfc575b5050505050905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600a80549050905090565b610dcd61166a565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e079190612913565b602060405180830381865afa158015610e22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e469190612cda565b1015610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90613038565b60405180910390fd5b610e9230338361140f565b50565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601981565b600581565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b69d3c21bcecceda100000081565b683635c9adc5dea0000081565b606060048054610f1690612b7a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4290612b7a565b8015610f8d5780601f10610f6457610100808354040283529160200191610f8d565b820191905f5260205f20905b815481529060010190602001808311610f7057829003601f168201915b5050505050905090565b5f80339050610fa781858561140f565b600191505092915050565b601981565b610fbf61166a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361102d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611024906130a0565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b678ac7230489e8000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61112361166a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611191576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111889061312e565b60405180910390fd5b61119a816116e1565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361122f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611226906131bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361129d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112949061324a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611377919061276a565b60405180910390a3505050565b5f61138f8484611099565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461140957818110156113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f2906132b2565b60405180910390fd5b61140884848484036111c1565b5b50505050565b611417610ec4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806114825750611453610ec4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156114a9576114928383836117a4565b61149b83611a10565b6114a482611a10565b611665565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611551575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90508015611645575f606460058461156991906132fd565b611573919061336b565b90505f606460198361158591906132fd565b61158f919061336b565b90505f60646019846115a191906132fd565b6115ab919061336b565b90505f83866115ba919061339b565b90506115c78830866117a4565b6115d28888836117a4565b82600b5f8282546115e391906133ce565b9250508190555081600c5f8282546115fb91906133ce565b92505081905550683635c9adc5dea00000600c54600b5461161c91906133ce565b1015801561162e57505f600a80549050115b1561163c5761163b611c4a565b5b50505050611651565b6116508484846117a4565b5b61165a84611a10565b61166383611a10565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611689610ec4565b73ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d69061344b565b60405180910390fd5b565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611809906134d9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790613567565b60405180910390fd5b61188b8383836124fb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561190e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611905906135f5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119f7919061276a565b60405180910390a3611a0a84848461250b565b50505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611a9957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611c47575f611aa882610d74565b90505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050678ac7230489e800008210158015611b0d575080155b15611bcc57600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a83908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c44565b678ac7230489e8000082108015611be05750805b15611c43575f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611c428361251b565b5b5b50505b50565b5f600b5490505f600c5490505f600b819055505f600c819055505f8183611c7191906133ce565b90505f600267ffffffffffffffff811115611c8f57611c8e613613565b5b604051908082528060200260200182016040528015611cbd5781602001602082028036833780820191505090505b50905030815f81518110611cd457611cd3613640565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9c9190613681565b81600181518110611db057611daf613640565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e163060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111c1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739835f8430426040518663ffffffff1660e01b8152600401611e789594939291906136ac565b5f604051808303815f875af1925050508015611eb657506040513d5f823e3d601f19601f82011682018060405250810190611eb39190613817565b60015b611ecd5783600b8190555082600c819055506124f5565b505f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5d9190613681565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f959190612913565b602060405180830381865afa158015611fb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd49190612cda565b90505f8111156124f3575f838683611fec91906132fd565b611ff6919061336b565b90505f8183612005919061339b565b90505f821115612307576120473060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028a612042919061336b565b6111c1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120d59190613681565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612130929190612f72565b6020604051808303815f875af115801561214c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121709190612fc3565b5060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e337003060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612219573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223d9190613681565b60028b61224a919061336b565b865f8030426040518963ffffffff1660e01b815260040161227298979695949392919061385e565b6060604051808303815f875af19250505080156122ad57506040513d601f19601f820116820180604052508101906122aa9190612e2b565b60015b6122bd5786600b81905550612306565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b6002886122ee919061336b565b836040516122fd929190612ee3565b60405180910390a15b5b5f8111801561231a57505f600a80549050115b156124f0575f600a8054905082612331919061336b565b90505f8111156124ee575f5b600a80549050811080156123515750606481105b156124ae5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e49190613681565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a838154811061241357612412613640565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612459929190612f72565b6020604051808303815f875af192505050801561249457506040513d601f19601f820116820180604052508101906124919190612fc3565b60015b1561249b57505b80806124a6906138da565b91505061233d565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600a805490506040516124e5929190612ee3565b60405180910390a15b505b50505b505b50505050565b61250683838361269e565b505050565b6125168383836126a3565b505050565b5f5b600a8054905081101561269a578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061255557612554613640565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361268757600a6001600a805490506125ac919061339b565b815481106125bd576125bc613640565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106125f9576125f8613640565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a8054806126505761264f613921565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561269a565b8080612692906138da565b91505061251d565b5050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126df5780820151818401526020810190506126c4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612704826126a8565b61270e81856126b2565b935061271e8185602086016126c2565b612727816126ea565b840191505092915050565b5f6020820190508181035f83015261274a81846126fa565b905092915050565b5f819050919050565b61276481612752565b82525050565b5f60208201905061277d5f83018461275b565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127bd82612794565b9050919050565b6127cd816127b3565b81146127d7575f80fd5b50565b5f813590506127e8816127c4565b92915050565b6127f781612752565b8114612801575f80fd5b50565b5f81359050612812816127ee565b92915050565b5f806040838503121561282e5761282d61278c565b5b5f61283b858286016127da565b925050602061284c85828601612804565b9150509250929050565b5f8115159050919050565b61286a81612856565b82525050565b5f6020820190506128835f830184612861565b92915050565b5f805f606084860312156128a05761289f61278c565b5b5f6128ad868287016127da565b93505060206128be868287016127da565b92505060406128cf86828701612804565b9150509250925092565b5f602082840312156128ee576128ed61278c565b5b5f6128fb84828501612804565b91505092915050565b61290d816127b3565b82525050565b5f6020820190506129265f830184612904565b92915050565b5f60ff82169050919050565b6129418161292c565b82525050565b5f60208201905061295a5f830184612938565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612992816127b3565b82525050565b5f6129a38383612989565b60208301905092915050565b5f602082019050919050565b5f6129c582612960565b6129cf818561296a565b93506129da8361297a565b805f5b83811015612a0a5781516129f18882612998565b97506129fc836129af565b9250506001810190506129dd565b5085935050505092915050565b5f6020820190508181035f830152612a2f81846129bb565b905092915050565b5f819050919050565b5f612a5a612a55612a5084612794565b612a37565b612794565b9050919050565b5f612a6b82612a40565b9050919050565b5f612a7c82612a61565b9050919050565b612a8c81612a72565b82525050565b5f602082019050612aa55f830184612a83565b92915050565b5f60208284031215612ac057612abf61278c565b5b5f612acd848285016127da565b91505092915050565b5f8060408385031215612aec57612aeb61278c565b5b5f612af9858286016127da565b9250506020612b0a858286016127da565b9150509250929050565b5f612b1e82612a61565b9050919050565b612b2e81612b14565b82525050565b5f602082019050612b475f830184612b25565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b9157607f821691505b602082108103612ba457612ba3612b4d565b5b50919050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c69715f8201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b5f612c046026836126b2565b9150612c0f82612baa565b604082019050919050565b5f6020820190508181035f830152612c3181612bf8565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e5f8201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b5f612c92602f836126b2565b9150612c9d82612c38565b604082019050919050565b5f6020820190508181035f830152612cbf81612c86565b9050919050565b5f81519050612cd4816127ee565b92915050565b5f60208284031215612cef57612cee61278c565b5b5f612cfc84828501612cc6565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520666f72206c5f8201527f6971756964697479000000000000000000000000000000000000000000000000602082015250565b5f612d5f6028836126b2565b9150612d6a82612d05565b604082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b5f819050919050565b5f612db6612db1612dac84612d93565b612a37565b612752565b9050919050565b612dc681612d9c565b82525050565b5f60c082019050612ddf5f830189612904565b612dec602083018861275b565b612df96040830187612dbd565b612e066060830186612dbd565b612e136080830185612904565b612e2060a083018461275b565b979650505050505050565b5f805f60608486031215612e4257612e4161278c565b5b5f612e4f86828701612cc6565b9350506020612e6086828701612cc6565b9250506040612e7186828701612cc6565b9150509250925092565b7f4661696c656420746f20616464206c69717569646974790000000000000000005f82015250565b5f612eaf6017836126b2565b9150612eba82612e7b565b602082019050919050565b5f6020820190508181035f830152612edc81612ea3565b9050919050565b5f604082019050612ef65f83018561275b565b612f03602083018461275b565b9392505050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e7300000000005f82015250565b5f612f3e601b836126b2565b9150612f4982612f0a565b602082019050919050565b5f6020820190508181035f830152612f6b81612f32565b9050919050565b5f604082019050612f855f830185612904565b612f92602083018461275b565b9392505050565b612fa281612856565b8114612fac575f80fd5b50565b5f81519050612fbd81612f99565b92915050565b5f60208284031215612fd857612fd761278c565b5b5f612fe584828501612faf565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6130226014836126b2565b915061302d82612fee565b602082019050919050565b5f6020820190508181035f83015261304f81613016565b9050919050565b7f496e76616c696420726f757465722061646472657373000000000000000000005f82015250565b5f61308a6016836126b2565b915061309582613056565b602082019050919050565b5f6020820190508181035f8301526130b78161307e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131186026836126b2565b9150613123826130be565b604082019050919050565b5f6020820190508181035f8301526131458161310c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131a66024836126b2565b91506131b18261314c565b604082019050919050565b5f6020820190508181035f8301526131d38161319a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132346022836126b2565b915061323f826131da565b604082019050919050565b5f6020820190508181035f83015261326181613228565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61329c601d836126b2565b91506132a782613268565b602082019050919050565b5f6020820190508181035f8301526132c981613290565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61330782612752565b915061331283612752565b925082820261332081612752565b91508282048414831517613337576133366132d0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61337582612752565b915061338083612752565b9250826133905761338f61333e565b5b828204905092915050565b5f6133a582612752565b91506133b083612752565b92508282039050818111156133c8576133c76132d0565b5b92915050565b5f6133d882612752565b91506133e383612752565b92508282019050808211156133fb576133fa6132d0565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134356020836126b2565b915061344082613401565b602082019050919050565b5f6020820190508181035f83015261346281613429565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6134c36025836126b2565b91506134ce82613469565b604082019050919050565b5f6020820190508181035f8301526134f0816134b7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135516023836126b2565b915061355c826134f7565b604082019050919050565b5f6020820190508181035f83015261357e81613545565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6135df6026836126b2565b91506135ea82613585565b604082019050919050565b5f6020820190508181035f83015261360c816135d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061367b816127c4565b92915050565b5f602082840312156136965761369561278c565b5b5f6136a38482850161366d565b91505092915050565b5f60a0820190506136bf5f83018861275b565b6136cc6020830187612dbd565b81810360408301526136de81866129bb565b90506136ed6060830185612904565b6136fa608083018461275b565b9695505050505050565b5f80fd5b613711826126ea565b810181811067ffffffffffffffff821117156137305761372f613613565b5b80604052505050565b5f613742612783565b905061374e8282613708565b919050565b5f67ffffffffffffffff82111561376d5761376c613613565b5b602082029050602081019050919050565b5f80fd5b5f61379461378f84613753565b613739565b905080838252602082019050602084028301858111156137b7576137b661377e565b5b835b818110156137e057806137cc8882612cc6565b8452602084019350506020810190506137b9565b5050509392505050565b5f82601f8301126137fe576137fd613704565b5b815161380e848260208601613782565b91505092915050565b5f6020828403121561382c5761382b61278c565b5b5f82015167ffffffffffffffff81111561384957613848612790565b5b613855848285016137ea565b91505092915050565b5f610100820190506138725f83018b612904565b61387f602083018a612904565b61388c604083018961275b565b613899606083018861275b565b6138a66080830187612dbd565b6138b360a0830186612dbd565b6138c060c0830185612904565b6138cd60e083018461275b565b9998505050505050505050565b5f6138e482612752565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613916576139156132d0565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220d25f563156c6226044ce7d5f6e7eb9f8523db990c8eb2d400e3e2fe82be571bc64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c806379304bec11610101578063a9059cbb11610094578063d4e123a611610063578063d4e123a6146106ac578063dd62ed3e146106d6578063f2fde38b14610712578063fd7c9fab1461073a576101e2565b8063a9059cbb146105e2578063bc531dae1461061e578063c0d7865514610648578063d4d7b19a14610670576101e2565b80638da5cb5b116100d05780638da5cb5b1461053a578063902d55a51461056457806395a6e2541461058e57806395d89b41146105b8576101e2565b806379304bec14610494578063808a5457146104bc57806381f0549f146104e657806383f170be14610510576101e2565b806341a22cc2116101795780635fe8e7cc116101485780635fe8e7cc146103da57806362b6327a1461040457806370a082311461042e5780637136982b1461046a576101e2565b806341a22cc214610342578063461a3a951461035e57806357376198146103885780635d76b04c146103b0576101e2565b806318160ddd116101b557806318160ddd1461027657806323b872dd146102a05780632a11ced0146102dc578063313ce56714610318576101e2565b806306fdde03146101e657806308dee2b414610210578063095ea7b31461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610764565b6040516102079190612732565b60405180910390f35b34801561021b575f80fd5b506102246107f4565b604051610231919061276a565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190612818565b6107fd565b60405161026d9190612870565b60405180910390f35b348015610281575f80fd5b5061028a610818565b604051610297919061276a565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612889565b610821565b6040516102d39190612870565b60405180910390f35b3480156102e7575f80fd5b5061030260048036038101906102fd91906128d9565b610848565b60405161030f9190612913565b60405180910390f35b348015610323575f80fd5b5061032c610883565b6040516103399190612947565b60405180910390f35b61035c600480360381019061035791906128d9565b61088b565b005b348015610369575f80fd5b50610372610b9a565b60405161037f9190612913565b60405180910390f35b348015610393575f80fd5b506103ae60048036038101906103a99190612818565b610bbe565b005b3480156103bb575f80fd5b506103c4610cbb565b6040516103d1919061276a565b60405180910390f35b3480156103e5575f80fd5b506103ee610cc4565b6040516103fb9190612a17565b60405180910390f35b34801561040f575f80fd5b50610418610d4f565b6040516104259190612a92565b60405180910390f35b348015610439575f80fd5b50610454600480360381019061044f9190612aab565b610d74565b604051610461919061276a565b60405180910390f35b348015610475575f80fd5b5061047e610db9565b60405161048b919061276a565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b591906128d9565b610dc5565b005b3480156104c7575f80fd5b506104d0610e95565b6040516104dd9190612913565b60405180910390f35b3480156104f1575f80fd5b506104fa610eba565b604051610507919061276a565b60405180910390f35b34801561051b575f80fd5b50610524610ebf565b604051610531919061276a565b60405180910390f35b348015610545575f80fd5b5061054e610ec4565b60405161055b9190612913565b60405180910390f35b34801561056f575f80fd5b50610578610eec565b604051610585919061276a565b60405180910390f35b348015610599575f80fd5b506105a2610efa565b6040516105af919061276a565b60405180910390f35b3480156105c3575f80fd5b506105cc610f07565b6040516105d99190612732565b60405180910390f35b3480156105ed575f80fd5b5061060860048036038101906106039190612818565b610f97565b6040516106159190612870565b60405180910390f35b348015610629575f80fd5b50610632610fb2565b60405161063f919061276a565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190612aab565b610fb7565b005b34801561067b575f80fd5b5061069660048036038101906106919190612aab565b611070565b6040516106a39190612870565b60405180910390f35b3480156106b7575f80fd5b506106c061108d565b6040516106cd919061276a565b60405180910390f35b3480156106e1575f80fd5b506106fc60048036038101906106f79190612ad6565b611099565b604051610709919061276a565b60405180910390f35b34801561071d575f80fd5b5061073860048036038101906107339190612aab565b61111b565b005b348015610745575f80fd5b5061074e61119d565b60405161075b9190612b34565b60405180910390f35b60606003805461077390612b7a565b80601f016020809104026020016040519081016040528092919081815260200182805461079f90612b7a565b80156107ea5780601f106107c1576101008083540402835291602001916107ea565b820191905f5260205f20905b8154815290600101906020018083116107cd57829003601f168201915b5050505050905090565b5f600b54905090565b5f8033905061080d8185856111c1565b600191505092915050565b5f600254905090565b5f80339050610831858285611384565b61083c85858561140f565b60019150509392505050565b600a8181548110610857575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b61089361166a565b5f34116108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc90612c1a565b60405180910390fd5b5f8111610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e90612ca8565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016109519190612913565b602060405180830381865afa15801561096c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109909190612cda565b10156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c890612d75565b60405180910390fd5b6109fd3360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836111c1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f8033426040518863ffffffff1660e01b8152600401610a6296959493929190612dcc565b60606040518083038185885af193505050508015610a9e57506040513d601f19601f82011682018060405250810190610a9b9190612e2b565b60015b610b0957610ace3360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6111c1565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090612ec5565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610b3d929190612ee3565b60405180910390a15f4790505f811115610b96573373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b94573d5f803e3d5ffd5b505b5050565b7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881565b610bc661166a565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90612f54565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610c58610ec4565b836040518363ffffffff1660e01b8152600401610c76929190612f72565b6020604051808303815f875af1158015610c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb69190612fc3565b505050565b5f600c54905090565b6060600a805480602002602001604051908101604052809291908181526020018280548015610d4557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610cfc575b5050505050905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600a80549050905090565b610dcd61166a565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e079190612913565b602060405180830381865afa158015610e22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e469190612cda565b1015610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90613038565b60405180910390fd5b610e9230338361140f565b50565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601981565b600581565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b69d3c21bcecceda100000081565b683635c9adc5dea0000081565b606060048054610f1690612b7a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4290612b7a565b8015610f8d5780601f10610f6457610100808354040283529160200191610f8d565b820191905f5260205f20905b815481529060010190602001808311610f7057829003601f168201915b5050505050905090565b5f80339050610fa781858561140f565b600191505092915050565b601981565b610fbf61166a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361102d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611024906130a0565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b678ac7230489e8000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61112361166a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611191576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111889061312e565b60405180910390fd5b61119a816116e1565b50565b7f0000000000000000000000001570300e9cfec66c9fb0c8bc14366c86eb170ad081565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361122f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611226906131bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361129d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112949061324a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611377919061276a565b60405180910390a3505050565b5f61138f8484611099565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461140957818110156113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f2906132b2565b60405180910390fd5b61140884848484036111c1565b5b50505050565b611417610ec4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806114825750611453610ec4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156114a9576114928383836117a4565b61149b83611a10565b6114a482611a10565b611665565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611551575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90508015611645575f606460058461156991906132fd565b611573919061336b565b90505f606460198361158591906132fd565b61158f919061336b565b90505f60646019846115a191906132fd565b6115ab919061336b565b90505f83866115ba919061339b565b90506115c78830866117a4565b6115d28888836117a4565b82600b5f8282546115e391906133ce565b9250508190555081600c5f8282546115fb91906133ce565b92505081905550683635c9adc5dea00000600c54600b5461161c91906133ce565b1015801561162e57505f600a80549050115b1561163c5761163b611c4a565b5b50505050611651565b6116508484846117a4565b5b61165a84611a10565b61166383611a10565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611689610ec4565b73ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d69061344b565b60405180910390fd5b565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611809906134d9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790613567565b60405180910390fd5b61188b8383836124fb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561190e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611905906135f5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119f7919061276a565b60405180910390a3611a0a84848461250b565b50505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611a9957503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611c47575f611aa882610d74565b90505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050678ac7230489e800008210158015611b0d575080155b15611bcc57600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a83908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c44565b678ac7230489e8000082108015611be05750805b15611c43575f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611c428361251b565b5b5b50505b50565b5f600b5490505f600c5490505f600b819055505f600c819055505f8183611c7191906133ce565b90505f600267ffffffffffffffff811115611c8f57611c8e613613565b5b604051908082528060200260200182016040528015611cbd5781602001602082028036833780820191505090505b50905030815f81518110611cd457611cd3613640565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9c9190613681565b81600181518110611db057611daf613640565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e163060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111c1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739835f8430426040518663ffffffff1660e01b8152600401611e789594939291906136ac565b5f604051808303815f875af1925050508015611eb657506040513d5f823e3d601f19601f82011682018060405250810190611eb39190613817565b60015b611ecd5783600b8190555082600c819055506124f5565b505f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f5d9190613681565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f959190612913565b602060405180830381865afa158015611fb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd49190612cda565b90505f8111156124f3575f838683611fec91906132fd565b611ff6919061336b565b90505f8183612005919061339b565b90505f821115612307576120473060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028a612042919061336b565b6111c1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120d59190613681565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612130929190612f72565b6020604051808303815f875af115801561214c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121709190612fc3565b5060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e337003060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612219573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223d9190613681565b60028b61224a919061336b565b865f8030426040518963ffffffff1660e01b815260040161227298979695949392919061385e565b6060604051808303815f875af19250505080156122ad57506040513d601f19601f820116820180604052508101906122aa9190612e2b565b60015b6122bd5786600b81905550612306565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b6002886122ee919061336b565b836040516122fd929190612ee3565b60405180910390a15b5b5f8111801561231a57505f600a80549050115b156124f0575f600a8054905082612331919061336b565b90505f8111156124ee575f5b600a80549050811080156123515750606481105b156124ae5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e49190613681565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a838154811061241357612412613640565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612459929190612f72565b6020604051808303815f875af192505050801561249457506040513d601f19601f820116820180604052508101906124919190612fc3565b60015b1561249b57505b80806124a6906138da565b91505061233d565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600a805490506040516124e5929190612ee3565b60405180910390a15b505b50505b505b50505050565b61250683838361269e565b505050565b6125168383836126a3565b505050565b5f5b600a8054905081101561269a578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061255557612554613640565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361268757600a6001600a805490506125ac919061339b565b815481106125bd576125bc613640565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106125f9576125f8613640565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a8054806126505761264f613921565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561269a565b8080612692906138da565b91505061251d565b5050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126df5780820151818401526020810190506126c4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612704826126a8565b61270e81856126b2565b935061271e8185602086016126c2565b612727816126ea565b840191505092915050565b5f6020820190508181035f83015261274a81846126fa565b905092915050565b5f819050919050565b61276481612752565b82525050565b5f60208201905061277d5f83018461275b565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127bd82612794565b9050919050565b6127cd816127b3565b81146127d7575f80fd5b50565b5f813590506127e8816127c4565b92915050565b6127f781612752565b8114612801575f80fd5b50565b5f81359050612812816127ee565b92915050565b5f806040838503121561282e5761282d61278c565b5b5f61283b858286016127da565b925050602061284c85828601612804565b9150509250929050565b5f8115159050919050565b61286a81612856565b82525050565b5f6020820190506128835f830184612861565b92915050565b5f805f606084860312156128a05761289f61278c565b5b5f6128ad868287016127da565b93505060206128be868287016127da565b92505060406128cf86828701612804565b9150509250925092565b5f602082840312156128ee576128ed61278c565b5b5f6128fb84828501612804565b91505092915050565b61290d816127b3565b82525050565b5f6020820190506129265f830184612904565b92915050565b5f60ff82169050919050565b6129418161292c565b82525050565b5f60208201905061295a5f830184612938565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612992816127b3565b82525050565b5f6129a38383612989565b60208301905092915050565b5f602082019050919050565b5f6129c582612960565b6129cf818561296a565b93506129da8361297a565b805f5b83811015612a0a5781516129f18882612998565b97506129fc836129af565b9250506001810190506129dd565b5085935050505092915050565b5f6020820190508181035f830152612a2f81846129bb565b905092915050565b5f819050919050565b5f612a5a612a55612a5084612794565b612a37565b612794565b9050919050565b5f612a6b82612a40565b9050919050565b5f612a7c82612a61565b9050919050565b612a8c81612a72565b82525050565b5f602082019050612aa55f830184612a83565b92915050565b5f60208284031215612ac057612abf61278c565b5b5f612acd848285016127da565b91505092915050565b5f8060408385031215612aec57612aeb61278c565b5b5f612af9858286016127da565b9250506020612b0a858286016127da565b9150509250929050565b5f612b1e82612a61565b9050919050565b612b2e81612b14565b82525050565b5f602082019050612b475f830184612b25565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b9157607f821691505b602082108103612ba457612ba3612b4d565b5b50919050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c69715f8201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b5f612c046026836126b2565b9150612c0f82612baa565b604082019050919050565b5f6020820190508181035f830152612c3181612bf8565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e5f8201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b5f612c92602f836126b2565b9150612c9d82612c38565b604082019050919050565b5f6020820190508181035f830152612cbf81612c86565b9050919050565b5f81519050612cd4816127ee565b92915050565b5f60208284031215612cef57612cee61278c565b5b5f612cfc84828501612cc6565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520666f72206c5f8201527f6971756964697479000000000000000000000000000000000000000000000000602082015250565b5f612d5f6028836126b2565b9150612d6a82612d05565b604082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b5f819050919050565b5f612db6612db1612dac84612d93565b612a37565b612752565b9050919050565b612dc681612d9c565b82525050565b5f60c082019050612ddf5f830189612904565b612dec602083018861275b565b612df96040830187612dbd565b612e066060830186612dbd565b612e136080830185612904565b612e2060a083018461275b565b979650505050505050565b5f805f60608486031215612e4257612e4161278c565b5b5f612e4f86828701612cc6565b9350506020612e6086828701612cc6565b9250506040612e7186828701612cc6565b9150509250925092565b7f4661696c656420746f20616464206c69717569646974790000000000000000005f82015250565b5f612eaf6017836126b2565b9150612eba82612e7b565b602082019050919050565b5f6020820190508181035f830152612edc81612ea3565b9050919050565b5f604082019050612ef65f83018561275b565b612f03602083018461275b565b9392505050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e7300000000005f82015250565b5f612f3e601b836126b2565b9150612f4982612f0a565b602082019050919050565b5f6020820190508181035f830152612f6b81612f32565b9050919050565b5f604082019050612f855f830185612904565b612f92602083018461275b565b9392505050565b612fa281612856565b8114612fac575f80fd5b50565b5f81519050612fbd81612f99565b92915050565b5f60208284031215612fd857612fd761278c565b5b5f612fe584828501612faf565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6130226014836126b2565b915061302d82612fee565b602082019050919050565b5f6020820190508181035f83015261304f81613016565b9050919050565b7f496e76616c696420726f757465722061646472657373000000000000000000005f82015250565b5f61308a6016836126b2565b915061309582613056565b602082019050919050565b5f6020820190508181035f8301526130b78161307e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131186026836126b2565b9150613123826130be565b604082019050919050565b5f6020820190508181035f8301526131458161310c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131a66024836126b2565b91506131b18261314c565b604082019050919050565b5f6020820190508181035f8301526131d38161319a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132346022836126b2565b915061323f826131da565b604082019050919050565b5f6020820190508181035f83015261326181613228565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61329c601d836126b2565b91506132a782613268565b602082019050919050565b5f6020820190508181035f8301526132c981613290565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61330782612752565b915061331283612752565b925082820261332081612752565b91508282048414831517613337576133366132d0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61337582612752565b915061338083612752565b9250826133905761338f61333e565b5b828204905092915050565b5f6133a582612752565b91506133b083612752565b92508282039050818111156133c8576133c76132d0565b5b92915050565b5f6133d882612752565b91506133e383612752565b92508282019050808211156133fb576133fa6132d0565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134356020836126b2565b915061344082613401565b602082019050919050565b5f6020820190508181035f83015261346281613429565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6134c36025836126b2565b91506134ce82613469565b604082019050919050565b5f6020820190508181035f8301526134f0816134b7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135516023836126b2565b915061355c826134f7565b604082019050919050565b5f6020820190508181035f83015261357e81613545565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6135df6026836126b2565b91506135ea82613585565b604082019050919050565b5f6020820190508181035f83015261360c816135d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061367b816127c4565b92915050565b5f602082840312156136965761369561278c565b5b5f6136a38482850161366d565b91505092915050565b5f60a0820190506136bf5f83018861275b565b6136cc6020830187612dbd565b81810360408301526136de81866129bb565b90506136ed6060830185612904565b6136fa608083018461275b565b9695505050505050565b5f80fd5b613711826126ea565b810181811067ffffffffffffffff821117156137305761372f613613565b5b80604052505050565b5f613742612783565b905061374e8282613708565b919050565b5f67ffffffffffffffff82111561376d5761376c613613565b5b602082029050602081019050919050565b5f80fd5b5f61379461378f84613753565b613739565b905080838252602082019050602084028301858111156137b7576137b661377e565b5b835b818110156137e057806137cc8882612cc6565b8452602084019350506020810190506137b9565b5050509392505050565b5f82601f8301126137fe576137fd613704565b5b815161380e848260208601613782565b91505092915050565b5f6020828403121561382c5761382b61278c565b5b5f82015167ffffffffffffffff81111561384957613848612790565b5b613855848285016137ea565b91505092915050565b5f610100820190506138725f83018b612904565b61387f602083018a612904565b61388c604083018961275b565b613899606083018861275b565b6138a66080830187612dbd565b6138b360a0830186612dbd565b6138c060c0830185612904565b6138cd60e083018461275b565b9998505050505050505050565b5f6138e482612752565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613916576139156132d0565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220d25f563156c6226044ce7d5f6e7eb9f8523db990c8eb2d400e3e2fe82be571bc64736f6c63430008140033

Deployed Bytecode Sourcemap

7514:10456:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17690:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3807:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3234:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4005:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8294:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3142:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15551:1371;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8144:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17124:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17816:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15377:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8036:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3341:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15267:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17373:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8186:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7703:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7654:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1853:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7590:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7890:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3039:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3467:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7760:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16930:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8247:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7815:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3657:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2086:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8084:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2940:91;2985:13;3018:5;3011:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:91;:::o;17690:118::-;17750:7;17777:23;;17770:30;;17690:118;:::o;3807:190::-;3881:4;3898:13;3914:10;3898:26;;3935:32;3944:5;3951:7;3960:6;3935:8;:32::i;:::-;3985:4;3978:11;;;3807:190;;;;:::o;3234:99::-;3286:7;3313:12;;3306:19;;3234:99;:::o;4005:250::-;4093:4;4110:15;4128:10;4110:28;;4149:38;4165:4;4171:7;4180:6;4149:15;:38::i;:::-;4198:27;4208:4;4214:2;4218:6;4198:9;:27::i;:::-;4243:4;4236:11;;;4005:250;;;;;:::o;8294:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3142:84::-;3191:5;3216:2;3209:9;;3142:84;:::o;15551:1371::-;1812:13;:11;:13::i;:::-;15659:1:::1;15647:9;:13;15639:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15736:1;15722:11;:15;15714:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15869:11;15837:4;15822:31;;;15854:10;15822:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;15800:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;16004:60;16013:10;16033:16;;;;;;;;;;;16052:11;16004:8;:60::i;:::-;16127:16;;;;;;;;;;;:32;;;16167:9;16200:4;16220:11;16246:1;16302::::0;16356:10:::1;16424:15;16127:346;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16123:600;;16613:50;16622:10;16642:16;;;;;;;;;;;16661:1;16613:8;:50::i;:::-;16678:33;;;;;;;;;;:::i;:::-;;;;;;;;16123:600;;;;16494:38;16509:11;16522:9;16494:38;;;;;;;:::i;:::-;;;;;;;;16769:20;16792:21;16769:44;;16843:1;16828:12;:16;16824:91;;;16869:10;16861:28;;:42;16890:12;16861:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16824:91;15628:1294;15551:1371:::0;:::o;8144:35::-;;;:::o;17124:208::-;1812:13;:11;:13::i;:::-;17235:4:::1;17217:23;;:6;:23;;::::0;17209:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17290:6;17283:23;;;17307:7;:5;:7::i;:::-;17316;17283:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17124:208:::0;;:::o;17816:114::-;17874:7;17901:21;;17894:28;;17816:114;:::o;15377:96::-;15422:16;15458:7;15451:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15377:96;:::o;8036:41::-;;;;;;;;;;;;;:::o;3341:118::-;3406:7;3433:9;:18;3443:7;3433:18;;;;;;;;;;;;;;;;3426:25;;3341:118;;;:::o;15267:98::-;15316:7;15343;:14;;;;15336:21;;15267:98;:::o;17373:266::-;1812:13;:11;:13::i;:::-;17522:6:::1;17487:4;17472:31;;;17512:4;17472:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;17450:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;17587:44;17605:4;17612:10;17624:6;17587:9;:44::i;:::-;17373:266:::0;:::o;8186:28::-;;;;;;;;;;;;;:::o;7703:42::-;7743:2;7703:42;:::o;7654:36::-;7689:1;7654:36;:::o;1853:87::-;1899:7;1926:6;;;;;;;;;;;1919:13;;1853:87;:::o;7590:57::-;7629:18;7590:57;:::o;7890:62::-;7939:13;7890:62;:::o;3039:95::-;3086:13;3119:7;3112:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3039:95;:::o;3467:182::-;3537:4;3554:13;3570:10;3554:26;;3591:28;3601:5;3608:2;3612:6;3591:9;:28::i;:::-;3637:4;3630:11;;;3467:182;;;;:::o;7760:40::-;7798:2;7760:40;:::o;16930:186::-;1812:13;:11;:13::i;:::-;17023:1:::1;17004:21;;:7;:21;;::::0;16996:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17100:7;17063:16;;:45;;;;;;;;;;;;;;;;;;16930:186:::0;:::o;8247:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;7815:55::-;7859:11;7815:55;:::o;3657:142::-;3737:7;3764:11;:18;3776:5;3764:18;;;;;;;;;;;;;;;:27;3783:7;3764:27;;;;;;;;;;;;;;;;3757:34;;3657:142;;;;:::o;2086:201::-;1812:13;:11;:13::i;:::-;2195:1:::1;2175:22;;:8;:22;;::::0;2167:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2251:28;2270:8;2251:18;:28::i;:::-;2086:201:::0;:::o;8084:53::-;;;:::o;5341:344::-;5460:1;5443:19;;:5;:19;;;5435:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5541:1;5522:21;;:7;:21;;;5514:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5623:6;5593:11;:18;5605:5;5593:18;;;;;;;;;;;;;;;:27;5612:7;5593:27;;;;;;;;;;;;;;;:36;;;;5661:7;5645:32;;5654:5;5645:32;;;5670:6;5645:32;;;;;;:::i;:::-;;;;;;;;5341:344;;;:::o;5693:419::-;5794:24;5821:25;5831:5;5838:7;5821:9;:25::i;:::-;5794:52;;5881:17;5861:16;:37;5857:248;;5943:6;5923:16;:26;;5915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6027:51;6036:5;6043:7;6071:6;6052:16;:25;6027:8;:51::i;:::-;5857:248;5783:329;5693:419;;;:::o;9620:1593::-;9764:7;:5;:7::i;:::-;9756:15;;:4;:15;;;:32;;;;9781:7;:5;:7::i;:::-;9775:13;;:2;:13;;;9756:32;9752:1454;;;9805:33;9821:4;9827:2;9831:6;9805:15;:33::i;:::-;9853:19;9867:4;9853:13;:19::i;:::-;9887:17;9901:2;9887:13;:17::i;:::-;9752:1454;;;9937:16;9962:13;;;;;;;;;;;9956:19;;:2;:19;;;:44;;;;9987:13;;;;;;;;;;;9979:21;;:4;:21;;;9956:44;9937:63;;10033:11;10029:1086;;;10065:16;10106:3;7689:1;10085:6;:17;;;;:::i;:::-;10084:25;;;;:::i;:::-;10065:44;;10128:20;10180:3;7743:2;10152:8;:24;;;;:::i;:::-;10151:32;;;;:::i;:::-;10128:55;;10202:18;10250:3;7798:2;10224:8;:22;;;;:::i;:::-;10223:30;;;;:::i;:::-;10202:51;;10272:22;10306:8;10297:6;:17;;;;:::i;:::-;10272:42;;10400:46;10416:4;10430;10437:8;10400:15;:46::i;:::-;10515:41;10531:4;10537:2;10541:14;10515:15;:41::i;:::-;10668:12;10641:23;;:39;;;;;;;:::i;:::-;;;;;;;;10724:10;10699:21;;:35;;;;;;;:::i;:::-;;;;;;;;7939:13;10860:21;;10834:23;;:47;;;;:::i;:::-;10833:75;;:119;;;;;10951:1;10934:7;:14;;;;:18;10833:119;10829:197;;;10977:29;:27;:29::i;:::-;10829:197;10046:995;;;;10029:1086;;;11066:33;11082:4;11088:2;11092:6;11066:15;:33::i;:::-;10029:1086;11143:19;11157:4;11143:13;:19::i;:::-;11177:17;11191:2;11177:13;:17::i;:::-;9922:1284;9752:1454;9620:1593;;;:::o;1948:130::-;2023:10;2012:21;;:7;:5;:7::i;:::-;:21;;;2004:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1948:130::o;2295:191::-;2369:16;2388:6;;;;;;;;;;;2369:25;;2414:8;2405:6;;:17;;;;;;;;;;;;;;;;;;2469:8;2438:40;;2459:8;2438:40;;;;;;;;;;;;2358:128;2295:191;:::o;4263:633::-;4376:1;4360:18;;:4;:18;;;4352:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4453:1;4439:16;;:2;:16;;;4431:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4506:38;4527:4;4533:2;4537:6;4506:20;:38::i;:::-;4555:19;4577:9;:15;4587:4;4577:15;;;;;;;;;;;;;;;;4555:37;;4626:6;4611:11;:21;;4603:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4743:6;4729:11;:20;4711:9;:15;4721:4;4711:15;;;;;;;;;;;;;;;:38;;;;4781:6;4764:9;:13;4774:2;4764:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;4829:2;4814:26;;4823:4;4814:26;;;4833:6;4814:26;;;;;;:::i;:::-;;;;;;;;4851:37;4871:4;4877:2;4881:6;4851:19;:37::i;:::-;4341:555;4263:633;;;:::o;11221:588::-;11295:13;;;;;;;;;;;11284:24;;:7;:24;;;;:52;;;;;11331:4;11312:24;;:7;:24;;;;11284:52;11280:522;;;11353:15;11371:18;11381:7;11371:9;:18::i;:::-;11353:36;;11404:22;11429:8;:17;11438:7;11429:17;;;;;;;;;;;;;;;;;;;;;;;;;11404:42;;7859:11;11479:7;:28;;:50;;;;;11512:17;11511:18;11479:50;11475:316;;;11570:4;11550:8;:17;11559:7;11550:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;11593:7;11606;11593:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11475:316;;;7859:11;11640:7;:27;:48;;;;;11671:17;11640:48;11636:155;;;11729:5;11709:8;:17;11718:7;11709:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11753:22;11767:7;11753:13;:22::i;:::-;11636:155;11475:316;11338:464;;11280:522;11221:588;:::o;12120:3116::-;12178:26;12207:23;;12178:52;;12241:24;12268:21;;12241:48;;12326:1;12300:23;:27;;;;12362:1;12338:21;:25;;;;12376:19;12419:16;12398:18;:37;;;;:::i;:::-;12376:59;;12501:21;12539:1;12525:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12501:40;;12570:4;12552;12557:1;12552:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12596:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12586:4;12591:1;12586:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;12640:63;12657:4;12672:16;;;;;;;;;;;12691:11;12640:8;:63::i;:::-;12728:16;;;;;;;;;;;:41;;;12784:11;12810:1;12851:4;12878;12898:15;12728:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12724:2505;;15144:18;15118:23;:44;;;;15201:16;15177:21;:40;;;;12724:2505;;;;12940:19;12969:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12962:41;;;13012:4;12962:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12940:78;;13051:1;13037:11;:15;13033:1988;;;13115:24;13179:11;13157:18;13143:11;:32;;;;:::i;:::-;13142:48;;;;:::i;:::-;13115:75;;13209:22;13248:16;13234:11;:30;;;;:::i;:::-;13209:55;;13352:1;13333:16;:20;13329:885;;;13378:74;13395:4;13410:16;;;;;;;;;;;13450:1;13429:18;:22;;;;:::i;:::-;13378:8;:74::i;:::-;13482:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13475:39;;;13523:16;;;;;;;;;;;13542;13475:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13608:16;;;;;;;;;;;:29;;;13672:4;13704:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13775:1;13754:18;:22;;;;:::i;:::-;13803:16;13846:1;13874;13910:4;13942:15;13608:372;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13604:591;;14153:18;14127:23;:44;;;;13604:591;;;;;;14013:56;14049:1;14028:18;:22;;;;:::i;:::-;14052:16;14013:56;;;;;;;:::i;:::-;;;;;;;;13604:591;13329:885;14296:1;14279:14;:18;:40;;;;;14318:1;14301:7;:14;;;;:18;14279:40;14275:731;;;14344:23;14387:7;:14;;;;14370;:31;;;;:::i;:::-;14344:57;;14468:1;14450:15;:19;14446:541;;;14503:9;14498:358;14522:7;:14;;;;14518:1;:18;:29;;;;;14544:3;14540:1;:7;14518:29;14498:358;;;14596:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14589:40;;;14630:7;14638:1;14630:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14642:15;14589:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14585:244;14789:8;14585:244;;14498:358;14549:3;;;;;:::i;:::-;;;;14498:358;;;;14913:50;14932:14;14948:7;:14;;;;14913:50;;;;;;;:::i;:::-;;;;;;;;14446:541;14321:685;14275:731;13054:1967;;13033:1988;12925:2107;12724:2505;12167:3069;;;;12120:3116::o;9216:195::-;9359:44;9386:4;9392:2;9396:6;9359:26;:44::i;:::-;9216:195;;;:::o;9419:193::-;9561:43;9587:4;9593:2;9597:6;9561:25;:43::i;:::-;9419:193;;;:::o;11817:295::-;11881:9;11876:229;11900:7;:14;;;;11896:1;:18;11876:229;;;11954:7;11940:21;;:7;11948:1;11940:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;;11936:158;;11995:7;12020:1;12003:7;:14;;;;:18;;;;:::i;:::-;11995:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11982:7;11990:1;11982:10;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12041:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;12073:5;;11936:158;11916:3;;;;;:::i;:::-;;;;11876:229;;;;11817:295;:::o;6120:91::-;;;;:::o;6219:90::-;;;;:::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;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:118::-;4845:24;4863:5;4845:24;:::i;:::-;4840:3;4833:37;4758:118;;:::o;4882:222::-;4975:4;5013:2;5002:9;4998:18;4990:26;;5026:71;5094:1;5083:9;5079:17;5070:6;5026:71;:::i;:::-;4882:222;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:114::-;5607:6;5641:5;5635:12;5625:22;;5540:114;;;:::o;5660:184::-;5759:11;5793:6;5788:3;5781:19;5833:4;5828:3;5824:14;5809:29;;5660:184;;;;:::o;5850:132::-;5917:4;5940:3;5932:11;;5970:4;5965:3;5961:14;5953:22;;5850:132;;;:::o;5988:108::-;6065:24;6083:5;6065:24;:::i;:::-;6060:3;6053:37;5988:108;;:::o;6102:179::-;6171:10;6192:46;6234:3;6226:6;6192:46;:::i;:::-;6270:4;6265:3;6261:14;6247:28;;6102:179;;;;:::o;6287:113::-;6357:4;6389;6384:3;6380:14;6372:22;;6287:113;;;:::o;6436:732::-;6555:3;6584:54;6632:5;6584:54;:::i;:::-;6654:86;6733:6;6728:3;6654:86;:::i;:::-;6647:93;;6764:56;6814:5;6764:56;:::i;:::-;6843:7;6874:1;6859:284;6884:6;6881:1;6878:13;6859:284;;;6960:6;6954:13;6987:63;7046:3;7031:13;6987:63;:::i;:::-;6980:70;;7073:60;7126:6;7073:60;:::i;:::-;7063:70;;6919:224;6906:1;6903;6899:9;6894:14;;6859:284;;;6863:14;7159:3;7152:10;;6560:608;;;6436:732;;;;:::o;7174:373::-;7317:4;7355:2;7344:9;7340:18;7332:26;;7404:9;7398:4;7394:20;7390:1;7379:9;7375:17;7368:47;7432:108;7535:4;7526:6;7432:108;:::i;:::-;7424:116;;7174:373;;;;:::o;7553:60::-;7581:3;7602:5;7595:12;;7553:60;;;:::o;7619:142::-;7669:9;7702:53;7720:34;7729:24;7747:5;7729:24;:::i;:::-;7720:34;:::i;:::-;7702:53;:::i;:::-;7689:66;;7619:142;;;:::o;7767:126::-;7817:9;7850:37;7881:5;7850:37;:::i;:::-;7837:50;;7767:126;;;:::o;7899:151::-;7974:9;8007:37;8038:5;8007:37;:::i;:::-;7994:50;;7899:151;;;:::o;8056:181::-;8168:62;8224:5;8168:62;:::i;:::-;8163:3;8156:75;8056:181;;:::o;8243:272::-;8361:4;8399:2;8388:9;8384:18;8376:26;;8412:96;8505:1;8494:9;8490:17;8481:6;8412:96;:::i;:::-;8243:272;;;;:::o;8521:329::-;8580:6;8629:2;8617:9;8608:7;8604:23;8600:32;8597:119;;;8635:79;;:::i;:::-;8597:119;8755:1;8780:53;8825:7;8816:6;8805:9;8801:22;8780:53;:::i;:::-;8770:63;;8726:117;8521:329;;;;:::o;8856:474::-;8924:6;8932;8981:2;8969:9;8960:7;8956:23;8952:32;8949:119;;;8987:79;;:::i;:::-;8949:119;9107:1;9132:53;9177:7;9168:6;9157:9;9153:22;9132:53;:::i;:::-;9122:63;;9078:117;9234:2;9260:53;9305:7;9296:6;9285:9;9281:22;9260:53;:::i;:::-;9250:63;;9205:118;8856:474;;;;;:::o;9336:152::-;9412:9;9445:37;9476:5;9445:37;:::i;:::-;9432:50;;9336:152;;;:::o;9494:183::-;9607:63;9664:5;9607:63;:::i;:::-;9602:3;9595:76;9494:183;;:::o;9683:274::-;9802:4;9840:2;9829:9;9825:18;9817:26;;9853:97;9947:1;9936:9;9932:17;9923:6;9853:97;:::i;:::-;9683:274;;;;:::o;9963:180::-;10011:77;10008:1;10001:88;10108:4;10105:1;10098:15;10132:4;10129:1;10122:15;10149:320;10193:6;10230:1;10224:4;10220:12;10210:22;;10277:1;10271:4;10267:12;10298:18;10288:81;;10354:4;10346:6;10342:17;10332:27;;10288:81;10416:2;10408:6;10405:14;10385:18;10382:38;10379:84;;10435:18;;:::i;:::-;10379:84;10200:269;10149:320;;;:::o;10475:225::-;10615:34;10611:1;10603:6;10599:14;10592:58;10684:8;10679:2;10671:6;10667:15;10660:33;10475:225;:::o;10706:366::-;10848:3;10869:67;10933:2;10928:3;10869:67;:::i;:::-;10862:74;;10945:93;11034:3;10945:93;:::i;:::-;11063:2;11058:3;11054:12;11047:19;;10706:366;;;:::o;11078:419::-;11244:4;11282:2;11271:9;11267:18;11259:26;;11331:9;11325:4;11321:20;11317:1;11306:9;11302:17;11295:47;11359:131;11485:4;11359:131;:::i;:::-;11351:139;;11078:419;;;:::o;11503:234::-;11643:34;11639:1;11631:6;11627:14;11620:58;11712:17;11707:2;11699:6;11695:15;11688:42;11503:234;:::o;11743:366::-;11885:3;11906:67;11970:2;11965:3;11906:67;:::i;:::-;11899:74;;11982:93;12071:3;11982:93;:::i;:::-;12100:2;12095:3;12091:12;12084:19;;11743:366;;;:::o;12115:419::-;12281:4;12319:2;12308:9;12304:18;12296:26;;12368:9;12362:4;12358:20;12354:1;12343:9;12339:17;12332:47;12396:131;12522:4;12396:131;:::i;:::-;12388:139;;12115:419;;;:::o;12540:143::-;12597:5;12628:6;12622:13;12613:22;;12644:33;12671:5;12644:33;:::i;:::-;12540:143;;;;:::o;12689:351::-;12759:6;12808:2;12796:9;12787:7;12783:23;12779:32;12776:119;;;12814:79;;:::i;:::-;12776:119;12934:1;12959:64;13015:7;13006:6;12995:9;12991:22;12959:64;:::i;:::-;12949:74;;12905:128;12689:351;;;;:::o;13046:227::-;13186:34;13182:1;13174:6;13170:14;13163:58;13255:10;13250:2;13242:6;13238:15;13231:35;13046:227;:::o;13279:366::-;13421:3;13442:67;13506:2;13501:3;13442:67;:::i;:::-;13435:74;;13518:93;13607:3;13518:93;:::i;:::-;13636:2;13631:3;13627:12;13620:19;;13279:366;;;:::o;13651:419::-;13817:4;13855:2;13844:9;13840:18;13832:26;;13904:9;13898:4;13894:20;13890:1;13879:9;13875:17;13868:47;13932:131;14058:4;13932:131;:::i;:::-;13924:139;;13651:419;;;:::o;14076:85::-;14121:7;14150:5;14139:16;;14076:85;;;:::o;14167:158::-;14225:9;14258:61;14276:42;14285:32;14311:5;14285:32;:::i;:::-;14276:42;:::i;:::-;14258:61;:::i;:::-;14245:74;;14167:158;;;:::o;14331:147::-;14426:45;14465:5;14426:45;:::i;:::-;14421:3;14414:58;14331:147;;:::o;14484:807::-;14733:4;14771:3;14760:9;14756:19;14748:27;;14785:71;14853:1;14842:9;14838:17;14829:6;14785:71;:::i;:::-;14866:72;14934:2;14923:9;14919:18;14910:6;14866:72;:::i;:::-;14948:80;15024:2;15013:9;15009:18;15000:6;14948:80;:::i;:::-;15038;15114:2;15103:9;15099:18;15090:6;15038:80;:::i;:::-;15128:73;15196:3;15185:9;15181:19;15172:6;15128:73;:::i;:::-;15211;15279:3;15268:9;15264:19;15255:6;15211:73;:::i;:::-;14484:807;;;;;;;;;:::o;15297:663::-;15385:6;15393;15401;15450:2;15438:9;15429:7;15425:23;15421:32;15418:119;;;15456:79;;:::i;:::-;15418:119;15576:1;15601:64;15657:7;15648:6;15637:9;15633:22;15601:64;:::i;:::-;15591:74;;15547:128;15714:2;15740:64;15796:7;15787:6;15776:9;15772:22;15740:64;:::i;:::-;15730:74;;15685:129;15853:2;15879:64;15935:7;15926:6;15915:9;15911:22;15879:64;:::i;:::-;15869:74;;15824:129;15297:663;;;;;:::o;15966:173::-;16106:25;16102:1;16094:6;16090:14;16083:49;15966:173;:::o;16145:366::-;16287:3;16308:67;16372:2;16367:3;16308:67;:::i;:::-;16301:74;;16384:93;16473:3;16384:93;:::i;:::-;16502:2;16497:3;16493:12;16486:19;;16145:366;;;:::o;16517:419::-;16683:4;16721:2;16710:9;16706:18;16698:26;;16770:9;16764:4;16760:20;16756:1;16745:9;16741:17;16734:47;16798:131;16924:4;16798:131;:::i;:::-;16790:139;;16517:419;;;:::o;16942:332::-;17063:4;17101:2;17090:9;17086:18;17078:26;;17114:71;17182:1;17171:9;17167:17;17158:6;17114:71;:::i;:::-;17195:72;17263:2;17252:9;17248:18;17239:6;17195:72;:::i;:::-;16942:332;;;;;:::o;17280:177::-;17420:29;17416:1;17408:6;17404:14;17397:53;17280:177;:::o;17463:366::-;17605:3;17626:67;17690:2;17685:3;17626:67;:::i;:::-;17619:74;;17702:93;17791:3;17702:93;:::i;:::-;17820:2;17815:3;17811:12;17804:19;;17463:366;;;:::o;17835:419::-;18001:4;18039:2;18028:9;18024:18;18016:26;;18088:9;18082:4;18078:20;18074:1;18063:9;18059:17;18052:47;18116:131;18242:4;18116:131;:::i;:::-;18108:139;;17835:419;;;:::o;18260:332::-;18381:4;18419:2;18408:9;18404:18;18396:26;;18432:71;18500:1;18489:9;18485:17;18476:6;18432:71;:::i;:::-;18513:72;18581:2;18570:9;18566:18;18557:6;18513:72;:::i;:::-;18260:332;;;;;:::o;18598:116::-;18668:21;18683:5;18668:21;:::i;:::-;18661:5;18658:32;18648:60;;18704:1;18701;18694:12;18648:60;18598:116;:::o;18720:137::-;18774:5;18805:6;18799:13;18790:22;;18821:30;18845:5;18821:30;:::i;:::-;18720:137;;;;:::o;18863:345::-;18930:6;18979:2;18967:9;18958:7;18954:23;18950:32;18947:119;;;18985:79;;:::i;:::-;18947:119;19105:1;19130:61;19183:7;19174:6;19163:9;19159:22;19130:61;:::i;:::-;19120:71;;19076:125;18863:345;;;;:::o;19214:170::-;19354:22;19350:1;19342:6;19338:14;19331:46;19214:170;:::o;19390:366::-;19532:3;19553:67;19617:2;19612:3;19553:67;:::i;:::-;19546:74;;19629:93;19718:3;19629:93;:::i;:::-;19747:2;19742:3;19738:12;19731:19;;19390:366;;;:::o;19762:419::-;19928:4;19966:2;19955:9;19951:18;19943:26;;20015:9;20009:4;20005:20;20001:1;19990:9;19986:17;19979:47;20043:131;20169:4;20043:131;:::i;:::-;20035:139;;19762:419;;;:::o;20187:172::-;20327:24;20323:1;20315:6;20311:14;20304:48;20187:172;:::o;20365:366::-;20507:3;20528:67;20592:2;20587:3;20528:67;:::i;:::-;20521:74;;20604:93;20693:3;20604:93;:::i;:::-;20722:2;20717:3;20713:12;20706:19;;20365:366;;;:::o;20737:419::-;20903:4;20941:2;20930:9;20926:18;20918:26;;20990:9;20984:4;20980:20;20976:1;20965:9;20961:17;20954:47;21018:131;21144:4;21018:131;:::i;:::-;21010:139;;20737:419;;;:::o;21162:225::-;21302:34;21298:1;21290:6;21286:14;21279:58;21371:8;21366:2;21358:6;21354:15;21347:33;21162:225;:::o;21393:366::-;21535:3;21556:67;21620:2;21615:3;21556:67;:::i;:::-;21549:74;;21632:93;21721:3;21632:93;:::i;:::-;21750:2;21745:3;21741:12;21734:19;;21393:366;;;:::o;21765:419::-;21931:4;21969:2;21958:9;21954:18;21946:26;;22018:9;22012:4;22008:20;22004:1;21993:9;21989:17;21982:47;22046:131;22172:4;22046:131;:::i;:::-;22038:139;;21765:419;;;:::o;22190:223::-;22330:34;22326:1;22318:6;22314:14;22307:58;22399:6;22394:2;22386:6;22382:15;22375:31;22190:223;:::o;22419:366::-;22561:3;22582:67;22646:2;22641:3;22582:67;:::i;:::-;22575:74;;22658:93;22747:3;22658:93;:::i;:::-;22776:2;22771:3;22767:12;22760:19;;22419:366;;;:::o;22791:419::-;22957:4;22995:2;22984:9;22980:18;22972:26;;23044:9;23038:4;23034:20;23030:1;23019:9;23015:17;23008:47;23072:131;23198:4;23072:131;:::i;:::-;23064:139;;22791:419;;;:::o;23216:221::-;23356:34;23352:1;23344:6;23340:14;23333:58;23425:4;23420:2;23412:6;23408:15;23401:29;23216:221;:::o;23443:366::-;23585:3;23606:67;23670:2;23665:3;23606:67;:::i;:::-;23599:74;;23682:93;23771:3;23682:93;:::i;:::-;23800:2;23795:3;23791:12;23784:19;;23443:366;;;:::o;23815:419::-;23981:4;24019:2;24008:9;24004:18;23996:26;;24068:9;24062:4;24058:20;24054:1;24043:9;24039:17;24032:47;24096:131;24222:4;24096:131;:::i;:::-;24088:139;;23815:419;;;:::o;24240:179::-;24380:31;24376:1;24368:6;24364:14;24357:55;24240:179;:::o;24425:366::-;24567:3;24588:67;24652:2;24647:3;24588:67;:::i;:::-;24581:74;;24664:93;24753:3;24664:93;:::i;:::-;24782:2;24777:3;24773:12;24766:19;;24425:366;;;:::o;24797:419::-;24963:4;25001:2;24990:9;24986:18;24978:26;;25050:9;25044:4;25040:20;25036:1;25025:9;25021:17;25014:47;25078:131;25204:4;25078:131;:::i;:::-;25070:139;;24797:419;;;:::o;25222:180::-;25270:77;25267:1;25260:88;25367:4;25364:1;25357:15;25391:4;25388:1;25381:15;25408:410;25448:7;25471:20;25489:1;25471:20;:::i;:::-;25466:25;;25505:20;25523:1;25505:20;:::i;:::-;25500:25;;25560:1;25557;25553:9;25582:30;25600:11;25582:30;:::i;:::-;25571:41;;25761:1;25752:7;25748:15;25745:1;25742:22;25722:1;25715:9;25695:83;25672:139;;25791:18;;:::i;:::-;25672:139;25456:362;25408:410;;;;:::o;25824:180::-;25872:77;25869:1;25862:88;25969:4;25966:1;25959:15;25993:4;25990:1;25983:15;26010:185;26050:1;26067:20;26085:1;26067:20;:::i;:::-;26062:25;;26101:20;26119:1;26101:20;:::i;:::-;26096:25;;26140:1;26130:35;;26145:18;;:::i;:::-;26130:35;26187:1;26184;26180:9;26175:14;;26010:185;;;;:::o;26201:194::-;26241:4;26261:20;26279:1;26261:20;:::i;:::-;26256:25;;26295:20;26313:1;26295:20;:::i;:::-;26290:25;;26339:1;26336;26332:9;26324:17;;26363:1;26357:4;26354:11;26351:37;;;26368:18;;:::i;:::-;26351:37;26201:194;;;;:::o;26401:191::-;26441:3;26460:20;26478:1;26460:20;:::i;:::-;26455:25;;26494:20;26512:1;26494:20;:::i;:::-;26489:25;;26537:1;26534;26530:9;26523:16;;26558:3;26555:1;26552:10;26549:36;;;26565:18;;:::i;:::-;26549:36;26401:191;;;;:::o;26598:182::-;26738:34;26734:1;26726:6;26722:14;26715:58;26598:182;:::o;26786:366::-;26928:3;26949:67;27013:2;27008:3;26949:67;:::i;:::-;26942:74;;27025:93;27114:3;27025:93;:::i;:::-;27143:2;27138:3;27134:12;27127:19;;26786:366;;;:::o;27158:419::-;27324:4;27362:2;27351:9;27347:18;27339:26;;27411:9;27405:4;27401:20;27397:1;27386:9;27382:17;27375:47;27439:131;27565:4;27439:131;:::i;:::-;27431:139;;27158:419;;;:::o;27583:224::-;27723:34;27719:1;27711:6;27707:14;27700:58;27792:7;27787:2;27779:6;27775:15;27768:32;27583:224;:::o;27813:366::-;27955:3;27976:67;28040:2;28035:3;27976:67;:::i;:::-;27969:74;;28052:93;28141:3;28052:93;:::i;:::-;28170:2;28165:3;28161:12;28154:19;;27813:366;;;:::o;28185:419::-;28351:4;28389:2;28378:9;28374:18;28366:26;;28438:9;28432:4;28428:20;28424:1;28413:9;28409:17;28402:47;28466:131;28592:4;28466:131;:::i;:::-;28458:139;;28185:419;;;:::o;28610:222::-;28750:34;28746:1;28738:6;28734:14;28727:58;28819:5;28814:2;28806:6;28802:15;28795:30;28610:222;:::o;28838:366::-;28980:3;29001:67;29065:2;29060:3;29001:67;:::i;:::-;28994:74;;29077:93;29166:3;29077:93;:::i;:::-;29195:2;29190:3;29186:12;29179:19;;28838:366;;;:::o;29210:419::-;29376:4;29414:2;29403:9;29399:18;29391:26;;29463:9;29457:4;29453:20;29449:1;29438:9;29434:17;29427:47;29491:131;29617:4;29491:131;:::i;:::-;29483:139;;29210:419;;;:::o;29635:225::-;29775:34;29771:1;29763:6;29759:14;29752:58;29844:8;29839:2;29831:6;29827:15;29820:33;29635:225;:::o;29866:366::-;30008:3;30029:67;30093:2;30088:3;30029:67;:::i;:::-;30022:74;;30105:93;30194:3;30105:93;:::i;:::-;30223:2;30218:3;30214:12;30207:19;;29866:366;;;:::o;30238:419::-;30404:4;30442:2;30431:9;30427:18;30419:26;;30491:9;30485:4;30481:20;30477:1;30466:9;30462:17;30455:47;30519:131;30645:4;30519:131;:::i;:::-;30511:139;;30238:419;;;:::o;30663:180::-;30711:77;30708:1;30701:88;30808:4;30805:1;30798:15;30832:4;30829:1;30822:15;30849:180;30897:77;30894:1;30887:88;30994:4;30991:1;30984:15;31018:4;31015:1;31008:15;31035:143;31092:5;31123:6;31117:13;31108:22;;31139:33;31166:5;31139:33;:::i;:::-;31035:143;;;;:::o;31184:351::-;31254:6;31303:2;31291:9;31282:7;31278:23;31274:32;31271:119;;;31309:79;;:::i;:::-;31271:119;31429:1;31454:64;31510:7;31501:6;31490:9;31486:22;31454:64;:::i;:::-;31444:74;;31400:128;31184:351;;;;:::o;31541:831::-;31804:4;31842:3;31831:9;31827:19;31819:27;;31856:71;31924:1;31913:9;31909:17;31900:6;31856:71;:::i;:::-;31937:80;32013:2;32002:9;31998:18;31989:6;31937:80;:::i;:::-;32064:9;32058:4;32054:20;32049:2;32038:9;32034:18;32027:48;32092:108;32195:4;32186:6;32092:108;:::i;:::-;32084:116;;32210:72;32278:2;32267:9;32263:18;32254:6;32210:72;:::i;:::-;32292:73;32360:3;32349:9;32345:19;32336:6;32292:73;:::i;:::-;31541:831;;;;;;;;:::o;32378:117::-;32487:1;32484;32477:12;32501:281;32584:27;32606:4;32584:27;:::i;:::-;32576:6;32572:40;32714:6;32702:10;32699:22;32678:18;32666:10;32663:34;32660:62;32657:88;;;32725:18;;:::i;:::-;32657:88;32765:10;32761:2;32754:22;32544:238;32501:281;;:::o;32788:129::-;32822:6;32849:20;;:::i;:::-;32839:30;;32878:33;32906:4;32898:6;32878:33;:::i;:::-;32788:129;;;:::o;32923:311::-;33000:4;33090:18;33082:6;33079:30;33076:56;;;33112:18;;:::i;:::-;33076:56;33162:4;33154:6;33150:17;33142:25;;33222:4;33216;33212:15;33204:23;;32923:311;;;:::o;33240:117::-;33349:1;33346;33339:12;33380:732;33487:5;33512:81;33528:64;33585:6;33528:64;:::i;:::-;33512:81;:::i;:::-;33503:90;;33613:5;33642:6;33635:5;33628:21;33676:4;33669:5;33665:16;33658:23;;33729:4;33721:6;33717:17;33709:6;33705:30;33758:3;33750:6;33747:15;33744:122;;;33777:79;;:::i;:::-;33744:122;33892:6;33875:231;33909:6;33904:3;33901:15;33875:231;;;33984:3;34013:48;34057:3;34045:10;34013:48;:::i;:::-;34008:3;34001:61;34091:4;34086:3;34082:14;34075:21;;33951:155;33935:4;33930:3;33926:14;33919:21;;33875:231;;;33879:21;33493:619;;33380:732;;;;;:::o;34135:385::-;34217:5;34266:3;34259:4;34251:6;34247:17;34243:27;34233:122;;34274:79;;:::i;:::-;34233:122;34384:6;34378:13;34409:105;34510:3;34502:6;34495:4;34487:6;34483:17;34409:105;:::i;:::-;34400:114;;34223:297;34135:385;;;;:::o;34526:554::-;34621:6;34670:2;34658:9;34649:7;34645:23;34641:32;34638:119;;;34676:79;;:::i;:::-;34638:119;34817:1;34806:9;34802:17;34796:24;34847:18;34839:6;34836:30;34833:117;;;34869:79;;:::i;:::-;34833:117;34974:89;35055:7;35046:6;35035:9;35031:22;34974:89;:::i;:::-;34964:99;;34767:306;34526:554;;;;:::o;35086:1029::-;35391:4;35429:3;35418:9;35414:19;35406:27;;35443:71;35511:1;35500:9;35496:17;35487:6;35443:71;:::i;:::-;35524:72;35592:2;35581:9;35577:18;35568:6;35524:72;:::i;:::-;35606;35674:2;35663:9;35659:18;35650:6;35606:72;:::i;:::-;35688;35756:2;35745:9;35741:18;35732:6;35688:72;:::i;:::-;35770:81;35846:3;35835:9;35831:19;35822:6;35770:81;:::i;:::-;35861;35937:3;35926:9;35922:19;35913:6;35861:81;:::i;:::-;35952:73;36020:3;36009:9;36005:19;35996:6;35952:73;:::i;:::-;36035;36103:3;36092:9;36088:19;36079:6;36035:73;:::i;:::-;35086:1029;;;;;;;;;;;:::o;36121:233::-;36160:3;36183:24;36201:5;36183:24;:::i;:::-;36174:33;;36229:66;36222:5;36219:77;36216:103;;36299:18;;:::i;:::-;36216:103;36346:1;36339:5;36335:13;36328:20;;36121:233;;;:::o;36360:180::-;36408:77;36405:1;36398:88;36505:4;36502:1;36495:15;36529:4;36526:1;36519:15

Swarm Source

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