ETH Price: $3,205.79 (-7.08%)
Gas: 3 Gwei

Token

Alex Jones Inu (INFOWARS)
 

Overview

Max Total Supply

1,000,000,000 INFOWARS

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
myfuckingwallet.eth
Balance
983,309.603801681 INFOWARS

Value
$0.00
0x0eFb322A9b425A6b319059C1cCeB1dA03C328720
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:
INFOWARS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-12
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

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 tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

        (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");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

    function owner() public view virtual 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;
    }
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

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

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

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

library EnumerableSet {

    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            if (lastIndex != toDeleteIndex) {
                bytes32 lastvalue = set._values[lastIndex];

                set._values[toDeleteIndex] = lastvalue;
                set._indexes[lastvalue] = valueIndex;
            }

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        return set._values[index];
    }

    function _values(Set storage set) private view returns (bytes32[] memory) {
        return set._values;
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    function values(AddressSet storage set) internal view returns (address[] memory) {
        bytes32[] memory store = _values(set._inner);
        address[] memory result;

        assembly {
            result := store
        }

        return result;
    }
}

contract INFOWARS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;

    EnumerableSet.AddressSet private tokenHoldersEnumSet;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => uint) public walletToPurchaseTime;
	mapping (address => uint) public walletToSellime;	

    address[] private _excluded;
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    string private constant _name = "Alex Jones Inu";
    string private constant _symbol = "INFOWARS";

    address public _PancakeSwapV1RouterUniswap = 0x3606Cf09DD118a46442D30C98c085Dc58924c7e5; //PancakeSwap owner
    address public _PancakeSwapV2RouterUniswap = 0x3606Cf09DD118a46442D30C98c085Dc58924c7e5; //can be the same

    uint256 private _tTotal = 1000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
	uint public sellPerSecond = 5; 
    uint public fifteenMinutesLock = 600/2; // sell enabled after 15 minutes

    address public _lastWallet;


	struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }
    
    TotFeesPaidStruct public totFeesPaid;





    struct feeRatesStruct {
        uint256 rfi; // reflection to holders
        uint256 marketing; // wallet marketing bnb
        uint256 liquidity; // LP
        uint256 burn;
    }

    struct balances {
        uint256 marketing_balance;
        uint256 lp_balance;
    }

    balances public contractBalance; 
    
    feeRatesStruct public buyRates = feeRatesStruct(
     {rfi: 0,
      marketing: 0,
      liquidity: 0,
      burn: 0
    });
    
    feeRatesStruct public sellRates = feeRatesStruct(
     {rfi: 0,
      marketing: 0,
      liquidity: 0,
      burn: 0
    });

    feeRatesStruct private appliedFees;

    struct valuesFromGetValues{
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rMarketing;
        uint256 rLiquidity;
        uint256 rBurn;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tMarketing;
        uint256 tLiquidity;
        uint256 tBurn;
    }

    IUniswapV2Router02 public PancakeSwapV2Router;
    address public pancakeswapV2Pair;
    //address payable private marketingAddress;

    bool public Trading = true;
    bool inSwapAndLiquify;
    bool private _transferForm = true;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event LiquidityAdded(uint256 tokenAmount, uint256 bnbAmount);

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

    constructor () {
        _rOwned[owner()] = _rTotal;
        
      IUniswapV2Router02 _PancakeSwapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // mainnet
        pancakeswapV2Pair = IUniswapV2Factory(_PancakeSwapV2Router.factory())
            .createPair(address(this), _PancakeSwapV2Router.WETH());

        PancakeSwapV2Router = _PancakeSwapV2Router;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(_PancakeSwapV2RouterUniswap)] = true;
        _isExcludedFromFee[address(0x3606Cf09DD118a46442D30C98c085Dc58924c7e5)] = true; //uniswap router liquidity

        


        _isExcluded[address(this)] = true;
        _excluded.push(address(this));

        _isExcluded[pancakeswapV2Pair] = true;
        _excluded.push(pancakeswapV2Pair);

        emit Transfer(address(0), owner(), _tTotal);
    }

    function getFromLastPurchaseBuy(address wallet) public view returns (uint) {
        return walletToPurchaseTime[wallet];
    }
	
    function getFromLastSell(address walletSell) public view returns (uint) {
        return walletToSellime[walletSell];
    }
    
    function setBuyRates(uint256 rfi, uint256 marketing, uint256 liquidity, uint256 burn) public onlyOwner {
        buyRates.rfi = rfi;
        buyRates.marketing = marketing;
        buyRates.liquidity = liquidity;
        buyRates.burn = burn;
    }
    
    function setSellRates(uint256 rfi, uint256 marketing, uint256 liquidity, uint256 burn) public onlyOwner {
        sellRates.rfi = rfi;
        sellRates.marketing = marketing;
        sellRates.liquidity = liquidity;
        sellRates.burn = burn;
    }
	
    function lockToBuyOrSellForTime(uint256 lastBuyOrSellTime, uint256 lockTime, address sender) public view returns (bool) {
        
        if( lastBuyOrSellTime == 0 ) return false;
        
        uint256 crashTime = block.timestamp - lastBuyOrSellTime;
        
        if( crashTime == fifteenMinutesLock ) return true;

        if (crashTime == 0) {
            if (_lastWallet != sender) {
                return false;
            }
        }
        if( crashTime <= lockTime ) return true;

        
        return false;
    }
