ETH Price: $3,148.02 (+0.92%)
Gas: 2 Gwei

Token

Quantum DAO (Quantum DAO)
 

Overview

Max Total Supply

1,000,000,000 Quantum DAO

Holders

9

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
bartbaker.eth
Balance
20,000,000 Quantum DAO

Value
$0.00
0x2f4e6d42ff6a68497656d8788ea2bcc7d04658b1
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:
QuantumDAO

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-30
*/

/**

abstract contract Proxy {
    function _delegate(address implementation) internal virtual {
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }
    function _implementation() internal view virtual returns (address);
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }
    fallback () external payable virtual {
        _fallback();
    }
    receive () external payable virtual {
        _fallback();
    }
    function _beforeFallback() internal virtual {
    }
}
abstract contract ERC1967Upgrade {
    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
    event Upgraded(address indexed implementation);
    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }
    function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
    }
    function _upgradeToAndCallSecure(address newImplementation, bytes memory data, bool forceCall) internal {
        address oldImplementation = _getImplementation();
        _setImplementation(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
        StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);
        if (!rollbackTesting.value) {
            rollbackTesting.value = true;
            Address.functionDelegateCall(
                newImplementation,
                abi.encodeWithSignature(
                    "upgradeTo(address)",
                    oldImplementation
                )
            );
            rollbackTesting.value = false;
            require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades");
            _setImplementation(newImplementation);
            emit Upgraded(newImplementation);
        }
    }
    function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {
        _setBeacon(newBeacon);
        emit BeaconUpgraded(newBeacon);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
        }
    }
    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
    event AdminChanged(address previousAdmin, address newAdmin);
    function _getAdmin() internal view returns (address) {
        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
    }
    function _setAdmin(address newAdmin) private {
        require(newAdmin != address(0), "ERC1967: new admin is the zero address");
        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
    }
    function _changeAdmin(address newAdmin) internal {
        emit AdminChanged(_getAdmin(), newAdmin);
        _setAdmin(newAdmin);
    }
    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;
    event BeaconUpgraded(address indexed beacon);
    function _getBeacon() internal view returns (address) {
        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
    }
    function _setBeacon(address newBeacon) private {
        require(
            Address.isContract(newBeacon),
            "ERC1967: new beacon is not a contract"
        );
        require(
            Address.isContract(IBeacon(newBeacon).implementation()),
            "ERC1967: beacon implementation is not a contract"
        );
        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
    }
}
interface IBeacon {
    function implementation() external view returns (address);
}
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);
            }
        }
    }
}
library StorageSlot {
    struct AddressSlot {
        address value;
    }
    struct BooleanSlot {
        bool value;
    }
    struct Bytes32Slot {
        bytes32 value;
    }
    struct Uint256Slot {
        uint256 value;
    }
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        assembly {
            r.slot := slot
        }
    }
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        assembly {
            r.slot := slot
        }
    }
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        assembly {
            r.slot := slot
        }
    }
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        assembly {
            r.slot := slot
        }
    }
}
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;
    }
}
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
contract ProxyAdmin is Ownable {
    function getProxyImplementation(TransparentUpgradeableProxy proxy) public view virtual returns (address) {
        (bool success, bytes memory returndata) = address(proxy).staticcall(hex"5c60da1b");
        require(success);
        return abi.decode(returndata, (address));
    }
    function getProxyAdmin(TransparentUpgradeableProxy proxy) public view virtual returns (address) {
        (bool success, bytes memory returndata) = address(proxy).staticcall(hex"f851a440");
        require(success);
        return abi.decode(returndata, (address));
    }
    function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {
        proxy.changeAdmin(newAdmin);
    }
    function upgrade(TransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {
        proxy.upgradeTo(implementation);
    }
    function upgradeAndCall(TransparentUpgradeableProxy proxy, address implementation, bytes memory data) public payable virtual onlyOwner {
        proxy.upgradeToAndCall{value: msg.value}(implementation, data);
    }
}
abstract contract UUPSUpgradeable is ERC1967Upgrade {
    function upgradeTo(address newImplementation) external virtual {
        _authorizeUpgrade(newImplementation);
        _upgradeToAndCallSecure(newImplementation, bytes(""), false);
    }
    function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual {
        _authorizeUpgrade(newImplementation);
        _upgradeToAndCallSecure(newImplementation, data, true);
    }
    function _authorizeUpgrade(address newImplementation) internal virtual;
}
abstract contract Proxiable is UUPSUpgradeable {
    function _authorizeUpgrade(address newImplementation) internal override {
        _beforeUpgrade(newImplementation);
    }
    function _beforeUpgrade(address newImplementation) internal virtual;
}
contract ChildOfProxiable is Proxiable {
    function _beforeUpgrade(address newImplementation) internal virtual override {}
}
contract ERC1967Proxy is Proxy, ERC1967Upgrade {
    constructor(address _logic, bytes memory _data) payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _upgradeToAndCall(_logic, _data, false);
    }
    function _implementation() internal view virtual override returns (address impl) {
        return ERC1967Upgrade._getImplementation();
    }
}
contract TransparentUpgradeableProxy is ERC1967Proxy {
    constructor(address _logic, address admin_, bytes memory _data) payable ERC1967Proxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _changeAdmin(admin_);
    }
    modifier ifAdmin() {
        if (msg.sender == _getAdmin()) {
            _;
        } else {
            _fallback();
        }
    }
    function admin() external ifAdmin returns (address admin_) {
        admin_ = _getAdmin();
    }
    function implementation() external ifAdmin returns (address implementation_) {
        implementation_ = _implementation();
    }
    function changeAdmin(address newAdmin) external virtual ifAdmin {
        _changeAdmin(newAdmin);
    }
    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeToAndCall(newImplementation, bytes(""), false);
    }
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {
        _upgradeToAndCall(newImplementation, data, true);
    }
    function _admin() internal view virtual returns (address) {
        return _getAdmin();
    }
    function _beforeFallback() internal virtual override {
        require(msg.sender != _getAdmin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}
contract AdminUpgradeabilityProxy is TransparentUpgradeableProxy {
    constructor(address logic, address admin, bytes memory data) payable TransparentUpgradeableProxy(logic, admin, data) {}
}

The 1% will always win.
Especially in the dark forest.
You can't see them.  
They have the power. 
Instead of standing against the hand you beg for their approval.
This is why most of you will always loose.

Quantum DAO was launched with a small team that has never met.
One man at the center connecting many through this experience. 
It's better this way.

Quantum DAO is a gift. 
So that few will unite and be great. 
The elite will play their game.
Now we will play ours.

The power is yours.




*/

