ETH Price: $3,802.17 (+5.22%)

Token

ERC-20: ThunderVerse (THUNDER)
 

Overview

Max Total Supply

100,000,000 THUNDER

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
ibuyrugs.eth
Balance
125,025.04583362 THUNDER

Value
$0.00
0x9e2a70877748863fb81c1ff17e3aefccf68aa57c
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:
ThunderVerse

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-02
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        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;
    }
}

// pragma solidity >=0.5.0;

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


// pragma solidity >=0.5.0;

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



// pragma solidity >=0.6.2;

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

    event TokenBurn(address indexed from, uint256 value);
    event SetLiquidityFee(uint256 amount);
    event SetMarketingFee(uint256 amount);
    event SetBurnFee(uint256 amount);
    
    string private _name = "ThunderVerse";
    string private _symbol = "THUNDER";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 1 * 10**8 * 10**_decimals;
    
    address payable public marketingAddress = payable(0x3d801eC779a2284aEeE45d1f9bA3250A6AF848c1);
    address public marketingWalletToken = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address public constant deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromMaxBalance;

    uint256 private constant _maxFees = 10;
    uint256 private _totalFees;
    uint256 private _totalFeesToContract;
    uint256 private _liquidityFee;
    uint256 private _burnFee;
    uint256 private _marketingFee;
    
    uint256 private _maxBalance;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    uint256 private _liquifyThreshhold;
    bool inSwapAndLiquify;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        
        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[uniswapV2Pair] = true;

        _liquidityFee = 1;
        _marketingFee = 5;
        _burnFee = 0;
        _totalFees = _liquidityFee.add(_marketingFee).add(_burnFee);
        _totalFeesToContract = _liquidityFee.add(_marketingFee);

        _liquifyThreshhold = 10 * 10**5 * 10**_decimals;
        _maxBalance = 1 * 10**9 * 10**_decimals;

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

    receive() external payable {}

    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 transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 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 _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 setMarketingAddress(address payable newMarketingAddress) external onlyOwner() {
        marketingAddress = newMarketingAddress;
    }

    function setLiquidityFeePercent(uint256 newLiquidityFee) external onlyOwner() {
        require(!inSwapAndLiquify, "inSwapAndLiquify");
        require(newLiquidityFee.add(_burnFee).add(_marketingFee) <= _maxFees, "Fees are too high.");
        _liquidityFee = newLiquidityFee;
        _totalFees = _liquidityFee.add(_marketingFee).add(_burnFee);
        _totalFeesToContract = _liquidityFee.add(_marketingFee);
        emit SetLiquidityFee(_liquidityFee);
    }

    function setMarketingFeePercent(uint256 newMarketingFee) external onlyOwner() {
        require(!inSwapAndLiquify, "inSwapAndLiquify");
        _marketingFee = newMarketingFee;
        _totalFees = _liquidityFee.add(_marketingFee).add(_burnFee);
        _totalFeesToContract = _liquidityFee.add(_marketingFee);
        emit SetMarketingFee(_marketingFee);
    }

    function setBurnFeePercent(uint256 newBurnFee) external onlyOwner() {
        _burnFee = newBurnFee;
        _totalFees = _liquidityFee.add(_marketingFee).add(_burnFee);
        emit SetBurnFee(_burnFee);
    }
    
    function setLiquifyThreshhold(uint256 newLiquifyThreshhold) external onlyOwner() {
        _liquifyThreshhold = newLiquifyThreshhold;
    }   

    function setMarketingWalletToken(address _marketingWalletToken) external onlyOwner(){
        marketingWalletToken = _marketingWalletToken;
    }

    function setMaxBalance(uint256 newMaxBalance) external onlyOwner(){
        // Minimum _maxBalance is 0.5% of _totalSupply 
        _maxBalance = newMaxBalance;
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function excludeFromFees(address account) public onlyOwner {
        _isExcludedFromFees[account] = true;
    }
    
    function includeInFees(address account) public onlyOwner {
        _isExcludedFromFees[account] = false;
    }

    function isExcludedFromMaxBalance(address account) public view returns(bool) {
        return _isExcludedFromMaxBalance[account];
    }
    
    function excludeFromMaxBalance(address account) public onlyOwner {
        _isExcludedFromMaxBalance[account] = true;
    }
    
    function includeInMaxBalance(address account) public onlyOwner {
        _isExcludedFromMaxBalance[account] = false;
    }

    function totalFees() public view returns (uint256) {
        return _totalFees;
    }

    function liquidityFee() public view returns (uint256) {
        return _liquidityFee;
    }

    function marketingFee() public view returns (uint256) {
        return _marketingFee;
    }

    function burnFee() public view returns (uint256) {
        return _burnFee;
    }

    function maxFees() public pure returns (uint256) {
        return _maxFees;
    }

    function liquifyThreshhold() public view returns(uint256){
        return _liquifyThreshhold;
    }

    function maxBalance() public view returns (uint256) {
        return _maxBalance;
    }


    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        // Make sure that: Balance + Buy Amount <= _maxBalance
        if(
            from != owner() &&              // Not from Owner
            to != owner() &&                // Not to Owner
            !_isExcludedFromMaxBalance[to]  // is excludedFromMaxBalance
        ){
            require(
                balanceOf(to).add(amount) <= _maxBalance,
                "Max Balance is reached."
            );
        }
        
        // Swap Fees 
        if(
            to == uniswapV2Pair &&                              // Sell
            !inSwapAndLiquify &&                                // Swap is not locked
            balanceOf(address(this)) >= _liquifyThreshhold &&   // liquifyThreshhold is reached
            _totalFeesToContract > 0 &&                         // LiquidityFee + MarketingFee > 0
            from != owner() &&                                  // Not from Owner
            to != owner()                                       // Not to Owner
        ) {
            collectFees();
        }

        // Take Fees 
        if(
            !(_isExcludedFromFees[from] || _isExcludedFromFees[to])
            && _totalFees > 0
        ) {
            
        	uint256 feesToContract = amount.mul(_totalFeesToContract).div(100);
            uint256 toBurnAmount = amount.mul(_burnFee).div(100);
            
        	amount = amount.sub(feesToContract.add(toBurnAmount)); 

            transferToken(from, address(this), feesToContract);
            transferToken(from, deadAddress, toBurnAmount);
            emit TokenBurn(from, toBurnAmount);
        }

        transferToken(from, to, amount);
    }
    
    function collectFees() private lockTheSwap {
        
        uint256 liquidityTokensToSell = balanceOf(address(this)).mul(_liquidityFee).div(_totalFeesToContract);
        uint256 marketingTokensToSell = balanceOf(address(this)).mul(_marketingFee).div(_totalFeesToContract);
        
        // Get collected Liquidity Fees 
        swapAndLiquify(liquidityTokensToSell);  

        // Get collected Marketing Fees 
        swapAndSendToFee(marketingTokensToSell); 
    }

    function swapAndLiquify(uint256 tokens) private {
       
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);

        // current ETH balance
        uint256 initialBalance = address(this).balance;

        swapTokensForEth(half); 

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        addLiquidity(otherHalf, newBalance);
    }

    function swapAndSendToFee(uint256 tokens) private  {

        swapTokensForMarketingToken(tokens);

        // Transfer sold Token to marketingWallet
        IERC20(marketingWalletToken).transfer(marketingAddress, IERC20(marketingWalletToken).balanceOf(address(this)));
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }

    function swapTokensForMarketingToken(uint256 tokenAmount) private {

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

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

        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }

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

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
}

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":"amount","type":"uint256"}],"name":"SetBurnFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SetLiquidityFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SetMarketingFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TokenBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquifyThreshhold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"newBurnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquifyThreshhold","type":"uint256"}],"name":"setLiquifyThreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"setMarketingFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWalletToken","type":"address"}],"name":"setMarketingWalletToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxBalance","type":"uint256"}],"name":"setMaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600c81526020017f5468756e646572566572736500000000000000000000000000000000000000008152506003908051906020019062000051929190620008ca565b506040518060400160405280600781526020017f5448554e44455200000000000000000000000000000000000000000000000000815250600490805190602001906200009f929190620008ca565b506009600560006101000a81548160ff021916908360ff160217905550600560009054906101000a900460ff16600a620000da919062000b3b565b6305f5e100620000eb919062000c78565b600655733d801ec779a2284aeee45d1f9ba3250a6af848c1600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001a557600080fd5b506000620001b86200083660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b657600080fd5b505afa158015620002cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f1919062000991565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035457600080fd5b505afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000991565b6040518363ffffffff1660e01b8152600401620003ae92919062000a06565b602060405180830381600087803b158015620003c957600080fd5b505af1158015620003de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000404919062000991565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006200049b6200083e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200055a6200083e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f8190555060056011819055506000601081905550620006ce601054620006ba601154600f546200086760201b62001dcb1790919060201c565b6200086760201b62001dcb1790919060201c565b600d81905550620006f2601154600f546200086760201b62001dcb1790919060201c565b600e81905550600560009054906101000a900460ff16600a62000716919062000b3b565b620f424062000726919062000c78565b601581905550600560009054906101000a900460ff16600a6200074a919062000b3b565b633b9aca006200075b919062000c78565b60128190555060065460096000620007786200083660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007c66200083660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000827919062000a55565b60405180910390a35062000e08565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000878919062000a83565b905083811015620008c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b79062000a33565b60405180910390fd5b8091505092915050565b828054620008d89062000d24565b90600052602060002090601f016020900481019282620008fc576000855562000948565b82601f106200091757805160ff191683800117855562000948565b8280016001018555821562000948579182015b82811115620009475782518255916020019190600101906200092a565b5b5090506200095791906200095b565b5090565b5b80821115620009765760008160009055506001016200095c565b5090565b6000815190506200098b8162000dee565b92915050565b600060208284031215620009a457600080fd5b6000620009b4848285016200097a565b91505092915050565b620009c88162000cd9565b82525050565b6000620009dd601b8362000a72565b9150620009ea8262000dc5565b602082019050919050565b62000a008162000d0d565b82525050565b600060408201905062000a1d6000830185620009bd565b62000a2c6020830184620009bd565b9392505050565b6000602082019050818103600083015262000a4e81620009ce565b9050919050565b600060208201905062000a6c6000830184620009f5565b92915050565b600082825260208201905092915050565b600062000a908262000d0d565b915062000a9d8362000d0d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ad55762000ad462000d5a565b5b828201905092915050565b6000808291508390505b600185111562000b325780860481111562000b0a5762000b0962000d5a565b5b600185161562000b1a5780820291505b808102905062000b2a8562000db8565b945062000aea565b94509492505050565b600062000b488262000d0d565b915062000b558362000d17565b925062000b847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b8c565b905092915050565b60008262000b9e576001905062000c71565b8162000bae576000905062000c71565b816001811462000bc7576002811462000bd25762000c08565b600191505062000c71565b60ff84111562000be75762000be662000d5a565b5b8360020a91508482111562000c015762000c0062000d5a565b5b5062000c71565b5060208310610133831016604e8410600b841016171562000c425782820a90508381111562000c3c5762000c3b62000d5a565b5b62000c71565b62000c51848484600162000ae0565b9250905081840481111562000c6b5762000c6a62000d5a565b5b81810290505b9392505050565b600062000c858262000d0d565b915062000c928362000d0d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cce5762000ccd62000d5a565b5b828202905092915050565b600062000ce68262000ced565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000d3d57607f821691505b6020821081141562000d545762000d5362000d89565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000df98162000cd9565b811462000e0557600080fd5b50565b6142f88062000e186000396000f3fe6080604052600436106102345760003560e01c806370a082311161012e578063a457c2d7116100ab578063e5148bd61161006f578063e5148bd614610870578063e57f14e11461089b578063e83e34b1146108c4578063f2fde38b146108ef578063fce589d8146109185761023b565b8063a457c2d714610765578063a5ece941146107a2578063a9059cbb146107cd578063cea269581461080a578063dd62ed3e146108335761023b565b8063906e9dd0116100f2578063906e9dd01461069457806395d89b41146106bd57806398118cb4146106e85780639b3d39b0146107135780639d51d9b71461073c5761023b565b806370a08231146105c1578063715018a6146105fe57806373ad468a146106155780638da5cb5b146106405780638ee88c531461066b5761023b565b80632b151cfe116101bc57806349bd5a5e1161018057806349bd5a5e146104da5780634fbee193146105055780635e8bc4bc146105425780635eb10c941461056d5780636b67c4df146105965761023b565b80632b151cfe146103f75780632b9a9ca314610420578063313ce567146104495780633950935114610474578063457c194c146104b15761023b565b806316a2f82a1161020357806316a2f82a146102fe57806318160ddd14610327578063181cec1c1461035257806323b872dd1461038f57806327c8f835146103cc5761023b565b806306fdde0314610240578063095ea7b31461026b57806313114a9d146102a85780631694505e146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610943565b604051610262919061398b565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906134b5565b6109d5565b60405161029f9190613955565b60405180910390f35b3480156102b457600080fd5b506102bd6109f3565b6040516102ca9190613b2d565b60405180910390f35b3480156102df57600080fd5b506102e86109fd565b6040516102f59190613970565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906133af565b610a23565b005b34801561033357600080fd5b5061033c610b13565b6040516103499190613b2d565b60405180910390f35b34801561035e57600080fd5b50610379600480360381019061037491906133af565b610b1d565b6040516103869190613955565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190613466565b610b73565b6040516103c39190613955565b60405180910390f35b3480156103d857600080fd5b506103e1610c4c565b6040516103ee9190613895565b60405180910390f35b34801561040357600080fd5b5061041e600480360381019061041991906133af565b610c52565b005b34801561042c57600080fd5b506104476004803603810190610442919061351a565b610d42565b005b34801561045557600080fd5b5061045e610de1565b60405161046b9190613ba2565b60405180910390f35b34801561048057600080fd5b5061049b600480360381019061049691906134b5565b610df8565b6040516104a89190613955565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d3919061351a565b610eab565b005b3480156104e657600080fd5b506104ef611021565b6040516104fc9190613895565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906133af565b611047565b6040516105399190613955565b60405180910390f35b34801561054e57600080fd5b5061055761109d565b6040516105649190613b2d565b60405180910390f35b34801561057957600080fd5b50610594600480360381019061058f91906133af565b6110a7565b005b3480156105a257600080fd5b506105ab611197565b6040516105b89190613b2d565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e391906133af565b6111a1565b6040516105f59190613b2d565b60405180910390f35b34801561060a57600080fd5b506106136111ea565b005b34801561062157600080fd5b5061062a61133d565b6040516106379190613b2d565b60405180910390f35b34801561064c57600080fd5b50610655611347565b6040516106629190613895565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d919061351a565b611370565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190613401565b611552565b005b3480156106c957600080fd5b506106d261162b565b6040516106df919061398b565b60405180910390f35b3480156106f457600080fd5b506106fd6116bd565b60405161070a9190613b2d565b60405180910390f35b34801561071f57600080fd5b5061073a600480360381019061073591906133af565b6116c7565b005b34801561074857600080fd5b50610763600480360381019061075e919061351a565b6117a0565b005b34801561077157600080fd5b5061078c600480360381019061078791906134b5565b61183f565b6040516107999190613955565b60405180910390f35b3480156107ae57600080fd5b506107b761190c565b6040516107c491906138b0565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef91906134b5565b611932565b6040516108019190613955565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c919061351a565b611950565b005b34801561083f57600080fd5b5061085a6004803603810190610855919061342a565b611a59565b6040516108679190613b2d565b60405180910390f35b34801561087c57600080fd5b50610885611ae0565b6040516108929190613895565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd91906133af565b611b06565b005b3480156108d057600080fd5b506108d9611bf6565b6040516108e69190613b2d565b60405180910390f35b3480156108fb57600080fd5b50610916600480360381019061091191906133af565b611bff565b005b34801561092457600080fd5b5061092d611dc1565b60405161093a9190613b2d565b60405180910390f35b60606003805461095290613e2d565b80601f016020809104026020016040519081016040528092919081815260200182805461097e90613e2d565b80156109cb5780601f106109a0576101008083540402835291602001916109cb565b820191906000526020600020905b8154815290600101906020018083116109ae57829003601f168201915b5050505050905090565b60006109e96109e2611e29565b8484611e31565b6001905092915050565b6000600d54905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a2b611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf90613a8d565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600654905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610b80848484611ffc565b610c4184610b8c611e29565b610c3c8560405180606001604052806028815260200161427660289139600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bf2611e29565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125179092919063ffffffff16565b611e31565b600190509392505050565b61dead81565b610c5a611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90613a8d565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d4a611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce90613a8d565b60405180910390fd5b8060158190555050565b6000600560009054906101000a900460ff16905090565b6000610ea1610e05611e29565b84610e9c85600a6000610e16611e29565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcb90919063ffffffff16565b611e31565b6001905092915050565b610eb3611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3790613a8d565b60405180910390fd5b601660009054906101000a900460ff1615610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790613a2d565b60405180910390fd5b80601181905550610fc2601054610fb4601154600f54611dcb90919063ffffffff16565b611dcb90919063ffffffff16565b600d81905550610fdf601154600f54611dcb90919063ffffffff16565b600e819055507f11792e2e76dd20b61339ffd931c063e7b4f828123d6d257c8d0668279e69c7666011546040516110169190613b2d565b60405180910390a150565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601554905090565b6110af611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390613a8d565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601154905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111f2611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690613a8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000601254905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611378611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613a8d565b60405180910390fd5b601660009054906101000a900460ff1615611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90613a2d565b60405180910390fd5b600a61148060115461147260105485611dcb90919063ffffffff16565b611dcb90919063ffffffff16565b11156114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890613a4d565b60405180910390fd5b80600f819055506114f36010546114e5601154600f54611dcb90919063ffffffff16565b611dcb90919063ffffffff16565b600d81905550611510601154600f54611dcb90919063ffffffff16565b600e819055507f9715f273db467af4f604be854ced5f63c93d0132583300aef64376e17685b52d600f546040516115479190613b2d565b60405180910390a150565b61155a611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90613a8d565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606004805461163a90613e2d565b80601f016020809104026020016040519081016040528092919081815260200182805461166690613e2d565b80156116b35780601f10611688576101008083540402835291602001916116b3565b820191906000526020600020905b81548152906001019060200180831161169657829003601f168201915b5050505050905090565b6000600f54905090565b6116cf611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390613a8d565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117a8611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c90613a8d565b60405180910390fd5b8060128190555050565b600061190261184c611e29565b846118fd8560405180606001604052806025815260200161429e60259139600a6000611876611e29565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125179092919063ffffffff16565b611e31565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061194661193f611e29565b8484611ffc565b6001905092915050565b611958611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613a8d565b60405180910390fd5b80601081905550611a17601054611a09601154600f54611dcb90919063ffffffff16565b611dcb90919063ffffffff16565b600d819055507f0476fcc77110b6ac2d8f2dd346f80d2c5cda54dae5c6ddd6f82b603a4d9b9dc9601054604051611a4e9190613b2d565b60405180910390a150565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b0e611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9290613a8d565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a905090565b611c07611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613a8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb906139cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601054905090565b6000808284611dda9190613c12565b905083811015611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690613a0d565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890613b0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f08906139ed565b60405180910390fd5b80600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fef9190613b2d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613acd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d3906139ad565b60405180910390fd5b6000811161211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690613aad565b60405180910390fd5b612127611347565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121955750612165611347565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121eb5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122505760125461220e82612200856111a1565b611dcb90919063ffffffff16565b111561224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224690613aed565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156122ba5750601660009054906101000a900460ff16155b80156122d057506015546122cd306111a1565b10155b80156122de57506000600e54115b801561231d57506122ed611347565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561235c575061232c611347565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561236a5761236961257b565b5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061240b5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15801561241a57506000600d54115b15612507576000612449606461243b600e548561263190919063ffffffff16565b6126ac90919063ffffffff16565b9050600061247560646124676010548661263190919063ffffffff16565b6126ac90919063ffffffff16565b905061249c61248d8284611dcb90919063ffffffff16565b846126f690919063ffffffff16565b92506124a9853084612740565b6124b68561dead83612740565b8473ffffffffffffffffffffffffffffffffffffffff167fab85194d35c4ea153d0b51f3a304d1d22cb8023e499a6503fb6c28c5864ae90e826040516124fc9190613b2d565b60405180910390a250505b612512838383612740565b505050565b600083831115829061255f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612556919061398b565b60405180910390fd5b506000838561256e9190613cf3565b9050809150509392505050565b6001601660006101000a81548160ff02191690831515021790555060006125c9600e546125bb600f546125ad306111a1565b61263190919063ffffffff16565b6126ac90919063ffffffff16565b905060006125fe600e546125f06011546125e2306111a1565b61263190919063ffffffff16565b6126ac90919063ffffffff16565b9050612609826129ce565b61261281612a33565b50506000601660006101000a81548160ff021916908315150217905550565b60008083141561264457600090506126a6565b600082846126529190613c99565b90508284826126619190613c68565b146126a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269890613a6d565b60405180910390fd5b809150505b92915050565b60006126ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bbb565b905092915050565b600061273883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612517565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a790613acd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612817906139ad565b60405180910390fd5b61288c8160405180606001604052806026815260200161425060269139600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125179092919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292181600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcb90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129c19190613b2d565b60405180910390a3505050565b60006129e46002836126ac90919063ffffffff16565b905060006129fb82846126f690919063ffffffff16565b90506000479050612a0b83612c1e565b6000612a2082476126f690919063ffffffff16565b9050612a2c8382612ee2565b5050505050565b612a3c81612fd6565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612af89190613895565b60206040518083038186803b158015612b1057600080fd5b505afa158015612b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b489190613543565b6040518363ffffffff1660e01b8152600401612b659291906138cb565b602060405180830381600087803b158015612b7f57600080fd5b505af1158015612b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb791906134f1565b5050565b60008083118290612c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf9919061398b565b60405180910390fd5b5060008385612c119190613c68565b9050809150509392505050565b6000600267ffffffffffffffff811115612c61577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612c8f5781602001602082028036833780820191505090505b5090503081600081518110612ccd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d6f57600080fd5b505afa158015612d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da791906133d8565b81600181518110612de1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e4830601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e31565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612eac959493929190613b48565b600060405180830381600087803b158015612ec657600080fd5b505af1158015612eda573d6000803e3d6000fd5b505050505050565b612f0f30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e31565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612f5b611347565b426040518863ffffffff1660e01b8152600401612f7d969594939291906138f4565b6060604051808303818588803b158015612f9657600080fd5b505af1158015612faa573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fcf919061356c565b5050505050565b6000600367ffffffffffffffff811115613019577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156130475781602001602082028036833780820191505090505b5090503081600081518110613085577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561312757600080fd5b505afa15801561313b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315f91906133d8565b81600181518110613199577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600281518110613230577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061329730601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e31565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b81526004016132fb959493929190613b48565b600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b505050505050565b600081359050613340816141f3565b92915050565b600081519050613355816141f3565b92915050565b60008135905061336a8161420a565b92915050565b60008151905061337f81614221565b92915050565b60008135905061339481614238565b92915050565b6000815190506133a981614238565b92915050565b6000602082840312156133c157600080fd5b60006133cf84828501613331565b91505092915050565b6000602082840312156133ea57600080fd5b60006133f884828501613346565b91505092915050565b60006020828403121561341357600080fd5b60006134218482850161335b565b91505092915050565b6000806040838503121561343d57600080fd5b600061344b85828601613331565b925050602061345c85828601613331565b9150509250929050565b60008060006060848603121561347b57600080fd5b600061348986828701613331565b935050602061349a86828701613331565b92505060406134ab86828701613385565b9150509250925092565b600080604083850312156134c857600080fd5b60006134d685828601613331565b92505060206134e785828601613385565b9150509250929050565b60006020828403121561350357600080fd5b600061351184828501613370565b91505092915050565b60006020828403121561352c57600080fd5b600061353a84828501613385565b91505092915050565b60006020828403121561355557600080fd5b60006135638482850161339a565b91505092915050565b60008060006060848603121561358157600080fd5b600061358f8682870161339a565b93505060206135a08682870161339a565b92505060406135b18682870161339a565b9150509250925092565b60006135c783836135f1565b60208301905092915050565b6135dc81613d8e565b82525050565b6135eb81613d39565b82525050565b6135fa81613d27565b82525050565b61360981613d27565b82525050565b600061361a82613bcd565b6136248185613bf0565b935061362f83613bbd565b8060005b8381101561366057815161364788826135bb565b975061365283613be3565b925050600181019050613633565b5085935050505092915050565b61367681613d4b565b82525050565b61368581613da0565b82525050565b61369481613dc4565b82525050565b60006136a582613bd8565b6136af8185613c01565b93506136bf818560208601613dfa565b6136c881613eec565b840191505092915050565b60006136e0602383613c01565b91506136eb82613efd565b604082019050919050565b6000613703602683613c01565b915061370e82613f4c565b604082019050919050565b6000613726602283613c01565b915061373182613f9b565b604082019050919050565b6000613749601b83613c01565b915061375482613fea565b602082019050919050565b600061376c601083613c01565b915061377782614013565b602082019050919050565b600061378f601283613c01565b915061379a8261403c565b602082019050919050565b60006137b2602183613c01565b91506137bd82614065565b604082019050919050565b60006137d5602083613c01565b91506137e0826140b4565b602082019050919050565b60006137f8602983613c01565b9150613803826140dd565b604082019050919050565b600061381b602583613c01565b91506138268261412c565b604082019050919050565b600061383e601783613c01565b91506138498261417b565b602082019050919050565b6000613861602483613c01565b915061386c826141a4565b604082019050919050565b61388081613d77565b82525050565b61388f81613d81565b82525050565b60006020820190506138aa6000830184613600565b92915050565b60006020820190506138c560008301846135e2565b92915050565b60006040820190506138e060008301856135d3565b6138ed6020830184613877565b9392505050565b600060c0820190506139096000830189613600565b6139166020830188613877565b613923604083018761368b565b613930606083018661368b565b61393d6080830185613600565b61394a60a0830184613877565b979650505050505050565b600060208201905061396a600083018461366d565b92915050565b6000602082019050613985600083018461367c565b92915050565b600060208201905081810360008301526139a5818461369a565b905092915050565b600060208201905081810360008301526139c6816136d3565b9050919050565b600060208201905081810360008301526139e6816136f6565b9050919050565b60006020820190508181036000830152613a0681613719565b9050919050565b60006020820190508181036000830152613a268161373c565b9050919050565b60006020820190508181036000830152613a468161375f565b9050919050565b60006020820190508181036000830152613a6681613782565b9050919050565b60006020820190508181036000830152613a86816137a5565b9050919050565b60006020820190508181036000830152613aa6816137c8565b9050919050565b60006020820190508181036000830152613ac6816137eb565b9050919050565b60006020820190508181036000830152613ae68161380e565b9050919050565b60006020820190508181036000830152613b0681613831565b9050919050565b60006020820190508181036000830152613b2681613854565b9050919050565b6000602082019050613b426000830184613877565b92915050565b600060a082019050613b5d6000830188613877565b613b6a602083018761368b565b8181036040830152613b7c818661360f565b9050613b8b6060830185613600565b613b986080830184613877565b9695505050505050565b6000602082019050613bb76000830184613886565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c1d82613d77565b9150613c2883613d77565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c5d57613c5c613e5f565b5b828201905092915050565b6000613c7382613d77565b9150613c7e83613d77565b925082613c8e57613c8d613e8e565b5b828204905092915050565b6000613ca482613d77565b9150613caf83613d77565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ce857613ce7613e5f565b5b828202905092915050565b6000613cfe82613d77565b9150613d0983613d77565b925082821015613d1c57613d1b613e5f565b5b828203905092915050565b6000613d3282613d57565b9050919050565b6000613d4482613d57565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613d9982613dd6565b9050919050565b6000613dab82613db2565b9050919050565b6000613dbd82613d57565b9050919050565b6000613dcf82613d77565b9050919050565b6000613de182613de8565b9050919050565b6000613df382613d57565b9050919050565b60005b83811015613e18578082015181840152602081019050613dfd565b83811115613e27576000848401525b50505050565b60006002820490506001821680613e4557607f821691505b60208210811415613e5957613e58613ebd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f696e53776170416e644c69717569667900000000000000000000000000000000600082015250565b7f466565732061726520746f6f20686967682e0000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782042616c616e636520697320726561636865642e000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6141fc81613d27565b811461420757600080fd5b50565b61421381613d39565b811461421e57600080fd5b50565b61422a81613d4b565b811461423557600080fd5b50565b61424181613d77565b811461424c57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205a081879768069597b72ed2c7d1c7df85bb27c5601318f235509cd8da6423dda64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102345760003560e01c806370a082311161012e578063a457c2d7116100ab578063e5148bd61161006f578063e5148bd614610870578063e57f14e11461089b578063e83e34b1146108c4578063f2fde38b146108ef578063fce589d8146109185761023b565b8063a457c2d714610765578063a5ece941146107a2578063a9059cbb146107cd578063cea269581461080a578063dd62ed3e146108335761023b565b8063906e9dd0116100f2578063906e9dd01461069457806395d89b41146106bd57806398118cb4146106e85780639b3d39b0146107135780639d51d9b71461073c5761023b565b806370a08231146105c1578063715018a6146105fe57806373ad468a146106155780638da5cb5b146106405780638ee88c531461066b5761023b565b80632b151cfe116101bc57806349bd5a5e1161018057806349bd5a5e146104da5780634fbee193146105055780635e8bc4bc146105425780635eb10c941461056d5780636b67c4df146105965761023b565b80632b151cfe146103f75780632b9a9ca314610420578063313ce567146104495780633950935114610474578063457c194c146104b15761023b565b806316a2f82a1161020357806316a2f82a146102fe57806318160ddd14610327578063181cec1c1461035257806323b872dd1461038f57806327c8f835146103cc5761023b565b806306fdde0314610240578063095ea7b31461026b57806313114a9d146102a85780631694505e146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610943565b604051610262919061398b565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906134b5565b6109d5565b60405161029f9190613955565b60405180910390f35b3480156102b457600080fd5b506102bd6109f3565b6040516102ca9190613b2d565b60405180910390f35b3480156102df57600080fd5b506102e86109fd565b6040516102f59190613970565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906133af565b610a23565b005b34801561033357600080fd5b5061033c610b13565b6040516103499190613b2d565b60405180910390f35b34801561035e57600080fd5b50610379600480360381019061037491906133af565b610b1d565b6040516103869190613955565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190613466565b610b73565b6040516103c39190613955565b60405180910390f35b3480156103d857600080fd5b506103e1610c4c565b6040516103ee9190613895565b60405180910390f35b34801561040357600080fd5b5061041e600480360381019061041991906133af565b610c52565b005b34801561042c57600080fd5b506104476004803603810190610442919061351a565b610d42565b005b34801561045557600080fd5b5061045e610de1565b60405161046b9190613ba2565b60405180910390f35b34801561048057600080fd5b5061049b600480360381019061049691906134b5565b610df8565b6040516104a89190613955565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d3919061351a565b610eab565b005b3480156104e657600080fd5b506104ef611021565b6040516104fc9190613895565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906133af565b611047565b6040516105399190613955565b60405180910390f35b34801561054e57600080fd5b5061055761109d565b6040516105649190613b2d565b60405180910390f35b34801561057957600080fd5b50610594600480360381019061058f91906133af565b6110a7565b005b3480156105a257600080fd5b506105ab611197565b6040516105b89190613b2d565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e391906133af565b6111a1565b6040516105f59190613b2d565b60405180910390f35b34801561060a57600080fd5b506106136111ea565b005b34801561062157600080fd5b5061062a61133d565b6040516106379190613b2d565b60405180910390f35b34801561064c57600080fd5b50610655611347565b6040516106629190613895565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d919061351a565b611370565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190613401565b611552565b005b3480156106c957600080fd5b506106d261162b565b6040516106df919061398b565b60405180910390f35b3480156106f457600080fd5b506106fd6116bd565b60405161070a9190613b2d565b60405180910390f35b34801561071f57600080fd5b5061073a600480360381019061073591906133af565b6116c7565b005b34801561074857600080fd5b50610763600480360381019061075e919061351a565b6117a0565b005b34801561077157600080fd5b5061078c600480360381019061078791906134b5565b61183f565b6040516107999190613955565b60405180910390f35b3480156107ae57600080fd5b506107b761190c565b6040516107c491906138b0565b60405180910390f35b3480156107d957600080fd5b506107f460048036038101906107ef91906134b5565b611932565b6040516108019190613955565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c919061351a565b611950565b005b34801561083f57600080fd5b5061085a6004803603810190610855919061342a565b611a59565b6040516108679190613b2d565b60405180910390f35b34801561087c57600080fd5b50610885611ae0565b6040516108929190613895565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd91906133af565b611b06565b005b3480156108d057600080fd5b506108d9611bf6565b6040516108e69190613b2d565b60405180910390f35b3480156108fb57600080fd5b50610916600480360381019061091191906133af565b611bff565b005b34801561092457600080fd5b5061092d611dc1565b60405161093a9190613b2d565b60405180910390f35b60606003805461095290613e2d565b80601f016020809104026020016040519081016040528092919081815260200182805461097e90613e2d565b80156109cb5780601f106109a0576101008083540402835291602001916109cb565b820191906000526020600020905b8154815290600101906020018083116109ae57829003601f168201915b5050505050905090565b60006109e96109e2611e29565b8484611e31565b6001905092915050565b6000600d54905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a2b611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf90613a8d565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600654905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610b80848484611ffc565b610c4184610b8c611e29565b610c3c8560405180606001604052806028815260200161427660289139600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bf2611e29565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125179092919063ffffffff16565b611e31565b600190509392505050565b61dead81565b610c5a611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90613a8d565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d4a611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce90613a8d565b60405180910390fd5b8060158190555050565b6000600560009054906101000a900460ff16905090565b6000610ea1610e05611e29565b84610e9c85600a6000610e16611e29565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcb90919063ffffffff16565b611e31565b6001905092915050565b610eb3611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3790613a8d565b60405180910390fd5b601660009054906101000a900460ff1615610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790613a2d565b60405180910390fd5b80601181905550610fc2601054610fb4601154600f54611dcb90919063ffffffff16565b611dcb90919063ffffffff16565b600d81905550610fdf601154600f54611dcb90919063ffffffff16565b600e819055507f11792e2e76dd20b61339ffd931c063e7b4f828123d6d257c8d0668279e69c7666011546040516110169190613b2d565b60405180910390a150565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601554905090565b6110af611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390613a8d565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601154905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111f2611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690613a8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000601254905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611378611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613a8d565b60405180910390fd5b601660009054906101000a900460ff1615611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90613a2d565b60405180910390fd5b600a61148060115461147260105485611dcb90919063ffffffff16565b611dcb90919063ffffffff16565b11156114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890613a4d565b60405180910390fd5b80600f819055506114f36010546114e5601154600f54611dcb90919063ffffffff16565b611dcb90919063ffffffff16565b600d81905550611510601154600f54611dcb90919063ffffffff16565b600e819055507f9715f273db467af4f604be854ced5f63c93d0132583300aef64376e17685b52d600f546040516115479190613b2d565b60405180910390a150565b61155a611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90613a8d565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606004805461163a90613e2d565b80601f016020809104026020016040519081016040528092919081815260200182805461166690613e2d565b80156116b35780601f10611688576101008083540402835291602001916116b3565b820191906000526020600020905b81548152906001019060200180831161169657829003601f168201915b5050505050905090565b6000600f54905090565b6116cf611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175390613a8d565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117a8611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c90613a8d565b60405180910390fd5b8060128190555050565b600061190261184c611e29565b846118fd8560405180606001604052806025815260200161429e60259139600a6000611876611e29565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125179092919063ffffffff16565b611e31565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061194661193f611e29565b8484611ffc565b6001905092915050565b611958611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613a8d565b60405180910390fd5b80601081905550611a17601054611a09601154600f54611dcb90919063ffffffff16565b611dcb90919063ffffffff16565b600d819055507f0476fcc77110b6ac2d8f2dd346f80d2c5cda54dae5c6ddd6f82b603a4d9b9dc9601054604051611a4e9190613b2d565b60405180910390a150565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b0e611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9290613a8d565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a905090565b611c07611e29565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613a8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb906139cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601054905090565b6000808284611dda9190613c12565b905083811015611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690613a0d565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9890613b0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f08906139ed565b60405180910390fd5b80600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fef9190613b2d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613acd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d3906139ad565b60405180910390fd5b6000811161211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690613aad565b60405180910390fd5b612127611347565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121955750612165611347565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121eb5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122505760125461220e82612200856111a1565b611dcb90919063ffffffff16565b111561224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224690613aed565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156122ba5750601660009054906101000a900460ff16155b80156122d057506015546122cd306111a1565b10155b80156122de57506000600e54115b801561231d57506122ed611347565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561235c575061232c611347565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561236a5761236961257b565b5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061240b5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15801561241a57506000600d54115b15612507576000612449606461243b600e548561263190919063ffffffff16565b6126ac90919063ffffffff16565b9050600061247560646124676010548661263190919063ffffffff16565b6126ac90919063ffffffff16565b905061249c61248d8284611dcb90919063ffffffff16565b846126f690919063ffffffff16565b92506124a9853084612740565b6124b68561dead83612740565b8473ffffffffffffffffffffffffffffffffffffffff167fab85194d35c4ea153d0b51f3a304d1d22cb8023e499a6503fb6c28c5864ae90e826040516124fc9190613b2d565b60405180910390a250505b612512838383612740565b505050565b600083831115829061255f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612556919061398b565b60405180910390fd5b506000838561256e9190613cf3565b9050809150509392505050565b6001601660006101000a81548160ff02191690831515021790555060006125c9600e546125bb600f546125ad306111a1565b61263190919063ffffffff16565b6126ac90919063ffffffff16565b905060006125fe600e546125f06011546125e2306111a1565b61263190919063ffffffff16565b6126ac90919063ffffffff16565b9050612609826129ce565b61261281612a33565b50506000601660006101000a81548160ff021916908315150217905550565b60008083141561264457600090506126a6565b600082846126529190613c99565b90508284826126619190613c68565b146126a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269890613a6d565b60405180910390fd5b809150505b92915050565b60006126ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bbb565b905092915050565b600061273883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612517565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a790613acd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612817906139ad565b60405180910390fd5b61288c8160405180606001604052806026815260200161425060269139600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125179092919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292181600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcb90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129c19190613b2d565b60405180910390a3505050565b60006129e46002836126ac90919063ffffffff16565b905060006129fb82846126f690919063ffffffff16565b90506000479050612a0b83612c1e565b6000612a2082476126f690919063ffffffff16565b9050612a2c8382612ee2565b5050505050565b612a3c81612fd6565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612af89190613895565b60206040518083038186803b158015612b1057600080fd5b505afa158015612b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b489190613543565b6040518363ffffffff1660e01b8152600401612b659291906138cb565b602060405180830381600087803b158015612b7f57600080fd5b505af1158015612b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb791906134f1565b5050565b60008083118290612c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf9919061398b565b60405180910390fd5b5060008385612c119190613c68565b9050809150509392505050565b6000600267ffffffffffffffff811115612c61577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612c8f5781602001602082028036833780820191505090505b5090503081600081518110612ccd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d6f57600080fd5b505afa158015612d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da791906133d8565b81600181518110612de1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e4830601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e31565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612eac959493929190613b48565b600060405180830381600087803b158015612ec657600080fd5b505af1158015612eda573d6000803e3d6000fd5b505050505050565b612f0f30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e31565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612f5b611347565b426040518863ffffffff1660e01b8152600401612f7d969594939291906138f4565b6060604051808303818588803b158015612f9657600080fd5b505af1158015612faa573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fcf919061356c565b5050505050565b6000600367ffffffffffffffff811115613019577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156130475781602001602082028036833780820191505090505b5090503081600081518110613085577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561312757600080fd5b505afa15801561313b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315f91906133d8565b81600181518110613199577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600281518110613230577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061329730601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e31565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b81526004016132fb959493929190613b48565b600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b505050505050565b600081359050613340816141f3565b92915050565b600081519050613355816141f3565b92915050565b60008135905061336a8161420a565b92915050565b60008151905061337f81614221565b92915050565b60008135905061339481614238565b92915050565b6000815190506133a981614238565b92915050565b6000602082840312156133c157600080fd5b60006133cf84828501613331565b91505092915050565b6000602082840312156133ea57600080fd5b60006133f884828501613346565b91505092915050565b60006020828403121561341357600080fd5b60006134218482850161335b565b91505092915050565b6000806040838503121561343d57600080fd5b600061344b85828601613331565b925050602061345c85828601613331565b9150509250929050565b60008060006060848603121561347b57600080fd5b600061348986828701613331565b935050602061349a86828701613331565b92505060406134ab86828701613385565b9150509250925092565b600080604083850312156134c857600080fd5b60006134d685828601613331565b92505060206134e785828601613385565b9150509250929050565b60006020828403121561350357600080fd5b600061351184828501613370565b91505092915050565b60006020828403121561352c57600080fd5b600061353a84828501613385565b91505092915050565b60006020828403121561355557600080fd5b60006135638482850161339a565b91505092915050565b60008060006060848603121561358157600080fd5b600061358f8682870161339a565b93505060206135a08682870161339a565b92505060406135b18682870161339a565b9150509250925092565b60006135c783836135f1565b60208301905092915050565b6135dc81613d8e565b82525050565b6135eb81613d39565b82525050565b6135fa81613d27565b82525050565b61360981613d27565b82525050565b600061361a82613bcd565b6136248185613bf0565b935061362f83613bbd565b8060005b8381101561366057815161364788826135bb565b975061365283613be3565b925050600181019050613633565b5085935050505092915050565b61367681613d4b565b82525050565b61368581613da0565b82525050565b61369481613dc4565b82525050565b60006136a582613bd8565b6136af8185613c01565b93506136bf818560208601613dfa565b6136c881613eec565b840191505092915050565b60006136e0602383613c01565b91506136eb82613efd565b604082019050919050565b6000613703602683613c01565b915061370e82613f4c565b604082019050919050565b6000613726602283613c01565b915061373182613f9b565b604082019050919050565b6000613749601b83613c01565b915061375482613fea565b602082019050919050565b600061376c601083613c01565b915061377782614013565b602082019050919050565b600061378f601283613c01565b915061379a8261403c565b602082019050919050565b60006137b2602183613c01565b91506137bd82614065565b604082019050919050565b60006137d5602083613c01565b91506137e0826140b4565b602082019050919050565b60006137f8602983613c01565b9150613803826140dd565b604082019050919050565b600061381b602583613c01565b91506138268261412c565b604082019050919050565b600061383e601783613c01565b91506138498261417b565b602082019050919050565b6000613861602483613c01565b915061386c826141a4565b604082019050919050565b61388081613d77565b82525050565b61388f81613d81565b82525050565b60006020820190506138aa6000830184613600565b92915050565b60006020820190506138c560008301846135e2565b92915050565b60006040820190506138e060008301856135d3565b6138ed6020830184613877565b9392505050565b600060c0820190506139096000830189613600565b6139166020830188613877565b613923604083018761368b565b613930606083018661368b565b61393d6080830185613600565b61394a60a0830184613877565b979650505050505050565b600060208201905061396a600083018461366d565b92915050565b6000602082019050613985600083018461367c565b92915050565b600060208201905081810360008301526139a5818461369a565b905092915050565b600060208201905081810360008301526139c6816136d3565b9050919050565b600060208201905081810360008301526139e6816136f6565b9050919050565b60006020820190508181036000830152613a0681613719565b9050919050565b60006020820190508181036000830152613a268161373c565b9050919050565b60006020820190508181036000830152613a468161375f565b9050919050565b60006020820190508181036000830152613a6681613782565b9050919050565b60006020820190508181036000830152613a86816137a5565b9050919050565b60006020820190508181036000830152613aa6816137c8565b9050919050565b60006020820190508181036000830152613ac6816137eb565b9050919050565b60006020820190508181036000830152613ae68161380e565b9050919050565b60006020820190508181036000830152613b0681613831565b9050919050565b60006020820190508181036000830152613b2681613854565b9050919050565b6000602082019050613b426000830184613877565b92915050565b600060a082019050613b5d6000830188613877565b613b6a602083018761368b565b8181036040830152613b7c818661360f565b9050613b8b6060830185613600565b613b986080830184613877565b9695505050505050565b6000602082019050613bb76000830184613886565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c1d82613d77565b9150613c2883613d77565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c5d57613c5c613e5f565b5b828201905092915050565b6000613c7382613d77565b9150613c7e83613d77565b925082613c8e57613c8d613e8e565b5b828204905092915050565b6000613ca482613d77565b9150613caf83613d77565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ce857613ce7613e5f565b5b828202905092915050565b6000613cfe82613d77565b9150613d0983613d77565b925082821015613d1c57613d1b613e5f565b5b828203905092915050565b6000613d3282613d57565b9050919050565b6000613d4482613d57565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613d9982613dd6565b9050919050565b6000613dab82613db2565b9050919050565b6000613dbd82613d57565b9050919050565b6000613dcf82613d77565b9050919050565b6000613de182613de8565b9050919050565b6000613df382613d57565b9050919050565b60005b83811015613e18578082015181840152602081019050613dfd565b83811115613e27576000848401525b50505050565b60006002820490506001821680613e4557607f821691505b60208210811415613e5957613e58613ebd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f696e53776170416e644c69717569667900000000000000000000000000000000600082015250565b7f466565732061726520746f6f20686967682e0000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782042616c616e636520697320726561636865642e000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6141fc81613d27565b811461420757600080fd5b50565b61421381613d39565b811461421e57600080fd5b50565b61422a81613d4b565b811461423557600080fd5b50565b61424181613d77565b811461424c57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205a081879768069597b72ed2c7d1c7df85bb27c5601318f235509cd8da6423dda64736f6c63430008040033