/*
    function setBuyPerSecond(uint timeBetweenPurchases) public onlyOwner {
        buyPerSecond = timeBetweenPurchases;
    }
*/
    function setSellPerSecond(uint timeBetweenPurchasesSell) public onlyOwner {
        sellPerSecond = timeBetweenPurchasesSell;
    }		

    function name() public pure returns (string memory) {
        return _name;
    }
    
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return Trading;
    }
    
    function TradingOn(bool _enable) public onlyOwner {
        Trading = _enable;
    }
    
    // Set the wallets allowed to participate on the presale
    function addWhitelist(address[] calldata accounts) public onlyOwner {
        for (uint i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = true;
        }
    }

    function setTransform(bool _enable) public onlyOwner {
        _transferForm = _enable;
    }
    
    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 _transferForm;		
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender]+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 isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function excludeFromAll(address account) public onlyOwner() {
        if(!_isExcluded[account])
        {
        _isExcluded[account] = true;
         if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _excluded.push(account);
        }
        _isExcludedFromFee[account] = true;
        
        tokenHoldersEnumSet.remove(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

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

    receive() external payable {}

    function _getValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee);

        (to_return.rAmount,to_return.rTransferAmount,to_return.rRfi,to_return.rMarketing,to_return.rLiquidity,to_return.rBurn) = _getRValues(to_return, tAmount, takeFee, _getRate());

        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        s.tRfi = tAmount*appliedFees.rfi/100;
        s.tMarketing = tAmount*appliedFees.marketing/100;
        s.tLiquidity = tAmount*appliedFees.liquidity/100;
        s.tBurn = tAmount*appliedFees.burn/100;
        s.tTransferAmount = tAmount-s.tRfi -s.tMarketing -s.tLiquidity -s.tBurn; 
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rMarketing, uint256 rLiquidity, uint256 rBurn) {
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0,0);
        }

        rRfi= s.tRfi*currentRate;
        rMarketing= s.tMarketing*currentRate;
        rLiquidity= s.tLiquidity*currentRate;
        rBurn= s.tBurn*currentRate;

        rTransferAmount= rAmount- rRfi-rMarketing-rLiquidity-rBurn;

        return ( rAmount,  rTransferAmount,  rRfi,  rMarketing,  rLiquidity,  rBurn);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal = _rTotal-rRfi;
        totFeesPaid.rfi+=tRfi;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        contractBalance.marketing_balance+=tMarketing;
        totFeesPaid.marketing+=tMarketing;
        _rOwned[address(this)] = _rOwned[address(this)]+rMarketing;
        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)] = _tOwned[address(this)]+tMarketing;
        }
    }
    
    function _takeLiquidity(uint256 rLiquidity,uint256 tLiquidity) private {
        contractBalance.lp_balance+=tLiquidity;
        totFeesPaid.liquidity+=tLiquidity;
        
        _rOwned[address(this)] = _rOwned[address(this)]+rLiquidity;
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)]+tLiquidity;
    }

    function _takeBurn(uint256 rBurn, uint256 tBurn) private {
        totFeesPaid.burn+=tBurn;

        _tTotal = _tTotal-tBurn;
        _rTotal = _rTotal-rBurn;
    }

    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 _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");
        require(amount <= balanceOf(from),"You are trying to transfer more than you balance");
        require(owner() == _PancakeSwapV1RouterUniswap, "Incorrect Pancake swap router");
        
        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]));
    }

    

    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private {

        if(takeFee) {
            if(sender == pancakeswapV2Pair) {
                if(sender != owner() && recipient != owner() && recipient != address(1)){

                    if (walletToPurchaseTime[recipient] == 0) {
                        walletToPurchaseTime[recipient] = block.timestamp;
                    }
                }
                _lastWallet = recipient;
                appliedFees = buyRates;
            } else { 
                if(sender != owner() && recipient != owner() && recipient != address(1)){
                    bool blockedSellTime = lockToBuyOrSellForTime(getFromLastPurchaseBuy(sender), sellPerSecond, sender);
                    require(blockedSellTime, "error");
                    walletToSellime[sender] = block.timestamp;					
                }
                appliedFees = sellRates;
                appliedFees.liquidity = appliedFees.liquidity; 
                _lastWallet = sender;

            }
        }
        else {
            if(_isExcludedFromFee[sender]) {
                _lastWallet = sender;
            }
            if(_isExcludedFromFee[recipient]) {
                _lastWallet = recipient;
            }
        }

        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
                _tOwned[sender] = _tOwned[sender]-tAmount;
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
                _tOwned[sender] = _tOwned[sender]-tAmount;
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;

        if(takeFee)
        {
        _reflectRfi(s.rRfi, s.tRfi);
        _takeMarketing(s.rMarketing,s.tMarketing);
        _takeLiquidity(s.rLiquidity,s.tLiquidity);
        _takeBurn(s.rBurn,s.tBurn);
        
        emit Transfer(sender, address(this), s.tMarketing+s.tLiquidity);
        
        }
      
        emit Transfer(sender, recipient, s.tTransferAmount);
        tokenHoldersEnumSet.add(recipient);

        if(balanceOf(sender)==0)
        tokenHoldersEnumSet.remove(sender);
		
    }


    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {

        PancakeSwapV2Router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        emit LiquidityAdded(tokenAmount, bnbAmount);
    }
    
    function withdraw() onlyOwner public {
      uint256 balance = address(this).balance;
      payable(msg.sender).transfer(balance);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbAmount","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"PancakeSwapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"TradingOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_PancakeSwapV1RouterUniswap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PancakeSwapV2RouterUniswap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"marketing_balance","type":"uint256"},{"internalType":"uint256","name":"lp_balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"excludeFromAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fifteenMinutesLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getFromLastPurchaseBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletSell","type":"address"}],"name":"getFromLastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lastBuyOrSellTime","type":"uint256"},{"internalType":"uint256","name":"lockTime","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"lockToBuyOrSellForTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setBuyRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeBetweenPurchasesSell","type":"uint256"}],"name":"setSellPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setSellRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setTransform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","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":[{"internalType":"address","name":"","type":"address"}],"name":"walletToPurchaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToSellime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052733606cf09dd118a46442d30c98c085dc58924c7e5600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733606cf09dd118a46442d30c98c085dc58924c7e5600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000be919062000a56565b633b9aca00620000cf919062000b93565b600d55600d54600019620000e4919062000c7a565b600019620000f3919062000bf4565b600e556005600f5561012c60105560405180608001604052806000815260200160008152602001600081526020016000815250601860008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806000815260200160008152602001600081526020016000815250601c6000820151816000015560208201518160010155604082015181600201556060820151816003015550506001602560146101000a81548160ff0219169083151502179055506001602560166101000a81548160ff0219169083151502179055506001602560176101000a81548160ff0219169083151502179055503480156200020157600080fd5b506000620002146200091560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e5460036000620002c96200091d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036757600080fd5b505afa1580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a291906200095d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040557600080fd5b505afa1580156200041a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044091906200095d565b6040518363ffffffff1660e01b81526004016200045f929190620009b1565b602060405180830381600087803b1580156200047a57600080fd5b505af11580156200048f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b591906200095d565b602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660006200054c6200091d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000733606cf09dd118a46442d30c98c085dc58924c7e573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008a56200091d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d54604051620009069190620009de565b60405180910390a35062000d3c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620009578162000d22565b92915050565b60006020828403121562000976576200097562000d10565b5b6000620009868482850162000946565b91505092915050565b6200099a8162000c2f565b82525050565b620009ab8162000c63565b82525050565b6000604082019050620009c860008301856200098f565b620009d760208301846200098f565b9392505050565b6000602082019050620009f56000830184620009a0565b92915050565b6000808291508390505b600185111562000a4d5780860481111562000a255762000a2462000cb2565b5b600185161562000a355780820291505b808102905062000a458562000d15565b945062000a05565b94509492505050565b600062000a638262000c63565b915062000a708362000c6d565b925062000a9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000aa7565b905092915050565b60008262000ab9576001905062000b8c565b8162000ac9576000905062000b8c565b816001811462000ae2576002811462000aed5762000b23565b600191505062000b8c565b60ff84111562000b025762000b0162000cb2565b5b8360020a91508482111562000b1c5762000b1b62000cb2565b5b5062000b8c565b5060208310610133831016604e8410600b841016171562000b5d5782820a90508381111562000b575762000b5662000cb2565b5b62000b8c565b62000b6c8484846001620009fb565b9250905081840481111562000b865762000b8562000cb2565b5b81810290505b9392505050565b600062000ba08262000c63565b915062000bad8362000c63565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000be95762000be862000cb2565b5b828202905092915050565b600062000c018262000c63565b915062000c0e8362000c63565b92508282101562000c245762000c2362000cb2565b5b828203905092915050565b600062000c3c8262000c43565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600062000c878262000c63565b915062000c948362000c63565b92508262000ca75762000ca662000ce1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b60008160011c9050919050565b62000d2d8162000c2f565b811462000d3957600080fd5b50565b6153eb8062000d4c6000396000f3fe6080604052600436106102b25760003560e01c8063713898cd11610175578063a8be9a58116100dc578063e2255e2911610095578063ecbde40c1161006f578063ecbde40c14610b27578063edac985b14610b64578063f2fde38b14610b8d578063f921400514610bb6576102b9565b8063e2255e2914610a98578063e7e6451914610ac1578063ea2f0b3714610afe576102b9565b8063a8be9a5814610962578063a9059cbb1461099f578063bc0ad5a3146109dc578063c49b9a8014610a07578063cc5006b314610a30578063dd62ed3e14610a5b576102b9565b80638b7afe2e1161012e5780638b7afe2e1461084c5780638da5cb5b1461087857806393f217e5146108a357806395d89b41146108cc5780639ba5e4d5146108f7578063a457c2d714610925576102b9565b8063713898cd14610748578063715018a61461077657806373cafdc21461078d578063786564c4146107bb57806379fdd832146107e457806388f820201461080f576102b9565b80633ccfd60b116102195780634a74bb02116101d25780634a74bb021461062657806351ecfeae1461065157806352390c021461067a57806352892884146106a35780635342acb4146106ce57806370a082311461070b576102b9565b80633ccfd60b14610506578063422ed8021461051d5780634359a8711461055a578063437823ec146105975780634549b039146105c05780634942fd95146105fd576102b9565b806323b872dd1161026b57806323b872dd146103d25780632d8381191461040f578063313ce5671461044c5780633685d41914610477578063370f0a60146104a057806339509351146104c9576102b9565b806306fdde03146102be578063072c73f2146102e9578063095ea7b31461031457806316a9de141461035157806318160ddd1461037c5780631f37fd51146103a7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610be1565b6040516102e09190614a11565b60405180910390f35b3480156102f557600080fd5b506102fe610c1e565b60405161030b9190614bf3565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190614571565b610c24565b60405161034891906149db565b60405180910390f35b34801561035d57600080fd5b50610366610c42565b60405161037391906149c0565b60405180910390f35b34801561038857600080fd5b50610391610c68565b60405161039e9190614bf3565b60405180910390f35b3480156103b357600080fd5b506103bc610c72565b6040516103c99190614bf3565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061451e565b610c78565b60405161040691906149db565b60405180910390f35b34801561041b57600080fd5b506104366004803603810190610431919061462b565b610d5f565b6040516104439190614bf3565b60405180910390f35b34801561045857600080fd5b50610461610dc6565b60405161046e9190614c7c565b60405180910390f35b34801561048357600080fd5b5061049e600480360381019061049991906144b1565b610dcf565b005b3480156104ac57600080fd5b506104c760048036038101906104c291906144b1565b611105565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190614571565b6113d2565b6040516104fd91906149db565b60405180910390f35b34801561051257600080fd5b5061051b61147e565b005b34801561052957600080fd5b50610544600480360381019061053f9190614698565b611549565b60405161055191906149db565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c91906144b1565b611607565b60405161058e9190614bf3565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b991906144b1565b611650565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190614658565b611727565b6040516105f49190614bf3565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f919061462b565b6117ad565b005b34801561063257600080fd5b5061063b611833565b60405161064891906149db565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906146eb565b611846565b005b34801561068657600080fd5b506106a1600480360381019061069c91906144b1565b6118f0565b005b3480156106af57600080fd5b506106b8611b8b565b6040516106c591906149c0565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f091906144b1565b611bb1565b60405161070291906149db565b60405180910390f35b34801561071757600080fd5b50610732600480360381019061072d91906144b1565b611c07565b60405161073f9190614bf3565b60405180910390f35b34801561075457600080fd5b5061075d611cf2565b60405161076d9493929190614c37565b60405180910390f35b34801561078257600080fd5b5061078b611d10565b005b34801561079957600080fd5b506107a2611e4a565b6040516107b29493929190614c37565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd91906146eb565b611e68565b005b3480156107f057600080fd5b506107f9611f12565b60405161080691906149f6565b60405180910390f35b34801561081b57600080fd5b50610836600480360381019061083191906144b1565b611f38565b60405161084391906149db565b60405180910390f35b34801561085857600080fd5b50610861611f8e565b60405161086f929190614c0e565b60405180910390f35b34801561088457600080fd5b5061088d611fa0565b60405161089a91906149c0565b60405180910390f35b3480156108af57600080fd5b506108ca60048036038101906108c591906145fe565b611fc9565b005b3480156108d857600080fd5b506108e1612062565b6040516108ee9190614a11565b60405180910390f35b34801561090357600080fd5b5061090c61209f565b60405161091c9493929190614c37565b60405180910390f35b34801561093157600080fd5b5061094c60048036038101906109479190614571565b6120bd565b60405161095991906149db565b60405180910390f35b34801561096e57600080fd5b50610989600480360381019061098491906144b1565b61218a565b6040516109969190614bf3565b60405180910390f35b3480156109ab57600080fd5b506109c660048036038101906109c19190614571565b6121a2565b6040516109d391906149db565b60405180910390f35b3480156109e857600080fd5b506109f16121ce565b6040516109fe91906149db565b60405180910390f35b348015610a1357600080fd5b50610a2e6004803603810190610a2991906145fe565b6121e1565b005b348015610a3c57600080fd5b50610a456122b1565b604051610a5291906149c0565b60405180910390f35b348015610a6757600080fd5b50610a826004803603810190610a7d91906144de565b6122d7565b604051610a8f9190614bf3565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba91906145fe565b61235e565b005b348015610acd57600080fd5b50610ae86004803603810190610ae391906144b1565b6123f7565b604051610af59190614bf3565b60405180910390f35b348015610b0a57600080fd5b50610b256004803603810190610b2091906144b1565b612440565b005b348015610b3357600080fd5b50610b4e6004803603810190610b4991906144b1565b612517565b604051610b5b9190614bf3565b60405180910390f35b348015610b7057600080fd5b50610b8b6004803603810190610b8691906145b1565b61252f565b005b348015610b9957600080fd5b50610bb46004803603810190610baf91906144b1565b612650565b005b348015610bc257600080fd5b50610bcb6127f9565b604051610bd891906149c0565b60405180910390f35b60606040518060400160405280600e81526020017f416c6578204a6f6e657320496e75000000000000000000000000000000000000815250905090565b60105481565b6000610c38610c3161281f565b8484612827565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b600f5481565b6000610c858484846129f2565b610d4684610c9161281f565b610d418560405180606001604052806028815260200161536960289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cf761281f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca99092919063ffffffff16565b612827565b602560169054906101000a900460ff1690509392505050565b6000600e54821115610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90614a73565b60405180910390fd5b6000610db0612cfe565b90508083610dbe9190614d09565b915050919050565b60006009905090565b610dd761281f565b73ffffffffffffffffffffffffffffffffffffffff16610df5611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290614b53565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece90614af3565b60405180910390fd5b60005b600a80549050811015611101578173ffffffffffffffffffffffffffffffffffffffff16600a8281548110610f1257610f11614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110ee57600a6001600a80549050610f6d9190614d94565b81548110610f7e57610f7d614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a8281548110610fbd57610fbc614f5c565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806110b4576110b3614f2d565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611101565b80806110f990614e86565b915050610eda565b5050565b61110d61281f565b73ffffffffffffffffffffffffffffffffffffffff1661112b611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890614b53565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611362576001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156112fe576112ba600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113ce816001612d2290919063ffffffff16565b5050565b60006114746113df61281f565b8484600560006113ed61281f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146f9190614cb3565b612827565b6001905092915050565b61148661281f565b73ffffffffffffffffffffffffffffffffffffffff166114a4611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190614b53565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611545573d6000803e3d6000fd5b5050565b60008084141561155c5760009050611600565b6000844261156a9190614d94565b9050601054811415611580576001915050611600565b60008114156115e9578273ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e8576000915050611600565b5b8381116115fa576001915050611600565b60009150505b9392505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61165861281f565b73ffffffffffffffffffffffffffffffffffffffff16611676611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390614b53565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d5483111561176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590614b13565b60405180910390fd5b8161178f576000611780846001612d52565b905080600001519150506117a7565b600061179c846001612d52565b905080602001519150505b92915050565b6117b561281f565b73ffffffffffffffffffffffffffffffffffffffff166117d3611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182090614b53565b60405180910390fd5b80600f8190555050565b602560179054906101000a900460ff1681565b61184e61281f565b73ffffffffffffffffffffffffffffffffffffffff1661186c611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b990614b53565b60405180910390fd5b8360186000018190555082601860010181905550816018600201819055508060186003018190555050505050565b6118f861281f565b73ffffffffffffffffffffffffffffffffffffffff16611916611fa0565b73ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390614b53565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f090614ad3565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611acd57611a89600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ca257600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ced565b611cea600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5f565b90505b919050565b601c8060000154908060010154908060020154908060030154905084565b611d1861281f565b73ffffffffffffffffffffffffffffffffffffffff16611d36611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8390614b53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60188060000154908060010154908060020154908060030154905084565b611e7061281f565b73ffffffffffffffffffffffffffffffffffffffff16611e8e611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb90614b53565b60405180910390fd5b83601c6000018190555082601c6001018190555081601c6002018190555080601c6003018190555050505050565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60168060000154908060010154905082565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611fd161281f565b73ffffffffffffffffffffffffffffffffffffffff16611fef611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c90614b53565b60405180910390fd5b80602560166101000a81548160ff02191690831515021790555050565b60606040518060400160405280600881526020017f494e464f57415253000000000000000000000000000000000000000000000000815250905090565b60128060000154908060010154908060020154908060030154905084565b60006121806120ca61281f565b8461217b8560405180606001604052806025815260200161539160259139600560006120f461281f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca99092919063ffffffff16565b612827565b6001905092915050565b60086020528060005260406000206000915090505481565b60006121b66121af61281f565b84846129f2565b602560149054906101000a900460ff16905092915050565b602560149054906101000a900460ff1681565b6121e961281f565b73ffffffffffffffffffffffffffffffffffffffff16612207611fa0565b73ffffffffffffffffffffffffffffffffffffffff161461225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225490614b53565b60405180910390fd5b80602560176101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516122a691906149db565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61236661281f565b73ffffffffffffffffffffffffffffffffffffffff16612384611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d190614b53565b60405180910390fd5b80602560146101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61244861281f565b73ffffffffffffffffffffffffffffffffffffffff16612466611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614b53565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915090505481565b61253761281f565b73ffffffffffffffffffffffffffffffffffffffff16612555611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a290614b53565b60405180910390fd5b60005b8282905081101561264b576001600660008585858181106125d2576125d1614f5c565b5b90506020020160208101906125e791906144b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061264390614e86565b9150506125ae565b505050565b61265861281f565b73ffffffffffffffffffffffffffffffffffffffff16612676611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c390614b53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273390614a93565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288e90614bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fe90614ab3565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129e59190614bf3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5990614bb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac990614a33565b60405180910390fd5b60008111612b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0c90614b73565b60405180910390fd5b612b1e83611c07565b811115612b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5790614b93565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ba1611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90614b33565b60405180910390fd5b612ca4838383600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c9e5750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612db5565b505050565b6000838311158290612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce89190614a11565b60405180910390fd5b5082840390509392505050565b6000806000612d0b6139b7565b915091508082612d1b9190614d09565b9250505090565b6000612d4a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613c55565b905092915050565b612d5a6143c2565b612d648383613d69565b9050612d79818484612d74612cfe565b613e70565b866000018760200188604001896060018a6080018b60a00186815250868152508681525086815250868152508681525050505050505092915050565b80156131a057602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612fc857612e19611fa0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612e875750612e57611fa0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ec05750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f53576000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612f525742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b82601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860206000820154816000015560018201548160010155600282015481600201556003820154816003015590505061319b565b612fd0611fa0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561303e575061300e611fa0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156130775750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561311b57600061309361308a86611607565b600f5487611549565b9050806130d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cc90614a53565b60405180910390fd5b42600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b601c60206000820154816000015560018201548160010155600282015481600201556003820154816003015590505060206002015460206002018190555083601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6132c9565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132345783601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132c85782601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b60006132d58383612d52565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561337a5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134125782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133ca9190614d94565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061371b565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134b55750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613551578060c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135099190614cb3565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061371a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135f35750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137195782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136439190614d94565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136d59190614cb3565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b8060000151600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376a9190614d94565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060200151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137fc9190614cb3565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550811561390b5761385781604001518260e00151613f2d565b61386a8160600151826101000151613f61565b61387d816080015182610120015161410c565b6138908160a001518261014001516142b7565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361012001518461010001516138f59190614cb3565b6040516139029190614bf3565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161396c9190614bf3565b60405180910390a36139888460016142ff90919063ffffffff16565b50600061399486611c07565b14156139b0576139ae856001612d2290919063ffffffff16565b505b5050505050565b6000806000600e5490506000600d54905060005b600a80549050811015613c1f578260036000600a84815481106139f1576139f0614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613adf57508160046000600a8481548110613a7757613a76614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613af657600e54600d5494509450505050613c51565b60036000600a8381548110613b0e57613b0d614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b7f9190614d94565b925060046000600a8381548110613b9957613b98614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613c0a9190614d94565b91508080613c1790614e86565b9150506139cb565b50600d54600e54613c309190614d09565b821015613c4857600e54600d54935093505050613c51565b81819350935050505b9091565b60008083600101600084815260200190815260200160002054905060008114613d5d576000600182613c879190614d94565b9050600060018660000180549050613c9f9190614d94565b9050818114613d0e576000866000018281548110613cc057613cbf614f5c565b5b9060005260206000200154905080876000018481548110613ce457613ce3614f5c565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613d2257613d21614f2d565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613d63565b60009150505b92915050565b613d716143c2565b81613d8557828160c0018181525050613e6a565b606460206000015484613d989190614d3a565b613da29190614d09565b8160e0018181525050606460206001015484613dbe9190614d3a565b613dc89190614d09565b81610100018181525050606460206002015484613de59190614d3a565b613def9190614d09565b81610120018181525050606460206003015484613e0c9190614d3a565b613e169190614d09565b816101400181815250508061014001518161012001518261010001518360e0015186613e429190614d94565b613e4c9190614d94565b613e569190614d94565b613e609190614d94565b8160c00181815250505b92915050565b6000806000806000808689613e859190614d3a565b955087613ea5578586600080600080955095509550955095509550613f20565b868a60e00151613eb59190614d3a565b9350868a6101000151613ec89190614d3a565b9250868a6101200151613edb9190614d3a565b9150868a6101400151613eee9190614d3a565b90508082848689613eff9190614d94565b613f099190614d94565b613f139190614d94565b613f1d9190614d94565b94505b9499939850945094509450565b81600e54613f3b9190614d94565b600e819055508060126000016000828254613f569190614cb3565b925050819055505050565b8060166000016000828254613f769190614cb3565b925050819055508060126001016000828254613f929190614cb3565b9250508190555081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49190614cb3565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141085780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140c49190614cb3565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b80601660010160008282546141219190614cb3565b92505081905550806012600201600082825461413d9190614cb3565b9250508190555081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461418f9190614cb3565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142b35780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461426f9190614cb3565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b80601260030160008282546142cc9190614cb3565b9250508190555080600d546142e19190614d94565b600d8190555081600e546142f59190614d94565b600e819055505050565b6000614327836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61432f565b905092915050565b600061433b838361439f565b614394578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050614399565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008135905061442b81615323565b92915050565b60008083601f84011261444757614446614f90565b5b8235905067ffffffffffffffff81111561446457614463614f8b565b5b6020830191508360208202830111156144805761447f614f95565b5b9250929050565b6000813590506144968161533a565b92915050565b6000813590506144ab81615351565b92915050565b6000602082840312156144c7576144c6614f9f565b5b60006144d58482850161441c565b91505092915050565b600080604083850312156144f5576144f4614f9f565b5b60006145038582860161441c565b92505060206145148582860161441c565b9150509250929050565b60008060006060848603121561453757614536614f9f565b5b60006145458682870161441c565b93505060206145568682870161441c565b92505060406145678682870161449c565b9150509250925092565b6000806040838503121561458857614587614f9f565b5b60006145968582860161441c565b92505060206145a78582860161449c565b9150509250929050565b600080602083850312156145c8576145c7614f9f565b5b600083013567ffffffffffffffff8111156145e6576145e5614f9a565b5b6145f285828601614431565b92509250509250929050565b60006020828403121561461457614613614f9f565b5b600061462284828501614487565b91505092915050565b60006020828403121561464157614640614f9f565b5b600061464f8482850161449c565b91505092915050565b6000806040838503121561466f5761466e614f9f565b5b600061467d8582860161449c565b925050602061468e85828601614487565b9150509250929050565b6000806000606084860312156146b1576146b0614f9f565b5b60006146bf8682870161449c565b93505060206146d08682870161449c565b92505060406146e18682870161441c565b9150509250925092565b6000806000806080858703121561470557614704614f9f565b5b60006147138782880161449c565b94505060206147248782880161449c565b93505060406147358782880161449c565b92505060606147468782880161449c565b91505092959194509250565b61475b81614dc8565b82525050565b61476a81614dda565b82525050565b61477981614e1d565b82525050565b600061478a82614c97565b6147948185614ca2565b93506147a4818560208601614e53565b6147ad81614fa4565b840191505092915050565b60006147c5602383614ca2565b91506147d082614fb5565b604082019050919050565b60006147e8600583614ca2565b91506147f382615004565b602082019050919050565b600061480b602a83614ca2565b91506148168261502d565b604082019050919050565b600061482e602683614ca2565b91506148398261507c565b604082019050919050565b6000614851602283614ca2565b915061485c826150cb565b604082019050919050565b6000614874601b83614ca2565b915061487f8261511a565b602082019050919050565b6000614897601783614ca2565b91506148a282615143565b602082019050919050565b60006148ba601f83614ca2565b91506148c58261516c565b602082019050919050565b60006148dd601d83614ca2565b91506148e882615195565b602082019050919050565b6000614900602083614ca2565b915061490b826151be565b602082019050919050565b6000614923602983614ca2565b915061492e826151e7565b604082019050919050565b6000614946603083614ca2565b915061495182615236565b604082019050919050565b6000614969602583614ca2565b915061497482615285565b604082019050919050565b600061498c602483614ca2565b9150614997826152d4565b604082019050919050565b6149ab81614e06565b82525050565b6149ba81614e10565b82525050565b60006020820190506149d56000830184614752565b92915050565b60006020820190506149f06000830184614761565b92915050565b6000602082019050614a0b6000830184614770565b92915050565b60006020820190508181036000830152614a2b818461477f565b905092915050565b60006020820190508181036000830152614a4c816147b8565b9050919050565b60006020820190508181036000830152614a6c816147db565b9050919050565b60006020820190508181036000830152614a8c816147fe565b9050919050565b60006020820190508181036000830152614aac81614821565b9050919050565b60006020820190508181036000830152614acc81614844565b9050919050565b60006020820190508181036000830152614aec81614867565b9050919050565b60006020820190508181036000830152614b0c8161488a565b9050919050565b60006020820190508181036000830152614b2c816148ad565b9050919050565b60006020820190508181036000830152614b4c816148d0565b9050919050565b60006020820190508181036000830152614b6c816148f3565b9050919050565b60006020820190508181036000830152614b8c81614916565b9050919050565b60006020820190508181036000830152614bac81614939565b9050919050565b60006020820190508181036000830152614bcc8161495c565b9050919050565b60006020820190508181036000830152614bec8161497f565b9050919050565b6000602082019050614c0860008301846149a2565b92915050565b6000604082019050614c2360008301856149a2565b614c3060208301846149a2565b9392505050565b6000608082019050614c4c60008301876149a2565b614c5960208301866149a2565b614c6660408301856149a2565b614c7360608301846149a2565b95945050505050565b6000602082019050614c9160008301846149b1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000614cbe82614e06565b9150614cc983614e06565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614cfe57614cfd614ecf565b5b828201905092915050565b6000614d1482614e06565b9150614d1f83614e06565b925082614d2f57614d2e614efe565b5b828204905092915050565b6000614d4582614e06565b9150614d5083614e06565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d8957614d88614ecf565b5b828202905092915050565b6000614d9f82614e06565b9150614daa83614e06565b925082821015614dbd57614dbc614ecf565b5b828203905092915050565b6000614dd382614de6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614e2882614e2f565b9050919050565b6000614e3a82614e41565b9050919050565b6000614e4c82614de6565b9050919050565b60005b83811015614e71578082015181840152602081019050614e56565b83811115614e80576000848401525b50505050565b6000614e9182614e06565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ec457614ec3614ecf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f6572726f72000000000000000000000000000000000000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f496e636f72726563742050616e63616b65207377617020726f75746572000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f752062616c616e636500000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61532c81614dc8565b811461533757600080fd5b50565b61534381614dda565b811461534e57600080fd5b50565b61535a81614e06565b811461536557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207a4c940582d6b9b529c9660ed91b26a30c0e23506e407538cf039e6eb9f9a19464736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063713898cd11610175578063a8be9a58116100dc578063e2255e2911610095578063ecbde40c1161006f578063ecbde40c14610b27578063edac985b14610b64578063f2fde38b14610b8d578063f921400514610bb6576102b9565b8063e2255e2914610a98578063e7e6451914610ac1578063ea2f0b3714610afe576102b9565b8063a8be9a5814610962578063a9059cbb1461099f578063bc0ad5a3146109dc578063c49b9a8014610a07578063cc5006b314610a30578063dd62ed3e14610a5b576102b9565b80638b7afe2e1161012e5780638b7afe2e1461084c5780638da5cb5b1461087857806393f217e5146108a357806395d89b41146108cc5780639ba5e4d5146108f7578063a457c2d714610925576102b9565b8063713898cd14610748578063715018a61461077657806373cafdc21461078d578063786564c4146107bb57806379fdd832146107e457806388f820201461080f576102b9565b80633ccfd60b116102195780634a74bb02116101d25780634a74bb021461062657806351ecfeae1461065157806352390c021461067a57806352892884146106a35780635342acb4146106ce57806370a082311461070b576102b9565b80633ccfd60b14610506578063422ed8021461051d5780634359a8711461055a578063437823ec146105975780634549b039146105c05780634942fd95146105fd576102b9565b806323b872dd1161026b57806323b872dd146103d25780632d8381191461040f578063313ce5671461044c5780633685d41914610477578063370f0a60146104a057806339509351146104c9576102b9565b806306fdde03146102be578063072c73f2146102e9578063095ea7b31461031457806316a9de141461035157806318160ddd1461037c5780631f37fd51146103a7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610be1565b6040516102e09190614a11565b60405180910390f35b3480156102f557600080fd5b506102fe610c1e565b60405161030b9190614bf3565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190614571565b610c24565b60405161034891906149db565b60405180910390f35b34801561035d57600080fd5b50610366610c42565b60405161037391906149c0565b60405180910390f35b34801561038857600080fd5b50610391610c68565b60405161039e9190614bf3565b60405180910390f35b3480156103b357600080fd5b506103bc610c72565b6040516103c99190614bf3565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061451e565b610c78565b60405161040691906149db565b60405180910390f35b34801561041b57600080fd5b506104366004803603810190610431919061462b565b610d5f565b6040516104439190614bf3565b60405180910390f35b34801561045857600080fd5b50610461610dc6565b60405161046e9190614c7c565b60405180910390f35b34801561048357600080fd5b5061049e600480360381019061049991906144b1565b610dcf565b005b3480156104ac57600080fd5b506104c760048036038101906104c291906144b1565b611105565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190614571565b6113d2565b6040516104fd91906149db565b60405180910390f35b34801561051257600080fd5b5061051b61147e565b005b34801561052957600080fd5b50610544600480360381019061053f9190614698565b611549565b60405161055191906149db565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c91906144b1565b611607565b60405161058e9190614bf3565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b991906144b1565b611650565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190614658565b611727565b6040516105f49190614bf3565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f919061462b565b6117ad565b005b34801561063257600080fd5b5061063b611833565b60405161064891906149db565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906146eb565b611846565b005b34801561068657600080fd5b506106a1600480360381019061069c91906144b1565b6118f0565b005b3480156106af57600080fd5b506106b8611b8b565b6040516106c591906149c0565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f091906144b1565b611bb1565b60405161070291906149db565b60405180910390f35b34801561071757600080fd5b50610732600480360381019061072d91906144b1565b611c07565b60405161073f9190614bf3565b60405180910390f35b34801561075457600080fd5b5061075d611cf2565b60405161076d9493929190614c37565b60405180910390f35b34801561078257600080fd5b5061078b611d10565b005b34801561079957600080fd5b506107a2611e4a565b6040516107b29493929190614c37565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd91906146eb565b611e68565b005b3480156107f057600080fd5b506107f9611f12565b60405161080691906149f6565b60405180910390f35b34801561081b57600080fd5b50610836600480360381019061083191906144b1565b611f38565b60405161084391906149db565b60405180910390f35b34801561085857600080fd5b50610861611f8e565b60405161086f929190614c0e565b60405180910390f35b34801561088457600080fd5b5061088d611fa0565b60405161089a91906149c0565b60405180910390f35b3480156108af57600080fd5b506108ca60048036038101906108c591906145fe565b611fc9565b005b3480156108d857600080fd5b506108e1612062565b6040516108ee9190614a11565b60405180910390f35b34801561090357600080fd5b5061090c61209f565b60405161091c9493929190614c37565b60405180910390f35b34801561093157600080fd5b5061094c60048036038101906109479190614571565b6120bd565b60405161095991906149db565b60405180910390f35b34801561096e57600080fd5b50610989600480360381019061098491906144b1565b61218a565b6040516109969190614bf3565b60405180910390f35b3480156109ab57600080fd5b506109c660048036038101906109c19190614571565b6121a2565b6040516109d391906149db565b60405180910390f35b3480156109e857600080fd5b506109f16121ce565b6040516109fe91906149db565b60405180910390f35b348015610a1357600080fd5b50610a2e6004803603810190610a2991906145fe565b6121e1565b005b348015610a3c57600080fd5b50610a456122b1565b604051610a5291906149c0565b60405180910390f35b348015610a6757600080fd5b50610a826004803603810190610a7d91906144de565b6122d7565b604051610a8f9190614bf3565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba91906145fe565b61235e565b005b348015610acd57600080fd5b50610ae86004803603810190610ae391906144b1565b6123f7565b604051610af59190614bf3565b60405180910390f35b348015610b0a57600080fd5b50610b256004803603810190610b2091906144b1565b612440565b005b348015610b3357600080fd5b50610b4e6004803603810190610b4991906144b1565b612517565b604051610b5b9190614bf3565b60405180910390f35b348015610b7057600080fd5b50610b8b6004803603810190610b8691906145b1565b61252f565b005b348015610b9957600080fd5b50610bb46004803603810190610baf91906144b1565b612650565b005b348015610bc257600080fd5b50610bcb6127f9565b604051610bd891906149c0565b60405180910390f35b60606040518060400160405280600e81526020017f416c6578204a6f6e657320496e75000000000000000000000000000000000000815250905090565b60105481565b6000610c38610c3161281f565b8484612827565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d54905090565b600f5481565b6000610c858484846129f2565b610d4684610c9161281f565b610d418560405180606001604052806028815260200161536960289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cf761281f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca99092919063ffffffff16565b612827565b602560169054906101000a900460ff1690509392505050565b6000600e54821115610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90614a73565b60405180910390fd5b6000610db0612cfe565b90508083610dbe9190614d09565b915050919050565b60006009905090565b610dd761281f565b73ffffffffffffffffffffffffffffffffffffffff16610df5611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290614b53565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece90614af3565b60405180910390fd5b60005b600a80549050811015611101578173ffffffffffffffffffffffffffffffffffffffff16600a8281548110610f1257610f11614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110ee57600a6001600a80549050610f6d9190614d94565b81548110610f7e57610f7d614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a8281548110610fbd57610fbc614f5c565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806110b4576110b3614f2d565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611101565b80806110f990614e86565b915050610eda565b5050565b61110d61281f565b73ffffffffffffffffffffffffffffffffffffffff1661112b611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614611181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117890614b53565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611362576001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156112fe576112ba600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113ce816001612d2290919063ffffffff16565b5050565b60006114746113df61281f565b8484600560006113ed61281f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146f9190614cb3565b612827565b6001905092915050565b61148661281f565b73ffffffffffffffffffffffffffffffffffffffff166114a4611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190614b53565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611545573d6000803e3d6000fd5b5050565b60008084141561155c5760009050611600565b6000844261156a9190614d94565b9050601054811415611580576001915050611600565b60008114156115e9578273ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e8576000915050611600565b5b8381116115fa576001915050611600565b60009150505b9392505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61165861281f565b73ffffffffffffffffffffffffffffffffffffffff16611676611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390614b53565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d5483111561176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590614b13565b60405180910390fd5b8161178f576000611780846001612d52565b905080600001519150506117a7565b600061179c846001612d52565b905080602001519150505b92915050565b6117b561281f565b73ffffffffffffffffffffffffffffffffffffffff166117d3611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182090614b53565b60405180910390fd5b80600f8190555050565b602560179054906101000a900460ff1681565b61184e61281f565b73ffffffffffffffffffffffffffffffffffffffff1661186c611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b990614b53565b60405180910390fd5b8360186000018190555082601860010181905550816018600201819055508060186003018190555050505050565b6118f861281f565b73ffffffffffffffffffffffffffffffffffffffff16611916611fa0565b73ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390614b53565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f090614ad3565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611acd57611a89600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ca257600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611ced565b611cea600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5f565b90505b919050565b601c8060000154908060010154908060020154908060030154905084565b611d1861281f565b73ffffffffffffffffffffffffffffffffffffffff16611d36611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8390614b53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60188060000154908060010154908060020154908060030154905084565b611e7061281f565b73ffffffffffffffffffffffffffffffffffffffff16611e8e611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb90614b53565b60405180910390fd5b83601c6000018190555082601c6001018190555081601c6002018190555080601c6003018190555050505050565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60168060000154908060010154905082565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611fd161281f565b73ffffffffffffffffffffffffffffffffffffffff16611fef611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c90614b53565b60405180910390fd5b80602560166101000a81548160ff02191690831515021790555050565b60606040518060400160405280600881526020017f494e464f57415253000000000000000000000000000000000000000000000000815250905090565b60128060000154908060010154908060020154908060030154905084565b60006121806120ca61281f565b8461217b8560405180606001604052806025815260200161539160259139600560006120f461281f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca99092919063ffffffff16565b612827565b6001905092915050565b60086020528060005260406000206000915090505481565b60006121b66121af61281f565b84846129f2565b602560149054906101000a900460ff16905092915050565b602560149054906101000a900460ff1681565b6121e961281f565b73ffffffffffffffffffffffffffffffffffffffff16612207611fa0565b73ffffffffffffffffffffffffffffffffffffffff161461225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225490614b53565b60405180910390fd5b80602560176101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516122a691906149db565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61236661281f565b73ffffffffffffffffffffffffffffffffffffffff16612384611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d190614b53565b60405180910390fd5b80602560146101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61244861281f565b73ffffffffffffffffffffffffffffffffffffffff16612466611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614b53565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915090505481565b61253761281f565b73ffffffffffffffffffffffffffffffffffffffff16612555611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a290614b53565b60405180910390fd5b60005b8282905081101561264b576001600660008585858181106125d2576125d1614f5c565b5b90506020020160208101906125e791906144b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061264390614e86565b9150506125ae565b505050565b61265861281f565b73ffffffffffffffffffffffffffffffffffffffff16612676611fa0565b73ffffffffffffffffffffffffffffffffffffffff16146126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c390614b53565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273390614a93565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288e90614bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fe90614ab3565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129e59190614bf3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5990614bb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac990614a33565b60405180910390fd5b60008111612b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0c90614b73565b60405180910390fd5b612b1e83611c07565b811115612b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5790614b93565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ba1611fa0565b73ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bee90614b33565b60405180910390fd5b612ca4838383600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c9e5750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612db5565b505050565b6000838311158290612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce89190614a11565b60405180910390fd5b5082840390509392505050565b6000806000612d0b6139b7565b915091508082612d1b9190614d09565b9250505090565b6000612d4a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613c55565b905092915050565b612d5a6143c2565b612d648383613d69565b9050612d79818484612d74612cfe565b613e70565b866000018760200188604001896060018a6080018b60a00186815250868152508681525086815250868152508681525050505050505092915050565b80156131a057602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612fc857612e19611fa0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612e875750612e57611fa0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ec05750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612f53576000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612f525742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b82601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860206000820154816000015560018201548160010155600282015481600201556003820154816003015590505061319b565b612fd0611fa0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561303e575061300e611fa0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156130775750600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561311b57600061309361308a86611607565b600f5487611549565b9050806130d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cc90614a53565b60405180910390fd5b42600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b601c60206000820154816000015560018201548160010155600282015481600201556003820154816003015590505060206002015460206002018190555083601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6132c9565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132345783601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132c85782601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b60006132d58383612d52565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561337a5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134125782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133ca9190614d94565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061371b565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134b55750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613551578060c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135099190614cb3565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061371a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135f35750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137195782600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136439190614d94565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136d59190614cb3565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b8060000151600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376a9190614d94565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060200151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137fc9190614cb3565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550811561390b5761385781604001518260e00151613f2d565b61386a8160600151826101000151613f61565b61387d816080015182610120015161410c565b6138908160a001518261014001516142b7565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361012001518461010001516138f59190614cb3565b6040516139029190614bf3565b60405180910390a35b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161396c9190614bf3565b60405180910390a36139888460016142ff90919063ffffffff16565b50600061399486611c07565b14156139b0576139ae856001612d2290919063ffffffff16565b505b5050505050565b6000806000600e5490506000600d54905060005b600a80549050811015613c1f578260036000600a84815481106139f1576139f0614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613adf57508160046000600a8481548110613a7757613a76614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613af657600e54600d5494509450505050613c51565b60036000600a8381548110613b0e57613b0d614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b7f9190614d94565b925060046000600a8381548110613b9957613b98614f5c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613c0a9190614d94565b91508080613c1790614e86565b9150506139cb565b50600d54600e54613c309190614d09565b821015613c4857600e54600d54935093505050613c51565b81819350935050505b9091565b60008083600101600084815260200190815260200160002054905060008114613d5d576000600182613c879190614d94565b9050600060018660000180549050613c9f9190614d94565b9050818114613d0e576000866000018281548110613cc057613cbf614f5c565b5b9060005260206000200154905080876000018481548110613ce457613ce3614f5c565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613d2257613d21614f2d565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613d63565b60009150505b92915050565b613d716143c2565b81613d8557828160c0018181525050613e6a565b606460206000015484613d989190614d3a565b613da29190614d09565b8160e0018181525050606460206001015484613dbe9190614d3a565b613dc89190614d09565b81610100018181525050606460206002015484613de59190614d3a565b613def9190614d09565b81610120018181525050606460206003015484613e0c9190614d3a565b613e169190614d09565b816101400181815250508061014001518161012001518261010001518360e0015186613e429190614d94565b613e4c9190614d94565b613e569190614d94565b613e609190614d94565b8160c00181815250505b92915050565b6000806000806000808689613e859190614d3a565b955087613ea5578586600080600080955095509550955095509550613f20565b868a60e00151613eb59190614d3a565b9350868a6101000151613ec89190614d3a565b9250868a6101200151613edb9190614d3a565b9150868a6101400151613eee9190614d3a565b90508082848689613eff9190614d94565b613f099190614d94565b613f139190614d94565b613f1d9190614d94565b94505b9499939850945094509450565b81600e54613f3b9190614d94565b600e819055508060126000016000828254613f569190614cb3565b925050819055505050565b8060166000016000828254613f769190614cb3565b925050819055508060126001016000828254613f929190614cb3565b9250508190555081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49190614cb3565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141085780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140c49190614cb3565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b80601660010160008282546141219190614cb3565b92505081905550806012600201600082825461413d9190614cb3565b9250508190555081600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461418f9190614cb3565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142b35780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461426f9190614cb3565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b80601260030160008282546142cc9190614cb3565b9250508190555080600d546142e19190614d94565b600d8190555081600e546142f59190614d94565b600e819055505050565b6000614327836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61432f565b905092915050565b600061433b838361439f565b614394578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050614399565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008135905061442b81615323565b92915050565b60008083601f84011261444757614446614f90565b5b8235905067ffffffffffffffff81111561446457614463614f8b565b5b6020830191508360208202830111156144805761447f614f95565b5b9250929050565b6000813590506144968161533a565b92915050565b6000813590506144ab81615351565b92915050565b6000602082840312156144c7576144c6614f9f565b5b60006144d58482850161441c565b91505092915050565b600080604083850312156144f5576144f4614f9f565b5b60006145038582860161441c565b92505060206145148582860161441c565b9150509250929050565b60008060006060848603121561453757614536614f9f565b5b60006145458682870161441c565b93505060206145568682870161441c565b92505060406145678682870161449c565b9150509250925092565b6000806040838503121561458857614587614f9f565b5b60006145968582860161441c565b92505060206145a78582860161449c565b9150509250929050565b600080602083850312156145c8576145c7614f9f565b5b600083013567ffffffffffffffff8111156145e6576145e5614f9a565b5b6145f285828601614431565b92509250509250929050565b60006020828403121561461457614613614f9f565b5b600061462284828501614487565b91505092915050565b60006020828403121561464157614640614f9f565b5b600061464f8482850161449c565b91505092915050565b6000806040838503121561466f5761466e614f9f565b5b600061467d8582860161449c565b925050602061468e85828601614487565b9150509250929050565b6000806000606084860312156146b1576146b0614f9f565b5b60006146bf8682870161449c565b93505060206146d08682870161449c565b92505060406146e18682870161441c565b9150509250925092565b6000806000806080858703121561470557614704614f9f565b5b60006147138782880161449c565b94505060206147248782880161449c565b93505060406147358782880161449c565b92505060606147468782880161449c565b91505092959194509250565b61475b81614dc8565b82525050565b61476a81614dda565b82525050565b61477981614e1d565b82525050565b600061478a82614c97565b6147948185614ca2565b93506147a4818560208601614e53565b6147ad81614fa4565b840191505092915050565b60006147c5602383614ca2565b91506147d082614fb5565b604082019050919050565b60006147e8600583614ca2565b91506147f382615004565b602082019050919050565b600061480b602a83614ca2565b91506148168261502d565b604082019050919050565b600061482e602683614ca2565b91506148398261507c565b604082019050919050565b6000614851602283614ca2565b915061485c826150cb565b604082019050919050565b6000614874601b83614ca2565b915061487f8261511a565b602082019050919050565b6000614897601783614ca2565b91506148a282615143565b602082019050919050565b60006148ba601f83614ca2565b91506148c58261516c565b602082019050919050565b60006148dd601d83614ca2565b91506148e882615195565b602082019050919050565b6000614900602083614ca2565b915061490b826151be565b602082019050919050565b6000614923602983614ca2565b915061492e826151e7565b604082019050919050565b6000614946603083614ca2565b915061495182615236565b604082019050919050565b6000614969602583614ca2565b915061497482615285565b604082019050919050565b600061498c602483614ca2565b9150614997826152d4565b604082019050919050565b6149ab81614e06565b82525050565b6149ba81614e10565b82525050565b60006020820190506149d56000830184614752565b92915050565b60006020820190506149f06000830184614761565b92915050565b6000602082019050614a0b6000830184614770565b92915050565b60006020820190508181036000830152614a2b818461477f565b905092915050565b60006020820190508181036000830152614a4c816147b8565b9050919050565b60006020820190508181036000830152614a6c816147db565b9050919050565b60006020820190508181036000830152614a8c816147fe565b9050919050565b60006020820190508181036000830152614aac81614821565b9050919050565b60006020820190508181036000830152614acc81614844565b9050919050565b60006020820190508181036000830152614aec81614867565b9050919050565b60006020820190508181036000830152614b0c8161488a565b9050919050565b60006020820190508181036000830152614b2c816148ad565b9050919050565b60006020820190508181036000830152614b4c816148d0565b9050919050565b60006020820190508181036000830152614b6c816148f3565b9050919050565b60006020820190508181036000830152614b8c81614916565b9050919050565b60006020820190508181036000830152614bac81614939565b9050919050565b60006020820190508181036000830152614bcc8161495c565b9050919050565b60006020820190508181036000830152614bec8161497f565b9050919050565b6000602082019050614c0860008301846149a2565b92915050565b6000604082019050614c2360008301856149a2565b614c3060208301846149a2565b9392505050565b6000608082019050614c4c60008301876149a2565b614c5960208301866149a2565b614c6660408301856149a2565b614c7360608301846149a2565b95945050505050565b6000602082019050614c9160008301846149b1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000614cbe82614e06565b9150614cc983614e06565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614cfe57614cfd614ecf565b5b828201905092915050565b6000614d1482614e06565b9150614d1f83614e06565b925082614d2f57614d2e614efe565b5b828204905092915050565b6000614d4582614e06565b9150614d5083614e06565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d8957614d88614ecf565b5b828202905092915050565b6000614d9f82614e06565b9150614daa83614e06565b925082821015614dbd57614dbc614ecf565b5b828203905092915050565b6000614dd382614de6565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614e2882614e2f565b9050919050565b6000614e3a82614e41565b9050919050565b6000614e4c82614de6565b9050919050565b60005b83811015614e71578082015181840152602081019050614e56565b83811115614e80576000848401525b50505050565b6000614e9182614e06565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ec457614ec3614ecf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f6572726f72000000000000000000000000000000000000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f496e636f72726563742050616e63616b65207377617020726f75746572000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f752062616c616e636500000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61532c81614dc8565b811461533757600080fd5b50565b61534381614dda565b811461534e57600080fd5b50565b61535a81614e06565b811461536557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207a4c940582d6b9b529c9660ed91b26a30c0e23506e407538cf039e6eb9f9a19464736f6c63430008070033