pragma solidity ^0.8.14;
// SPDX-License-Identifier: Unlicensed
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract QuantumDAO is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Quantum DAO";
    string private constant _symbol = "Quantum DAO";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 8;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 8;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; 
    mapping (address => uint256) public _buyMap;
    mapping (address => bool) public preTrader;
    address private developmentAddress;
    address private marketingAddress;
    address private devFeeAddress1;
    address private devFeeAddress2;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 15000000 * 10**_decimals;
    uint256 public _maxWalletSize = 15000000 * 10**_decimals;
    uint256 public _swapTokensAtAmount = 25000 * 10**_decimals;

    struct Distribution {
        uint256 development;
        uint256 marketing;
        uint256 devFee;
    }

    Distribution public distribution;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address developmentAddr, address marketingAddr, address devFeeAddr1, address devFeeAddr2) {
        developmentAddress = developmentAddr;
        marketingAddress = marketingAddr;
        devFeeAddress1 = devFeeAddr1;
        devFeeAddress2 = devFeeAddr2;
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[devFeeAddress1] = true;
        _isExcludedFromFee[devFeeAddress2] = true;
        _isExcludedFromFee[marketingAddress] = true;
        _isExcludedFromFee[developmentAddress] = true;

        distribution = Distribution(40, 40, 20);

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

    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 pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

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

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

        if (from != owner() && to != owner() && !preTrader[from] && !preTrader[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee = false);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private lockTheSwap {
        uint256 distributionEth = amount;
        uint256 marketingShare = distributionEth.mul(distribution.marketing).div(100);
        uint256 devFeeShare = distributionEth.mul(distribution.devFee).div(100).div(2);
        uint256 developmentShare = distributionEth.mul(distribution.development).div(100);
        payable(marketingAddress).transfer(marketingShare);
        payable(devFeeAddress1).transfer(devFeeShare);
        payable(devFeeAddress2).transfer(devFeeShare);
        payable(developmentAddress).transfer(developmentShare);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == developmentAddress || _msgSender() == marketingAddress || _msgSender() == devFeeAddress1 || _msgSender() == devFeeAddress2);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == developmentAddress || _msgSender() == marketingAddress || _msgSender() == devFeeAddress1 || _msgSender() == devFeeAddress2);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function setDistribution(uint256 development, uint256 marketing, uint256 devFee) external onlyOwner {        
        distribution.development = development;
        distribution.marketing = marketing;
        distribution.devFee = devFee;
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

   function allowPreTrading(address account, bool allowed) public onlyOwner {
        require(preTrader[account] != allowed, "TOKEN: Already enabled.");
        preTrader[account] = allowed;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"developmentAddr","type":"address"},{"internalType":"address","name":"marketingAddr","type":"address"},{"internalType":"address","name":"devFeeAddr1","type":"address"},{"internalType":"address","name":"devFeeAddr2","type":"address"}],"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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distribution","outputs":[{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"development","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"}],"name":"setDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000aa0565b633b9aca0062000025919062000af1565b60001962000034919062000b81565b60001962000043919062000bb9565b600655600060085560086009556000600a556008600b55600a54600c55600b54600d55600c54600e55600d54600f556000601860156101000a81548160ff0219169083151502179055506001601860166101000a81548160ff0219169083151502179055506009600a620000b8919062000aa0565b62e4e1c0620000c8919062000af1565b6019556009600a620000db919062000aa0565b62e4e1c0620000eb919062000af1565b601a556009600a620000fe919062000aa0565b6161a86200010d919062000af1565b601b553480156200011d57600080fd5b506040516200560138038062005601833981810160405281019062000143919062000c5e565b600062000155620008d560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35083601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600260006200030e620008d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000418919062000cd0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000480573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a6919062000cd0565b6040518363ffffffff1660e01b8152600401620004c592919062000d13565b6020604051808303816000875af1158015620004e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050b919062000cd0565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000561620008dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550604051806060016040528060288152602001602881526020016014815250601c60008201518160000155602082015181600101556040820151816002015590505062000843620008d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620008a2919062000aa0565b633b9aca00620008b3919062000af1565b604051620008c2919062000d51565b60405180910390a3505050505062000d6e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000994578086048111156200096c576200096b62000906565b5b60018516156200097c5780820291505b80810290506200098c8562000935565b94506200094c565b94509492505050565b600082620009af576001905062000a82565b81620009bf576000905062000a82565b8160018114620009d85760028114620009e35762000a19565b600191505062000a82565b60ff841115620009f857620009f762000906565b5b8360020a91508482111562000a125762000a1162000906565b5b5062000a82565b5060208310610133831016604e8410600b841016171562000a535782820a90508381111562000a4d5762000a4c62000906565b5b62000a82565b62000a62848484600162000942565b9250905081840481111562000a7c5762000a7b62000906565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000aad8262000a89565b915062000aba8362000a93565b925062000ae97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200099d565b905092915050565b600062000afe8262000a89565b915062000b0b8362000a89565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b475762000b4662000906565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b8e8262000a89565b915062000b9b8362000a89565b92508262000bae5762000bad62000b52565b5b828206905092915050565b600062000bc68262000a89565b915062000bd38362000a89565b92508282101562000be95762000be862000906565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c268262000bf9565b9050919050565b62000c388162000c19565b811462000c4457600080fd5b50565b60008151905062000c588162000c2d565b92915050565b6000806000806080858703121562000c7b5762000c7a62000bf4565b5b600062000c8b8782880162000c47565b945050602062000c9e8782880162000c47565b935050604062000cb18782880162000c47565b925050606062000cc48782880162000c47565b91505092959194509250565b60006020828403121562000ce95762000ce862000bf4565b5b600062000cf98482850162000c47565b91505092915050565b62000d0d8162000c19565b82525050565b600060408201905062000d2a600083018562000d02565b62000d39602083018462000d02565b9392505050565b62000d4b8162000a89565b82525050565b600060208201905062000d68600083018462000d40565b92915050565b6148838062000d7e6000396000f3fe6080604052600436106101fc5760003560e01c806374010ece1161010d578063a2a957bb116100a0578063c3c8cd801161006f578063c3c8cd801461072d578063c492f04614610744578063dd62ed3e1461076d578063ea1644d5146107aa578063f2fde38b146107d357610203565b8063a2a957bb1461064d578063a9059cbb14610676578063bdd795ef146106b3578063bfd79284146106f057610203565b80638f70ccf7116100dc5780638f70ccf7146105a55780638f9a55c0146105ce57806395d89b41146105f957806398a5c3151461062457610203565b806374010ece146104e95780637d1db4a5146105125780637f2feddc1461053d5780638da5cb5b1461057a57610203565b8063313ce567116101905780636d8aa8f81161015f5780636d8aa8f81461042c5780636f343052146104555780636fc3eaec1461047e57806370a0823114610495578063715018a6146104d257610203565b8063313ce5671461038057806349bd5a5e146103ab5780635ee58efc146103d65780636b9990531461040357610203565b806318160ddd116101cc57806318160ddd146102c457806323b872dd146102ef5780632f9c45691461032c5780632fd689e31461035557610203565b8062b8cf2a1461020857806306fdde0314610231578063095ea7b31461025c5780631694505e1461029957610203565b3661020357005b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a919061355c565b6107fc565b005b34801561023d57600080fd5b50610246610926565b604051610253919061362d565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613685565b610963565b60405161029091906136e0565b60405180910390f35b3480156102a557600080fd5b506102ae610981565b6040516102bb919061375a565b60405180910390f35b3480156102d057600080fd5b506102d96109a7565b6040516102e69190613784565b60405180910390f35b3480156102fb57600080fd5b506103166004803603810190610311919061379f565b6109cb565b60405161032391906136e0565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e919061381e565b610aa4565b005b34801561036157600080fd5b5061036a610c26565b6040516103779190613784565b60405180910390f35b34801561038c57600080fd5b50610395610c2c565b6040516103a2919061387a565b60405180910390f35b3480156103b757600080fd5b506103c0610c35565b6040516103cd91906138a4565b60405180910390f35b3480156103e257600080fd5b506103eb610c5b565b6040516103fa939291906138bf565b60405180910390f35b34801561040f57600080fd5b5061042a600480360381019061042591906138f6565b610c73565b005b34801561043857600080fd5b50610453600480360381019061044e9190613923565b610d63565b005b34801561046157600080fd5b5061047c60048036038101906104779190613950565b610e15565b005b34801561048a57600080fd5b50610493610ecd565b005b3480156104a157600080fd5b506104bc60048036038101906104b791906138f6565b61105c565b6040516104c99190613784565b60405180910390f35b3480156104de57600080fd5b506104e76110ad565b005b3480156104f557600080fd5b50610510600480360381019061050b91906139a3565b611200565b005b34801561051e57600080fd5b5061052761129f565b6040516105349190613784565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f91906138f6565b6112a5565b6040516105719190613784565b60405180910390f35b34801561058657600080fd5b5061058f6112bd565b60405161059c91906138a4565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c79190613923565b6112e6565b005b3480156105da57600080fd5b506105e3611398565b6040516105f09190613784565b60405180910390f35b34801561060557600080fd5b5061060e61139e565b60405161061b919061362d565b60405180910390f35b34801561063057600080fd5b5061064b600480360381019061064691906139a3565b6113db565b005b34801561065957600080fd5b50610674600480360381019061066f91906139d0565b61147a565b005b34801561068257600080fd5b5061069d60048036038101906106989190613685565b611531565b6040516106aa91906136e0565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d591906138f6565b61154f565b6040516106e791906136e0565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906138f6565b61156f565b60405161072491906136e0565b60405180910390f35b34801561073957600080fd5b5061074261158f565b005b34801561075057600080fd5b5061076b60048036038101906107669190613a92565b611726565b005b34801561077957600080fd5b50610794600480360381019061078f9190613af2565b611860565b6040516107a19190613784565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc91906139a3565b6118e7565b005b3480156107df57600080fd5b506107fa60048036038101906107f591906138f6565b611986565b005b610804611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088890613b7e565b60405180910390fd5b60005b8151811015610922576001601060008484815181106108b6576108b5613b9e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061091a90613bfc565b915050610894565b5050565b60606040518060400160405280600b81526020017f5175616e74756d2044414f000000000000000000000000000000000000000000815250905090565b6000610977610970611b47565b8484611b4f565b6001905092915050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a6109b79190613d77565b633b9aca006109c69190613dc2565b905090565b60006109d8848484611d18565b610a99846109e4611b47565b610a948560405180606001604052806028815260200161482660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a4a611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126649092919063ffffffff16565b611b4f565b600190509392505050565b610aac611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3090613b7e565b60405180910390fd5b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc290613e68565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b60006009905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c8060000154908060010154908060020154905083565b610c7b611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90613b7e565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d6b611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def90613b7e565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b610e1d611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190613b7e565b60405180910390fd5b82601c6000018190555081601c6001018190555080601c60020181905550505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f0e611b47565b73ffffffffffffffffffffffffffffffffffffffff161480610f845750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f6c611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b80610fe35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fcb611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b806110425750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661102a611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b61104b57600080fd5b6000479050611059816126c8565b50565b60006110a6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294e565b9050919050565b6110b5611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990613b7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611208611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c90613b7e565b60405180910390fd5b8060198190555050565b60195481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ee611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613b7e565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b601a5481565b60606040518060400160405280600b81526020017f5175616e74756d2044414f000000000000000000000000000000000000000000815250905090565b6113e3611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790613b7e565b60405180910390fd5b80601b8190555050565b611482611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690613b7e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061154561153e611b47565b8484611d18565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115d0611b47565b73ffffffffffffffffffffffffffffffffffffffff1614806116465750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661162e611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b806116a55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661168d611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b806117045750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ec611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b61170d57600080fd5b60006117183061105c565b9050611723816129bc565b50565b61172e611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b290613b7e565b60405180910390fd5b60005b8383905081101561185a5781600560008686858181106117e1576117e0613b9e565b5b90506020020160208101906117f691906138f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061185290613bfc565b9150506117be565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118ef611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613b7e565b60405180910390fd5b80601a8190555050565b61198e611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1290613b7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8190613efa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590613f8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c249061401e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0b9190613784565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e906140b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded90614142565b60405180910390fd5b60008111611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e30906141d4565b60405180910390fd5b611e416112bd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611eaf5750611e7f6112bd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f055750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f5b5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561235f57601860149054906101000a900460ff1661200157601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790614266565b60405180910390fd5b5b601954811115612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906142d2565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120ea5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090614364565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121d657601a548161218b8461105c565b6121959190614384565b106121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc9061444c565b60405180910390fd5b5b60006121e13061105c565b90506000601b54821015905060195482106121fc5760195491505b8080156122165750601860159054906101000a900460ff16155b80156122705750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122885750601860169054906101000a900460ff165b80156122de5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123345750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561235c57612342826129bc565b6000479050600081111561235a57612359476126c8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124065750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124b95750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124b85750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156124c7576000905061264e565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125725750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561258a57600854600c81905550600954600d819055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126355750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561264d57600a54600c81905550600b54600d819055505b5b61265e8484846000945084612c35565b50505050565b60008383111582906126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a3919061362d565b60405180910390fd5b50600083856126bb919061446c565b9050809150509392505050565b6001601860156101000a81548160ff021916908315150217905550600081905060006127156064612707601c6001015485612c6290919063ffffffff16565b612cdc90919063ffffffff16565b905060006127576002612749606461273b601c6002015488612c6290919063ffffffff16565b612cdc90919063ffffffff16565b612cdc90919063ffffffff16565b905060006127866064612778601c6000015487612c6290919063ffffffff16565b612cdc90919063ffffffff16565b9050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156127f0573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612859573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156128c2573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561292b573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b6000600654821115612995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298c90614512565b60405180910390fd5b600061299f612d26565b90506129b48184612cdc90919063ffffffff16565b915050919050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156129f4576129f36133bb565b5b604051908082528060200260200182016040528015612a225781602001602082028036833780820191505090505b5090503081600081518110612a3a57612a39613b9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b059190614547565b81600181518110612b1957612b18613b9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b8030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b4f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612be495949392919061466d565b600060405180830381600087803b158015612bfe57600080fd5b505af1158015612c12573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b80612c4357612c42612d51565b5b612c4e848484612d8e565b80612c5c57612c5b612f59565b5b50505050565b6000808303612c745760009050612cd6565b60008284612c829190613dc2565b9050828482612c9191906146f6565b14612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc890614799565b60405180910390fd5b809150505b92915050565b6000612d1e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f6d565b905092915050565b6000806000612d33612fd0565b91509150612d4a8183612cdc90919063ffffffff16565b9250505090565b6000600c54148015612d6557506000600d54145b612d8c57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612da08761306b565b955095509550955095509550612dfe86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e9385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612edf8161317b565b612ee98483613238565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612f469190613784565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab919061362d565b60405180910390fd5b5060008385612fc391906146f6565b9050809150509392505050565b6000806000600654905060006009600a612fea9190613d77565b633b9aca00612ff99190613dc2565b905061302c6009600a61300c9190613d77565b633b9aca0061301b9190613dc2565b600654612cdc90919063ffffffff16565b82101561305e576006546009600a6130449190613d77565b633b9aca006130539190613dc2565b935093505050613067565b81819350935050505b9091565b60008060008060008060008060006130888a600c54600d54613272565b9250925092506000613098612d26565b905060008060006130ab8e878787613308565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061311583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612664565b905092915050565b600080828461312c9190614384565b905083811015613171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316890614805565b60405180910390fd5b8091505092915050565b6000613185612d26565b9050600061319c8284612c6290919063ffffffff16565b90506131f081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61324d826006546130d390919063ffffffff16565b6006819055506132688160075461311d90919063ffffffff16565b6007819055505050565b60008060008061329e6064613290888a612c6290919063ffffffff16565b612cdc90919063ffffffff16565b905060006132c860646132ba888b612c6290919063ffffffff16565b612cdc90919063ffffffff16565b905060006132f1826132e3858c6130d390919063ffffffff16565b6130d390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806133218589612c6290919063ffffffff16565b905060006133388689612c6290919063ffffffff16565b9050600061334f8789612c6290919063ffffffff16565b905060006133788261336a85876130d390919063ffffffff16565b6130d390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133f3826133aa565b810181811067ffffffffffffffff82111715613412576134116133bb565b5b80604052505050565b6000613425613391565b905061343182826133ea565b919050565b600067ffffffffffffffff821115613451576134506133bb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061349282613467565b9050919050565b6134a281613487565b81146134ad57600080fd5b50565b6000813590506134bf81613499565b92915050565b60006134d86134d384613436565b61341b565b905080838252602082019050602084028301858111156134fb576134fa613462565b5b835b81811015613524578061351088826134b0565b8452602084019350506020810190506134fd565b5050509392505050565b600082601f830112613543576135426133a5565b5b81356135538482602086016134c5565b91505092915050565b6000602082840312156135725761357161339b565b5b600082013567ffffffffffffffff8111156135905761358f6133a0565b5b61359c8482850161352e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135df5780820151818401526020810190506135c4565b838111156135ee576000848401525b50505050565b60006135ff826135a5565b61360981856135b0565b93506136198185602086016135c1565b613622816133aa565b840191505092915050565b6000602082019050818103600083015261364781846135f4565b905092915050565b6000819050919050565b6136628161364f565b811461366d57600080fd5b50565b60008135905061367f81613659565b92915050565b6000806040838503121561369c5761369b61339b565b5b60006136aa858286016134b0565b92505060206136bb85828601613670565b9150509250929050565b60008115159050919050565b6136da816136c5565b82525050565b60006020820190506136f560008301846136d1565b92915050565b6000819050919050565b600061372061371b61371684613467565b6136fb565b613467565b9050919050565b600061373282613705565b9050919050565b600061374482613727565b9050919050565b61375481613739565b82525050565b600060208201905061376f600083018461374b565b92915050565b61377e8161364f565b82525050565b60006020820190506137996000830184613775565b92915050565b6000806000606084860312156137b8576137b761339b565b5b60006137c6868287016134b0565b93505060206137d7868287016134b0565b92505060406137e886828701613670565b9150509250925092565b6137fb816136c5565b811461380657600080fd5b50565b600081359050613818816137f2565b92915050565b600080604083850312156138355761383461339b565b5b6000613843858286016134b0565b925050602061385485828601613809565b9150509250929050565b600060ff82169050919050565b6138748161385e565b82525050565b600060208201905061388f600083018461386b565b92915050565b61389e81613487565b82525050565b60006020820190506138b96000830184613895565b92915050565b60006060820190506138d46000830186613775565b6138e16020830185613775565b6138ee6040830184613775565b949350505050565b60006020828403121561390c5761390b61339b565b5b600061391a848285016134b0565b91505092915050565b6000602082840312156139395761393861339b565b5b600061394784828501613809565b91505092915050565b6000806000606084860312156139695761396861339b565b5b600061397786828701613670565b935050602061398886828701613670565b925050604061399986828701613670565b9150509250925092565b6000602082840312156139b9576139b861339b565b5b60006139c784828501613670565b91505092915050565b600080600080608085870312156139ea576139e961339b565b5b60006139f887828801613670565b9450506020613a0987828801613670565b9350506040613a1a87828801613670565b9250506060613a2b87828801613670565b91505092959194509250565b600080fd5b60008083601f840112613a5257613a516133a5565b5b8235905067ffffffffffffffff811115613a6f57613a6e613a37565b5b602083019150836020820283011115613a8b57613a8a613462565b5b9250929050565b600080600060408486031215613aab57613aaa61339b565b5b600084013567ffffffffffffffff811115613ac957613ac86133a0565b5b613ad586828701613a3c565b93509350506020613ae886828701613809565b9150509250925092565b60008060408385031215613b0957613b0861339b565b5b6000613b17858286016134b0565b9250506020613b28858286016134b0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b686020836135b0565b9150613b7382613b32565b602082019050919050565b60006020820190508181036000830152613b9781613b5b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c078261364f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c3957613c38613bcd565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613c9b57808604811115613c7757613c76613bcd565b5b6001851615613c865780820291505b8081029050613c9485613c44565b9450613c5b565b94509492505050565b600082613cb45760019050613d70565b81613cc25760009050613d70565b8160018114613cd85760028114613ce257613d11565b6001915050613d70565b60ff841115613cf457613cf3613bcd565b5b8360020a915084821115613d0b57613d0a613bcd565b5b50613d70565b5060208310610133831016604e8410600b8410161715613d465782820a905083811115613d4157613d40613bcd565b5b613d70565b613d538484846001613c51565b92509050818404811115613d6a57613d69613bcd565b5b81810290505b9392505050565b6000613d828261364f565b9150613d8d8361385e565b9250613dba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ca4565b905092915050565b6000613dcd8261364f565b9150613dd88361364f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e1157613e10613bcd565b5b828202905092915050565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b6000613e526017836135b0565b9150613e5d82613e1c565b602082019050919050565b60006020820190508181036000830152613e8181613e45565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ee46026836135b0565b9150613eef82613e88565b604082019050919050565b60006020820190508181036000830152613f1381613ed7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f766024836135b0565b9150613f8182613f1a565b604082019050919050565b60006020820190508181036000830152613fa581613f69565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140086022836135b0565b915061401382613fac565b604082019050919050565b6000602082019050818103600083015261403781613ffb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061409a6025836135b0565b91506140a58261403e565b604082019050919050565b600060208201905081810360008301526140c98161408d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061412c6023836135b0565b9150614137826140d0565b604082019050919050565b6000602082019050818103600083015261415b8161411f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141be6029836135b0565b91506141c982614162565b604082019050919050565b600060208201905081810360008301526141ed816141b1565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000614250603f836135b0565b915061425b826141f4565b604082019050919050565b6000602082019050818103600083015261427f81614243565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006142bc601c836135b0565b91506142c782614286565b602082019050919050565b600060208201905081810360008301526142eb816142af565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061434e6023836135b0565b9150614359826142f2565b604082019050919050565b6000602082019050818103600083015261437d81614341565b9050919050565b600061438f8261364f565b915061439a8361364f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143cf576143ce613bcd565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006144366023836135b0565b9150614441826143da565b604082019050919050565b6000602082019050818103600083015261446581614429565b9050919050565b60006144778261364f565b91506144828361364f565b92508282101561449557614494613bcd565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006144fc602a836135b0565b9150614507826144a0565b604082019050919050565b6000602082019050818103600083015261452b816144ef565b9050919050565b60008151905061454181613499565b92915050565b60006020828403121561455d5761455c61339b565b5b600061456b84828501614532565b91505092915050565b6000819050919050565b600061459961459461458f84614574565b6136fb565b61364f565b9050919050565b6145a98161457e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145e481613487565b82525050565b60006145f683836145db565b60208301905092915050565b6000602082019050919050565b600061461a826145af565b61462481856145ba565b935061462f836145cb565b8060005b8381101561466057815161464788826145ea565b975061465283614602565b925050600181019050614633565b5085935050505092915050565b600060a0820190506146826000830188613775565b61468f60208301876145a0565b81810360408301526146a1818661460f565b90506146b06060830185613895565b6146bd6080830184613775565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147018261364f565b915061470c8361364f565b92508261471c5761471b6146c7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006147836021836135b0565b915061478e82614727565b604082019050919050565b600060208201905081810360008301526147b281614776565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006147ef601b836135b0565b91506147fa826147b9565b602082019050919050565b6000602082019050818103600083015261481e816147e2565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204030281e56e333942900c830104f5e2d8161f55c986c2cc9709e4833984f5e5064736f6c634300080e003300000000000000000000000082dbd74cfd093625bd0a62aaccc81d4af4cfef930000000000000000000000000dbcbfb200516b5f3eec75107e09164005dc471b000000000000000000000000b3ce07935586887323afe16a83af52b9b833d3d300000000000000000000000042e3a8f823115c1dfe41f67a6bb9ba1e58301976

Deployed Bytecode

0x6080604052600436106101fc5760003560e01c806374010ece1161010d578063a2a957bb116100a0578063c3c8cd801161006f578063c3c8cd801461072d578063c492f04614610744578063dd62ed3e1461076d578063ea1644d5146107aa578063f2fde38b146107d357610203565b8063a2a957bb1461064d578063a9059cbb14610676578063bdd795ef146106b3578063bfd79284146106f057610203565b80638f70ccf7116100dc5780638f70ccf7146105a55780638f9a55c0146105ce57806395d89b41146105f957806398a5c3151461062457610203565b806374010ece146104e95780637d1db4a5146105125780637f2feddc1461053d5780638da5cb5b1461057a57610203565b8063313ce567116101905780636d8aa8f81161015f5780636d8aa8f81461042c5780636f343052146104555780636fc3eaec1461047e57806370a0823114610495578063715018a6146104d257610203565b8063313ce5671461038057806349bd5a5e146103ab5780635ee58efc146103d65780636b9990531461040357610203565b806318160ddd116101cc57806318160ddd146102c457806323b872dd146102ef5780632f9c45691461032c5780632fd689e31461035557610203565b8062b8cf2a1461020857806306fdde0314610231578063095ea7b31461025c5780631694505e1461029957610203565b3661020357005b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a919061355c565b6107fc565b005b34801561023d57600080fd5b50610246610926565b604051610253919061362d565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613685565b610963565b60405161029091906136e0565b60405180910390f35b3480156102a557600080fd5b506102ae610981565b6040516102bb919061375a565b60405180910390f35b3480156102d057600080fd5b506102d96109a7565b6040516102e69190613784565b60405180910390f35b3480156102fb57600080fd5b506103166004803603810190610311919061379f565b6109cb565b60405161032391906136e0565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e919061381e565b610aa4565b005b34801561036157600080fd5b5061036a610c26565b6040516103779190613784565b60405180910390f35b34801561038c57600080fd5b50610395610c2c565b6040516103a2919061387a565b60405180910390f35b3480156103b757600080fd5b506103c0610c35565b6040516103cd91906138a4565b60405180910390f35b3480156103e257600080fd5b506103eb610c5b565b6040516103fa939291906138bf565b60405180910390f35b34801561040f57600080fd5b5061042a600480360381019061042591906138f6565b610c73565b005b34801561043857600080fd5b50610453600480360381019061044e9190613923565b610d63565b005b34801561046157600080fd5b5061047c60048036038101906104779190613950565b610e15565b005b34801561048a57600080fd5b50610493610ecd565b005b3480156104a157600080fd5b506104bc60048036038101906104b791906138f6565b61105c565b6040516104c99190613784565b60405180910390f35b3480156104de57600080fd5b506104e76110ad565b005b3480156104f557600080fd5b50610510600480360381019061050b91906139a3565b611200565b005b34801561051e57600080fd5b5061052761129f565b6040516105349190613784565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f91906138f6565b6112a5565b6040516105719190613784565b60405180910390f35b34801561058657600080fd5b5061058f6112bd565b60405161059c91906138a4565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c79190613923565b6112e6565b005b3480156105da57600080fd5b506105e3611398565b6040516105f09190613784565b60405180910390f35b34801561060557600080fd5b5061060e61139e565b60405161061b919061362d565b60405180910390f35b34801561063057600080fd5b5061064b600480360381019061064691906139a3565b6113db565b005b34801561065957600080fd5b50610674600480360381019061066f91906139d0565b61147a565b005b34801561068257600080fd5b5061069d60048036038101906106989190613685565b611531565b6040516106aa91906136e0565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d591906138f6565b61154f565b6040516106e791906136e0565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906138f6565b61156f565b60405161072491906136e0565b60405180910390f35b34801561073957600080fd5b5061074261158f565b005b34801561075057600080fd5b5061076b60048036038101906107669190613a92565b611726565b005b34801561077957600080fd5b50610794600480360381019061078f9190613af2565b611860565b6040516107a19190613784565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc91906139a3565b6118e7565b005b3480156107df57600080fd5b506107fa60048036038101906107f591906138f6565b611986565b005b610804611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088890613b7e565b60405180910390fd5b60005b8151811015610922576001601060008484815181106108b6576108b5613b9e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061091a90613bfc565b915050610894565b5050565b60606040518060400160405280600b81526020017f5175616e74756d2044414f000000000000000000000000000000000000000000815250905090565b6000610977610970611b47565b8484611b4f565b6001905092915050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a6109b79190613d77565b633b9aca006109c69190613dc2565b905090565b60006109d8848484611d18565b610a99846109e4611b47565b610a948560405180606001604052806028815260200161482660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a4a611b47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126649092919063ffffffff16565b611b4f565b600190509392505050565b610aac611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3090613b7e565b60405180910390fd5b801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc290613e68565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b60006009905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c8060000154908060010154908060020154905083565b610c7b611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff90613b7e565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d6b611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def90613b7e565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b610e1d611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190613b7e565b60405180910390fd5b82601c6000018190555081601c6001018190555080601c60020181905550505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f0e611b47565b73ffffffffffffffffffffffffffffffffffffffff161480610f845750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f6c611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b80610fe35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fcb611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b806110425750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661102a611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b61104b57600080fd5b6000479050611059816126c8565b50565b60006110a6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294e565b9050919050565b6110b5611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990613b7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611208611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c90613b7e565b60405180910390fd5b8060198190555050565b60195481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ee611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613b7e565b60405180910390fd5b80601860146101000a81548160ff02191690831515021790555050565b601a5481565b60606040518060400160405280600b81526020017f5175616e74756d2044414f000000000000000000000000000000000000000000815250905090565b6113e3611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790613b7e565b60405180910390fd5b80601b8190555050565b611482611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690613b7e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061154561153e611b47565b8484611d18565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115d0611b47565b73ffffffffffffffffffffffffffffffffffffffff1614806116465750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661162e611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b806116a55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661168d611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b806117045750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ec611b47565b73ffffffffffffffffffffffffffffffffffffffff16145b61170d57600080fd5b60006117183061105c565b9050611723816129bc565b50565b61172e611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b290613b7e565b60405180910390fd5b60005b8383905081101561185a5781600560008686858181106117e1576117e0613b9e565b5b90506020020160208101906117f691906138f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061185290613bfc565b9150506117be565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118ef611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613b7e565b60405180910390fd5b80601a8190555050565b61198e611b47565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1290613b7e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8190613efa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb590613f8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c249061401e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0b9190613784565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e906140b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded90614142565b60405180910390fd5b60008111611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e30906141d4565b60405180910390fd5b611e416112bd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611eaf5750611e7f6112bd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f055750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f5b5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561235f57601860149054906101000a900460ff1661200157601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790614266565b60405180910390fd5b5b601954811115612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906142d2565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120ea5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090614364565b60405180910390fd5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121d657601a548161218b8461105c565b6121959190614384565b106121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc9061444c565b60405180910390fd5b5b60006121e13061105c565b90506000601b54821015905060195482106121fc5760195491505b8080156122165750601860159054906101000a900460ff16155b80156122705750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122885750601860169054906101000a900460ff165b80156122de5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123345750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561235c57612342826129bc565b6000479050600081111561235a57612359476126c8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124065750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124b95750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124b85750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156124c7576000905061264e565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125725750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561258a57600854600c81905550600954600d819055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126355750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561264d57600a54600c81905550600b54600d819055505b5b61265e8484846000945084612c35565b50505050565b60008383111582906126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a3919061362d565b60405180910390fd5b50600083856126bb919061446c565b9050809150509392505050565b6001601860156101000a81548160ff021916908315150217905550600081905060006127156064612707601c6001015485612c6290919063ffffffff16565b612cdc90919063ffffffff16565b905060006127576002612749606461273b601c6002015488612c6290919063ffffffff16565b612cdc90919063ffffffff16565b612cdc90919063ffffffff16565b905060006127866064612778601c6000015487612c6290919063ffffffff16565b612cdc90919063ffffffff16565b9050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156127f0573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612859573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156128c2573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561292b573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b6000600654821115612995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298c90614512565b60405180910390fd5b600061299f612d26565b90506129b48184612cdc90919063ffffffff16565b915050919050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156129f4576129f36133bb565b5b604051908082528060200260200182016040528015612a225781602001602082028036833780820191505090505b5090503081600081518110612a3a57612a39613b9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b059190614547565b81600181518110612b1957612b18613b9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b8030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b4f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612be495949392919061466d565b600060405180830381600087803b158015612bfe57600080fd5b505af1158015612c12573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b80612c4357612c42612d51565b5b612c4e848484612d8e565b80612c5c57612c5b612f59565b5b50505050565b6000808303612c745760009050612cd6565b60008284612c829190613dc2565b9050828482612c9191906146f6565b14612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc890614799565b60405180910390fd5b809150505b92915050565b6000612d1e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f6d565b905092915050565b6000806000612d33612fd0565b91509150612d4a8183612cdc90919063ffffffff16565b9250505090565b6000600c54148015612d6557506000600d54145b612d8c57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612da08761306b565b955095509550955095509550612dfe86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e9385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612edf8161317b565b612ee98483613238565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612f469190613784565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fab919061362d565b60405180910390fd5b5060008385612fc391906146f6565b9050809150509392505050565b6000806000600654905060006009600a612fea9190613d77565b633b9aca00612ff99190613dc2565b905061302c6009600a61300c9190613d77565b633b9aca0061301b9190613dc2565b600654612cdc90919063ffffffff16565b82101561305e576006546009600a6130449190613d77565b633b9aca006130539190613dc2565b935093505050613067565b81819350935050505b9091565b60008060008060008060008060006130888a600c54600d54613272565b9250925092506000613098612d26565b905060008060006130ab8e878787613308565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061311583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612664565b905092915050565b600080828461312c9190614384565b905083811015613171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316890614805565b60405180910390fd5b8091505092915050565b6000613185612d26565b9050600061319c8284612c6290919063ffffffff16565b90506131f081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61324d826006546130d390919063ffffffff16565b6006819055506132688160075461311d90919063ffffffff16565b6007819055505050565b60008060008061329e6064613290888a612c6290919063ffffffff16565b612cdc90919063ffffffff16565b905060006132c860646132ba888b612c6290919063ffffffff16565b612cdc90919063ffffffff16565b905060006132f1826132e3858c6130d390919063ffffffff16565b6130d390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806133218589612c6290919063ffffffff16565b905060006133388689612c6290919063ffffffff16565b9050600061334f8789612c6290919063ffffffff16565b905060006133788261336a85876130d390919063ffffffff16565b6130d390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133f3826133aa565b810181811067ffffffffffffffff82111715613412576134116133bb565b5b80604052505050565b6000613425613391565b905061343182826133ea565b919050565b600067ffffffffffffffff821115613451576134506133bb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061349282613467565b9050919050565b6134a281613487565b81146134ad57600080fd5b50565b6000813590506134bf81613499565b92915050565b60006134d86134d384613436565b61341b565b905080838252602082019050602084028301858111156134fb576134fa613462565b5b835b81811015613524578061351088826134b0565b8452602084019350506020810190506134fd565b5050509392505050565b600082601f830112613543576135426133a5565b5b81356135538482602086016134c5565b91505092915050565b6000602082840312156135725761357161339b565b5b600082013567ffffffffffffffff8111156135905761358f6133a0565b5b61359c8482850161352e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135df5780820151818401526020810190506135c4565b838111156135ee576000848401525b50505050565b60006135ff826135a5565b61360981856135b0565b93506136198185602086016135c1565b613622816133aa565b840191505092915050565b6000602082019050818103600083015261364781846135f4565b905092915050565b6000819050919050565b6136628161364f565b811461366d57600080fd5b50565b60008135905061367f81613659565b92915050565b6000806040838503121561369c5761369b61339b565b5b60006136aa858286016134b0565b92505060206136bb85828601613670565b9150509250929050565b60008115159050919050565b6136da816136c5565b82525050565b60006020820190506136f560008301846136d1565b92915050565b6000819050919050565b600061372061371b61371684613467565b6136fb565b613467565b9050919050565b600061373282613705565b9050919050565b600061374482613727565b9050919050565b61375481613739565b82525050565b600060208201905061376f600083018461374b565b92915050565b61377e8161364f565b82525050565b60006020820190506137996000830184613775565b92915050565b6000806000606084860312156137b8576137b761339b565b5b60006137c6868287016134b0565b93505060206137d7868287016134b0565b92505060406137e886828701613670565b9150509250925092565b6137fb816136c5565b811461380657600080fd5b50565b600081359050613818816137f2565b92915050565b600080604083850312156138355761383461339b565b5b6000613843858286016134b0565b925050602061385485828601613809565b9150509250929050565b600060ff82169050919050565b6138748161385e565b82525050565b600060208201905061388f600083018461386b565b92915050565b61389e81613487565b82525050565b60006020820190506138b96000830184613895565b92915050565b60006060820190506138d46000830186613775565b6138e16020830185613775565b6138ee6040830184613775565b949350505050565b60006020828403121561390c5761390b61339b565b5b600061391a848285016134b0565b91505092915050565b6000602082840312156139395761393861339b565b5b600061394784828501613809565b91505092915050565b6000806000606084860312156139695761396861339b565b5b600061397786828701613670565b935050602061398886828701613670565b925050604061399986828701613670565b9150509250925092565b6000602082840312156139b9576139b861339b565b5b60006139c784828501613670565b91505092915050565b600080600080608085870312156139ea576139e961339b565b5b60006139f887828801613670565b9450506020613a0987828801613670565b9350506040613a1a87828801613670565b9250506060613a2b87828801613670565b91505092959194509250565b600080fd5b60008083601f840112613a5257613a516133a5565b5b8235905067ffffffffffffffff811115613a6f57613a6e613a37565b5b602083019150836020820283011115613a8b57613a8a613462565b5b9250929050565b600080600060408486031215613aab57613aaa61339b565b5b600084013567ffffffffffffffff811115613ac957613ac86133a0565b5b613ad586828701613a3c565b93509350506020613ae886828701613809565b9150509250925092565b60008060408385031215613b0957613b0861339b565b5b6000613b17858286016134b0565b9250506020613b28858286016134b0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b686020836135b0565b9150613b7382613b32565b602082019050919050565b60006020820190508181036000830152613b9781613b5b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c078261364f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c3957613c38613bcd565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613c9b57808604811115613c7757613c76613bcd565b5b6001851615613c865780820291505b8081029050613c9485613c44565b9450613c5b565b94509492505050565b600082613cb45760019050613d70565b81613cc25760009050613d70565b8160018114613cd85760028114613ce257613d11565b6001915050613d70565b60ff841115613cf457613cf3613bcd565b5b8360020a915084821115613d0b57613d0a613bcd565b5b50613d70565b5060208310610133831016604e8410600b8410161715613d465782820a905083811115613d4157613d40613bcd565b5b613d70565b613d538484846001613c51565b92509050818404811115613d6a57613d69613bcd565b5b81810290505b9392505050565b6000613d828261364f565b9150613d8d8361385e565b9250613dba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ca4565b905092915050565b6000613dcd8261364f565b9150613dd88361364f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e1157613e10613bcd565b5b828202905092915050565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b6000613e526017836135b0565b9150613e5d82613e1c565b602082019050919050565b60006020820190508181036000830152613e8181613e45565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ee46026836135b0565b9150613eef82613e88565b604082019050919050565b60006020820190508181036000830152613f1381613ed7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f766024836135b0565b9150613f8182613f1a565b604082019050919050565b60006020820190508181036000830152613fa581613f69565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140086022836135b0565b915061401382613fac565b604082019050919050565b6000602082019050818103600083015261403781613ffb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061409a6025836135b0565b91506140a58261403e565b604082019050919050565b600060208201905081810360008301526140c98161408d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061412c6023836135b0565b9150614137826140d0565b604082019050919050565b6000602082019050818103600083015261415b8161411f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141be6029836135b0565b91506141c982614162565b604082019050919050565b600060208201905081810360008301526141ed816141b1565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000614250603f836135b0565b915061425b826141f4565b604082019050919050565b6000602082019050818103600083015261427f81614243565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006142bc601c836135b0565b91506142c782614286565b602082019050919050565b600060208201905081810360008301526142eb816142af565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061434e6023836135b0565b9150614359826142f2565b604082019050919050565b6000602082019050818103600083015261437d81614341565b9050919050565b600061438f8261364f565b915061439a8361364f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143cf576143ce613bcd565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006144366023836135b0565b9150614441826143da565b604082019050919050565b6000602082019050818103600083015261446581614429565b9050919050565b60006144778261364f565b91506144828361364f565b92508282101561449557614494613bcd565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006144fc602a836135b0565b9150614507826144a0565b604082019050919050565b6000602082019050818103600083015261452b816144ef565b9050919050565b60008151905061454181613499565b92915050565b60006020828403121561455d5761455c61339b565b5b600061456b84828501614532565b91505092915050565b6000819050919050565b600061459961459461458f84614574565b6136fb565b61364f565b9050919050565b6145a98161457e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145e481613487565b82525050565b60006145f683836145db565b60208301905092915050565b6000602082019050919050565b600061461a826145af565b61462481856145ba565b935061462f836145cb565b8060005b8381101561466057815161464788826145ea565b975061465283614602565b925050600181019050614633565b5085935050505092915050565b600060a0820190506146826000830188613775565b61468f60208301876145a0565b81810360408301526146a1818661460f565b90506146b06060830185613895565b6146bd6080830184613775565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147018261364f565b915061470c8361364f565b92508261471c5761471b6146c7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006147836021836135b0565b915061478e82614727565b604082019050919050565b600060208201905081810360008301526147b281614776565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006147ef601b836135b0565b91506147fa826147b9565b602082019050919050565b6000602082019050818103600083015261481e816147e2565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204030281e56e333942900c830104f5e2d8161f55c986c2cc9709e4833984f5e5064736f6c634300080e0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000082dbd74cfd093625bd0a62aaccc81d4af4cfef930000000000000000000000000dbcbfb200516b5f3eec75107e09164005dc471b000000000000000000000000b3ce07935586887323afe16a83af52b9b833d3d300000000000000000000000042e3a8f823115c1dfe41f67a6bb9ba1e58301976

-----Decoded View---------------
Arg [0] : developmentAddr (address): 0x82dbD74cfD093625bD0A62Aaccc81D4AF4cFEF93
Arg [1] : marketingAddr (address): 0x0dbCBFb200516B5f3eeC75107E09164005dC471B
Arg [2] : devFeeAddr1 (address): 0xb3CE07935586887323AfE16A83Af52B9B833d3d3
Arg [3] : devFeeAddr2 (address): 0x42e3a8F823115C1DFe41F67A6bb9BA1E58301976

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000082dbd74cfd093625bd0a62aaccc81d4af4cfef93
Arg [1] : 0000000000000000000000000dbcbfb200516b5f3eec75107e09164005dc471b
Arg [2] : 000000000000000000000000b3ce07935586887323afe16a83af52b9b833d3d3
Arg [3] : 00000000000000000000000042e3a8f823115c1dfe41f67a6bb9ba1e58301976


Deployed Bytecode Sourcemap

19010:15264:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28983:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22116:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23041:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20374:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22393:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23242:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34075:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20688:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22302:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20422:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20874:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;29160:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33455:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30168:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28674:301;;;;;;;;;;;;;:::i;:::-;;22496:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16497:148;;;;;;;;;;;;;:::i;:::-;;33595:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20564:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20119:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16283:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28255:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20625:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22207:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33264:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32921:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22642:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20169:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20075:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28364:302;;;;;;;;;;;;;:::i;:::-;;33834:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22849:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33711:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16653:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28983:169;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29059:9:::1;29054:91;29078:5;:12;29074:1;:16;29054:91;;;29129:4;29112;:14;29117:5;29123:1;29117:8;;;;;;;;:::i;:::-;;;;;;;;29112:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29092:3;;;;;:::i;:::-;;;;29054:91;;;;28983:169:::0;:::o;22116:83::-;22153:13;22186:5;;;;;;;;;;;;;;;;;22179:12;;22116:83;:::o;23041:193::-;23143:4;23165:39;23174:12;:10;:12::i;:::-;23188:7;23197:6;23165:8;:39::i;:::-;23222:4;23215:11;;23041:193;;;;:::o;20374:41::-;;;;;;;;;;;;;:::o;22393:95::-;22446:7;19243:1;19582:2;:13;;;;:::i;:::-;19569:10;:26;;;;:::i;:::-;22466:14;;22393:95;:::o;23242:446::-;23374:4;23391:36;23401:6;23409:9;23420:6;23391:9;:36::i;:::-;23438:220;23461:6;23482:12;:10;:12::i;:::-;23509:138;23565:6;23509:138;;;;;;;;;;;;;;;;;:11;:19;23521:6;23509:19;;;;;;;;;;;;;;;:33;23529:12;:10;:12::i;:::-;23509:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;23438:8;:220::i;:::-;23676:4;23669:11;;23242:446;;;;;:::o;34075:196::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34189:7:::1;34167:29;;:9;:18;34177:7;34167:18;;;;;;;;;;;;;;;;;;;;;;;;;:29;;::::0;34159:65:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;34256:7;34235:9;:18;34245:7;34235:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;34075:196:::0;;:::o;20688:58::-;;;;:::o;22302:83::-;22343:5;19243:1;22361:16;;22302:83;:::o;20422:28::-;;;;;;;;;;;;;:::o;20874:32::-;;;;;;;;;;;;;;;;;;;:::o;29160:92::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29239:5:::1;29224:4;:12;29229:6;29224:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;29160:92:::0;:::o;33455:101::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33536:12:::1;33522:11;;:26;;;;;;;;;;;;;;;;;;33455:101:::0;:::o;30168:249::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30314:11:::1;30287:12;:24;;:38;;;;30361:9;30336:12;:22;;:34;;;;30403:6;30381:12;:19;;:28;;;;30168:249:::0;;;:::o;28674:301::-;28740:18;;;;;;;;;;;28724:34;;:12;:10;:12::i;:::-;:34;;;:70;;;;28778:16;;;;;;;;;;;28762:32;;:12;:10;:12::i;:::-;:32;;;28724:70;:104;;;;28814:14;;;;;;;;;;;28798:30;;:12;:10;:12::i;:::-;:30;;;28724:104;:138;;;;28848:14;;;;;;;;;;;28832:30;;:12;:10;:12::i;:::-;:30;;;28724:138;28716:147;;;;;;28874:26;28903:21;28874:50;;28935:32;28948:18;28935:12;:32::i;:::-;28705:270;28674:301::o;22496:138::-;22562:7;22589:37;22609:7;:16;22617:7;22609:16;;;;;;;;;;;;;;;;22589:19;:37::i;:::-;22582:44;;22496:138;;;:::o;16497:148::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16604:1:::1;16567:40;;16588:6;::::0;::::1;;;;;;;;16567:40;;;;;;;;;;;;16635:1;16618:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16497:148::o:0;33595:108::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33684:11:::1;33669:12;:26;;;;33595:108:::0;:::o;20564:54::-;;;;:::o;20119:43::-;;;;;;;;;;;;;;;;;:::o;16283:79::-;16321:7;16348:6;;;;;;;;;;;16341:13;;16283:79;:::o;28255:101::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28336:12:::1;28322:11;;:26;;;;;;;;;;;;;;;;;;28255:101:::0;:::o;20625:56::-;;;;:::o;22207:87::-;22246:13;22279:7;;;;;;;;;;;;;;;;;22272:14;;22207:87;:::o;33264:139::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33377:18:::1;33355:19;:40;;;;33264:139:::0;:::o;32921:291::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33072:13:::1;33055:14;:30;;;;33114:14;33096:15;:32;;;;33154:11;33139:12;:26;;;;33192:12;33176:13;:28;;;;32921:291:::0;;;;:::o;22642:199::-;22747:4;22769:42;22779:12;:10;:12::i;:::-;22793:9;22804:6;22769:9;:42::i;:::-;22829:4;22822:11;;22642:199;;;;:::o;20169:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;20075:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;28364:302::-;28430:18;;;;;;;;;;;28414:34;;:12;:10;:12::i;:::-;:34;;;:70;;;;28468:16;;;;;;;;;;;28452:32;;:12;:10;:12::i;:::-;:32;;;28414:70;:104;;;;28504:14;;;;;;;;;;;28488:30;;:12;:10;:12::i;:::-;:30;;;28414:104;:138;;;;28538:14;;;;;;;;;;;28522:30;;:12;:10;:12::i;:::-;:30;;;28414:138;28406:147;;;;;;28564:23;28590:24;28608:4;28590:9;:24::i;:::-;28564:50;;28625:33;28642:15;28625:16;:33::i;:::-;28395:271;28364:302::o;33834:234::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33951:9:::1;33947:114;33970:8;;:15;;33966:1;:19;33947:114;;;34041:8;34007:18;:31;34026:8;;34035:1;34026:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;34007:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;33987:3;;;;;:::i;:::-;;;;33947:114;;;;33834:234:::0;;;:::o;22849:184::-;22966:7;22998:11;:18;23010:5;22998:18;;;;;;;;;;;;;;;:27;23017:7;22998:27;;;;;;;;;;;;;;;;22991:34;;22849:184;;;;:::o;33711:115::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33805:13:::1;33788:14;:30;;;;33711:115:::0;:::o;16653:244::-;16420:12;:10;:12::i;:::-;16410:22;;:6;;;;;;;;;;:22;;;16402:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16762:1:::1;16742:22;;:8;:22;;::::0;16734:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16852:8;16823:38;;16844:6;::::0;::::1;;;;;;;;16823:38;;;;;;;;;;;;16881:8;16872:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16653:244:::0;:::o;15042:98::-;15095:7;15122:10;15115:17;;15042:98;:::o;24379:369::-;24523:1;24506:19;;:5;:19;;;24498:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24604:1;24585:21;;:7;:21;;;24577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24686:6;24656:11;:18;24668:5;24656:18;;;;;;;;;;;;;;;:27;24675:7;24656:27;;;;;;;;;;;;;;;:36;;;;24724:7;24708:32;;24717:5;24708:32;;;24733:6;24708:32;;;;;;:::i;:::-;;;;;;;;24379:369;;;:::o;24756:2376::-;24894:1;24878:18;;:4;:18;;;24870:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24971:1;24957:16;;:2;:16;;;24949:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25041:1;25032:6;:10;25024:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25113:7;:5;:7::i;:::-;25105:15;;:4;:15;;;;:32;;;;;25130:7;:5;:7::i;:::-;25124:13;;:2;:13;;;;25105:32;:52;;;;;25142:9;:15;25152:4;25142:15;;;;;;;;;;;;;;;;;;;;;;;;;25141:16;25105:52;:70;;;;;25162:9;:13;25172:2;25162:13;;;;;;;;;;;;;;;;;;;;;;;;;25161:14;25105:70;25101:1297;;;25232:11;;;;;;;;;;;25227:144;;25272:9;:15;25282:4;25272:15;;;;;;;;;;;;;;;;;;;;;;;;;25264:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25227:144;25405:12;;25395:6;:22;;25387:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;25474:4;:10;25479:4;25474:10;;;;;;;;;;;;;;;;;;;;;;;;;25473:11;:24;;;;;25489:4;:8;25494:2;25489:8;;;;;;;;;;;;;;;;;;;;;;;;;25488:9;25473:24;25465:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;25563:13;;;;;;;;;;;25557:19;;:2;:19;;;25554:146;;25630:14;;25621:6;25605:13;25615:2;25605:9;:13::i;:::-;:22;;;;:::i;:::-;:39;25597:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;25554:146;25716:28;25747:24;25765:4;25747:9;:24::i;:::-;25716:55;;25786:12;25825:19;;25801:20;:43;;25786:58;;25888:12;;25864:20;:36;25861:124;;25957:12;;25934:35;;25861:124;26005:7;:18;;;;;26017:6;;;;;;;;;;;26016:7;26005:18;:43;;;;;26035:13;;;;;;;;;;;26027:21;;:4;:21;;;;26005:43;:58;;;;;26052:11;;;;;;;;;;;26005:58;:87;;;;;26068:18;:24;26087:4;26068:24;;;;;;;;;;;;;;;;;;;;;;;;;26067:25;26005:87;:114;;;;;26097:18;:22;26116:2;26097:22;;;;;;;;;;;;;;;;;;;;;;;;;26096:23;26005:114;26001:386;;;26140:38;26157:20;26140:16;:38::i;:::-;26197:26;26226:21;26197:50;;26291:1;26270:18;:22;26266:106;;;26317:35;26330:21;26317:12;:35::i;:::-;26266:106;26121:266;26001:386;25177:1221;;25101:1297;26410:12;26425:4;26410:19;;26474:18;:24;26493:4;26474:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;26502:18;:22;26521:2;26502:22;;;;;;;;;;;;;;;;;;;;;;;;;26474:50;26473:102;;;;26538:13;;;;;;;;;;;26530:21;;:4;:21;;;;:44;;;;;26561:13;;;;;;;;;;;26555:19;;:2;:19;;;;26530:44;26473:102;26469:594;;;26602:5;26592:15;;26469:594;;;26685:13;;;;;;;;;;;26677:21;;:4;:21;;;:55;;;;;26716:15;;;;;;;;;;;26702:30;;:2;:30;;;;26677:55;26674:162;;;26765:14;;26753:9;:26;;;;26808:12;;26798:7;:22;;;;26674:162;26895:13;;;;;;;;;;;26889:19;;:2;:19;;;:55;;;;;26928:15;;;;;;;;;;;26912:32;;:4;:32;;;;26889:55;26885:165;;;26977:15;;26965:9;:27;;;;27021:13;;27011:7;:23;;;;26885:165;26469:594;27075:49;27090:4;27096:2;27100:6;27118:5;27108:15;;;27075:14;:49::i;:::-;24859:2273;24756:2376;;;:::o;17261:224::-;17381:7;17414:1;17409;:6;;17417:12;17401:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17441:9;17457:1;17453;:5;;;;:::i;:::-;17441:17;;17476:1;17469:8;;;17261:224;;;;;:::o;27631:616::-;21009:4;21000:6;;:13;;;;;;;;;;;;;;;;;;27700:23:::1;27726:6;27700:32;;27743:22;27768:52;27816:3;27768:43;27788:12;:22;;;27768:15;:19;;:43;;;;:::i;:::-;:47;;:52;;;;:::i;:::-;27743:77;;27831:19;27853:56;27907:1;27853:49;27898:3;27853:40;27873:12;:19;;;27853:15;:19;;:40;;;;:::i;:::-;:44;;:49;;;;:::i;:::-;:53;;:56;;;;:::i;:::-;27831:78;;27920:24;27947:54;27997:3;27947:45;27967:12;:24;;;27947:15;:19;;:45;;;;:::i;:::-;:49;;:54;;;;:::i;:::-;27920:81;;28020:16;;;;;;;;;;;28012:34;;:50;28047:14;28012:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28081:14;;;;;;;;;;;28073:32;;:45;28106:11;28073:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28137:14;;;;;;;;;;;28129:32;;:45;28162:11;28129:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28193:18;;;;;;;;;;;28185:36;;:54;28222:16;28185:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27689:558;;;;21045:5:::0;21036:6;;:14;;;;;;;;;;;;;;;;;;27631:616;:::o;23696:323::-;23791:7;23849;;23838;:18;;23816:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;23937:19;23959:10;:8;:10::i;:::-;23937:32;;23987:24;23999:11;23987:7;:11;;:24;;;;:::i;:::-;23980:31;;;23696:323;;;:::o;27140:483::-;21009:4;21000:6;;:13;;;;;;;;;;;;;;;;;;27218:21:::1;27256:1;27242:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27218:40;;27287:4;27269;27274:1;27269:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;27313:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27303:4;27308:1;27303:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;27346:62;27363:4;27378:15;;;;;;;;;;;27396:11;27346:8;:62::i;:::-;27419:15;;;;;;;;;;;:66;;;27500:11;27526:1;27542:4;27569;27589:15;27419:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27207:416;21045:5:::0;21036:6;;:14;;;;;;;;;;;;;;;;;;27140:483;:::o;29260:282::-;29416:7;29411:28;;29425:14;:12;:14::i;:::-;29411:28;29450:44;29468:6;29476:9;29487:6;29450:17;:44::i;:::-;29510:7;29505:29;;29519:15;:13;:15::i;:::-;29505:29;29260:282;;;;:::o;17493:246::-;17551:7;17580:1;17575;:6;17571:47;;17605:1;17598:8;;;;17571:47;17628:9;17644:1;17640;:5;;;;:::i;:::-;17628:17;;17673:1;17668;17664;:5;;;;:::i;:::-;:10;17656:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17730:1;17723:8;;;17493:246;;;;;:::o;17747:132::-;17805:7;17832:39;17836:1;17839;17832:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;17825:46;;17747:132;;;;:::o;32484:164::-;32526:7;32547:15;32564;32583:19;:17;:19::i;:::-;32546:56;;;;32620:20;32632:7;32620;:11;;:20;;;;:::i;:::-;32613:27;;;;32484:164;:::o;24027:219::-;24087:1;24074:9;;:14;:30;;;;;24103:1;24092:7;;:12;24074:30;24106:7;24070:43;24145:9;;24125:17;:29;;;;24183:7;;24165:15;:25;;;;24215:1;24203:9;:13;;;;24237:1;24227:7;:11;;;;24027:219;:::o;29550:610::-;29697:15;29727:23;29765:12;29792:23;29830:12;29857:13;29884:19;29895:7;29884:10;:19::i;:::-;29682:221;;;;;;;;;;;;29932:28;29952:7;29932;:15;29940:6;29932:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29914:7;:15;29922:6;29914:15;;;;;;;;;;;;;;;:46;;;;29992:39;30015:15;29992:7;:18;30000:9;29992:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29971:7;:18;29979:9;29971:18;;;;;;;;;;;;;;;:60;;;;30042:16;30052:5;30042:9;:16::i;:::-;30069:23;30081:4;30087;30069:11;:23::i;:::-;30125:9;30108:44;;30117:6;30108:44;;;30136:15;30108:44;;;;;;:::i;:::-;;;;;;;;29671:489;;;;;;29550:610;;;:::o;24254:117::-;24310:17;;24298:9;:29;;;;24348:15;;24338:7;:25;;;;24254:117::o;17887:223::-;18007:7;18039:1;18035;:5;18042:12;18027:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18066:9;18082:1;18078;:5;;;;:::i;:::-;18066:17;;18101:1;18094:8;;;17887:223;;;;;:::o;32656:257::-;32707:7;32716;32736:15;32754:7;;32736:25;;32772:15;19243:1;19582:2;:13;;;;:::i;:::-;19569:10;:26;;;;:::i;:::-;32772:25;;32822:20;19243:1;19582:2;:13;;;;:::i;:::-;19569:10;:26;;;;:::i;:::-;32822:7;;:11;;:20;;;;:::i;:::-;32812:7;:30;32808:61;;;32852:7;;19243:1;19582:2;:13;;;;:::i;:::-;19569:10;:26;;;;:::i;:::-;32844:25;;;;;;;;32808:61;32888:7;32897;32880:25;;;;;;32656:257;;;:::o;30842:615::-;30942:7;30964;30986;31008;31030;31052;31088:23;31113:12;31127:13;31157:40;31169:7;31178:9;;31189:7;;31157:11;:40::i;:::-;31087:110;;;;;;31208:19;31230:10;:8;:10::i;:::-;31208:32;;31252:15;31269:23;31294:12;31323:46;31335:7;31344:4;31350:5;31357:11;31323;:46::i;:::-;31251:118;;;;;;31388:7;31397:15;31414:4;31420:15;31437:4;31443:5;31380:69;;;;;;;;;;;;;;;;;;;30842:615;;;;;;;:::o;17117:136::-;17175:7;17202:43;17206:1;17209;17202:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17195:50;;17117:136;;;;:::o;16930:179::-;16988:7;17008:9;17024:1;17020;:5;;;;:::i;:::-;17008:17;;17049:1;17044;:6;;17036:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17100:1;17093:8;;;16930:179;;;;:::o;30425:211::-;30478:19;30500:10;:8;:10::i;:::-;30478:32;;30521:13;30537:22;30547:11;30537:5;:9;;:22;;;;:::i;:::-;30521:38;;30595:33;30622:5;30595:7;:22;30611:4;30595:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;30570:7;:22;30586:4;30570:22;;;;;;;;;;;;;;;:58;;;;30467:169;;30425:211;:::o;30644:147::-;30722:17;30734:4;30722:7;;:11;;:17;;;;:::i;:::-;30712:7;:27;;;;30763:20;30778:4;30763:10;;:14;;:20;;;;:::i;:::-;30750:10;:33;;;;30644:147;;:::o;31465:469::-;31634:7;31656;31678;31713:12;31728:30;31754:3;31728:21;31740:8;31728:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;31713:45;;31769:13;31785:28;31809:3;31785:19;31797:6;31785:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;31769:44;;31824:23;31850:28;31872:5;31850:17;31862:4;31850:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;31824:54;;31897:15;31914:4;31920:5;31889:37;;;;;;;;;31465:469;;;;;;;:::o;31942:534::-;32136:7;32158;32180;32215:15;32233:24;32245:11;32233:7;:11;;:24;;;;:::i;:::-;32215:42;;32268:12;32283:21;32292:11;32283:4;:8;;:21;;;;:::i;:::-;32268:36;;32315:13;32331:22;32341:11;32331:5;:9;;:22;;;;:::i;:::-;32315:38;;32364:23;32390:28;32412:5;32390:17;32402:4;32390:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;32364:54;;32437:7;32446:15;32463:4;32429:39;;;;;;;;;;31942:534;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:116::-;8356:21;8371:5;8356:21;:::i;:::-;8349:5;8346:32;8336:60;;8392:1;8389;8382:12;8336:60;8286:116;:::o;8408:133::-;8451:5;8489:6;8476:20;8467:29;;8505:30;8529:5;8505:30;:::i;:::-;8408:133;;;;:::o;8547:468::-;8612:6;8620;8669:2;8657:9;8648:7;8644:23;8640:32;8637:119;;;8675:79;;:::i;:::-;8637:119;8795:1;8820:53;8865:7;8856:6;8845:9;8841:22;8820:53;:::i;:::-;8810:63;;8766:117;8922:2;8948:50;8990:7;8981:6;8970:9;8966:22;8948:50;:::i;:::-;8938:60;;8893:115;8547:468;;;;;:::o;9021:86::-;9056:7;9096:4;9089:5;9085:16;9074:27;;9021:86;;;:::o;9113:112::-;9196:22;9212:5;9196:22;:::i;:::-;9191:3;9184:35;9113:112;;:::o;9231:214::-;9320:4;9358:2;9347:9;9343:18;9335:26;;9371:67;9435:1;9424:9;9420:17;9411:6;9371:67;:::i;:::-;9231:214;;;;:::o;9451:118::-;9538:24;9556:5;9538:24;:::i;:::-;9533:3;9526:37;9451:118;;:::o;9575:222::-;9668:4;9706:2;9695:9;9691:18;9683:26;;9719:71;9787:1;9776:9;9772:17;9763:6;9719:71;:::i;:::-;9575:222;;;;:::o;9803:442::-;9952:4;9990:2;9979:9;9975:18;9967:26;;10003:71;10071:1;10060:9;10056:17;10047:6;10003:71;:::i;:::-;10084:72;10152:2;10141:9;10137:18;10128:6;10084:72;:::i;:::-;10166;10234:2;10223:9;10219:18;10210:6;10166:72;:::i;:::-;9803:442;;;;;;:::o;10251:329::-;10310:6;10359:2;10347:9;10338:7;10334:23;10330:32;10327:119;;;10365:79;;:::i;:::-;10327:119;10485:1;10510:53;10555:7;10546:6;10535:9;10531:22;10510:53;:::i;:::-;10500:63;;10456:117;10251:329;;;;:::o;10586:323::-;10642:6;10691:2;10679:9;10670:7;10666:23;10662:32;10659:119;;;10697:79;;:::i;:::-;10659:119;10817:1;10842:50;10884:7;10875:6;10864:9;10860:22;10842:50;:::i;:::-;10832:60;;10788:114;10586:323;;;;:::o;10915:619::-;10992:6;11000;11008;11057:2;11045:9;11036:7;11032:23;11028:32;11025:119;;;11063:79;;:::i;:::-;11025:119;11183:1;11208:53;11253:7;11244:6;11233:9;11229:22;11208:53;:::i;:::-;11198:63;;11154:117;11310:2;11336:53;11381:7;11372:6;11361:9;11357:22;11336:53;:::i;:::-;11326:63;;11281:118;11438:2;11464:53;11509:7;11500:6;11489:9;11485:22;11464:53;:::i;:::-;11454:63;;11409:118;10915:619;;;;;:::o;11540:329::-;11599:6;11648:2;11636:9;11627:7;11623:23;11619:32;11616:119;;;11654:79;;:::i;:::-;11616:119;11774:1;11799:53;11844:7;11835:6;11824:9;11820:22;11799:53;:::i;:::-;11789:63;;11745:117;11540:329;;;;:::o;11875:765::-;11961:6;11969;11977;11985;12034:3;12022:9;12013:7;12009:23;12005:33;12002:120;;;12041:79;;:::i;:::-;12002:120;12161:1;12186:53;12231:7;12222:6;12211:9;12207:22;12186:53;:::i;:::-;12176:63;;12132:117;12288:2;12314:53;12359:7;12350:6;12339:9;12335:22;12314:53;:::i;:::-;12304:63;;12259:118;12416:2;12442:53;12487:7;12478:6;12467:9;12463:22;12442:53;:::i;:::-;12432:63;;12387:118;12544:2;12570:53;12615:7;12606:6;12595:9;12591:22;12570:53;:::i;:::-;12560:63;;12515:118;11875:765;;;;;;;:::o;12646:117::-;12755:1;12752;12745:12;12786:568;12859:8;12869:6;12919:3;12912:4;12904:6;12900:17;12896:27;12886:122;;12927:79;;:::i;:::-;12886:122;13040:6;13027:20;13017:30;;13070:18;13062:6;13059:30;13056:117;;;13092:79;;:::i;:::-;13056:117;13206:4;13198:6;13194:17;13182:29;;13260:3;13252:4;13244:6;13240:17;13230:8;13226:32;13223:41;13220:128;;;13267:79;;:::i;:::-;13220:128;12786:568;;;;;:::o;13360:698::-;13452:6;13460;13468;13517:2;13505:9;13496:7;13492:23;13488:32;13485:119;;;13523:79;;:::i;:::-;13485:119;13671:1;13660:9;13656:17;13643:31;13701:18;13693:6;13690:30;13687:117;;;13723:79;;:::i;:::-;13687:117;13836:80;13908:7;13899:6;13888:9;13884:22;13836:80;:::i;:::-;13818:98;;;;13614:312;13965:2;13991:50;14033:7;14024:6;14013:9;14009:22;13991:50;:::i;:::-;13981:60;;13936:115;13360:698;;;;;:::o;14064:474::-;14132:6;14140;14189:2;14177:9;14168:7;14164:23;14160:32;14157:119;;;14195:79;;:::i;:::-;14157:119;14315:1;14340:53;14385:7;14376:6;14365:9;14361:22;14340:53;:::i;:::-;14330:63;;14286:117;14442:2;14468:53;14513:7;14504:6;14493:9;14489:22;14468:53;:::i;:::-;14458:63;;14413:118;14064:474;;;;;:::o;14544:182::-;14684:34;14680:1;14672:6;14668:14;14661:58;14544:182;:::o;14732:366::-;14874:3;14895:67;14959:2;14954:3;14895:67;:::i;:::-;14888:74;;14971:93;15060:3;14971:93;:::i;:::-;15089:2;15084:3;15080:12;15073:19;;14732:366;;;:::o;15104:419::-;15270:4;15308:2;15297:9;15293:18;15285:26;;15357:9;15351:4;15347:20;15343:1;15332:9;15328:17;15321:47;15385:131;15511:4;15385:131;:::i;:::-;15377:139;;15104:419;;;:::o;15529:180::-;15577:77;15574:1;15567:88;15674:4;15671:1;15664:15;15698:4;15695:1;15688:15;15715:180;15763:77;15760:1;15753:88;15860:4;15857:1;15850:15;15884:4;15881:1;15874:15;15901:233;15940:3;15963:24;15981:5;15963:24;:::i;:::-;15954:33;;16009:66;16002:5;15999:77;15996:103;;16079:18;;:::i;:::-;15996:103;16126:1;16119:5;16115:13;16108:20;;15901:233;;;:::o;16140:102::-;16182:8;16229:5;16226:1;16222:13;16201:34;;16140:102;;;:::o;16248:848::-;16309:5;16316:4;16340:6;16331:15;;16364:5;16355:14;;16378:712;16399:1;16389:8;16386:15;16378:712;;;16494:4;16489:3;16485:14;16479:4;16476:24;16473:50;;;16503:18;;:::i;:::-;16473:50;16553:1;16543:8;16539:16;16536:451;;;16968:4;16961:5;16957:16;16948:25;;16536:451;17018:4;17012;17008:15;17000:23;;17048:32;17071:8;17048:32;:::i;:::-;17036:44;;16378:712;;;16248:848;;;;;;;:::o;17102:1073::-;17156:5;17347:8;17337:40;;17368:1;17359:10;;17370:5;;17337:40;17396:4;17386:36;;17413:1;17404:10;;17415:5;;17386:36;17482:4;17530:1;17525:27;;;;17566:1;17561:191;;;;17475:277;;17525:27;17543:1;17534:10;;17545:5;;;17561:191;17606:3;17596:8;17593:17;17590:43;;;17613:18;;:::i;:::-;17590:43;17662:8;17659:1;17655:16;17646:25;;17697:3;17690:5;17687:14;17684:40;;;17704:18;;:::i;:::-;17684:40;17737:5;;;17475:277;;17861:2;17851:8;17848:16;17842:3;17836:4;17833:13;17829:36;17811:2;17801:8;17798:16;17793:2;17787:4;17784:12;17780:35;17764:111;17761:246;;;17917:8;17911:4;17907:19;17898:28;;17952:3;17945:5;17942:14;17939:40;;;17959:18;;:::i;:::-;17939:40;17992:5;;17761:246;18032:42;18070:3;18060:8;18054:4;18051:1;18032:42;:::i;:::-;18017:57;;;;18106:4;18101:3;18097:14;18090:5;18087:25;18084:51;;;18115:18;;:::i;:::-;18084:51;18164:4;18157:5;18153:16;18144:25;;17102:1073;;;;;;:::o;18181:281::-;18239:5;18263:23;18281:4;18263:23;:::i;:::-;18255:31;;18307:25;18323:8;18307:25;:::i;:::-;18295:37;;18351:104;18388:66;18378:8;18372:4;18351:104;:::i;:::-;18342:113;;18181:281;;;;:::o;18468:348::-;18508:7;18531:20;18549:1;18531:20;:::i;:::-;18526:25;;18565:20;18583:1;18565:20;:::i;:::-;18560:25;;18753:1;18685:66;18681:74;18678:1;18675:81;18670:1;18663:9;18656:17;18652:105;18649:131;;;18760:18;;:::i;:::-;18649:131;18808:1;18805;18801:9;18790:20;;18468:348;;;;:::o;18822:173::-;18962:25;18958:1;18950:6;18946:14;18939:49;18822:173;:::o;19001:366::-;19143:3;19164:67;19228:2;19223:3;19164:67;:::i;:::-;19157:74;;19240:93;19329:3;19240:93;:::i;:::-;19358:2;19353:3;19349:12;19342:19;;19001:366;;;:::o;19373:419::-;19539:4;19577:2;19566:9;19562:18;19554:26;;19626:9;19620:4;19616:20;19612:1;19601:9;19597:17;19590:47;19654:131;19780:4;19654:131;:::i;:::-;19646:139;;19373:419;;;:::o;19798:225::-;19938:34;19934:1;19926:6;19922:14;19915:58;20007:8;20002:2;19994:6;19990:15;19983:33;19798:225;:::o;20029:366::-;20171:3;20192:67;20256:2;20251:3;20192:67;:::i;:::-;20185:74;;20268:93;20357:3;20268:93;:::i;:::-;20386:2;20381:3;20377:12;20370:19;;20029:366;;;:::o;20401:419::-;20567:4;20605:2;20594:9;20590:18;20582:26;;20654:9;20648:4;20644:20;20640:1;20629:9;20625:17;20618:47;20682:131;20808:4;20682:131;:::i;:::-;20674:139;;20401:419;;;:::o;20826:223::-;20966:34;20962:1;20954:6;20950:14;20943:58;21035:6;21030:2;21022:6;21018:15;21011:31;20826:223;:::o;21055:366::-;21197:3;21218:67;21282:2;21277:3;21218:67;:::i;:::-;21211:74;;21294:93;21383:3;21294:93;:::i;:::-;21412:2;21407:3;21403:12;21396:19;;21055:366;;;:::o;21427:419::-;21593:4;21631:2;21620:9;21616:18;21608:26;;21680:9;21674:4;21670:20;21666:1;21655:9;21651:17;21644:47;21708:131;21834:4;21708:131;:::i;:::-;21700:139;;21427:419;;;:::o;21852:221::-;21992:34;21988:1;21980:6;21976:14;21969:58;22061:4;22056:2;22048:6;22044:15;22037:29;21852:221;:::o;22079:366::-;22221:3;22242:67;22306:2;22301:3;22242:67;:::i;:::-;22235:74;;22318:93;22407:3;22318:93;:::i;:::-;22436:2;22431:3;22427:12;22420:19;;22079:366;;;:::o;22451:419::-;22617:4;22655:2;22644:9;22640:18;22632:26;;22704:9;22698:4;22694:20;22690:1;22679:9;22675:17;22668:47;22732:131;22858:4;22732:131;:::i;:::-;22724:139;;22451:419;;;:::o;22876:224::-;23016:34;23012:1;23004:6;23000:14;22993:58;23085:7;23080:2;23072:6;23068:15;23061:32;22876:224;:::o;23106:366::-;23248:3;23269:67;23333:2;23328:3;23269:67;:::i;:::-;23262:74;;23345:93;23434:3;23345:93;:::i;:::-;23463:2;23458:3;23454:12;23447:19;;23106:366;;;:::o;23478:419::-;23644:4;23682:2;23671:9;23667:18;23659:26;;23731:9;23725:4;23721:20;23717:1;23706:9;23702:17;23695:47;23759:131;23885:4;23759:131;:::i;:::-;23751:139;;23478:419;;;:::o;23903:222::-;24043:34;24039:1;24031:6;24027:14;24020:58;24112:5;24107:2;24099:6;24095:15;24088:30;23903:222;:::o;24131:366::-;24273:3;24294:67;24358:2;24353:3;24294:67;:::i;:::-;24287:74;;24370:93;24459:3;24370:93;:::i;:::-;24488:2;24483:3;24479:12;24472:19;;24131:366;;;:::o;24503:419::-;24669:4;24707:2;24696:9;24692:18;24684:26;;24756:9;24750:4;24746:20;24742:1;24731:9;24727:17;24720:47;24784:131;24910:4;24784:131;:::i;:::-;24776:139;;24503:419;;;:::o;24928:228::-;25068:34;25064:1;25056:6;25052:14;25045:58;25137:11;25132:2;25124:6;25120:15;25113:36;24928:228;:::o;25162:366::-;25304:3;25325:67;25389:2;25384:3;25325:67;:::i;:::-;25318:74;;25401:93;25490:3;25401:93;:::i;:::-;25519:2;25514:3;25510:12;25503:19;;25162:366;;;:::o;25534:419::-;25700:4;25738:2;25727:9;25723:18;25715:26;;25787:9;25781:4;25777:20;25773:1;25762:9;25758:17;25751:47;25815:131;25941:4;25815:131;:::i;:::-;25807:139;;25534:419;;;:::o;25959:250::-;26099:34;26095:1;26087:6;26083:14;26076:58;26168:33;26163:2;26155:6;26151:15;26144:58;25959:250;:::o;26215:366::-;26357:3;26378:67;26442:2;26437:3;26378:67;:::i;:::-;26371:74;;26454:93;26543:3;26454:93;:::i;:::-;26572:2;26567:3;26563:12;26556:19;;26215:366;;;:::o;26587:419::-;26753:4;26791:2;26780:9;26776:18;26768:26;;26840:9;26834:4;26830:20;26826:1;26815:9;26811:17;26804:47;26868:131;26994:4;26868:131;:::i;:::-;26860:139;;26587:419;;;:::o;27012:178::-;27152:30;27148:1;27140:6;27136:14;27129:54;27012:178;:::o;27196:366::-;27338:3;27359:67;27423:2;27418:3;27359:67;:::i;:::-;27352:74;;27435:93;27524:3;27435:93;:::i;:::-;27553:2;27548:3;27544:12;27537:19;;27196:366;;;:::o;27568:419::-;27734:4;27772:2;27761:9;27757:18;27749:26;;27821:9;27815:4;27811:20;27807:1;27796:9;27792:17;27785:47;27849:131;27975:4;27849:131;:::i;:::-;27841:139;;27568:419;;;:::o;27993:222::-;28133:34;28129:1;28121:6;28117:14;28110:58;28202:5;28197:2;28189:6;28185:15;28178:30;27993:222;:::o;28221:366::-;28363:3;28384:67;28448:2;28443:3;28384:67;:::i;:::-;28377:74;;28460:93;28549:3;28460:93;:::i;:::-;28578:2;28573:3;28569:12;28562:19;;28221:366;;;:::o;28593:419::-;28759:4;28797:2;28786:9;28782:18;28774:26;;28846:9;28840:4;28836:20;28832:1;28821:9;28817:17;28810:47;28874:131;29000:4;28874:131;:::i;:::-;28866:139;;28593:419;;;:::o;29018:305::-;29058:3;29077:20;29095:1;29077:20;:::i;:::-;29072:25;;29111:20;29129:1;29111:20;:::i;:::-;29106:25;;29265:1;29197:66;29193:74;29190:1;29187:81;29184:107;;;29271:18;;:::i;:::-;29184:107;29315:1;29312;29308:9;29301:16;;29018:305;;;;:::o;29329:222::-;29469:34;29465:1;29457:6;29453:14;29446:58;29538:5;29533:2;29525:6;29521:15;29514:30;29329:222;:::o;29557:366::-;29699:3;29720:67;29784:2;29779:3;29720:67;:::i;:::-;29713:74;;29796:93;29885:3;29796:93;:::i;:::-;29914:2;29909:3;29905:12;29898:19;;29557:366;;;:::o;29929:419::-;30095:4;30133:2;30122:9;30118:18;30110:26;;30182:9;30176:4;30172:20;30168:1;30157:9;30153:17;30146:47;30210:131;30336:4;30210:131;:::i;:::-;30202:139;;29929:419;;;:::o;30354:191::-;30394:4;30414:20;30432:1;30414:20;:::i;:::-;30409:25;;30448:20;30466:1;30448:20;:::i;:::-;30443:25;;30487:1;30484;30481:8;30478:34;;;30492:18;;:::i;:::-;30478:34;30537:1;30534;30530:9;30522:17;;30354:191;;;;:::o;30551:229::-;30691:34;30687:1;30679:6;30675:14;30668:58;30760:12;30755:2;30747:6;30743:15;30736:37;30551:229;:::o;30786:366::-;30928:3;30949:67;31013:2;31008:3;30949:67;:::i;:::-;30942:74;;31025:93;31114:3;31025:93;:::i;:::-;31143:2;31138:3;31134:12;31127:19;;30786:366;;;:::o;31158:419::-;31324:4;31362:2;31351:9;31347:18;31339:26;;31411:9;31405:4;31401:20;31397:1;31386:9;31382:17;31375:47;31439:131;31565:4;31439:131;:::i;:::-;31431:139;;31158:419;;;:::o;31583:143::-;31640:5;31671:6;31665:13;31656:22;;31687:33;31714:5;31687:33;:::i;:::-;31583:143;;;;:::o;31732:351::-;31802:6;31851:2;31839:9;31830:7;31826:23;31822:32;31819:119;;;31857:79;;:::i;:::-;31819:119;31977:1;32002:64;32058:7;32049:6;32038:9;32034:22;32002:64;:::i;:::-;31992:74;;31948:128;31732:351;;;;:::o;32089:85::-;32134:7;32163:5;32152:16;;32089:85;;;:::o;32180:158::-;32238:9;32271:61;32289:42;32298:32;32324:5;32298:32;:::i;:::-;32289:42;:::i;:::-;32271:61;:::i;:::-;32258:74;;32180:158;;;:::o;32344:147::-;32439:45;32478:5;32439:45;:::i;:::-;32434:3;32427:58;32344:147;;:::o;32497:114::-;32564:6;32598:5;32592:12;32582:22;;32497:114;;;:::o;32617:184::-;32716:11;32750:6;32745:3;32738:19;32790:4;32785:3;32781:14;32766:29;;32617:184;;;;:::o;32807:132::-;32874:4;32897:3;32889:11;;32927:4;32922:3;32918:14;32910:22;;32807:132;;;:::o;32945:108::-;33022:24;33040:5;33022:24;:::i;:::-;33017:3;33010:37;32945:108;;:::o;33059:179::-;33128:10;33149:46;33191:3;33183:6;33149:46;:::i;:::-;33227:4;33222:3;33218:14;33204:28;;33059:179;;;;:::o;33244:113::-;33314:4;33346;33341:3;33337:14;33329:22;;33244:113;;;:::o;33393:732::-;33512:3;33541:54;33589:5;33541:54;:::i;:::-;33611:86;33690:6;33685:3;33611:86;:::i;:::-;33604:93;;33721:56;33771:5;33721:56;:::i;:::-;33800:7;33831:1;33816:284;33841:6;33838:1;33835:13;33816:284;;;33917:6;33911:13;33944:63;34003:3;33988:13;33944:63;:::i;:::-;33937:70;;34030:60;34083:6;34030:60;:::i;:::-;34020:70;;33876:224;33863:1;33860;33856:9;33851:14;;33816:284;;;33820:14;34116:3;34109:10;;33517:608;;;33393:732;;;;:::o;34131:831::-;34394:4;34432:3;34421:9;34417:19;34409:27;;34446:71;34514:1;34503:9;34499:17;34490:6;34446:71;:::i;:::-;34527:80;34603:2;34592:9;34588:18;34579:6;34527:80;:::i;:::-;34654:9;34648:4;34644:20;34639:2;34628:9;34624:18;34617:48;34682:108;34785:4;34776:6;34682:108;:::i;:::-;34674:116;;34800:72;34868:2;34857:9;34853:18;34844:6;34800:72;:::i;:::-;34882:73;34950:3;34939:9;34935:19;34926:6;34882:73;:::i;:::-;34131:831;;;;;;;;:::o;34968:180::-;35016:77;35013:1;35006:88;35113:4;35110:1;35103:15;35137:4;35134:1;35127:15;35154:185;35194:1;35211:20;35229:1;35211:20;:::i;:::-;35206:25;;35245:20;35263:1;35245:20;:::i;:::-;35240:25;;35284:1;35274:35;;35289:18;;:::i;:::-;35274:35;35331:1;35328;35324:9;35319:14;;35154:185;;;;:::o;35345:220::-;35485:34;35481:1;35473:6;35469:14;35462:58;35554:3;35549:2;35541:6;35537:15;35530:28;35345:220;:::o;35571:366::-;35713:3;35734:67;35798:2;35793:3;35734:67;:::i;:::-;35727:74;;35810:93;35899:3;35810:93;:::i;:::-;35928:2;35923:3;35919:12;35912:19;;35571:366;;;:::o;35943:419::-;36109:4;36147:2;36136:9;36132:18;36124:26;;36196:9;36190:4;36186:20;36182:1;36171:9;36167:17;36160:47;36224:131;36350:4;36224:131;:::i;:::-;36216:139;;35943:419;;;:::o;36368:177::-;36508:29;36504:1;36496:6;36492:14;36485:53;36368:177;:::o;36551:366::-;36693:3;36714:67;36778:2;36773:3;36714:67;:::i;:::-;36707:74;;36790:93;36879:3;36790:93;:::i;:::-;36908:2;36903:3;36899:12;36892:19;;36551:366;;;:::o;36923:419::-;37089:4;37127:2;37116:9;37112:18;37104:26;;37176:9;37170:4;37166:20;37162:1;37151:9;37147:17;37140:47;37204:131;37330:4;37204:131;:::i;:::-;37196:139;;36923:419;;;:::o

Swarm Source

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