Deployed Bytecode Sourcemap

14236:13191:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16904:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17742:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21594:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15543:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21056:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17181:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21176:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17911:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14927:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21325:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20310:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17090:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18232:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19709:367;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15591:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20794:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22073:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21462:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21790:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17289:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5898:148;;;;;;;;;;;;;:::i;:::-;;22182:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5673:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19232:469;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19080:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16995:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21689:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20462:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20617:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18458:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14740:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17416:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20084:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17591:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14840:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20931:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21982:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6054:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21891:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16904;16941:13;16974:5;16967:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16904:83;:::o;17742:161::-;17817:4;17834:39;17843:12;:10;:12::i;:::-;17857:7;17866:6;17834:8;:39::i;:::-;17891:4;17884:11;;17742:161;;;;:::o;21594:87::-;21636:7;21663:10;;21656:17;;21594:87;:::o;15543:41::-;;;;;;;;;;;;;:::o;21056:112::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21155:5:::1;21124:19;:28;21144:7;21124:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21056:112:::0;:::o;17181:100::-;17234:7;17261:12;;17254:19;;17181:100;:::o;21176:137::-;21247:4;21271:25;:34;21297:7;21271:34;;;;;;;;;;;;;;;;;;;;;;;;;21264:41;;21176:137;;;:::o;17911:313::-;18009:4;18026:36;18036:6;18044:9;18055:6;18026:9;:36::i;:::-;18073:121;18082:6;18090:12;:10;:12::i;:::-;18104:89;18142:6;18104:89;;;;;;;;;;;;;;;;;:11;:19;18116:6;18104:19;;;;;;;;;;;;;;;:33;18124:12;:10;:12::i;:::-;18104:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18073:8;:121::i;:::-;18212:4;18205:11;;17911:313;;;;;:::o;14927:80::-;14965:42;14927:80;:::o;21325:125::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21438:4:::1;21401:25;:34;21427:7;21401:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;21325:125:::0;:::o;20310:141::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20423:20:::1;20402:18;:41;;;;20310:141:::0;:::o;17090:83::-;17131:5;17156:9;;;;;;;;;;;17149:16;;17090:83;:::o;18232:218::-;18320:4;18337:83;18346:12;:10;:12::i;:::-;18360:7;18369:50;18408:10;18369:11;:25;18381:12;:10;:12::i;:::-;18369:25;;;;;;;;;;;;;;;:34;18395:7;18369:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18337:8;:83::i;:::-;18438:4;18431:11;;18232:218;;;;:::o;19709:367::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19807:16:::1;;;;;;;;;;;19806:17;19798:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;19871:15;19855:13;:31;;;;19910:46;19947:8;;19910:32;19928:13;;19910;;:17;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;19897:10;:59;;;;19990:32;20008:13;;19990;;:17;;:32;;;;:::i;:::-;19967:20;:55;;;;20038:30;20054:13;;20038:30;;;;;;:::i;:::-;;;;;;;;19709:367:::0;:::o;15591:28::-;;;;;;;;;;;;;:::o;20794:125::-;20859:4;20883:19;:28;20903:7;20883:28;;;;;;;;;;;;;;;;;;;;;;;;;20876:35;;20794:125;;;:::o;22073:101::-;22122:7;22148:18;;22141:25;;22073:101;:::o;21462:124::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21573:5:::1;21536:25;:34;21562:7;21536:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;21462:124:::0;:::o;21790:93::-;21835:7;21862:13;;21855:20;;21790:93;:::o;17289:119::-;17355:7;17382:9;:18;17392:7;17382:18;;;;;;;;;;;;;;;;17375:25;;17289:119;;;:::o;5898:148::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6005:1:::1;5968:40;;5989:6;::::0;::::1;;;;;;;;5968:40;;;;;;;;;;;;6036:1;6019:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5898:148::o:0;22182:89::-;22225:7;22252:11;;22245:18;;22182:89;:::o;5673:79::-;5711:7;5738:6;;;;;;;;;;;5731:13;;5673:79;:::o;19232:469::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19330:16:::1;;;;;;;;;;;19329:17;19321:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15313:2;19386:48;19420:13;;19386:29;19406:8;;19386:15;:19;;:29;;;;:::i;:::-;:33;;:48;;;;:::i;:::-;:60;;19378:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19496:15;19480:13;:31;;;;19535:46;19572:8;;19535:32;19553:13;;19535;;:17;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;19522:10;:59;;;;19615:32;19633:13;;19615;;:17;;:32;;;;:::i;:::-;19592:20;:55;;;;19663:30;19679:13;;19663:30;;;;;;:::i;:::-;;;;;;;;19232:469:::0;:::o;19080:144::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19197:19:::1;19178:16;;:38;;;;;;;;;;;;;;;;;;19080:144:::0;:::o;16995:87::-;17034:13;17067:7;17060:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16995:87;:::o;21689:93::-;21734:7;21761:13;;21754:20;;21689:93;:::o;20462:147::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20580:21:::1;20557:20;;:44;;;;;;;;;;;;;;;;;;20462:147:::0;:::o;20617:169::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20765:13:::1;20751:11;:27;;;;20617:169:::0;:::o;18458:269::-;18551:4;18568:129;18577:12;:10;:12::i;:::-;18591:7;18600:96;18639:15;18600:96;;;;;;;;;;;;;;;;;:11;:25;18612:12;:10;:12::i;:::-;18600:25;;;;;;;;;;;;;;;:34;18626:7;18600:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18568:8;:129::i;:::-;18715:4;18708:11;;18458:269;;;;:::o;14740:93::-;;;;;;;;;;;;;:::o;17416:167::-;17494:4;17511:42;17521:12;:10;:12::i;:::-;17535:9;17546:6;17511:9;:42::i;:::-;17571:4;17564:11;;17416:167;;;;:::o;20084:214::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20174:10:::1;20163:8;:21;;;;20208:46;20245:8;;20208:32;20226:13;;20208;;:17;;:32;;;;:::i;:::-;:36;;:46;;;;:::i;:::-;20195:10;:59;;;;20270:20;20281:8;;20270:20;;;;;;:::i;:::-;;;;;;;;20084:214:::0;:::o;17591:143::-;17672:7;17699:11;:18;17711:5;17699:18;;;;;;;;;;;;;;;:27;17718:7;17699:27;;;;;;;;;;;;;;;;17692:34;;17591:143;;;;:::o;14840:80::-;;;;;;;;;;;;;:::o;20931:113::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21032:4:::1;21001:19;:28;21021:7;21001:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;20931:113:::0;:::o;21982:83::-;22022:7;15313:2;22042:15;;21982:83;:::o;6054:244::-;5817:12;:10;:12::i;:::-;5807:22;;:6;;;;;;;;;;:22;;;5799:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6163:1:::1;6143:22;;:8;:22;;;;6135:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6253:8;6224:38;;6245:6;::::0;::::1;;;;;;;;6224:38;;;;;;;;;;;;6282:8;6273:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6054:244:::0;:::o;21891:83::-;21931:7;21958:8;;21951:15;;21891:83;:::o;1047:179::-;1105:7;1125:9;1141:1;1137;:5;;;;:::i;:::-;1125:17;;1166:1;1161;:6;;1153:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1217:1;1210:8;;;1047:179;;;;:::o;100:115::-;153:15;196:10;181:26;;100:115;:::o;18735:337::-;18845:1;18828:19;;:5;:19;;;;18820:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18926:1;18907:21;;:7;:21;;;;18899:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19010:6;18980:11;:18;18992:5;18980:18;;;;;;;;;;;;;;;:27;18999:7;18980:27;;;;;;;;;;;;;;;:36;;;;19048:7;19032:32;;19041:5;19032:32;;;19057:6;19032:32;;;;;;:::i;:::-;;;;;;;;18735:337;;;:::o;22281:2021::-;22419:1;22403:18;;:4;:18;;;;22395:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22496:1;22482:16;;:2;:16;;;;22474:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22566:1;22557:6;:10;22549:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22715:7;:5;:7::i;:::-;22707:15;;:4;:15;;;;:76;;;;;22776:7;:5;:7::i;:::-;22770:13;;:2;:13;;;;22707:76;:154;;;;;22832:25;:29;22858:2;22832:29;;;;;;;;;;;;;;;;;;;;;;;;;22831:30;22707:154;22690:364;;;22972:11;;22943:25;22961:6;22943:13;22953:2;22943:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:40;;22917:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;22690:364;23120:13;;;;;;;;;;;23114:19;;:2;:19;;;:90;;;;;23188:16;;;;;;;;;;;23187:17;23114:90;:206;;;;;23302:18;;23274:24;23292:4;23274:9;:24::i;:::-;:46;;23114:206;:281;;;;;23394:1;23371:20;;:24;23114:281;:372;;;;;23479:7;:5;:7::i;:::-;23471:15;;:4;:15;;;;23114:372;:453;;;;;23560:7;:5;:7::i;:::-;23554:13;;:2;:13;;;;23114:453;23097:576;;;23648:13;:11;:13::i;:::-;23097:576;23727:19;:25;23747:4;23727:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23756:19;:23;23776:2;23756:23;;;;;;;;;;;;;;;;;;;;;;;;;23727:52;23725:55;:86;;;;;23810:1;23797:10;;:14;23725:86;23708:543;;;23849:22;23874:41;23911:3;23874:32;23885:20;;23874:6;:10;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;23849:66;;23930:20;23953:29;23978:3;23953:20;23964:8;;23953:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;23930:52;;24017:44;24028:32;24047:12;24028:14;:18;;:32;;;;:::i;:::-;24017:6;:10;;:44;;;;:::i;:::-;24008:53;;24079:50;24093:4;24107;24114:14;24079:13;:50::i;:::-;24144:46;24158:4;14965:42;24177:12;24144:13;:46::i;:::-;24220:4;24210:29;;;24226:12;24210:29;;;;;;:::i;:::-;;;;;;;;23708:543;;;24263:31;24277:4;24283:2;24287:6;24263:13;:31::i;:::-;22281:2021;;;:::o;1378:190::-;1464:7;1497:1;1492;:6;;1500:12;1484:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1524:9;1540:1;1536;:5;;;;:::i;:::-;1524:17;;1559:1;1552:8;;;1378:190;;;;;:::o;24314:482::-;15754:4;15735:16;;:23;;;;;;;;;;;;;;;;;;24378:29:::1;24410:69;24458:20;;24410:43;24439:13;;24410:24;24428:4;24410:9;:24::i;:::-;:28;;:43;;;;:::i;:::-;:47;;:69;;;;:::i;:::-;24378:101;;24490:29;24522:69;24570:20;;24522:43;24551:13;;24522:24;24540:4;24522:9;:24::i;:::-;:28;;:43;;;;:::i;:::-;:47;;:69;;;;:::i;:::-;24490:101;;24654:37;24669:21;24654:14;:37::i;:::-;24748:39;24765:21;24748:16;:39::i;:::-;15769:1;;15800:5:::0;15781:16;;:24;;;;;;;;;;;;;;;;;;24314:482::o;1576:248::-;1634:7;1663:1;1658;:6;1654:47;;;1688:1;1681:8;;;;1654:47;1713:9;1729:1;1725;:5;;;;:::i;:::-;1713:17;;1758:1;1753;1749;:5;;;;:::i;:::-;:10;1741:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1815:1;1808:8;;;1576:248;;;;;:::o;1834:132::-;1892:7;1919:39;1923:1;1926;1919:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1912:46;;1834:132;;;;:::o;1234:136::-;1292:7;1319:43;1323:1;1326;1319:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1312:50;;1234:136;;;;:::o;26950:474::-;27069:1;27051:20;;:6;:20;;;;27043:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;27153:1;27132:23;;:9;:23;;;;27124:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27228;27250:6;27228:71;;;;;;;;;;;;;;;;;:9;:17;27238:6;27228:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;27208:9;:17;27218:6;27208:17;;;;;;;;;;;;;;;:91;;;;27333:32;27358:6;27333:9;:20;27343:9;27333:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;27310:9;:20;27320:9;27310:20;;;;;;;;;;;;;;;:55;;;;27398:9;27381:35;;27390:6;27381:35;;;27409:6;27381:35;;;;;;:::i;:::-;;;;;;;;26950:474;;;:::o;24804:449::-;24872:12;24887:13;24898:1;24887:6;:10;;:13;;;;:::i;:::-;24872:28;;24911:17;24931:16;24942:4;24931:6;:10;;:16;;;;:::i;:::-;24911:36;;24992:22;25017:21;24992:46;;25051:22;25068:4;25051:16;:22::i;:::-;25135:18;25156:41;25182:14;25156:21;:25;;:41;;;;:::i;:::-;25135:62;;25210:35;25223:9;25234:10;25210:12;:35::i;:::-;24804:449;;;;;:::o;25261:281::-;25325:35;25353:6;25325:27;:35::i;:::-;25431:20;;;;;;;;;;;25424:37;;;25462:16;;;;;;;;;;;25487:20;;;;;;;;;;;25480:38;;;25527:4;25480:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25424:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25261:281;:::o;1974:276::-;2060:7;2092:1;2088;:5;2095:12;2080:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2119:9;2135:1;2131;:5;;;;:::i;:::-;2119:17;;2241:1;2234:8;;;1974:276;;;;;:::o;25550:478::-;25618:21;25656:1;25642:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25618:40;;25687:4;25669;25674:1;25669:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;25713:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25703:4;25708:1;25703:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;25748:62;25765:4;25780:15;;;;;;;;;;;25798:11;25748:8;:62::i;:::-;25823:15;;;;;;;;;;;:66;;;25904:11;25930:1;25947:4;25974;25994:15;25823:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25550:478;;:::o;26576:366::-;26659:62;26676:4;26691:15;;;;;;;;;;;26709:11;26659:8;:62::i;:::-;26734:15;;;;;;;;;;;:31;;;26773:9;26806:4;26826:11;26852:1;26869;26886:7;:5;:7::i;:::-;26908:15;26734:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26576:366;;:::o;26036:532::-;26115:21;26153:1;26139:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26115:40;;26184:4;26166;26171:1;26166:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26210:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26200:4;26205:1;26200:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;26253:20;;;;;;;;;;;26243:4;26248:1;26243:7;;;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;26286:62;26303:4;26318:15;;;;;;;;;;;26336:11;26286:8;:62::i;:::-;26361:15;;;;;;;;;;;:69;;;26445:11;26471:1;26487:4;26514;26534:15;26361:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26036:532;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:407::-;1809:6;1817;1866:2;1854:9;1845:7;1841:23;1837:32;1834:2;;;1882:1;1879;1872:12;1834:2;1925:1;1950:53;1995:7;1986:6;1975:9;1971:22;1950:53;:::i;:::-;1940:63;;1896:117;2052:2;2078:53;2123:7;2114:6;2103:9;2099:22;2078:53;:::i;:::-;2068:63;;2023:118;1824:324;;;;;:::o;2154:552::-;2231:6;2239;2247;2296:2;2284:9;2275:7;2271:23;2267:32;2264:2;;;2312:1;2309;2302:12;2264:2;2355:1;2380:53;2425:7;2416:6;2405:9;2401:22;2380:53;:::i;:::-;2370:63;;2326:117;2482:2;2508:53;2553:7;2544:6;2533:9;2529:22;2508:53;:::i;:::-;2498:63;;2453:118;2610:2;2636:53;2681:7;2672:6;2661:9;2657:22;2636:53;:::i;:::-;2626:63;;2581:118;2254:452;;;;;:::o;2712:407::-;2780:6;2788;2837:2;2825:9;2816:7;2812:23;2808:32;2805:2;;;2853:1;2850;2843:12;2805:2;2896:1;2921:53;2966:7;2957:6;2946:9;2942:22;2921:53;:::i;:::-;2911:63;;2867:117;3023:2;3049:53;3094:7;3085:6;3074:9;3070:22;3049:53;:::i;:::-;3039:63;;2994:118;2795:324;;;;;:::o;3125:278::-;3192:6;3241:2;3229:9;3220:7;3216:23;3212:32;3209:2;;;3257:1;3254;3247:12;3209:2;3300:1;3325:61;3378:7;3369:6;3358:9;3354:22;3325:61;:::i;:::-;3315:71;;3271:125;3199:204;;;;:::o;3409:262::-;3468:6;3517:2;3505:9;3496:7;3492:23;3488:32;3485:2;;;3533:1;3530;3523:12;3485:2;3576:1;3601:53;3646:7;3637:6;3626:9;3622:22;3601:53;:::i;:::-;3591:63;;3547:117;3475:196;;;;:::o;3677:284::-;3747:6;3796:2;3784:9;3775:7;3771:23;3767:32;3764:2;;;3812:1;3809;3802:12;3764:2;3855:1;3880:64;3936:7;3927:6;3916:9;3912:22;3880:64;:::i;:::-;3870:74;;3826:128;3754:207;;;;:::o;3967:596::-;4055:6;4063;4071;4120:2;4108:9;4099:7;4095:23;4091:32;4088:2;;;4136:1;4133;4126:12;4088:2;4179:1;4204:64;4260:7;4251:6;4240:9;4236:22;4204:64;:::i;:::-;4194:74;;4150:128;4317:2;4343:64;4399:7;4390:6;4379:9;4375:22;4343:64;:::i;:::-;4333:74;;4288:129;4456:2;4482:64;4538:7;4529:6;4518:9;4514:22;4482:64;:::i;:::-;4472:74;;4427:129;4078:485;;;;;:::o;4569:179::-;4638:10;4659:46;4701:3;4693:6;4659:46;:::i;:::-;4737:4;4732:3;4728:14;4714:28;;4649:99;;;;:::o;4754:147::-;4849:45;4888:5;4849:45;:::i;:::-;4844:3;4837:58;4827:74;;:::o;4907:142::-;5010:32;5036:5;5010:32;:::i;:::-;5005:3;4998:45;4988:61;;:::o;5055:108::-;5132:24;5150:5;5132:24;:::i;:::-;5127:3;5120:37;5110:53;;:::o;5169:118::-;5256:24;5274:5;5256:24;:::i;:::-;5251:3;5244:37;5234:53;;:::o;5323:732::-;5442:3;5471:54;5519:5;5471:54;:::i;:::-;5541:86;5620:6;5615:3;5541:86;:::i;:::-;5534:93;;5651:56;5701:5;5651:56;:::i;:::-;5730:7;5761:1;5746:284;5771:6;5768:1;5765:13;5746:284;;;5847:6;5841:13;5874:63;5933:3;5918:13;5874:63;:::i;:::-;5867:70;;5960:60;6013:6;5960:60;:::i;:::-;5950:70;;5806:224;5793:1;5790;5786:9;5781:14;;5746:284;;;5750:14;6046:3;6039:10;;5447:608;;;;;;;:::o;6061:109::-;6142:21;6157:5;6142:21;:::i;:::-;6137:3;6130:34;6120:50;;:::o;6176:185::-;6290:64;6348:5;6290:64;:::i;:::-;6285:3;6278:77;6268:93;;:::o;6367:147::-;6462:45;6501:5;6462:45;:::i;:::-;6457:3;6450:58;6440:74;;:::o;6520:364::-;6608:3;6636:39;6669:5;6636:39;:::i;:::-;6691:71;6755:6;6750:3;6691:71;:::i;:::-;6684:78;;6771:52;6816:6;6811:3;6804:4;6797:5;6793:16;6771:52;:::i;:::-;6848:29;6870:6;6848:29;:::i;:::-;6843:3;6839:39;6832:46;;6612:272;;;;;:::o;6890:366::-;7032:3;7053:67;7117:2;7112:3;7053:67;:::i;:::-;7046:74;;7129:93;7218:3;7129:93;:::i;:::-;7247:2;7242:3;7238:12;7231:19;;7036:220;;;:::o;7262:366::-;7404:3;7425:67;7489:2;7484:3;7425:67;:::i;:::-;7418:74;;7501:93;7590:3;7501:93;:::i;:::-;7619:2;7614:3;7610:12;7603:19;;7408:220;;;:::o;7634:366::-;7776:3;7797:67;7861:2;7856:3;7797:67;:::i;:::-;7790:74;;7873:93;7962:3;7873:93;:::i;:::-;7991:2;7986:3;7982:12;7975:19;;7780:220;;;:::o;8006:366::-;8148:3;8169:67;8233:2;8228:3;8169:67;:::i;:::-;8162:74;;8245:93;8334:3;8245:93;:::i;:::-;8363:2;8358:3;8354:12;8347:19;;8152:220;;;:::o;8378:366::-;8520:3;8541:67;8605:2;8600:3;8541:67;:::i;:::-;8534:74;;8617:93;8706:3;8617:93;:::i;:::-;8735:2;8730:3;8726:12;8719:19;;8524:220;;;:::o;8750:366::-;8892:3;8913:67;8977:2;8972:3;8913:67;:::i;:::-;8906:74;;8989:93;9078:3;8989:93;:::i;:::-;9107:2;9102:3;9098:12;9091:19;;8896:220;;;:::o;9122:366::-;9264:3;9285:67;9349:2;9344:3;9285:67;:::i;:::-;9278:74;;9361:93;9450:3;9361:93;:::i;:::-;9479:2;9474:3;9470:12;9463:19;;9268:220;;;:::o;9494:366::-;9636:3;9657:67;9721:2;9716:3;9657:67;:::i;:::-;9650:74;;9733:93;9822:3;9733:93;:::i;:::-;9851:2;9846:3;9842:12;9835:19;;9640:220;;;:::o;9866:366::-;10008:3;10029:67;10093:2;10088:3;10029:67;:::i;:::-;10022:74;;10105:93;10194:3;10105:93;:::i;:::-;10223:2;10218:3;10214:12;10207:19;;10012:220;;;:::o;10238:366::-;10380:3;10401:67;10465:2;10460:3;10401:67;:::i;:::-;10394:74;;10477:93;10566:3;10477:93;:::i;:::-;10595:2;10590:3;10586:12;10579:19;;10384:220;;;:::o;10610:366::-;10752:3;10773:67;10837:2;10832:3;10773:67;:::i;:::-;10766:74;;10849:93;10938:3;10849:93;:::i;:::-;10967:2;10962:3;10958:12;10951:19;;10756:220;;;:::o;10982:366::-;11124:3;11145:67;11209:2;11204:3;11145:67;:::i;:::-;11138:74;;11221:93;11310:3;11221:93;:::i;:::-;11339:2;11334:3;11330:12;11323:19;;11128:220;;;:::o;11354:118::-;11441:24;11459:5;11441:24;:::i;:::-;11436:3;11429:37;11419:53;;:::o;11478:112::-;11561:22;11577:5;11561:22;:::i;:::-;11556:3;11549:35;11539:51;;:::o;11596:222::-;11689:4;11727:2;11716:9;11712:18;11704:26;;11740:71;11808:1;11797:9;11793:17;11784:6;11740:71;:::i;:::-;11694:124;;;;:::o;11824:254::-;11933:4;11971:2;11960:9;11956:18;11948:26;;11984:87;12068:1;12057:9;12053:17;12044:6;11984:87;:::i;:::-;11938:140;;;;:::o;12084:348::-;12213:4;12251:2;12240:9;12236:18;12228:26;;12264:79;12340:1;12329:9;12325:17;12316:6;12264:79;:::i;:::-;12353:72;12421:2;12410:9;12406:18;12397:6;12353:72;:::i;:::-;12218:214;;;;;:::o;12438:807::-;12687:4;12725:3;12714:9;12710:19;12702:27;;12739:71;12807:1;12796:9;12792:17;12783:6;12739:71;:::i;:::-;12820:72;12888:2;12877:9;12873:18;12864:6;12820:72;:::i;:::-;12902:80;12978:2;12967:9;12963:18;12954:6;12902:80;:::i;:::-;12992;13068:2;13057:9;13053:18;13044:6;12992:80;:::i;:::-;13082:73;13150:3;13139:9;13135:19;13126:6;13082:73;:::i;:::-;13165;13233:3;13222:9;13218:19;13209:6;13165:73;:::i;:::-;12692:553;;;;;;;;;:::o;13251:210::-;13338:4;13376:2;13365:9;13361:18;13353:26;;13389:65;13451:1;13440:9;13436:17;13427:6;13389:65;:::i;:::-;13343:118;;;;:::o;13467:276::-;13587:4;13625:2;13614:9;13610:18;13602:26;;13638:98;13733:1;13722:9;13718:17;13709:6;13638:98;:::i;:::-;13592:151;;;;:::o;13749:313::-;13862:4;13900:2;13889:9;13885:18;13877:26;;13949:9;13943:4;13939:20;13935:1;13924:9;13920:17;13913:47;13977:78;14050:4;14041:6;13977:78;:::i;:::-;13969:86;;13867:195;;;;:::o;14068:419::-;14234:4;14272:2;14261:9;14257:18;14249:26;;14321:9;14315:4;14311:20;14307:1;14296:9;14292:17;14285:47;14349:131;14475:4;14349:131;:::i;:::-;14341:139;;14239:248;;;:::o;14493:419::-;14659:4;14697:2;14686:9;14682:18;14674:26;;14746:9;14740:4;14736:20;14732:1;14721:9;14717:17;14710:47;14774:131;14900:4;14774:131;:::i;:::-;14766:139;;14664:248;;;:::o;14918:419::-;15084:4;15122:2;15111:9;15107:18;15099:26;;15171:9;15165:4;15161:20;15157:1;15146:9;15142:17;15135:47;15199:131;15325:4;15199:131;:::i;:::-;15191:139;;15089:248;;;:::o;15343:419::-;15509:4;15547:2;15536:9;15532:18;15524:26;;15596:9;15590:4;15586:20;15582:1;15571:9;15567:17;15560:47;15624:131;15750:4;15624:131;:::i;:::-;15616:139;;15514:248;;;:::o;15768:419::-;15934:4;15972:2;15961:9;15957:18;15949:26;;16021:9;16015:4;16011:20;16007:1;15996:9;15992:17;15985:47;16049:131;16175:4;16049:131;:::i;:::-;16041:139;;15939:248;;;:::o;16193:419::-;16359:4;16397:2;16386:9;16382:18;16374:26;;16446:9;16440:4;16436:20;16432:1;16421:9;16417:17;16410:47;16474:131;16600:4;16474:131;:::i;:::-;16466:139;;16364:248;;;:::o;16618:419::-;16784:4;16822:2;16811:9;16807:18;16799:26;;16871:9;16865:4;16861:20;16857:1;16846:9;16842:17;16835:47;16899:131;17025:4;16899:131;:::i;:::-;16891:139;;16789:248;;;:::o;17043:419::-;17209:4;17247:2;17236:9;17232:18;17224:26;;17296:9;17290:4;17286:20;17282:1;17271:9;17267:17;17260:47;17324:131;17450:4;17324:131;:::i;:::-;17316:139;;17214:248;;;:::o;17468:419::-;17634:4;17672:2;17661:9;17657:18;17649:26;;17721:9;17715:4;17711:20;17707:1;17696:9;17692:17;17685:47;17749:131;17875:4;17749:131;:::i;:::-;17741:139;;17639:248;;;:::o;17893:419::-;18059:4;18097:2;18086:9;18082:18;18074:26;;18146:9;18140:4;18136:20;18132:1;18121:9;18117:17;18110:47;18174:131;18300:4;18174:131;:::i;:::-;18166:139;;18064:248;;;:::o;18318:419::-;18484:4;18522:2;18511:9;18507:18;18499:26;;18571:9;18565:4;18561:20;18557:1;18546:9;18542:17;18535:47;18599:131;18725:4;18599:131;:::i;:::-;18591:139;;18489:248;;;:::o;18743:419::-;18909:4;18947:2;18936:9;18932:18;18924:26;;18996:9;18990:4;18986:20;18982:1;18971:9;18967:17;18960:47;19024:131;19150:4;19024:131;:::i;:::-;19016:139;;18914:248;;;:::o;19168:222::-;19261:4;19299:2;19288:9;19284:18;19276:26;;19312:71;19380:1;19369:9;19365:17;19356:6;19312:71;:::i;:::-;19266:124;;;;:::o;19396:831::-;19659:4;19697:3;19686:9;19682:19;19674:27;;19711:71;19779:1;19768:9;19764:17;19755:6;19711:71;:::i;:::-;19792:80;19868:2;19857:9;19853:18;19844:6;19792:80;:::i;:::-;19919:9;19913:4;19909:20;19904:2;19893:9;19889:18;19882:48;19947:108;20050:4;20041:6;19947:108;:::i;:::-;19939:116;;20065:72;20133:2;20122:9;20118:18;20109:6;20065:72;:::i;:::-;20147:73;20215:3;20204:9;20200:19;20191:6;20147:73;:::i;:::-;19664:563;;;;;;;;:::o;20233:214::-;20322:4;20360:2;20349:9;20345:18;20337:26;;20373:67;20437:1;20426:9;20422:17;20413:6;20373:67;:::i;:::-;20327:120;;;;:::o;20453:132::-;20520:4;20543:3;20535:11;;20573:4;20568:3;20564:14;20556:22;;20525:60;;;:::o;20591:114::-;20658:6;20692:5;20686:12;20676:22;;20665:40;;;:::o;20711:99::-;20763:6;20797:5;20791:12;20781:22;;20770:40;;;:::o;20816:113::-;20886:4;20918;20913:3;20909:14;20901:22;;20891:38;;;:::o;20935:184::-;21034:11;21068:6;21063:3;21056:19;21108:4;21103:3;21099:14;21084:29;;21046:73;;;;:::o;21125:169::-;21209:11;21243:6;21238:3;21231:19;21283:4;21278:3;21274:14;21259:29;;21221:73;;;;:::o;21300:305::-;21340:3;21359:20;21377:1;21359:20;:::i;:::-;21354:25;;21393:20;21411:1;21393:20;:::i;:::-;21388:25;;21547:1;21479:66;21475:74;21472:1;21469:81;21466:2;;;21553:18;;:::i;:::-;21466:2;21597:1;21594;21590:9;21583:16;;21344:261;;;;:::o;21611:185::-;21651:1;21668:20;21686:1;21668:20;:::i;:::-;21663:25;;21702:20;21720:1;21702:20;:::i;:::-;21697:25;;21741:1;21731:2;;21746:18;;:::i;:::-;21731:2;21788:1;21785;21781:9;21776:14;;21653:143;;;;:::o;21802:348::-;21842:7;21865:20;21883:1;21865:20;:::i;:::-;21860:25;;21899:20;21917:1;21899:20;:::i;:::-;21894:25;;22087:1;22019:66;22015:74;22012:1;22009:81;22004:1;21997:9;21990:17;21986:105;21983:2;;;22094:18;;:::i;:::-;21983:2;22142:1;22139;22135:9;22124:20;;21850:300;;;;:::o;22156:191::-;22196:4;22216:20;22234:1;22216:20;:::i;:::-;22211:25;;22250:20;22268:1;22250:20;:::i;:::-;22245:25;;22289:1;22286;22283:8;22280:2;;;22294:18;;:::i;:::-;22280:2;22339:1;22336;22332:9;22324:17;;22201:146;;;;:::o;22353:96::-;22390:7;22419:24;22437:5;22419:24;:::i;:::-;22408:35;;22398:51;;;:::o;22455:104::-;22500:7;22529:24;22547:5;22529:24;:::i;:::-;22518:35;;22508:51;;;:::o;22565:90::-;22599:7;22642:5;22635:13;22628:21;22617:32;;22607:48;;;:::o;22661:126::-;22698:7;22738:42;22731:5;22727:54;22716:65;;22706:81;;;:::o;22793:77::-;22830:7;22859:5;22848:16;;22838:32;;;:::o;22876:86::-;22911:7;22951:4;22944:5;22940:16;22929:27;;22919:43;;;:::o;22968:134::-;23026:9;23059:37;23090:5;23059:37;:::i;:::-;23046:50;;23036:66;;;:::o;23108:180::-;23185:9;23218:64;23276:5;23218:64;:::i;:::-;23205:77;;23195:93;;;:::o;23294:140::-;23371:9;23404:24;23422:5;23404:24;:::i;:::-;23391:37;;23381:53;;;:::o;23440:121::-;23498:9;23531:24;23549:5;23531:24;:::i;:::-;23518:37;;23508:53;;;:::o;23567:126::-;23617:9;23650:37;23681:5;23650:37;:::i;:::-;23637:50;;23627:66;;;:::o;23699:113::-;23749:9;23782:24;23800:5;23782:24;:::i;:::-;23769:37;;23759:53;;;:::o;23818:307::-;23886:1;23896:113;23910:6;23907:1;23904:13;23896:113;;;23995:1;23990:3;23986:11;23980:18;23976:1;23971:3;23967:11;23960:39;23932:2;23929:1;23925:10;23920:15;;23896:113;;;24027:6;24024:1;24021:13;24018:2;;;24107:1;24098:6;24093:3;24089:16;24082:27;24018:2;23867:258;;;;:::o;24131:320::-;24175:6;24212:1;24206:4;24202:12;24192:22;;24259:1;24253:4;24249:12;24280:18;24270:2;;24336:4;24328:6;24324:17;24314:27;;24270:2;24398;24390:6;24387:14;24367:18;24364:38;24361:2;;;24417:18;;:::i;:::-;24361:2;24182:269;;;;:::o;24457:180::-;24505:77;24502:1;24495:88;24602:4;24599:1;24592:15;24626:4;24623:1;24616:15;24643:180;24691:77;24688:1;24681:88;24788:4;24785:1;24778:15;24812:4;24809:1;24802:15;24829:180;24877:77;24874:1;24867:88;24974:4;24971:1;24964:15;24998:4;24995:1;24988:15;25015:102;25056:6;25107:2;25103:7;25098:2;25091:5;25087:14;25083:28;25073:38;;25063:54;;;:::o;25123:222::-;25263:34;25259:1;25251:6;25247:14;25240:58;25332:5;25327:2;25319:6;25315:15;25308:30;25229:116;:::o;25351:225::-;25491:34;25487:1;25479:6;25475:14;25468:58;25560:8;25555:2;25547:6;25543:15;25536:33;25457:119;:::o;25582:221::-;25722:34;25718:1;25710:6;25706:14;25699:58;25791:4;25786:2;25778:6;25774:15;25767:29;25688:115;:::o;25809:177::-;25949:29;25945:1;25937:6;25933:14;25926:53;25915:71;:::o;25992:166::-;26132:18;26128:1;26120:6;26116:14;26109:42;26098:60;:::o;26164:168::-;26304:20;26300:1;26292:6;26288:14;26281:44;26270:62;:::o;26338:220::-;26478:34;26474:1;26466:6;26462:14;26455:58;26547:3;26542:2;26534:6;26530:15;26523:28;26444:114;:::o;26564:182::-;26704:34;26700:1;26692:6;26688:14;26681:58;26670:76;:::o;26752:228::-;26892:34;26888:1;26880:6;26876:14;26869:58;26961:11;26956:2;26948:6;26944:15;26937:36;26858:122;:::o;26986:224::-;27126:34;27122:1;27114:6;27110:14;27103:58;27195:7;27190:2;27182:6;27178:15;27171:32;27092:118;:::o;27216:173::-;27356:25;27352:1;27344:6;27340:14;27333:49;27322:67;:::o;27395:223::-;27535:34;27531:1;27523:6;27519:14;27512:58;27604:6;27599:2;27591:6;27587:15;27580:31;27501:117;:::o;27624:122::-;27697:24;27715:5;27697:24;:::i;:::-;27690:5;27687:35;27677:2;;27736:1;27733;27726:12;27677:2;27667:79;:::o;27752:138::-;27833:32;27859:5;27833:32;:::i;:::-;27826:5;27823:43;27813:2;;27880:1;27877;27870:12;27813:2;27803:87;:::o;27896:116::-;27966:21;27981:5;27966:21;:::i;:::-;27959:5;27956:32;27946:2;;28002:1;27999;27992:12;27946:2;27936:76;:::o;28018:122::-;28091:24;28109:5;28091:24;:::i;:::-;28084:5;28081:35;28071:2;;28130:1;28127;28120:12;28071:2;28061:79;:::o

Swarm Source

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