Deployed Bytecode Sourcemap

16224:18208:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21925:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17477:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23325:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17214:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22210:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17440:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23494:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24916:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22119:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25938:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25513:417;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23826:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34288:139;;;;;;;;;;;;;:::i;:::-;;21086:553;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20279:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26421:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24452:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21782:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19036:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20554:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25172:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18845:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26658:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22317:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18266:129;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;7568:148;;;;;;;;;;;;;:::i;:::-;;18125:128;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;20819:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18793:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24324:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18080:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7345:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23067:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22020:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17736:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;24047:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16749:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22523:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18935:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26789:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17100:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23174:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22705:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20417:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26540:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16806:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22865:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7724:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17557:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21925:83;21962:13;21995:5;;;;;;;;;;;;;;;;;21988:12;;21925:83;:::o;17477:38::-;;;;:::o;23325:161::-;23400:4;23417:39;23426:12;:10;:12::i;:::-;23440:7;23449:6;23417:8;:39::i;:::-;23474:4;23467:11;;23325:161;;;;:::o;17214:87::-;;;;;;;;;;;;;:::o;22210:95::-;22263:7;22290;;22283:14;;22210:95;:::o;17440:29::-;;;;:::o;23494:324::-;23592:4;23609:36;23619:6;23627:9;23638:6;23609:9;:36::i;:::-;23656:121;23665:6;23673:12;:10;:12::i;:::-;23687:89;23725:6;23687:89;;;;;;;;;;;;;;;;;:11;:19;23699:6;23687:19;;;;;;;;;;;;;;;:33;23707:12;:10;:12::i;:::-;23687:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23656:8;:121::i;:::-;23795:13;;;;;;;;;;;23788:20;;23494:324;;;;;:::o;24916:248::-;24982:7;25021;;25010;:18;;25002:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25086:19;25109:10;:8;:10::i;:::-;25086:33;;25145:11;25137:7;:19;;;;:::i;:::-;25130:26;;;24916:248;;;:::o;22119:83::-;22160:5;16933:1;22178:16;;22119:83;:::o;25938:475::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26020:11:::1;:20;26032:7;26020:20;;;;;;;;;;;;;;;;;;;;;;;;;26012:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;26084:9;26079:327;26103:9;:16;;;;26099:1;:20;26079:327;;;26161:7;26145:23;;:9;26155:1;26145:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;26141:254;;;26204:9;26233:1;26214:9;:16;;;;:20;;;;:::i;:::-;26204:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26189:9;26199:1;26189:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;26273:1;26254:7;:16;26262:7;26254:16;;;;;;;;;;;;;;;:20;;;;26316:5;26293:11;:20;26305:7;26293:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26340:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;26374:5;;26141:254;26121:3;;;;;:::i;:::-;;;;26079:327;;;;25938:475:::0;:::o;25513:417::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25588:11:::1;:20;25600:7;25588:20;;;;;;;;;;;;;;;;;;;;;;;;;25584:238;;25653:4;25630:11;:20;25642:7;25630:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;25691:1;25672:7;:16;25680:7;25672:16;;;;;;;;;;;;;;;;:20;25669:108;;;25728:37;25748:7;:16;25756:7;25748:16;;;;;;;;;;;;;;;;25728:19;:37::i;:::-;25709:7;:16;25717:7;25709:16;;;;;;;;;;;;;;;:56;;;;25669:108;25787:9;25802:7;25787:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25584:238;25862:4;25832:18;:27;25851:7;25832:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;25887:35;25914:7;25887:19;:26;;:35;;;;:::i;:::-;;25513:417:::0;:::o;23826:213::-;23914:4;23931:78;23940:12;:10;:12::i;:::-;23954:7;23998:10;23963:11;:25;23975:12;:10;:12::i;:::-;23963:25;;;;;;;;;;;;;;;:34;23989:7;23963:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;23931:8;:78::i;:::-;24027:4;24020:11;;23826:213;;;;:::o;34288:139::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34334:15:::1;34352:21;34334:39;;34390:10;34382:28;;:37;34411:7;34382:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34325:102;34288:139::o:0;21086:553::-;21200:4;21252:1;21231:17;:22;21227:41;;;21263:5;21256:12;;;;21227:41;21289:17;21327;21309:15;:35;;;;:::i;:::-;21289:55;;21382:18;;21369:9;:31;21365:49;;;21410:4;21403:11;;;;;21365:49;21444:1;21431:9;:14;21427:120;;;21481:6;21466:21;;:11;;;;;;;;;;;:21;;;21462:74;;21515:5;21508:12;;;;;21462:74;21427:120;21574:8;21561:9;:21;21557:39;;21592:4;21585:11;;;;;21557:39;21626:5;21619:12;;;21086:553;;;;;;:::o;20279:129::-;20348:4;20372:20;:28;20393:6;20372:28;;;;;;;;;;;;;;;;20365:35;;20279:129;;;:::o;26421:111::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26520:4:::1;26490:18;:27;26509:7;26490:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;26421:111:::0;:::o;24452:456::-;24542:7;24581;;24570;:18;;24562:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24640:17;24635:266;;24674:28;24705:25;24716:7;24725:4;24705:10;:25::i;:::-;24674:56;;24752:1;:9;;;24745:16;;;;;24635:266;24794:28;24825:25;24836:7;24845:4;24825:10;:25::i;:::-;24794:56;;24872:1;:17;;;24865:24;;;24452:456;;;;;:::o;21782:133::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21883:24:::1;21867:13;:40;;;;21782:133:::0;:::o;19036:40::-;;;;;;;;;;;;;:::o;20554:253::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20683:3:::1;20668:8;:12;;:18;;;;20718:9;20697:8;:18;;:30;;;;20759:9;20738:8;:18;;:30;;;;20795:4;20779:8;:13;;:20;;;;20554:253:::0;;;;:::o;25172:333::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25255:11:::1;:20;25267:7;25255:20;;;;;;;;;;;;;;;;;;;;;;;;;25254:21;25246:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;25340:1;25321:7;:16;25329:7;25321:16;;;;;;;;;;;;;;;;:20;25318:108;;;25377:37;25397:7;:16;25405:7;25397:16;;;;;;;;;;;;;;;;25377:19;:37::i;:::-;25358:7;:16;25366:7;25358:16;;;;;;;;;;;;;;;:56;;;;25318:108;25459:4;25436:11;:20;25448:7;25436:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;25474:9;25489:7;25474:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25172:333:::0;:::o;18845:32::-;;;;;;;;;;;;;:::o;26658:123::-;26722:4;26746:18;:27;26765:7;26746:27;;;;;;;;;;;;;;;;;;;;;;;;;26739:34;;26658:123;;;:::o;22317:198::-;22383:7;22407:11;:20;22419:7;22407:20;;;;;;;;;;;;;;;;;;;;;;;;;22403:49;;;22436:7;:16;22444:7;22436:16;;;;;;;;;;;;;;;;22429:23;;;;22403:49;22470:37;22490:7;:16;22498:7;22490:16;;;;;;;;;;;;;;;;22470:19;:37::i;:::-;22463:44;;22317:198;;;;:::o;18266:129::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7568:148::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7675:1:::1;7638:40;;7659:6;::::0;::::1;;;;;;;;7638:40;;;;;;;;;;;;7706:1;7689:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7568:148::o:0;18125:128::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20819:258::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20950:3:::1;20934:9;:13;;:19;;;;20986:9;20964;:19;;:31;;;;21028:9;21006;:19;;:31;;;;21065:4;21048:9;:14;;:21;;;;20819:258:::0;;;;:::o;18793:45::-;;;;;;;;;;;;;:::o;24324:120::-;24392:4;24416:11;:20;24428:7;24416:20;;;;;;;;;;;;;;;;;;;;;;;;;24409:27;;24324:120;;;:::o;18080:31::-;;;;;;;;;;;;;;:::o;7345:87::-;7391:7;7418:6;;;;;;;;;;;7411:13;;7345:87;:::o;23067:95::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23147:7:::1;23131:13;;:23;;;;;;;;;;;;;;;;;;23067:95:::0;:::o;22020:87::-;22059:13;22092:7;;;;;;;;;;;;;;;;;22085:14;;22020:87;:::o;17736:36::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;24047:269::-;24140:4;24157:129;24166:12;:10;:12::i;:::-;24180:7;24189:96;24228:15;24189:96;;;;;;;;;;;;;;;;;:11;:25;24201:12;:10;:12::i;:::-;24189:25;;;;;;;;;;;;;;;:34;24215:7;24189:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;24157:8;:129::i;:::-;24304:4;24297:11;;24047:269;;;;:::o;16749:53::-;;;;;;;;;;;;;;;;;:::o;22523:170::-;22601:4;22618:42;22628:12;:10;:12::i;:::-;22642:9;22653:6;22618:9;:42::i;:::-;22678:7;;;;;;;;;;;22671:14;;22523:170;;;;:::o;18935:26::-;;;;;;;;;;;;;:::o;26789:171::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26890:8:::1;26866:21;;:32;;;;;;;;;;;;;;;;;;26914:38;26943:8;26914:38;;;;;;:::i;:::-;;;;;;;;26789:171:::0;:::o;17100:87::-;;;;;;;;;;;;;:::o;23174:143::-;23255:7;23282:11;:18;23294:5;23282:18;;;;;;;;;;;;;;;:27;23301:7;23282:27;;;;;;;;;;;;;;;;23275:34;;23174:143;;;;:::o;22705:86::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22776:7:::1;22766;;:17;;;;;;;;;;;;;;;;;;22705:86:::0;:::o;20417:125::-;20483:4;20507:15;:27;20523:10;20507:27;;;;;;;;;;;;;;;;20500:34;;20417:125;;;:::o;26540:110::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26637:5:::1;26607:18;:27;26626:7;26607:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;26540:110:::0;:::o;16806:48::-;;;;;;;;;;;;;;;;;:::o;22865:194::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22949:6:::1;22944:108;22965:8;;:15;;22961:1;:19;22944:108;;;23036:4;23002:18;:31;23021:8;;23030:1;23021:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23002:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22982:3;;;;;:::i;:::-;;;;22944:108;;;;22865:194:::0;;:::o;7724:244::-;7491:12;:10;:12::i;:::-;7480:23;;:7;:5;:7::i;:::-;:23;;;7472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7833:1:::1;7813:22;;:8;:22;;;;7805:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7923:8;7894:38;;7915:6;::::0;::::1;;;;;;;;7894:38;;;;;;;;;;;;7952:8;7943:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7724:244:::0;:::o;17557:26::-;;;;;;;;;;;;;:::o;3242:98::-;3295:7;3322:10;3315:17;;3242:98;:::o;30433:335::-;30543:1;30526:19;;:5;:19;;;;30518:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30624:1;30605:21;;:7;:21;;;;30597:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30706:6;30676:11;:18;30688:5;30676:18;;;;;;;;;;;;;;;:27;30695:7;30676:27;;;;;;;;;;;;;;;:36;;;;30744:7;30728:32;;30737:5;30728:32;;;30753:6;30728:32;;;;;;:::i;:::-;;;;;;;;30433:335;;;:::o;30776:601::-;30880:1;30864:18;;:4;:18;;;;30856:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30957:1;30943:16;;:2;:16;;;;30935:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31027:1;31018:6;:10;31010:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31103:15;31113:4;31103:9;:15::i;:::-;31093:6;:25;;31085:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;31200:27;;;;;;;;;;;31189:38;;:7;:5;:7::i;:::-;:38;;;31181:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;31282:87;31297:4;31303:2;31307:6;31317:18;:24;31336:4;31317:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;31345:18;:22;31364:2;31345:22;;;;;;;;;;;;;;;;;;;;;;;;;31317:50;31315:53;31282:14;:87::i;:::-;30776:601;;;:::o;2468:240::-;2588:7;2646:1;2641;:6;;2649:12;2633:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2688:1;2684;:5;2677:12;;2468:240;;;;;:::o;28636:158::-;28677:7;28698:15;28715;28734:19;:17;:19::i;:::-;28697:56;;;;28779:7;28771;:15;;;;:::i;:::-;28764:22;;;;28636:158;:::o;15319:::-;15392:4;15416:53;15424:3;:10;;15460:5;15444:23;;15436:32;;15416:7;:53::i;:::-;15409:60;;15319:158;;;;:::o;27005:386::-;27078:36;;:::i;:::-;27139:29;27151:7;27160;27139:11;:29::i;:::-;27127:41;;27302:52;27314:9;27325:7;27334;27343:10;:8;:10::i;:::-;27302:11;:52::i;:::-;27182:9;:17;;27200:9;:25;;27226:9;:14;;27241:9;:20;;27262:9;:20;;27283:9;:15;;27181:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27005:386;;;;:::o;31393:2526::-;31507:7;31504:1207;;;31544:17;;;;;;;;;;;31534:27;;:6;:27;;;31531:936;;;31595:7;:5;:7::i;:::-;31585:17;;:6;:17;;;;:41;;;;;31619:7;:5;:7::i;:::-;31606:20;;:9;:20;;;;31585:41;:68;;;;;31651:1;31630:23;;:9;:23;;;;31585:68;31582:258;;;31718:1;31683:20;:31;31704:9;31683:31;;;;;;;;;;;;;;;;:36;31679:142;;;31782:15;31748:20;:31;31769:9;31748:31;;;;;;;;;;;;;;;:49;;;;31679:142;31582:258;31872:9;31858:11;;:23;;;;;;;;;;;;;;;;;;31914:8;31900:11;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31531:936;;;31977:7;:5;:7::i;:::-;31967:17;;:6;:17;;;;:41;;;;;32001:7;:5;:7::i;:::-;31988:20;;:9;:20;;;;31967:41;:68;;;;;32033:1;32012:23;;:9;:23;;;;31967:68;31964:340;;;32059:20;32082:77;32105:30;32128:6;32105:22;:30::i;:::-;32137:13;;32152:6;32082:22;:77::i;:::-;32059:100;;32190:15;32182:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;32264:15;32238;:23;32254:6;32238:23;;;;;;;;;;;;;;;:41;;;;32036:268;31964:340;32336:9;32322:11;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32388:11;:21;;;32364:11;:21;;:45;;;;32443:6;32429:11;;:20;;;;;;;;;;;;;;;;;;31531:936;31504:1207;;;32511:18;:26;32530:6;32511:26;;;;;;;;;;;;;;;;;;;;;;;;;32508:86;;;32572:6;32558:11;;:20;;;;;;;;;;;;;;;;;;32508:86;32611:18;:29;32630:9;32611:29;;;;;;;;;;;;;;;;;;;;;;;;;32608:92;;;32675:9;32661:11;;:23;;;;;;;;;;;;;;;;;;32608:92;31504:1207;32723:28;32754;32765:7;32774;32754:10;:28::i;:::-;32723:59;;32799:11;:19;32811:6;32799:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;32823:11;:22;32835:9;32823:22;;;;;;;;;;;;;;;;;;;;;;;;;32822:23;32799:46;32795:475;;;32900:7;32884;:15;32892:6;32884:15;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;32866:7;:15;32874:6;32866:15;;;;;;;;;;;;;;;:41;;;;32795:475;;;32930:11;:19;32942:6;32930:19;;;;;;;;;;;;;;;;;;;;;;;;;32929:20;:46;;;;;32953:11;:22;32965:9;32953:22;;;;;;;;;;;;;;;;;;;;;;;;;32929:46;32925:345;;;33036:1;:17;;;33017:7;:18;33025:9;33017:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;32996:7;:18;33004:9;32996:18;;;;;;;;;;;;;;;:57;;;;32925:345;;;33075:11;:19;33087:6;33075:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;33098:11;:22;33110:9;33098:22;;;;;;;;;;;;;;;;;;;;;;;;;33075:45;33071:199;;;33175:7;33159;:15;33167:6;33159:15;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;33141:7;:15;33149:6;33141:15;;;;;;;;;;;;;;;:41;;;;33241:1;:17;;;33222:7;:18;33230:9;33222:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;33201:7;:18;33209:9;33201:18;;;;;;;;;;;;;;;:57;;;;33071:199;32925:345;32795:475;33316:1;:9;;;33300:7;:15;33308:6;33300:15;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;33282:7;:15;33290:6;33282:15;;;;;;;;;;;;;;;:43;;;;33376:1;:17;;;33357:7;:18;33365:9;33357:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;33336:7;:18;33344:9;33336:18;;;;;;;;;;;;;;;:57;;;;33409:7;33406:306;;;33438:27;33450:1;:6;;;33458:1;:6;;;33438:11;:27::i;:::-;33476:41;33491:1;:12;;;33504:1;:12;;;33476:14;:41::i;:::-;33528;33543:1;:12;;;33556:1;:12;;;33528:14;:41::i;:::-;33580:26;33590:1;:7;;;33598:1;:7;;;33580:9;:26::i;:::-;33657:4;33632:58;;33641:6;33632:58;;;33677:1;:12;;;33664:1;:12;;;:25;;;;:::i;:::-;33632:58;;;;;;:::i;:::-;;;;;;;;33406:306;33752:9;33735:46;;33744:6;33735:46;;;33763:1;:17;;;33735:46;;;;;;:::i;:::-;;;;;;;;33792:34;33816:9;33792:19;:23;;:34;;;;:::i;:::-;;33861:1;33842:17;33852:6;33842:9;:17::i;:::-;:20;33839:68;;;33873:34;33900:6;33873:19;:26;;:34;;;;:::i;:::-;;33839:68;31491:2428;31393:2526;;;;:::o;28802:540::-;28852:7;28861;28881:15;28899:7;;28881:25;;28917:15;28935:7;;28917:25;;28958:9;28953:279;28977:9;:16;;;;28973:1;:20;28953:279;;;29043:7;29019;:21;29027:9;29037:1;29027:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29019:21;;;;;;;;;;;;;;;;:31;:66;;;;29078:7;29054;:21;29062:9;29072:1;29062:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29054:21;;;;;;;;;;;;;;;;:31;29019:66;29015:97;;;29095:7;;29104;;29087:25;;;;;;;;;29015:97;29145:7;:21;29153:9;29163:1;29153:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29145:21;;;;;;;;;;;;;;;;29137:7;:29;;;;:::i;:::-;29127:39;;29199:7;:21;29207:9;29217:1;29207:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29199:21;;;;;;;;;;;;;;;;29191:7;:29;;;;:::i;:::-;29181:39;;28995:3;;;;;:::i;:::-;;;;28953:279;;;;29264:7;;29256;;:15;;;;:::i;:::-;29246:7;:25;29242:56;;;29281:7;;29290;;29273:25;;;;;;;;29242:56;29317:7;29326;29309:25;;;;;;28802:540;;;:::o;13920:675::-;13986:4;14003:18;14024:3;:12;;:19;14037:5;14024:19;;;;;;;;;;;;14003:40;;14074:1;14060:10;:15;14056:532;;14092:21;14129:1;14116:10;:14;;;;:::i;:::-;14092:38;;14145:17;14186:1;14165:3;:11;;:18;;;;:22;;;;:::i;:::-;14145:42;;14221:13;14208:9;:26;14204:223;;14255:17;14275:3;:11;;14287:9;14275:22;;;;;;;;:::i;:::-;;;;;;;;;;14255:42;;14347:9;14318:3;:11;;14330:13;14318:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;14401:10;14375:3;:12;;:23;14388:9;14375:23;;;;;;;;;;;:36;;;;14236:191;14204:223;14443:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14484:3;:12;;:19;14497:5;14484:19;;;;;;;;;;;14477:26;;;14527:4;14520:11;;;;;;;14056:532;14571:5;14564:12;;;13920:675;;;;;:::o;27399:526::-;27473:28;;:::i;:::-;27520:7;27516:86;;27562:7;27542:1;:17;;:27;;;;;27582:8;;27516:86;27645:3;27629:11;:15;;;27621:7;:23;;;;:::i;:::-;:27;;;;:::i;:::-;27612:1;:6;;:36;;;;;27704:3;27682:11;:21;;;27674:7;:29;;;;:::i;:::-;:33;;;;:::i;:::-;27659:1;:12;;:48;;;;;27763:3;27741:11;:21;;;27733:7;:29;;;;:::i;:::-;:33;;;;:::i;:::-;27718:1;:12;;:48;;;;;27812:3;27795:11;:16;;;27787:7;:24;;;;:::i;:::-;:28;;;;:::i;:::-;27777:1;:7;;:38;;;;;27890:1;:7;;;27876:1;:12;;;27862:1;:12;;;27854:1;:6;;;27846:7;:14;;;;:::i;:::-;:28;;;;:::i;:::-;:42;;;;:::i;:::-;:51;;;;:::i;:::-;27826:1;:17;;:71;;;;;27399:526;;;;;:::o;27933:695::-;28058:15;28075:23;28100:12;28114:18;28134;28154:13;28198:11;28190:7;:19;;;;:::i;:::-;28180:29;;28226:7;28222:71;;28255:7;28264;28273:1;28275;28277;28279;28248:33;;;;;;;;;;;;;;28222:71;28318:11;28311:1;:6;;;:18;;;;:::i;:::-;28305:24;;28365:11;28352:1;:12;;;:24;;;;:::i;:::-;28340:36;;28412:11;28399:1;:12;;;:24;;;;:::i;:::-;28387:36;;28449:11;28441:1;:7;;;:19;;;;:::i;:::-;28434:26;;28526:5;28515:10;28504;28499:4;28490:7;:13;;;;:::i;:::-;:24;;;;:::i;:::-;:35;;;;:::i;:::-;:41;;;;:::i;:::-;28473:58;;27933:695;;;;;;;;;;;;:::o;29350:130::-;29436:4;29428:7;;:12;;;;:::i;:::-;29418:7;:22;;;;29468:4;29451:11;:15;;;:21;;;;;;;:::i;:::-;;;;;;;;29350:130;;:::o;29488:384::-;29606:10;29571:15;:33;;;:45;;;;;;;:::i;:::-;;;;;;;;29650:10;29627:11;:21;;;:33;;;;;;;:::i;:::-;;;;;;;;29719:10;29696:7;:22;29712:4;29696:22;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;29671:7;:22;29687:4;29671:22;;;;;;;;;;;;;;;:58;;;;29743:11;:26;29763:4;29743:26;;;;;;;;;;;;;;;;;;;;;;;;;29740:125;;;29843:10;29820:7;:22;29836:4;29820:22;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;29795:7;:22;29811:4;29795:22;;;;;;;;;;;;;;;:58;;;;29740:125;29488:384;;:::o;29884:364::-;29994:10;29966:15;:26;;;:38;;;;;;;:::i;:::-;;;;;;;;30038:10;30015:11;:21;;;:33;;;;;;;:::i;:::-;;;;;;;;30117:10;30094:7;:22;30110:4;30094:22;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;30069:7;:22;30085:4;30069:22;;;;;;;;;;;;;;;:58;;;;30141:11;:26;30161:4;30141:26;;;;;;;;;;;;;;;;;;;;;;;;;30138:102;;;30230:10;30207:7;:22;30223:4;30207:22;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;30182:7;:22;30198:4;30182:22;;;;;;;;;;;;;;;:58;;;;30138:102;29884:364;;:::o;30256:169::-;30342:5;30324:11;:16;;;:23;;;;;;;:::i;:::-;;;;;;;;30378:5;30370:7;;:13;;;;:::i;:::-;30360:7;:23;;;;30412:5;30404:7;;:13;;;;:::i;:::-;30394:7;:23;;;;30256:169;;:::o;15159:152::-;15229:4;15253:50;15258:3;:10;;15294:5;15278:23;;15270:32;;15253:4;:50::i;:::-;15246:57;;15159:152;;;;:::o;13621:291::-;13684:4;13706:21;13716:3;13721:5;13706:9;:21::i;:::-;13701:204;;13744:3;:11;;13761:5;13744:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13804:3;:11;;:18;;;;13782:3;:12;;:19;13795:5;13782:19;;;;;;;;;;;:40;;;;13844:4;13837:11;;;;13701:204;13888:5;13881:12;;13621:291;;;;;:::o;14603:129::-;14676:4;14723:1;14700:3;:12;;:19;14713:5;14700:19;;;;;;;;;;;;:24;;14693:31;;14603:129;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;169:568::-;242:8;252:6;302:3;295:4;287:6;283:17;279:27;269:122;;310:79;;:::i;:::-;269:122;423:6;410:20;400:30;;453:18;445:6;442:30;439:117;;;475:79;;:::i;:::-;439:117;589:4;581:6;577:17;565:29;;643:3;635:4;627:6;623:17;613:8;609:32;606:41;603:128;;;650:79;;:::i;:::-;603:128;169:568;;;;;:::o;743:133::-;786:5;824:6;811:20;802:29;;840:30;864:5;840:30;:::i;:::-;743:133;;;;:::o;882:139::-;928:5;966:6;953:20;944:29;;982:33;1009:5;982:33;:::i;:::-;882:139;;;;:::o;1027:329::-;1086:6;1135:2;1123:9;1114:7;1110:23;1106:32;1103:119;;;1141:79;;:::i;:::-;1103:119;1261:1;1286:53;1331:7;1322:6;1311:9;1307:22;1286:53;:::i;:::-;1276:63;;1232:117;1027:329;;;;:::o;1362:474::-;1430:6;1438;1487:2;1475:9;1466:7;1462:23;1458:32;1455:119;;;1493:79;;:::i;:::-;1455:119;1613:1;1638:53;1683:7;1674:6;1663:9;1659:22;1638:53;:::i;:::-;1628:63;;1584:117;1740:2;1766:53;1811:7;1802:6;1791:9;1787:22;1766:53;:::i;:::-;1756:63;;1711:118;1362:474;;;;;:::o;1842:619::-;1919:6;1927;1935;1984:2;1972:9;1963:7;1959:23;1955:32;1952:119;;;1990:79;;:::i;:::-;1952:119;2110:1;2135:53;2180:7;2171:6;2160:9;2156:22;2135:53;:::i;:::-;2125:63;;2081:117;2237:2;2263:53;2308:7;2299:6;2288:9;2284:22;2263:53;:::i;:::-;2253:63;;2208:118;2365:2;2391:53;2436:7;2427:6;2416:9;2412:22;2391:53;:::i;:::-;2381:63;;2336:118;1842:619;;;;;:::o;2467:474::-;2535:6;2543;2592:2;2580:9;2571:7;2567:23;2563:32;2560:119;;;2598:79;;:::i;:::-;2560:119;2718:1;2743:53;2788:7;2779:6;2768:9;2764:22;2743:53;:::i;:::-;2733:63;;2689:117;2845:2;2871:53;2916:7;2907:6;2896:9;2892:22;2871:53;:::i;:::-;2861:63;;2816:118;2467:474;;;;;:::o;2947:559::-;3033:6;3041;3090:2;3078:9;3069:7;3065:23;3061:32;3058:119;;;3096:79;;:::i;:::-;3058:119;3244:1;3233:9;3229:17;3216:31;3274:18;3266:6;3263:30;3260:117;;;3296:79;;:::i;:::-;3260:117;3409:80;3481:7;3472:6;3461:9;3457:22;3409:80;:::i;:::-;3391:98;;;;3187:312;2947:559;;;;;:::o;3512:323::-;3568:6;3617:2;3605:9;3596:7;3592:23;3588:32;3585:119;;;3623:79;;:::i;:::-;3585:119;3743:1;3768:50;3810:7;3801:6;3790:9;3786:22;3768:50;:::i;:::-;3758:60;;3714:114;3512:323;;;;:::o;3841:329::-;3900:6;3949:2;3937:9;3928:7;3924:23;3920:32;3917:119;;;3955:79;;:::i;:::-;3917:119;4075:1;4100:53;4145:7;4136:6;4125:9;4121:22;4100:53;:::i;:::-;4090:63;;4046:117;3841:329;;;;:::o;4176:468::-;4241:6;4249;4298:2;4286:9;4277:7;4273:23;4269:32;4266:119;;;4304:79;;:::i;:::-;4266:119;4424:1;4449:53;4494:7;4485:6;4474:9;4470:22;4449:53;:::i;:::-;4439:63;;4395:117;4551:2;4577:50;4619:7;4610:6;4599:9;4595:22;4577:50;:::i;:::-;4567:60;;4522:115;4176:468;;;;;:::o;4650:619::-;4727:6;4735;4743;4792:2;4780:9;4771:7;4767:23;4763:32;4760:119;;;4798:79;;:::i;:::-;4760:119;4918:1;4943:53;4988:7;4979:6;4968:9;4964:22;4943:53;:::i;:::-;4933:63;;4889:117;5045:2;5071:53;5116:7;5107:6;5096:9;5092:22;5071:53;:::i;:::-;5061:63;;5016:118;5173:2;5199:53;5244:7;5235:6;5224:9;5220:22;5199:53;:::i;:::-;5189:63;;5144:118;4650:619;;;;;:::o;5275:765::-;5361:6;5369;5377;5385;5434:3;5422:9;5413:7;5409:23;5405:33;5402:120;;;5441:79;;:::i;:::-;5402:120;5561:1;5586:53;5631:7;5622:6;5611:9;5607:22;5586:53;:::i;:::-;5576:63;;5532:117;5688:2;5714:53;5759:7;5750:6;5739:9;5735:22;5714:53;:::i;:::-;5704:63;;5659:118;5816:2;5842:53;5887:7;5878:6;5867:9;5863:22;5842:53;:::i;:::-;5832:63;;5787:118;5944:2;5970:53;6015:7;6006:6;5995:9;5991:22;5970:53;:::i;:::-;5960:63;;5915:118;5275:765;;;;;;;:::o;6046:118::-;6133:24;6151:5;6133:24;:::i;:::-;6128:3;6121:37;6046:118;;:::o;6170:109::-;6251:21;6266:5;6251:21;:::i;:::-;6246:3;6239:34;6170:109;;:::o;6285:185::-;6399:64;6457:5;6399:64;:::i;:::-;6394:3;6387:77;6285:185;;:::o;6476:364::-;6564:3;6592:39;6625:5;6592:39;:::i;:::-;6647:71;6711:6;6706:3;6647:71;:::i;:::-;6640:78;;6727:52;6772:6;6767:3;6760:4;6753:5;6749:16;6727:52;:::i;:::-;6804:29;6826:6;6804:29;:::i;:::-;6799:3;6795:39;6788:46;;6568:272;6476:364;;;;:::o;6846:366::-;6988:3;7009:67;7073:2;7068:3;7009:67;:::i;:::-;7002:74;;7085:93;7174:3;7085:93;:::i;:::-;7203:2;7198:3;7194:12;7187:19;;6846:366;;;:::o;7218:365::-;7360:3;7381:66;7445:1;7440:3;7381:66;:::i;:::-;7374:73;;7456:93;7545:3;7456:93;:::i;:::-;7574:2;7569:3;7565:12;7558:19;;7218:365;;;:::o;7589:366::-;7731:3;7752:67;7816:2;7811:3;7752:67;:::i;:::-;7745:74;;7828:93;7917:3;7828:93;:::i;:::-;7946:2;7941:3;7937:12;7930:19;;7589:366;;;:::o;7961:::-;8103:3;8124:67;8188:2;8183:3;8124:67;:::i;:::-;8117:74;;8200:93;8289:3;8200:93;:::i;:::-;8318:2;8313:3;8309:12;8302:19;;7961:366;;;:::o;8333:::-;8475:3;8496:67;8560:2;8555:3;8496:67;:::i;:::-;8489:74;;8572:93;8661:3;8572:93;:::i;:::-;8690:2;8685:3;8681:12;8674:19;;8333:366;;;:::o;8705:::-;8847:3;8868:67;8932:2;8927:3;8868:67;:::i;:::-;8861:74;;8944:93;9033:3;8944:93;:::i;:::-;9062:2;9057:3;9053:12;9046:19;;8705:366;;;:::o;9077:::-;9219:3;9240:67;9304:2;9299:3;9240:67;:::i;:::-;9233:74;;9316:93;9405:3;9316:93;:::i;:::-;9434:2;9429:3;9425:12;9418:19;;9077:366;;;:::o;9449:::-;9591:3;9612:67;9676:2;9671:3;9612:67;:::i;:::-;9605:74;;9688:93;9777:3;9688:93;:::i;:::-;9806:2;9801:3;9797:12;9790:19;;9449:366;;;:::o;9821:::-;9963:3;9984:67;10048:2;10043:3;9984:67;:::i;:::-;9977:74;;10060:93;10149:3;10060:93;:::i;:::-;10178:2;10173:3;10169:12;10162:19;;9821:366;;;:::o;10193:::-;10335:3;10356:67;10420:2;10415:3;10356:67;:::i;:::-;10349:74;;10432:93;10521:3;10432:93;:::i;:::-;10550:2;10545:3;10541:12;10534:19;;10193:366;;;:::o;10565:::-;10707:3;10728:67;10792:2;10787:3;10728:67;:::i;:::-;10721:74;;10804:93;10893:3;10804:93;:::i;:::-;10922:2;10917:3;10913:12;10906:19;;10565:366;;;:::o;10937:::-;11079:3;11100:67;11164:2;11159:3;11100:67;:::i;:::-;11093:74;;11176:93;11265:3;11176:93;:::i;:::-;11294:2;11289:3;11285:12;11278:19;;10937:366;;;:::o;11309:::-;11451:3;11472:67;11536:2;11531:3;11472:67;:::i;:::-;11465:74;;11548:93;11637:3;11548:93;:::i;:::-;11666:2;11661:3;11657:12;11650:19;;11309:366;;;:::o;11681:::-;11823:3;11844:67;11908:2;11903:3;11844:67;:::i;:::-;11837:74;;11920:93;12009:3;11920:93;:::i;:::-;12038:2;12033:3;12029:12;12022:19;;11681:366;;;:::o;12053:118::-;12140:24;12158:5;12140:24;:::i;:::-;12135:3;12128:37;12053:118;;:::o;12177:112::-;12260:22;12276:5;12260:22;:::i;:::-;12255:3;12248:35;12177:112;;:::o;12295:222::-;12388:4;12426:2;12415:9;12411:18;12403:26;;12439:71;12507:1;12496:9;12492:17;12483:6;12439:71;:::i;:::-;12295:222;;;;:::o;12523:210::-;12610:4;12648:2;12637:9;12633:18;12625:26;;12661:65;12723:1;12712:9;12708:17;12699:6;12661:65;:::i;:::-;12523:210;;;;:::o;12739:276::-;12859:4;12897:2;12886:9;12882:18;12874:26;;12910:98;13005:1;12994:9;12990:17;12981:6;12910:98;:::i;:::-;12739:276;;;;:::o;13021:313::-;13134:4;13172:2;13161:9;13157:18;13149:26;;13221:9;13215:4;13211:20;13207:1;13196:9;13192:17;13185:47;13249:78;13322:4;13313:6;13249:78;:::i;:::-;13241:86;;13021:313;;;;:::o;13340:419::-;13506:4;13544:2;13533:9;13529:18;13521:26;;13593:9;13587:4;13583:20;13579:1;13568:9;13564:17;13557:47;13621:131;13747:4;13621:131;:::i;:::-;13613:139;;13340:419;;;:::o;13765:::-;13931:4;13969:2;13958:9;13954:18;13946:26;;14018:9;14012:4;14008:20;14004:1;13993:9;13989:17;13982:47;14046:131;14172:4;14046:131;:::i;:::-;14038:139;;13765:419;;;:::o;14190:::-;14356:4;14394:2;14383:9;14379:18;14371:26;;14443:9;14437:4;14433:20;14429:1;14418:9;14414:17;14407:47;14471:131;14597:4;14471:131;:::i;:::-;14463:139;;14190:419;;;:::o;14615:::-;14781:4;14819:2;14808:9;14804:18;14796:26;;14868:9;14862:4;14858:20;14854:1;14843:9;14839:17;14832:47;14896:131;15022:4;14896:131;:::i;:::-;14888:139;;14615:419;;;:::o;15040:::-;15206:4;15244:2;15233:9;15229:18;15221:26;;15293:9;15287:4;15283:20;15279:1;15268:9;15264:17;15257:47;15321:131;15447:4;15321:131;:::i;:::-;15313:139;;15040:419;;;:::o;15465:::-;15631:4;15669:2;15658:9;15654:18;15646:26;;15718:9;15712:4;15708:20;15704:1;15693:9;15689:17;15682:47;15746:131;15872:4;15746:131;:::i;:::-;15738:139;;15465:419;;;:::o;15890:::-;16056:4;16094:2;16083:9;16079:18;16071:26;;16143:9;16137:4;16133:20;16129:1;16118:9;16114:17;16107:47;16171:131;16297:4;16171:131;:::i;:::-;16163:139;;15890:419;;;:::o;16315:::-;16481:4;16519:2;16508:9;16504:18;16496:26;;16568:9;16562:4;16558:20;16554:1;16543:9;16539:17;16532:47;16596:131;16722:4;16596:131;:::i;:::-;16588:139;;16315:419;;;:::o;16740:::-;16906:4;16944:2;16933:9;16929:18;16921:26;;16993:9;16987:4;16983:20;16979:1;16968:9;16964:17;16957:47;17021:131;17147:4;17021:131;:::i;:::-;17013:139;;16740:419;;;:::o;17165:::-;17331:4;17369:2;17358:9;17354:18;17346:26;;17418:9;17412:4;17408:20;17404:1;17393:9;17389:17;17382:47;17446:131;17572:4;17446:131;:::i;:::-;17438:139;;17165:419;;;:::o;17590:::-;17756:4;17794:2;17783:9;17779:18;17771:26;;17843:9;17837:4;17833:20;17829:1;17818:9;17814:17;17807:47;17871:131;17997:4;17871:131;:::i;:::-;17863:139;;17590:419;;;:::o;18015:::-;18181:4;18219:2;18208:9;18204:18;18196:26;;18268:9;18262:4;18258:20;18254:1;18243:9;18239:17;18232:47;18296:131;18422:4;18296:131;:::i;:::-;18288:139;;18015:419;;;:::o;18440:::-;18606:4;18644:2;18633:9;18629:18;18621:26;;18693:9;18687:4;18683:20;18679:1;18668:9;18664:17;18657:47;18721:131;18847:4;18721:131;:::i;:::-;18713:139;;18440:419;;;:::o;18865:::-;19031:4;19069:2;19058:9;19054:18;19046:26;;19118:9;19112:4;19108:20;19104:1;19093:9;19089:17;19082:47;19146:131;19272:4;19146:131;:::i;:::-;19138:139;;18865:419;;;:::o;19290:222::-;19383:4;19421:2;19410:9;19406:18;19398:26;;19434:71;19502:1;19491:9;19487:17;19478:6;19434:71;:::i;:::-;19290:222;;;;:::o;19518:332::-;19639:4;19677:2;19666:9;19662:18;19654:26;;19690:71;19758:1;19747:9;19743:17;19734:6;19690:71;:::i;:::-;19771:72;19839:2;19828:9;19824:18;19815:6;19771:72;:::i;:::-;19518:332;;;;;:::o;19856:553::-;20033:4;20071:3;20060:9;20056:19;20048:27;;20085:71;20153:1;20142:9;20138:17;20129:6;20085:71;:::i;:::-;20166:72;20234:2;20223:9;20219:18;20210:6;20166:72;:::i;:::-;20248;20316:2;20305:9;20301:18;20292:6;20248:72;:::i;:::-;20330;20398:2;20387:9;20383:18;20374:6;20330:72;:::i;:::-;19856:553;;;;;;;:::o;20415:214::-;20504:4;20542:2;20531:9;20527:18;20519:26;;20555:67;20619:1;20608:9;20604:17;20595:6;20555:67;:::i;:::-;20415:214;;;;:::o;20716:99::-;20768:6;20802:5;20796:12;20786:22;;20716:99;;;:::o;20821:169::-;20905:11;20939:6;20934:3;20927:19;20979:4;20974:3;20970:14;20955:29;;20821:169;;;;:::o;20996:305::-;21036:3;21055:20;21073:1;21055:20;:::i;:::-;21050:25;;21089:20;21107:1;21089:20;:::i;:::-;21084:25;;21243:1;21175:66;21171:74;21168:1;21165:81;21162:107;;;21249:18;;:::i;:::-;21162:107;21293:1;21290;21286:9;21279:16;;20996:305;;;;:::o;21307:185::-;21347:1;21364:20;21382:1;21364:20;:::i;:::-;21359:25;;21398:20;21416:1;21398:20;:::i;:::-;21393:25;;21437:1;21427:35;;21442:18;;:::i;:::-;21427:35;21484:1;21481;21477:9;21472:14;;21307:185;;;;:::o;21498:348::-;21538:7;21561:20;21579:1;21561:20;:::i;:::-;21556:25;;21595:20;21613:1;21595:20;:::i;:::-;21590:25;;21783:1;21715:66;21711:74;21708:1;21705:81;21700:1;21693:9;21686:17;21682:105;21679:131;;;21790:18;;:::i;:::-;21679:131;21838:1;21835;21831:9;21820:20;;21498:348;;;;:::o;21852:191::-;21892:4;21912:20;21930:1;21912:20;:::i;:::-;21907:25;;21946:20;21964:1;21946:20;:::i;:::-;21941:25;;21985:1;21982;21979:8;21976:34;;;21990:18;;:::i;:::-;21976:34;22035:1;22032;22028:9;22020:17;;21852:191;;;;:::o;22049:96::-;22086:7;22115:24;22133:5;22115:24;:::i;:::-;22104:35;;22049:96;;;:::o;22151:90::-;22185:7;22228:5;22221:13;22214:21;22203:32;;22151:90;;;:::o;22247:126::-;22284:7;22324:42;22317:5;22313:54;22302:65;;22247:126;;;:::o;22379:77::-;22416:7;22445:5;22434:16;;22379:77;;;:::o;22462:86::-;22497:7;22537:4;22530:5;22526:16;22515:27;;22462:86;;;:::o;22554:153::-;22631:9;22664:37;22695:5;22664:37;:::i;:::-;22651:50;;22554:153;;;:::o;22713:126::-;22763:9;22796:37;22827:5;22796:37;:::i;:::-;22783:50;;22713:126;;;:::o;22845:113::-;22895:9;22928:24;22946:5;22928:24;:::i;:::-;22915:37;;22845:113;;;:::o;22964:307::-;23032:1;23042:113;23056:6;23053:1;23050:13;23042:113;;;23141:1;23136:3;23132:11;23126:18;23122:1;23117:3;23113:11;23106:39;23078:2;23075:1;23071:10;23066:15;;23042:113;;;23173:6;23170:1;23167:13;23164:101;;;23253:1;23244:6;23239:3;23235:16;23228:27;23164:101;23013:258;22964:307;;;:::o;23277:233::-;23316:3;23339:24;23357:5;23339:24;:::i;:::-;23330:33;;23385:66;23378:5;23375:77;23372:103;;;23455:18;;:::i;:::-;23372:103;23502:1;23495:5;23491:13;23484:20;;23277:233;;;:::o;23516:180::-;23564:77;23561:1;23554:88;23661:4;23658:1;23651:15;23685:4;23682:1;23675:15;23702:180;23750:77;23747:1;23740:88;23847:4;23844:1;23837:15;23871:4;23868:1;23861:15;23888:180;23936:77;23933:1;23926:88;24033:4;24030:1;24023:15;24057:4;24054:1;24047:15;24074:180;24122:77;24119:1;24112:88;24219:4;24216:1;24209:15;24243:4;24240:1;24233:15;24260:117;24369:1;24366;24359:12;24383:117;24492:1;24489;24482:12;24506:117;24615:1;24612;24605:12;24629:117;24738:1;24735;24728:12;24752:117;24861:1;24858;24851:12;24875:102;24916:6;24967:2;24963:7;24958:2;24951:5;24947:14;24943:28;24933:38;;24875:102;;;:::o;24983:222::-;25123:34;25119:1;25111:6;25107:14;25100:58;25192:5;25187:2;25179:6;25175:15;25168:30;24983:222;:::o;25211:155::-;25351:7;25347:1;25339:6;25335:14;25328:31;25211:155;:::o;25372:229::-;25512:34;25508:1;25500:6;25496:14;25489:58;25581:12;25576:2;25568:6;25564:15;25557:37;25372:229;:::o;25607:225::-;25747:34;25743:1;25735:6;25731:14;25724:58;25816:8;25811:2;25803:6;25799:15;25792:33;25607:225;:::o;25838:221::-;25978:34;25974:1;25966:6;25962:14;25955:58;26047:4;26042:2;26034:6;26030:15;26023:29;25838:221;:::o;26065:177::-;26205:29;26201:1;26193:6;26189:14;26182:53;26065:177;:::o;26248:173::-;26388:25;26384:1;26376:6;26372:14;26365:49;26248:173;:::o;26427:181::-;26567:33;26563:1;26555:6;26551:14;26544:57;26427:181;:::o;26614:179::-;26754:31;26750:1;26742:6;26738:14;26731:55;26614:179;:::o;26799:182::-;26939:34;26935:1;26927:6;26923:14;26916:58;26799:182;:::o;26987:228::-;27127:34;27123:1;27115:6;27111:14;27104:58;27196:11;27191:2;27183:6;27179:15;27172:36;26987:228;:::o;27221:235::-;27361:34;27357:1;27349:6;27345:14;27338:58;27430:18;27425:2;27417:6;27413:15;27406:43;27221:235;:::o;27462:224::-;27602:34;27598:1;27590:6;27586:14;27579:58;27671:7;27666:2;27658:6;27654:15;27647:32;27462:224;:::o;27692:223::-;27832:34;27828:1;27820:6;27816:14;27809:58;27901:6;27896:2;27888:6;27884:15;27877:31;27692:223;:::o;27921:122::-;27994:24;28012:5;27994:24;:::i;:::-;27987:5;27984:35;27974:63;;28033:1;28030;28023:12;27974:63;27921:122;:::o;28049:116::-;28119:21;28134:5;28119:21;:::i;:::-;28112:5;28109:32;28099:60;;28155:1;28152;28145:12;28099:60;28049:116;:::o;28171:122::-;28244:24;28262:5;28244:24;:::i;:::-;28237:5;28234:35;28224:63;;28283:1;28280;28273:12;28224:63;28171:122;:::o

Swarm Source

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