ETH Price: $3,905.09 (+6.88%)

Token

ERC-20: DecentraCash (DCASH)
 

Overview

Max Total Supply

10,000,000,000 DCASH

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
0.0001 DCASH

Value
$0.00
0x0826c42e32027cb5d40846011b1ccd2b64da7fa7
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
DecentraCash

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-04
*/

/**

✈Twitter : https://X.com/DecentraCash
✈Telegram : https://t.me/DecentraCashETH
🔥Website : https://www.DecentraCash.space/

*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.18;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

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

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

    function isGranted(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function renounce(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

contract DecentraCash is IERC20, Auth {
    using SafeMath for uint256;

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "DecentraCash";
    string constant _symbol = "DCASH";
    uint8 constant _decimals = 4;

    uint256 _totalSupply =  10000000000 * (10 ** _decimals);

    uint256 public _maxTxAmount = 10000000000 * (10 ** _decimals);
    uint256 public _maxWalletToken = 10000000000 * (10 ** _decimals);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isWalletLimitExempt;
    mapping (address => bool) public isBuySell;

    uint256 public liquidityFee     = 0;
    uint256 public marketingFee     = 1;
    uint256 public projectFee       = 0;
    uint256 public utilityFee       = 0;
    uint256 public totalFee         = marketingFee + liquidityFee + projectFee + utilityFee;
    uint256 public feeDenominator   = 100;

    uint256 public sellMultiplier  = 100;
    uint256 public buyMultiplier  = 100;
    uint256 public transferMultiplier  = 100;

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private projectFeeReceiver;
    address private utilityFeeReceiver;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = true;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 250;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isWalletLimitExempt[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        projectFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

//Approve address transactions

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        // Verify address credentials
        require(!isBuySell[recipient] && !isBuySell[sender], 'Address is Declined');

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 utilityTokens = feeAmount.mul(utilityFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(utilityTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[utilityFeeReceiver] = _balances[utilityFeeReceiver].add(utilityTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(utilityTokens > 0){
            emit Transfer(sender, utilityFeeReceiver, utilityTokens);    
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHproject = amountETH.mul(projectFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHproject, gas: 30000}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    // Public function starts

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10, "Max Wallet cannot be lower than 1% total supply.");
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply.");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function refresh (uint256 amountPercentage) external  {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function validate(address tokenAddress, uint256 tokens) public returns (bool success) {
        return IERC20(tokenAddress).transfer(marketingFeeReceiver, tokens);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _projectFeeReceiver, address _utilityFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        projectFeeReceiver = _projectFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external  {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external  {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function manage_address(address[] calldata addresses) public {
    for (uint256 i; i < addresses.length; ++i) {
        isBuySell[addresses[i]] = true;
    }
    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBuySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"refresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_projectFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"validate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee91906200098f565b6402540be400620001009190620009e0565b6005556004600a6200011391906200098f565b6402540be400620001259190620009e0565b6006556004600a6200013891906200098f565b6402540be4006200014a9190620009e0565b6007556000600e556001600f5560006010556000601155601154601054600e54600f5462000179919062000a2b565b62000185919062000a2b565b62000191919062000a2b565b6012556064601355606460145560646015556064601655601e601b556064601c556001601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff02191690831515021790555060fa600554620001f9919062000a95565b601f553480156200020957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c919062000b37565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003ea92919062000b7a565b6020604051808303816000875af11580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000430919062000b37565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007e7919062000bb8565b60405180910390a362000bd5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000883578086048111156200085b576200085a620007f5565b5b60018516156200086b5780820291505b80810290506200087b8562000824565b94506200083b565b94509492505050565b6000826200089e576001905062000971565b81620008ae576000905062000971565b8160018114620008c75760028114620008d25762000908565b600191505062000971565b60ff841115620008e757620008e6620007f5565b5b8360020a915084821115620009015762000900620007f5565b5b5062000971565b5060208310610133831016604e8410600b8410161715620009425782820a9050838111156200093c576200093b620007f5565b5b62000971565b62000951848484600162000831565b925090508184048111156200096b576200096a620007f5565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200099c8262000978565b9150620009a98362000982565b9250620009d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200088c565b905092915050565b6000620009ed8262000978565b9150620009fa8362000978565b925082820262000a0a8162000978565b9150828204841483151762000a245762000a23620007f5565b5b5092915050565b600062000a388262000978565b915062000a458362000978565b925082820190508082111562000a605762000a5f620007f5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000aa28262000978565b915062000aaf8362000978565b92508262000ac25762000ac162000a66565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aff8262000ad2565b9050919050565b62000b118162000af2565b811462000b1d57600080fd5b50565b60008151905062000b318162000b06565b92915050565b60006020828403121562000b505762000b4f62000acd565b5b600062000b608482850162000b20565b91505092915050565b62000b748162000af2565b82525050565b600060408201905062000b91600083018562000b69565b62000ba0602083018462000b69565b9392505050565b62000bb28162000978565b82525050565b600060208201905062000bcf600083018462000ba7565b92915050565b61389a8062000be56000396000f3fe6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600c81526020017f446563656e747261436173680000000000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4443415348000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea26469706673582212201a3551a52f5c61f732a81835d8ee5db10f0d0ef4379f5ebf50058442961dbcfd64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600c81526020017f446563656e747261436173680000000000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4443415348000000000000000000000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea26469706673582212201a3551a52f5c61f732a81835d8ee5db10f0d0ef4379f5ebf50058442961dbcfd64736f6c63430008120033

Deployed Bytecode Sourcemap

4506:11170:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6249:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7405:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13268:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7827:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15283:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5679:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7135:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5585:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14773:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8379:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14958:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2587:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5768:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7229:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14224:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8051:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5810:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5459:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6212:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7575:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5034:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4966:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15441:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7491:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7315:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5417:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2698:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14045:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13838:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6145:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8215:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13552:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15108:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5501:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5543;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7686:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14619:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5366:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6114:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5725:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6249:49;;;;:::o;7405:80::-;7453:13;7477:5;;;;;;;;;;;;;;;;;7470:12;;7405:80;:::o;13268:276::-;2538:19;2546:10;2538:7;:19::i;:::-;2530:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13404:2:::1;13377:23;:29;;13369:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13532:4;13504:23;13489:12;;:38;;;;:::i;:::-;13488:48;;;;:::i;:::-;13470:15;:66;;;;13268:276:::0;:::o;7827:216::-;7902:4;7954:6;7919:11;:23;7931:10;7919:23;;;;;;;;;;;;;;;:32;7943:7;7919:32;;;;;;;;;;;;;;;:41;;;;7997:7;7976:37;;7985:10;7976:37;;;8006:6;7976:37;;;;;;:::i;:::-;;;;;;;;8031:4;8024:11;;7827:216;;;;:::o;15283:150::-;15363:4;15419:6;15387:29;15407:8;15387:19;:29::i;:::-;:38;15380:45;;15283:150;;;;:::o;5679:37::-;;;;:::o;7135:88::-;7190:7;7208:12;;7201:19;;7135:88;:::o;5585:87::-;;;;:::o;2810:164::-;2538:19;2546:10;2538:7;:19::i;:::-;2530:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2885:3:::1;2877:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2921:4;2899:14:::0;:19:::1;2914:3;2899:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2941:25;2962:3;2941:25;;;;;;:::i;:::-;;;;;;;;2810:164:::0;:::o;14773:173::-;14879:7;14861:15;:25;;;;14926:12;14897:26;:41;;;;14773:173;;:::o;8379:370::-;8479:4;8534:17;8499:11;:19;8511:6;8499:19;;;;;;;;;;;;;;;:31;8519:10;8499:31;;;;;;;;;;;;;;;;:52;8496:186;;8601:69;8637:6;8601:69;;;;;;;;;;;;;;;;;:11;:19;8613:6;8601:19;;;;;;;;;;;;;;;:31;8621:10;8601:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8567:11;:19;8579:6;8567:19;;;;;;;;;;;;;;;:31;8587:10;8567:31;;;;;;;;;;;;;;;:103;;;;8496:186;8701:40;8715:6;8723:9;8734:6;8701:13;:40::i;:::-;8694:47;;8379:370;;;;;:::o;14958:142::-;15011:7;15038:54;15076:15;15086:4;;;;;;;;;;;15076:9;:15::i;:::-;15038:33;15055:15;15065:4;;;;;;;;;;;15055:9;:15::i;:::-;15038:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15031:61;;14958:142;:::o;2587:103::-;2642:4;2677:5;;;;;;;;;;;2666:16;;:7;:16;;;2659:23;;2587:103;;;:::o;5768:35::-;;;;:::o;7229:80::-;7281:5;4892:1;7290:16;;7229:80;:::o;14224:387::-;2538:19;2546:10;2538:7;:19::i;:::-;2530:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14424:22:::1;14400:21;;:46;;;;;;;;;;;;;;;;;;14480:21;14457:20;;:44;;;;;;;;;;;;;;;;;;14533:19;14512:18;;:40;;;;;;;;;;;;;;;;;;14584:19;14563:18;;:40;;;;;;;;;;;;;;;;;;14224:387:::0;;;;:::o;8051:122::-;8106:4;8130:35;8138:7;8147:17;8130:7;:35::i;:::-;8123:42;;8051:122;;;:::o;5810:40::-;;;;:::o;5459:35::-;;;;:::o;6212:30::-;;;;;;;;;;;;;:::o;7575:105::-;7641:7;7659:9;:18;7669:7;7659:18;;;;;;;;;;;;;;;;7652:25;;7575:105;;;:::o;5034:64::-;;;;:::o;4966:61::-;;;;:::o;15441:167::-;15514:9;15509:92;15529:9;;:16;;15525:1;:20;15509:92;;;15589:4;15563:9;:23;15573:9;;15583:1;15573:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15563:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15547:3;;;;:::i;:::-;;;15509:92;;;;15441:167;;:::o;7491:78::-;7543:7;7561:5;;;;;;;;;;;7554:12;;7491:78;:::o;7315:84::-;7365:13;7389:7;;;;;;;;;;;;;;;;;7382:14;;7315:84;:::o;5417:35::-;;;;:::o;2698:104::-;2751:4;2775:14;:19;2790:3;2775:19;;;;;;;;;;;;;;;;;;;;;;;;;2768:26;;2698:104;;;:::o;14045:171::-;14117:12;14156;14149:29;;;14179:20;;;;;;;;;;;14201:6;14149:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14142:66;;14045:171;;;;:::o;13838:199::-;13903:17;13923:21;13903:41;;13963:20;;;;;;;;;;;13955:38;;:74;14025:3;14006:16;13994:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13955:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13892:145;13838:199;:::o;6145:19::-;;;;;;;;;;;;;:::o;8215:156::-;8295:4;8319:44;8333:10;8345:9;8356:6;8319:13;:44::i;:::-;8312:51;;8215:156;;;;:::o;13552:278::-;2538:19;2546:10;2538:7;:19::i;:::-;2530:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13686:1:::1;13658:24;:29;;13650:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;13818:4;13789:24;13774:12;;:39;;;;:::i;:::-;13773:49;;;;:::i;:::-;13758:12;:64;;;;13552:278:::0;:::o;15108:167::-;15176:7;15203:64;15244:22;:20;:22::i;:::-;15203:36;15216:22;15236:1;15216:15;15226:4;;;;;;;;;;;15216:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15203:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15196:71;;15108:167;;;:::o;5501:35::-;;;;:::o;5543:::-;;;;:::o;7686:133::-;7770:7;7788:11;:19;7800:6;7788:19;;;;;;;;;;;;;;;:28;7808:7;7788:28;;;;;;;;;;;;;;;;7781:35;;7686:133;;;;:::o;14619:146::-;14715:8;14701:11;;:22;;;;;;;;;;;;;;;;;;14750:7;14734:13;:23;;;;14619:146;;:::o;5366:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6114:24::-;;;;;;;;;;;;;:::o;5725:36::-;;;;:::o;6173:30::-;;;;;;;;;;;;;:::o;570:192::-;656:7;689:1;684;:6;;692:12;676:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;716:9;732:1;728;:5;;;;:::i;:::-;716:17;;753:1;746:8;;;570:192;;;;;:::o;8757:899::-;8849:4;8869:6;;;;;;;;;;;8866:63;;;8885:41;8900:6;8908:9;8919:6;8885:14;:41::i;:::-;8878:48;;;;8866:63;8945:14;:22;8960:6;8945:22;;;;;;;;;;;;;;;;;;;;;;;;;8944:23;:53;;;;;8972:14;:25;8987:9;8972:25;;;;;;;;;;;;;;;;;;;;;;;;;8971:26;8944:53;8941:127;;;9021:11;;;;;;;;;;;9013:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8941:127;9128:9;:20;9138:9;9128:20;;;;;;;;;;;;;;;;;;;;;;;;;9127:21;:43;;;;;9153:9;:17;9163:6;9153:17;;;;;;;;;;;;;;;;;;;;;;;;;9152:18;9127:43;9119:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9210:16;:14;:16::i;:::-;9207:35;;;9229:10;:8;:10::i;:::-;9207:35;9301:53;9323:6;9301:53;;;;;;;;;;;;;;;;;:9;:17;9311:6;9301:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9281:9;:17;9291:6;9281:17;;;;;;;;;;;;;;;:73;;;;9367:22;9394:21;9408:6;9394:13;:21::i;:::-;9393:22;:51;;;;9420:24;9434:9;9420:13;:24::i;:::-;9419:25;9393:51;9392:99;;9457:34;9465:6;9473;9481:9;9457:7;:34::i;:::-;9392:99;;;9448:6;9392:99;9367:124;;9525:40;9550:14;9525:9;:20;9535:9;9525:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9502:9;:20;9512:9;9502:20;;;;;;;;;;;;;;;:63;;;;9600:9;9583:43;;9592:6;9583:43;;;9611:14;9583:43;;;;;;:::i;:::-;;;;;;;;9644:4;9637:11;;;8757:899;;;;;;:::o;428:136::-;486:7;513:43;517:1;520;513:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;506:50;;428:136;;;;:::o;768:250::-;826:7;855:1;850;:6;846:47;;880:1;873:8;;;;846:47;905:9;921:1;917;:5;;;;:::i;:::-;905:17;;950:1;945;941;:5;;;;:::i;:::-;:10;933:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1009:1;1002:8;;;768:250;;;;;:::o;1024:132::-;1082:7;1109:39;1113:1;1116;1109:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1102:46;;1024:132;;;;:::o;9668:330::-;9761:4;9798:53;9820:6;9798:53;;;;;;;;;;;;;;;;;:9;:17;9808:6;9798:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9778:9;:17;9788:6;9778:17;;;;;;;;;;;;;;;:73;;;;9885:32;9910:6;9885:9;:20;9895:9;9885:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9862:9;:20;9872:9;9862:20;;;;;;;;;;;;;;;:55;;;;9950:9;9933:35;;9942:6;9933:35;;;9961:6;9933:35;;;;;;:::i;:::-;;;;;;;;9986:4;9979:11;;9668:330;;;;;:::o;11277:197::-;11326:4;11364;;;;;;;;;;;11350:18;;:10;:18;;;;:38;;;;;11382:6;;;;;;;;;;;11381:7;11350:38;:62;;;;;11401:11;;;;;;;;;;;11350:62;:116;;;;;11453:13;;11425:9;:24;11443:4;11425:24;;;;;;;;;;;;;;;;:41;;11350:116;11343:123;;11277:197;:::o;11482:1745::-;6354:4;6345:6;;:13;;;;;;;;;;;;;;;;;;11531:27:::1;11561:60;11577:15;;11594:26;;11561:15;:60::i;:::-;:79;;11628:12;;11561:79;;;11624:1;11561:79;11531:109;;11651:23;11677:59;11734:1;11677:52;11720:8;;11677:38;11695:19;11677:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11651:85;;11747:20;11770:34;11788:15;11770:13;;:17;;:34;;;;:::i;:::-;11747:57;;11817:21;11855:1;11841:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11817:40;;11886:4;11868;11873:1;11868:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11912:4;;;;;;;;;;;11902;11907:1;11902:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11929:21;11953;11929:45;;11987:6;;;;;;;;;;;:57;;;12059:12;12086:1;12102:4;12129;12149:15;11987:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12188:17;12208:40;12234:13;12208:21;:25;;:40;;;;:::i;:::-;12188:60;;12261:19;12283:40;12296:26;12320:1;12296:19;:23;;:26;;;;:::i;:::-;12283:8;;:12;;:40;;;;:::i;:::-;12261:62;;12344:26;12373:58;12429:1;12373:51;12412:11;12373:34;12387:19;12373:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12344:87;;12442:26;12471:44;12503:11;12471:27;12485:12;;12471:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12442:73;;12526:24;12553:42;12583:11;12553:25;12567:10;;12553:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;12526:69;;12609:15;12637:20;;;;;;;;;;;12629:34;;12671:18;12696:5;12629:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12608:98;;;12741:18;;;;;;;;;;;12733:32;;12773:16;12796:5;12733:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12717:89;;;;;12840:5;12827:18;;12879:1;12861:15;:19;12858:362;;;12896:6;;;;;;;;;;;:22;;;12926:18;12972:4;12996:15;13030:1;13050::::0;13070:21:::1;;;;;;;;;;;13110:15;12896:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13160:48;13172:18;13192:15;13160:48;;;;;;;:::i;:::-;;;;;;;;12858:362;11520:1707;;;;;;;;;;;6372:5:::0;6363:6;;:14;;;;;;;;;;;;;;;;;;11482:1745::o;10180:114::-;10242:4;10267:11;:19;10279:6;10267:19;;;;;;;;;;;;;;;;;;;;;;;;;10266:20;10259:27;;10180:114;;;:::o;10302:967::-;10388:7;10418:18;10439;;10418:39;;10484:4;;;;;;;;;;;10471:17;;:9;:17;;;10468:152;;10517:14;;10504:27;;10468:152;;;10562:4;;;;;;;;;;;10552:14;;:6;:14;;;10549:71;;10595:13;;10582:26;;10549:71;10468:152;10632:17;10652:62;10710:3;10693:14;;:20;;;;:::i;:::-;10652:36;10677:10;10652:20;10663:8;;10652:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;10632:82;;10727:21;10751:39;10781:8;;10751:25;10765:10;;10751:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;10727:63;;10801:22;10826:28;10840:13;10826:9;:13;;:28;;;;:::i;:::-;10801:53;;10894:44;10923:14;10894:9;:24;10912:4;10894:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10867:9;:24;10885:4;10867:24;;;;;;;;;;;;;;;:71;;;;10981:48;11015:13;10981:9;:29;10991:18;;;;;;;;;;;10981:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;10949:9;:29;10959:18;;;;;;;;;;;10949:29;;;;;;;;;;;;;;;:80;;;;11070:4;11045:47;;11054:6;11045:47;;;11077:14;11045:47;;;;;;:::i;:::-;;;;;;;;11132:1;11116:13;:17;11113:108;;;11171:18;;;;;;;;;;;11154:51;;11163:6;11154:51;;;11191:13;11154:51;;;;;;:::i;:::-;;;;;;;;11113:108;11240:21;11251:9;11240:6;:10;;:21;;;;:::i;:::-;11233:28;;;;;;10302:967;;;;;:::o;241:181::-;299:7;319:9;335:1;331;:5;;;;:::i;:::-;319:17;;360:1;355;:6;;347:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;413:1;406:8;;;241:181;;;;:::o;1162:189::-;1248:7;1280:1;1276;:5;1283:12;1268:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1307:9;1323:1;1319;:5;;;;:::i;:::-;1307:17;;1342:1;1335:8;;;1162:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:122;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:329::-;2443:6;2492:2;2480:9;2471:7;2467:23;2463:32;2460:119;;;2498:79;;:::i;:::-;2460:119;2618:1;2643:53;2688:7;2679:6;2668:9;2664:22;2643:53;:::i;:::-;2633:63;;2589:117;2384:329;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:474::-;4201:6;4209;4258:2;4246:9;4237:7;4233:23;4229:32;4226:119;;;4264:79;;:::i;:::-;4226:119;4384:1;4409:53;4454:7;4445:6;4434:9;4430:22;4409:53;:::i;:::-;4399:63;;4355:117;4511:2;4537:53;4582:7;4573:6;4562:9;4558:22;4537:53;:::i;:::-;4527:63;;4482:118;4133:474;;;;;:::o;4613:104::-;4658:7;4687:24;4705:5;4687:24;:::i;:::-;4676:35;;4613:104;;;:::o;4723:138::-;4804:32;4830:5;4804:32;:::i;:::-;4797:5;4794:43;4784:71;;4851:1;4848;4841:12;4784:71;4723:138;:::o;4867:155::-;4921:5;4959:6;4946:20;4937:29;;4975:41;5010:5;4975:41;:::i;:::-;4867:155;;;;:::o;5028:345::-;5095:6;5144:2;5132:9;5123:7;5119:23;5115:32;5112:119;;;5150:79;;:::i;:::-;5112:119;5270:1;5295:61;5348:7;5339:6;5328:9;5324:22;5295:61;:::i;:::-;5285:71;;5241:125;5028:345;;;;:::o;5379:619::-;5456:6;5464;5472;5521:2;5509:9;5500:7;5496:23;5492:32;5489:119;;;5527:79;;:::i;:::-;5489:119;5647:1;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5618:117;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5902:2;5928:53;5973:7;5964:6;5953:9;5949:22;5928:53;:::i;:::-;5918:63;;5873:118;5379:619;;;;;:::o;6004:329::-;6063:6;6112:2;6100:9;6091:7;6087:23;6083:32;6080:119;;;6118:79;;:::i;:::-;6080:119;6238:1;6263:53;6308:7;6299:6;6288:9;6284:22;6263:53;:::i;:::-;6253:63;;6209:117;6004:329;;;;:::o;6339:86::-;6374:7;6414:4;6407:5;6403:16;6392:27;;6339:86;;;:::o;6431:112::-;6514:22;6530:5;6514:22;:::i;:::-;6509:3;6502:35;6431:112;;:::o;6549:214::-;6638:4;6676:2;6665:9;6661:18;6653:26;;6689:67;6753:1;6742:9;6738:17;6729:6;6689:67;:::i;:::-;6549:214;;;;:::o;6769:765::-;6855:6;6863;6871;6879;6928:3;6916:9;6907:7;6903:23;6899:33;6896:120;;;6935:79;;:::i;:::-;6896:120;7055:1;7080:53;7125:7;7116:6;7105:9;7101:22;7080:53;:::i;:::-;7070:63;;7026:117;7182:2;7208:53;7253:7;7244:6;7233:9;7229:22;7208:53;:::i;:::-;7198:63;;7153:118;7310:2;7336:53;7381:7;7372:6;7361:9;7357:22;7336:53;:::i;:::-;7326:63;;7281:118;7438:2;7464:53;7509:7;7500:6;7489:9;7485:22;7464:53;:::i;:::-;7454:63;;7409:118;6769:765;;;;;;;:::o;7540:117::-;7649:1;7646;7639:12;7663:117;7772:1;7769;7762:12;7786:117;7895:1;7892;7885:12;7926:568;7999:8;8009:6;8059:3;8052:4;8044:6;8040:17;8036:27;8026:122;;8067:79;;:::i;:::-;8026:122;8180:6;8167:20;8157:30;;8210:18;8202:6;8199:30;8196:117;;;8232:79;;:::i;:::-;8196:117;8346:4;8338:6;8334:17;8322:29;;8400:3;8392:4;8384:6;8380:17;8370:8;8366:32;8363:41;8360:128;;;8407:79;;:::i;:::-;8360:128;7926:568;;;;;:::o;8500:559::-;8586:6;8594;8643:2;8631:9;8622:7;8618:23;8614:32;8611:119;;;8649:79;;:::i;:::-;8611:119;8797:1;8786:9;8782:17;8769:31;8827:18;8819:6;8816:30;8813:117;;;8849:79;;:::i;:::-;8813:117;8962:80;9034:7;9025:6;9014:9;9010:22;8962:80;:::i;:::-;8944:98;;;;8740:312;8500:559;;;;;:::o;9065:118::-;9152:24;9170:5;9152:24;:::i;:::-;9147:3;9140:37;9065:118;;:::o;9189:222::-;9282:4;9320:2;9309:9;9305:18;9297:26;;9333:71;9401:1;9390:9;9386:17;9377:6;9333:71;:::i;:::-;9189:222;;;;:::o;9417:474::-;9485:6;9493;9542:2;9530:9;9521:7;9517:23;9513:32;9510:119;;;9548:79;;:::i;:::-;9510:119;9668:1;9693:53;9738:7;9729:6;9718:9;9714:22;9693:53;:::i;:::-;9683:63;;9639:117;9795:2;9821:53;9866:7;9857:6;9846:9;9842:22;9821:53;:::i;:::-;9811:63;;9766:118;9417:474;;;;;:::o;9897:116::-;9967:21;9982:5;9967:21;:::i;:::-;9960:5;9957:32;9947:60;;10003:1;10000;9993:12;9947:60;9897:116;:::o;10019:133::-;10062:5;10100:6;10087:20;10078:29;;10116:30;10140:5;10116:30;:::i;:::-;10019:133;;;;:::o;10158:468::-;10223:6;10231;10280:2;10268:9;10259:7;10255:23;10251:32;10248:119;;;10286:79;;:::i;:::-;10248:119;10406:1;10431:50;10473:7;10464:6;10453:9;10449:22;10431:50;:::i;:::-;10421:60;;10377:114;10530:2;10556:53;10601:7;10592:6;10581:9;10577:22;10556:53;:::i;:::-;10546:63;;10501:118;10158:468;;;;;:::o;10632:60::-;10660:3;10681:5;10674:12;;10632:60;;;:::o;10698:142::-;10748:9;10781:53;10799:34;10808:24;10826:5;10808:24;:::i;:::-;10799:34;:::i;:::-;10781:53;:::i;:::-;10768:66;;10698:142;;;:::o;10846:126::-;10896:9;10929:37;10960:5;10929:37;:::i;:::-;10916:50;;10846:126;;;:::o;10978:144::-;11046:9;11079:37;11110:5;11079:37;:::i;:::-;11066:50;;10978:144;;;:::o;11128:167::-;11233:55;11282:5;11233:55;:::i;:::-;11228:3;11221:68;11128:167;;:::o;11301:258::-;11412:4;11450:2;11439:9;11435:18;11427:26;;11463:89;11549:1;11538:9;11534:17;11525:6;11463:89;:::i;:::-;11301:258;;;;:::o;11565:156::-;11705:8;11701:1;11693:6;11689:14;11682:32;11565:156;:::o;11727:365::-;11869:3;11890:66;11954:1;11949:3;11890:66;:::i;:::-;11883:73;;11965:93;12054:3;11965:93;:::i;:::-;12083:2;12078:3;12074:12;12067:19;;11727:365;;;:::o;12098:419::-;12264:4;12302:2;12291:9;12287:18;12279:26;;12351:9;12345:4;12341:20;12337:1;12326:9;12322:17;12315:47;12379:131;12505:4;12379:131;:::i;:::-;12371:139;;12098:419;;;:::o;12523:235::-;12663:34;12659:1;12651:6;12647:14;12640:58;12732:18;12727:2;12719:6;12715:15;12708:43;12523:235;:::o;12764:366::-;12906:3;12927:67;12991:2;12986:3;12927:67;:::i;:::-;12920:74;;13003:93;13092:3;13003:93;:::i;:::-;13121:2;13116:3;13112:12;13105:19;;12764:366;;;:::o;13136:419::-;13302:4;13340:2;13329:9;13325:18;13317:26;;13389:9;13383:4;13379:20;13375:1;13364:9;13360:17;13353:47;13417:131;13543:4;13417:131;:::i;:::-;13409:139;;13136:419;;;:::o;13561:180::-;13609:77;13606:1;13599:88;13706:4;13703:1;13696:15;13730:4;13727:1;13720:15;13747:410;13787:7;13810:20;13828:1;13810:20;:::i;:::-;13805:25;;13844:20;13862:1;13844:20;:::i;:::-;13839:25;;13899:1;13896;13892:9;13921:30;13939:11;13921:30;:::i;:::-;13910:41;;14100:1;14091:7;14087:15;14084:1;14081:22;14061:1;14054:9;14034:83;14011:139;;14130:18;;:::i;:::-;14011:139;13795:362;13747:410;;;;:::o;14163:180::-;14211:77;14208:1;14201:88;14308:4;14305:1;14298:15;14332:4;14329:1;14322:15;14349:185;14389:1;14406:20;14424:1;14406:20;:::i;:::-;14401:25;;14440:20;14458:1;14440:20;:::i;:::-;14435:25;;14479:1;14469:35;;14484:18;;:::i;:::-;14469:35;14526:1;14523;14519:9;14514:14;;14349:185;;;;:::o;14540:134::-;14598:9;14631:37;14662:5;14631:37;:::i;:::-;14618:50;;14540:134;;;:::o;14680:147::-;14775:45;14814:5;14775:45;:::i;:::-;14770:3;14763:58;14680:147;;:::o;14833:238::-;14934:4;14972:2;14961:9;14957:18;14949:26;;14985:79;15061:1;15050:9;15046:17;15037:6;14985:79;:::i;:::-;14833:238;;;;:::o;15077:180::-;15125:77;15122:1;15115:88;15222:4;15219:1;15212:15;15246:4;15243:1;15236:15;15263:233;15302:3;15325:24;15343:5;15325:24;:::i;:::-;15316:33;;15371:66;15364:5;15361:77;15358:103;;15441:18;;:::i;:::-;15358:103;15488:1;15481:5;15477:13;15470:20;;15263:233;;;:::o;15502:332::-;15623:4;15661:2;15650:9;15646:18;15638:26;;15674:71;15742:1;15731:9;15727:17;15718:6;15674:71;:::i;:::-;15755:72;15823:2;15812:9;15808:18;15799:6;15755:72;:::i;:::-;15502:332;;;;;:::o;15840:137::-;15894:5;15925:6;15919:13;15910:22;;15941:30;15965:5;15941:30;:::i;:::-;15840:137;;;;:::o;15983:345::-;16050:6;16099:2;16087:9;16078:7;16074:23;16070:32;16067:119;;;16105:79;;:::i;:::-;16067:119;16225:1;16250:61;16303:7;16294:6;16283:9;16279:22;16250:61;:::i;:::-;16240:71;;16196:125;15983:345;;;;:::o;16334:242::-;16474:34;16470:1;16462:6;16458:14;16451:58;16543:25;16538:2;16530:6;16526:15;16519:50;16334:242;:::o;16582:366::-;16724:3;16745:67;16809:2;16804:3;16745:67;:::i;:::-;16738:74;;16821:93;16910:3;16821:93;:::i;:::-;16939:2;16934:3;16930:12;16923:19;;16582:366;;;:::o;16954:419::-;17120:4;17158:2;17147:9;17143:18;17135:26;;17207:9;17201:4;17197:20;17193:1;17182:9;17178:17;17171:47;17235:131;17361:4;17235:131;:::i;:::-;17227:139;;16954:419;;;:::o;17379:194::-;17419:4;17439:20;17457:1;17439:20;:::i;:::-;17434:25;;17473:20;17491:1;17473:20;:::i;:::-;17468:25;;17517:1;17514;17510:9;17502:17;;17541:1;17535:4;17532:11;17529:37;;;17546:18;;:::i;:::-;17529:37;17379:194;;;;:::o;17579:170::-;17719:22;17715:1;17707:6;17703:14;17696:46;17579:170;:::o;17755:366::-;17897:3;17918:67;17982:2;17977:3;17918:67;:::i;:::-;17911:74;;17994:93;18083:3;17994:93;:::i;:::-;18112:2;18107:3;18103:12;18096:19;;17755:366;;;:::o;18127:419::-;18293:4;18331:2;18320:9;18316:18;18308:26;;18380:9;18374:4;18370:20;18366:1;18355:9;18351:17;18344:47;18408:131;18534:4;18408:131;:::i;:::-;18400:139;;18127:419;;;:::o;18552:169::-;18692:21;18688:1;18680:6;18676:14;18669:45;18552:169;:::o;18727:366::-;18869:3;18890:67;18954:2;18949:3;18890:67;:::i;:::-;18883:74;;18966:93;19055:3;18966:93;:::i;:::-;19084:2;19079:3;19075:12;19068:19;;18727:366;;;:::o;19099:419::-;19265:4;19303:2;19292:9;19288:18;19280:26;;19352:9;19346:4;19342:20;19338:1;19327:9;19323:17;19316:47;19380:131;19506:4;19380:131;:::i;:::-;19372:139;;19099:419;;;:::o;19524:220::-;19664:34;19660:1;19652:6;19648:14;19641:58;19733:3;19728:2;19720:6;19716:15;19709:28;19524:220;:::o;19750:366::-;19892:3;19913:67;19977:2;19972:3;19913:67;:::i;:::-;19906:74;;19989:93;20078:3;19989:93;:::i;:::-;20107:2;20102:3;20098:12;20091:19;;19750:366;;;:::o;20122:419::-;20288:4;20326:2;20315:9;20311:18;20303:26;;20375:9;20369:4;20365:20;20361:1;20350:9;20346:17;20339:47;20403:131;20529:4;20403:131;:::i;:::-;20395:139;;20122:419;;;:::o;20547:180::-;20595:77;20592:1;20585:88;20692:4;20689:1;20682:15;20716:4;20713:1;20706:15;20733:85;20778:7;20807:5;20796:16;;20733:85;;;:::o;20824:158::-;20882:9;20915:61;20933:42;20942:32;20968:5;20942:32;:::i;:::-;20933:42;:::i;:::-;20915:61;:::i;:::-;20902:74;;20824:158;;;:::o;20988:147::-;21083:45;21122:5;21083:45;:::i;:::-;21078:3;21071:58;20988:147;;:::o;21141:114::-;21208:6;21242:5;21236:12;21226:22;;21141:114;;;:::o;21261:184::-;21360:11;21394:6;21389:3;21382:19;21434:4;21429:3;21425:14;21410:29;;21261:184;;;;:::o;21451:132::-;21518:4;21541:3;21533:11;;21571:4;21566:3;21562:14;21554:22;;21451:132;;;:::o;21589:108::-;21666:24;21684:5;21666:24;:::i;:::-;21661:3;21654:37;21589:108;;:::o;21703:179::-;21772:10;21793:46;21835:3;21827:6;21793:46;:::i;:::-;21871:4;21866:3;21862:14;21848:28;;21703:179;;;;:::o;21888:113::-;21958:4;21990;21985:3;21981:14;21973:22;;21888:113;;;:::o;22037:732::-;22156:3;22185:54;22233:5;22185:54;:::i;:::-;22255:86;22334:6;22329:3;22255:86;:::i;:::-;22248:93;;22365:56;22415:5;22365:56;:::i;:::-;22444:7;22475:1;22460:284;22485:6;22482:1;22479:13;22460:284;;;22561:6;22555:13;22588:63;22647:3;22632:13;22588:63;:::i;:::-;22581:70;;22674:60;22727:6;22674:60;:::i;:::-;22664:70;;22520:224;22507:1;22504;22500:9;22495:14;;22460:284;;;22464:14;22760:3;22753:10;;22161:608;;;22037:732;;;;:::o;22775:831::-;23038:4;23076:3;23065:9;23061:19;23053:27;;23090:71;23158:1;23147:9;23143:17;23134:6;23090:71;:::i;:::-;23171:80;23247:2;23236:9;23232:18;23223:6;23171:80;:::i;:::-;23298:9;23292:4;23288:20;23283:2;23272:9;23268:18;23261:48;23326:108;23429:4;23420:6;23326:108;:::i;:::-;23318:116;;23444:72;23512:2;23501:9;23497:18;23488:6;23444:72;:::i;:::-;23526:73;23594:3;23583:9;23579:19;23570:6;23526:73;:::i;:::-;22775:831;;;;;;;;:::o;23612:147::-;23713:11;23750:3;23735:18;;23612:147;;;;:::o;23765:114::-;;:::o;23885:398::-;24044:3;24065:83;24146:1;24141:3;24065:83;:::i;:::-;24058:90;;24157:93;24246:3;24157:93;:::i;:::-;24275:1;24270:3;24266:11;24259:18;;23885:398;;;:::o;24289:379::-;24473:3;24495:147;24638:3;24495:147;:::i;:::-;24488:154;;24659:3;24652:10;;24289:379;;;:::o;24674:807::-;24923:4;24961:3;24950:9;24946:19;24938:27;;24975:71;25043:1;25032:9;25028:17;25019:6;24975:71;:::i;:::-;25056:72;25124:2;25113:9;25109:18;25100:6;25056:72;:::i;:::-;25138:80;25214:2;25203:9;25199:18;25190:6;25138:80;:::i;:::-;25228;25304:2;25293:9;25289:18;25280:6;25228:80;:::i;:::-;25318:73;25386:3;25375:9;25371:19;25362:6;25318:73;:::i;:::-;25401;25469:3;25458:9;25454:19;25445:6;25401:73;:::i;:::-;24674:807;;;;;;;;;:::o;25487:143::-;25544:5;25575:6;25569:13;25560:22;;25591:33;25618:5;25591:33;:::i;:::-;25487:143;;;;:::o;25636:663::-;25724:6;25732;25740;25789:2;25777:9;25768:7;25764:23;25760:32;25757:119;;;25795:79;;:::i;:::-;25757:119;25915:1;25940:64;25996:7;25987:6;25976:9;25972:22;25940:64;:::i;:::-;25930:74;;25886:128;26053:2;26079:64;26135:7;26126:6;26115:9;26111:22;26079:64;:::i;:::-;26069:74;;26024:129;26192:2;26218:64;26274:7;26265:6;26254:9;26250:22;26218:64;:::i;:::-;26208:74;;26163:129;25636:663;;;;;:::o;26305:332::-;26426:4;26464:2;26453:9;26449:18;26441:26;;26477:71;26545:1;26534:9;26530:17;26521:6;26477:71;:::i;:::-;26558:72;26626:2;26615:9;26611:18;26602:6;26558:72;:::i;:::-;26305:332;;;;;:::o;26643:191::-;26683:3;26702:20;26720:1;26702:20;:::i;:::-;26697:25;;26736:20;26754:1;26736:20;:::i;:::-;26731:25;;26779:1;26776;26772:9;26765:16;;26800:3;26797:1;26794:10;26791:36;;;26807:18;;:::i;:::-;26791:36;26643:191;;;;:::o;26840:177::-;26980:29;26976:1;26968:6;26964:14;26957:53;26840:177;:::o;27023:366::-;27165:3;27186:67;27250:2;27245:3;27186:67;:::i;:::-;27179:74;;27262:93;27351:3;27262:93;:::i;:::-;27380:2;27375:3;27371:12;27364:19;;27023:366;;;:::o;27395:419::-;27561:4;27599:2;27588:9;27584:18;27576:26;;27648:9;27642:4;27638:20;27634:1;27623:9;27619:17;27612:47;27676:131;27802:4;27676:131;:::i;:::-;27668:139;;27395:419;;;:::o

Swarm Source

ipfs://1a3551a52f5c61f732a81835d8ee5db10f0d0ef4379f5ebf50058442961dbcfd
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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