ETH Price: $3,005.67 (+3.10%)
Gas: 2 Gwei

Token

If You Know You Know (IYKYK)
 

Overview

Max Total Supply

1,000,000,000,000 IYKYK

Holders

552

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
diamondchad.eth
Balance
44,707.574701313 IYKYK

Value
$0.00
0x4ffaab88aedb6e8e17d4a944fa54d834b8ad95f9
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:
IYKYK

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-11
*/

/**
 * good morning. crypto's pumping. probably nothing.
 * if you know, you know. (iykyk.)
 * 
 * 
 * TG: https://t.me/iykykERC20
 * 
 * 
 * TOKENOMICS:
 * 1,000,000,000,000 token supply
 * FIRST TWO MINUTES: 5,000,000,000 max buy / 30-second buy cooldown (these limitations are lifted automatically two minutes post-launch)
 * 15-second cooldown to sell after a buy
 * 10% tax on buys and sells
 * Max wallet of 5% of total supply for first 12 hours
 * 15% fee on sells within first (1) hour post-launch
 * No team tokens, no presale
 * Functions for removing fees
 * 
SPDX-License-Identifier: UNLICENSED 
*/
pragma solidity ^0.8.4;

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

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

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

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

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

}  

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract IYKYK is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => User) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = unicode"If You Know You Know";
    string private constant _symbol = unicode"IYKYK";
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 1;
    uint256 private _teamFee = 9;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    uint256 private _launchFeeEnd;
    uint256 private _maxBuyAmount;
    uint256 private _maxHeldTokens;
    address payable private _feeAddress1;
    address payable private _feeAddress2;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private _tradingOpen;
    bool private _cooldownEnabled = true;
    bool private inSwap = false;
    bool private _useFees = true;
    uint256 private _buyLimitEnd;
    uint256 private _maxHeldTokensEnd;
    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }

    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event CooldownEnabledUpdated(bool _cooldown);
    event UseFeesBooleanUpdated(bool _usefees);
    event FeeAddress1Updated(address _feewallet1);
    event FeeAddress2Updated(address _feewallet2);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address payable feeAddress1, address payable feeAddress2) {
        _feeAddress1 = feeAddress1;
        _feeAddress2 = feeAddress2;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeAddress1] = true;
        _isExcludedFromFee[feeAddress2] = true;
        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(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    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");
        // set to false for no fee on buys
        bool takeFee = true;

        if(from != owner() && to != owner()) {
            if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }

            // buy
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                _taxFee = 1;
                _teamFee = 9;
                require(_tradingOpen, "Trading not yet enabled.");
                if(_maxHeldTokensEnd > block.timestamp) {
                    require(amount.add(balanceOf(address(to))) <= _maxHeldTokens, "You can't own that many tokens at once.");
                }
                if(_cooldownEnabled) {
                    if(_buyLimitEnd > block.timestamp) {
                        require(amount <= _maxBuyAmount);
                        require(cooldown[to].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[to].buy = block.timestamp + (30 seconds);
                    }
                }
                if(_cooldownEnabled) {
                    cooldown[to].sell = block.timestamp + (15 seconds);
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            // sell
            if(!inSwap && from != uniswapV2Pair && _tradingOpen) {
                // take fee on sells
                takeFee = true;
                _taxFee = 1;
                _teamFee = 9;
                // higher fee on sells within first timeframe post-launch
                if(_launchFeeEnd > block.timestamp) {
                    _taxFee = 3;
                    _teamFee = 12;
                }

                if(_cooldownEnabled) {
                    require(cooldown[from].sell < block.timestamp, "Your sell cooldown has not expired.");
                }

                if(contractTokenBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || !_useFees){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    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 {
        _feeAddress1.transfer(amount.div(2));
        _feeAddress2.transfer(amount.div(2));
    }
    
    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 _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        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 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    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 _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 _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 openTrading() external onlyOwner() {
        require(!_tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        _maxBuyAmount = 5000000000 * 10**9;
        // 1,000,000,000,000 total tokens
        // 50,000,000,000 = 5% of total token count
        _maxHeldTokens = 50000000000 * 10**9;
        _buyLimitEnd = block.timestamp + (120 seconds);
        _maxHeldTokensEnd = block.timestamp + (12 hours);
        _launchFeeEnd = block.timestamp + (1 hours);
        _tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function manualswap() external {
        require(_msgSender() == _feeAddress1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddress1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function toggleFees() external {
        require(_msgSender() == _feeAddress1);
        _useFees = false;
        emit UseFeesBooleanUpdated(_useFees);
    }

    function updateFeeAddress1(address newAddress) external {
        require(_msgSender() == _feeAddress1);
        _feeAddress1 = payable(newAddress);
        emit FeeAddress1Updated(_feeAddress1);
    }

    function updateFeeAddress2(address newAddress) external {
        require(_msgSender() == _feeAddress2);
        _feeAddress2 = payable(newAddress);
        emit FeeAddress2Updated(_feeAddress2);
    }

    function setCooldownEnabled() external {
        require(_msgSender() == _feeAddress1);
        _cooldownEnabled = !_cooldownEnabled;
        emit CooldownEnabledUpdated(_cooldownEnabled);
    }

    function cooldownEnabled() public view returns (bool) {
        return _cooldownEnabled;
    }

    function balancePool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }

    function balanceContract() public view returns (uint) {
        return balanceOf(address(this));
    }

    function usingFees() public view returns (bool) {
        return _useFees;
    }

    function whatIsFeeAddress1() public view returns (address) {
        return _feeAddress1;
    }

    function whatIsFeeAddress2() public view returns (address) {
        return _feeAddress2;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"feeAddress1","type":"address"},{"internalType":"address payable","name":"feeAddress2","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":"bool","name":"_cooldown","type":"bool"}],"name":"CooldownEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_feewallet1","type":"address"}],"name":"FeeAddress1Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_feewallet2","type":"address"}],"name":"FeeAddress2Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_usefees","type":"bool"}],"name":"UseFeesBooleanUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balanceContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balancePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","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":"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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleFees","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":"newAddress","type":"address"}],"name":"updateFeeAddress1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateFeeAddress2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whatIsFeeAddress1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whatIsFeeAddress2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d919062000577565b6000196200002c9190620004fe565b60075560016009556009600a55600954600b55600a54600c556001601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550348015620000a357600080fd5b5060405162003fac38038062003fac8339818101604052810190620000c991906200048f565b6000620000db6200044760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460026000620002126200044760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002666200044f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003cf6200044760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620004379190620004e1565b60405180910390a3505062000627565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008151905062000489816200060d565b92915050565b60008060408385031215620004a357600080fd5b6000620004b38582860162000478565b9250506020620004c68582860162000478565b9150509250929050565b620004db816200056d565b82525050565b6000602082019050620004f86000830184620004d0565b92915050565b60006200050b826200056d565b915062000518836200056d565b9250828210156200052e576200052d620005af565b5b828203905092915050565b600062000546826200054d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062000584826200056d565b915062000591836200056d565b925082620005a457620005a3620005de565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620006188162000539565b81146200062457600080fd5b50565b61397580620006376000396000f3fe60806040526004361061014f5760003560e01c806370eb843b116100b6578063c3c8cd801161006f578063c3c8cd801461047d578063c4a8814f14610494578063c9567bf9146104bf578063dd62ed3e146104d6578063ddf5451214610513578063e63aff631461052a57610156565b806370eb843b1461037d578063715018a6146103a85780638da5cb5b146103bf57806395d89b41146103ea578063a9059cbb14610415578063a985ceef1461045257610156565b80632e82b8f3116101085780632e82b8f31461027f578063313ce567146102aa578063322a5e5f146102d557806350901617146103005780636fc3eaec1461032957806370a082311461034057610156565b806306fdde031461015b5780630802d2f6146101865780630853b3dc146101af578063095ea7b3146101da57806318160ddd1461021757806323b872dd1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610541565b60405161017d9190612ffd565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612a66565b61057e565b005b3480156101bb57600080fd5b506101c461067c565b6040516101d19190612ef9565b60405180910390f35b3480156101e657600080fd5b5061020160048036038101906101fc9190612b43565b6106a6565b60405161020e9190612fe2565b60405180910390f35b34801561022357600080fd5b5061022c6106c4565b60405161023991906131df565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190612af4565b6106d5565b6040516102769190612fe2565b60405180910390f35b34801561028b57600080fd5b506102946107ae565b6040516102a19190612fe2565b60405180910390f35b3480156102b657600080fd5b506102bf6107c5565b6040516102cc9190613254565b60405180910390f35b3480156102e157600080fd5b506102ea6107ce565b6040516102f791906131df565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612a66565b6107de565b005b34801561033557600080fd5b5061033e6108dc565b005b34801561034c57600080fd5b5061036760048036038101906103629190612a66565b61094e565b60405161037491906131df565b60405180910390f35b34801561038957600080fd5b5061039261099f565b60405161039f91906131df565b60405180910390f35b3480156103b457600080fd5b506103bd6109d1565b005b3480156103cb57600080fd5b506103d4610b24565b6040516103e19190612ef9565b60405180910390f35b3480156103f657600080fd5b506103ff610b4d565b60405161040c9190612ffd565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190612b43565b610b8a565b6040516104499190612fe2565b60405180910390f35b34801561045e57600080fd5b50610467610ba8565b6040516104749190612fe2565b60405180910390f35b34801561048957600080fd5b50610492610bbf565b005b3480156104a057600080fd5b506104a9610c39565b6040516104b69190612ef9565b60405180910390f35b3480156104cb57600080fd5b506104d4610c63565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190612ab8565b6111d4565b60405161050a91906131df565b60405180910390f35b34801561051f57600080fd5b5061052861125b565b005b34801561053657600080fd5b5061053f61131f565b005b60606040518060400160405280601481526020017f496620596f75204b6e6f7720596f75204b6e6f77000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105bf6113f2565b73ffffffffffffffffffffffffffffffffffffffff16146105df57600080fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0e96f8986653644392af4a5daec8b04a389af0d497572173e63846ccd26c843c601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516106719190612f14565b60405180910390a150565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006106ba6106b36113f2565b84846113fa565b6001905092915050565b6000683635c9adc5dea00000905090565b60006106e28484846115c5565b6107a3846106ee6113f2565b61079e8560405180606001604052806028815260200161391860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107546113f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e0c9092919063ffffffff16565b6113fa565b600190509392505050565b6000601360179054906101000a900460ff16905090565b60006009905090565b60006107d93061094e565b905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661081f6113f2565b73ffffffffffffffffffffffffffffffffffffffff161461083f57600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f96511497113ddf59712b28350d7457b9c300ab227616bd3b451745a395a53014601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516108d19190612f14565b60405180910390a150565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661091d6113f2565b73ffffffffffffffffffffffffffffffffffffffff161461093d57600080fd5b600047905061094b81611e70565b50565b6000610998600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f6b565b9050919050565b60006109cc601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661094e565b905090565b6109d96113f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d906130ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f49594b594b000000000000000000000000000000000000000000000000000000815250905090565b6000610b9e610b976113f2565b84846115c5565b6001905092915050565b6000601360159054906101000a900460ff16905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c006113f2565b73ffffffffffffffffffffffffffffffffffffffff1614610c2057600080fd5b6000610c2b3061094e565b9050610c3681611fd9565b50565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c6b6113f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef906130ff565b60405180910390fd5b601360149054906101000a900460ff1615610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f9061319f565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dd830601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006113fa565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190612a8f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb857600080fd5b505afa158015610ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef09190612a8f565b6040518363ffffffff1660e01b8152600401610f0d929190612f2f565b602060405180830381600087803b158015610f2757600080fd5b505af1158015610f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5f9190612a8f565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fe83061094e565b600080610ff3610b24565b426040518863ffffffff1660e01b815260040161101596959493929190612f81565b6060604051808303818588803b15801561102e57600080fd5b505af1158015611042573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110679190612ba8565b505050674563918244f40000600e819055506802b5e3af16b1880000600f8190555060784261109691906132c4565b60148190555061a8c0426110aa91906132c4565b601581905550610e10426110be91906132c4565b600d819055506001601360146101000a81548160ff021916908315150217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161117e929190612f58565b602060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190612b7f565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661129c6113f2565b73ffffffffffffffffffffffffffffffffffffffff16146112bc57600080fd5b6000601360176101000a81548160ff0219169083151502179055507f875ab13664b130e9f02c6927ebda6944d90a0f0db6c0fdb7cc7ec5f85ed630b8601360179054906101000a900460ff166040516113159190612fe2565b60405180910390a1565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113606113f2565b73ffffffffffffffffffffffffffffffffffffffff161461138057600080fd5b601360159054906101000a900460ff1615601360156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601360159054906101000a900460ff166040516113e89190612fe2565b60405180910390a1565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561146a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114619061317f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061305f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b891906131df565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c9061313f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c9061301f565b60405180910390fd5b600081116116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df9061311f565b60405180910390fd5b6000600190506116f6610b24565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117645750611734610b24565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d3757601360159054906101000a900460ff161561186a57600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16611869576040518060600160405280600081526020016000815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119155750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561196b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611baa5760016009819055506009600a81905550601360149054906101000a900460ff166119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906131bf565b60405180910390fd5b426015541115611a3957600f546119f76119e88561094e565b846122d390919063ffffffff16565b1115611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f9061315f565b60405180910390fd5b5b601360159054906101000a900460ff1615611b4057426014541115611b3f57600e54821115611a6757600080fd5b42600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae29061307f565b60405180910390fd5b601e42611af891906132c4565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b601360159054906101000a900460ff1615611ba957600f42611b6291906132c4565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b5b6000611bb53061094e565b9050601360169054906101000a900460ff16158015611c225750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c3a5750601360149054906101000a900460ff165b15611d35576001915060016009819055506009600a8190555042600d541115611c6e576003600981905550600c600a819055505b601360159054906101000a900460ff1615611d085742600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe906130bf565b60405180910390fd5b5b6000811115611d1b57611d1a81611fd9565b5b60004790506000811115611d3357611d3247611e70565b5b505b505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611df05750601360179054906101000a900460ff16155b15611dfa57600090505b611e0684848484612331565b50505050565b6000838311158290611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b9190612ffd565b60405180910390fd5b5060008385611e6391906133a5565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611ec060028461235e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611eeb573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f3c60028461235e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f67573d6000803e3d6000fd5b5050565b6000600754821115611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa99061303f565b60405180910390fd5b6000611fbc6123a8565b9050611fd1818461235e90919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612037577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120655781602001602082028036833780820191505090505b50905030816000815181106120a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561214557600080fd5b505afa158015612159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217d9190612a8f565b816001815181106121b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061221e30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113fa565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122829594939291906131fa565b600060405180830381600087803b15801561229c57600080fd5b505af11580156122b0573d6000803e3d6000fd5b50505050506000601360166101000a81548160ff02191690831515021790555050565b60008082846122e291906132c4565b905083811015612327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231e9061309f565b60405180910390fd5b8091505092915050565b8061233f5761233e6123d3565b5b61234a848484612416565b80612358576123576125e1565b5b50505050565b60006123a083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125f5565b905092915050565b60008060006123b5612658565b915091506123cc818361235e90919063ffffffff16565b9250505090565b60006009541480156123e757506000600a54145b156123f157612414565b600954600b81905550600a54600c8190555060006009819055506000600a819055505b565b600080600080600080612428876126ba565b95509550955095509550955061248686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061251b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125678161276c565b6125718483612829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125ce91906131df565b60405180910390a3505050505050505050565b600b54600981905550600c54600a81905550565b6000808311829061263c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126339190612ffd565b60405180910390fd5b506000838561264b919061331a565b9050809150509392505050565b600080600060075490506000683635c9adc5dea00000905061268e683635c9adc5dea0000060075461235e90919063ffffffff16565b8210156126ad57600754683635c9adc5dea000009350935050506126b6565b81819350935050505b9091565b60008060008060008060008060006126d78a600954600a54612863565b92509250925060006126e76123a8565b905060008060006126fa8e8787876128f9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061276483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e0c565b905092915050565b60006127766123a8565b9050600061278d828461298290919063ffffffff16565b90506127e181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61283e8260075461272290919063ffffffff16565b600781905550612859816008546122d390919063ffffffff16565b6008819055505050565b60008060008061288f6064612881888a61298290919063ffffffff16565b61235e90919063ffffffff16565b905060006128b960646128ab888b61298290919063ffffffff16565b61235e90919063ffffffff16565b905060006128e2826128d4858c61272290919063ffffffff16565b61272290919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612912858961298290919063ffffffff16565b90506000612929868961298290919063ffffffff16565b90506000612940878961298290919063ffffffff16565b905060006129698261295b858761272290919063ffffffff16565b61272290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561299557600090506129f7565b600082846129a3919061334b565b90508284826129b2919061331a565b146129f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e9906130df565b60405180910390fd5b809150505b92915050565b600081359050612a0c816138d2565b92915050565b600081519050612a21816138d2565b92915050565b600081519050612a36816138e9565b92915050565b600081359050612a4b81613900565b92915050565b600081519050612a6081613900565b92915050565b600060208284031215612a7857600080fd5b6000612a86848285016129fd565b91505092915050565b600060208284031215612aa157600080fd5b6000612aaf84828501612a12565b91505092915050565b60008060408385031215612acb57600080fd5b6000612ad9858286016129fd565b9250506020612aea858286016129fd565b9150509250929050565b600080600060608486031215612b0957600080fd5b6000612b17868287016129fd565b9350506020612b28868287016129fd565b9250506040612b3986828701612a3c565b9150509250925092565b60008060408385031215612b5657600080fd5b6000612b64858286016129fd565b9250506020612b7585828601612a3c565b9150509250929050565b600060208284031215612b9157600080fd5b6000612b9f84828501612a27565b91505092915050565b600080600060608486031215612bbd57600080fd5b6000612bcb86828701612a51565b9350506020612bdc86828701612a51565b9250506040612bed86828701612a51565b9150509250925092565b6000612c038383612c1e565b60208301905092915050565b612c188161342e565b82525050565b612c27816133d9565b82525050565b612c36816133d9565b82525050565b6000612c478261327f565b612c5181856132a2565b9350612c5c8361326f565b8060005b83811015612c8d578151612c748882612bf7565b9750612c7f83613295565b925050600181019050612c60565b5085935050505092915050565b612ca3816133eb565b82525050565b612cb281613440565b82525050565b6000612cc38261328a565b612ccd81856132b3565b9350612cdd818560208601613476565b612ce681613507565b840191505092915050565b6000612cfe6023836132b3565b9150612d0982613518565b604082019050919050565b6000612d21602a836132b3565b9150612d2c82613567565b604082019050919050565b6000612d446022836132b3565b9150612d4f826135b6565b604082019050919050565b6000612d676022836132b3565b9150612d7282613605565b604082019050919050565b6000612d8a601b836132b3565b9150612d9582613654565b602082019050919050565b6000612dad6023836132b3565b9150612db88261367d565b604082019050919050565b6000612dd06021836132b3565b9150612ddb826136cc565b604082019050919050565b6000612df36020836132b3565b9150612dfe8261371b565b602082019050919050565b6000612e166029836132b3565b9150612e2182613744565b604082019050919050565b6000612e396025836132b3565b9150612e4482613793565b604082019050919050565b6000612e5c6027836132b3565b9150612e67826137e2565b604082019050919050565b6000612e7f6024836132b3565b9150612e8a82613831565b604082019050919050565b6000612ea26017836132b3565b9150612ead82613880565b602082019050919050565b6000612ec56018836132b3565b9150612ed0826138a9565b602082019050919050565b612ee481613417565b82525050565b612ef381613421565b82525050565b6000602082019050612f0e6000830184612c2d565b92915050565b6000602082019050612f296000830184612c0f565b92915050565b6000604082019050612f446000830185612c2d565b612f516020830184612c2d565b9392505050565b6000604082019050612f6d6000830185612c2d565b612f7a6020830184612edb565b9392505050565b600060c082019050612f966000830189612c2d565b612fa36020830188612edb565b612fb06040830187612ca9565b612fbd6060830186612ca9565b612fca6080830185612c2d565b612fd760a0830184612edb565b979650505050505050565b6000602082019050612ff76000830184612c9a565b92915050565b600060208201905081810360008301526130178184612cb8565b905092915050565b6000602082019050818103600083015261303881612cf1565b9050919050565b6000602082019050818103600083015261305881612d14565b9050919050565b6000602082019050818103600083015261307881612d37565b9050919050565b6000602082019050818103600083015261309881612d5a565b9050919050565b600060208201905081810360008301526130b881612d7d565b9050919050565b600060208201905081810360008301526130d881612da0565b9050919050565b600060208201905081810360008301526130f881612dc3565b9050919050565b6000602082019050818103600083015261311881612de6565b9050919050565b6000602082019050818103600083015261313881612e09565b9050919050565b6000602082019050818103600083015261315881612e2c565b9050919050565b6000602082019050818103600083015261317881612e4f565b9050919050565b6000602082019050818103600083015261319881612e72565b9050919050565b600060208201905081810360008301526131b881612e95565b9050919050565b600060208201905081810360008301526131d881612eb8565b9050919050565b60006020820190506131f46000830184612edb565b92915050565b600060a08201905061320f6000830188612edb565b61321c6020830187612ca9565b818103604083015261322e8186612c3c565b905061323d6060830185612c2d565b61324a6080830184612edb565b9695505050505050565b60006020820190506132696000830184612eea565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132cf82613417565b91506132da83613417565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561330f5761330e6134a9565b5b828201905092915050565b600061332582613417565b915061333083613417565b9250826133405761333f6134d8565b5b828204905092915050565b600061335682613417565b915061336183613417565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561339a576133996134a9565b5b828202905092915050565b60006133b082613417565b91506133bb83613417565b9250828210156133ce576133cd6134a9565b5b828203905092915050565b60006133e4826133f7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061343982613452565b9050919050565b600061344b82613417565b9050919050565b600061345d82613464565b9050919050565b600061346f826133f7565b9050919050565b60005b83811015613494578082015181840152602081019050613479565b838111156134a3576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f596f752063616e2774206f776e2074686174206d616e7920746f6b656e73206160008201527f74206f6e63652e00000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6138db816133d9565b81146138e657600080fd5b50565b6138f2816133eb565b81146138fd57600080fd5b50565b61390981613417565b811461391457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122086abdfd8b00a51b51348c490b27a8791162a6acad800665400a9574cdab544a464736f6c63430008040033000000000000000000000000a2de32028b38e9733d537a6772277d5812975ad40000000000000000000000009ae74a4b2893381884cfdcec4fb9efd6681023bb

Deployed Bytecode

0x60806040526004361061014f5760003560e01c806370eb843b116100b6578063c3c8cd801161006f578063c3c8cd801461047d578063c4a8814f14610494578063c9567bf9146104bf578063dd62ed3e146104d6578063ddf5451214610513578063e63aff631461052a57610156565b806370eb843b1461037d578063715018a6146103a85780638da5cb5b146103bf57806395d89b41146103ea578063a9059cbb14610415578063a985ceef1461045257610156565b80632e82b8f3116101085780632e82b8f31461027f578063313ce567146102aa578063322a5e5f146102d557806350901617146103005780636fc3eaec1461032957806370a082311461034057610156565b806306fdde031461015b5780630802d2f6146101865780630853b3dc146101af578063095ea7b3146101da57806318160ddd1461021757806323b872dd1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610541565b60405161017d9190612ffd565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612a66565b61057e565b005b3480156101bb57600080fd5b506101c461067c565b6040516101d19190612ef9565b60405180910390f35b3480156101e657600080fd5b5061020160048036038101906101fc9190612b43565b6106a6565b60405161020e9190612fe2565b60405180910390f35b34801561022357600080fd5b5061022c6106c4565b60405161023991906131df565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190612af4565b6106d5565b6040516102769190612fe2565b60405180910390f35b34801561028b57600080fd5b506102946107ae565b6040516102a19190612fe2565b60405180910390f35b3480156102b657600080fd5b506102bf6107c5565b6040516102cc9190613254565b60405180910390f35b3480156102e157600080fd5b506102ea6107ce565b6040516102f791906131df565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612a66565b6107de565b005b34801561033557600080fd5b5061033e6108dc565b005b34801561034c57600080fd5b5061036760048036038101906103629190612a66565b61094e565b60405161037491906131df565b60405180910390f35b34801561038957600080fd5b5061039261099f565b60405161039f91906131df565b60405180910390f35b3480156103b457600080fd5b506103bd6109d1565b005b3480156103cb57600080fd5b506103d4610b24565b6040516103e19190612ef9565b60405180910390f35b3480156103f657600080fd5b506103ff610b4d565b60405161040c9190612ffd565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190612b43565b610b8a565b6040516104499190612fe2565b60405180910390f35b34801561045e57600080fd5b50610467610ba8565b6040516104749190612fe2565b60405180910390f35b34801561048957600080fd5b50610492610bbf565b005b3480156104a057600080fd5b506104a9610c39565b6040516104b69190612ef9565b60405180910390f35b3480156104cb57600080fd5b506104d4610c63565b005b3480156104e257600080fd5b506104fd60048036038101906104f89190612ab8565b6111d4565b60405161050a91906131df565b60405180910390f35b34801561051f57600080fd5b5061052861125b565b005b34801561053657600080fd5b5061053f61131f565b005b60606040518060400160405280601481526020017f496620596f75204b6e6f7720596f75204b6e6f77000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105bf6113f2565b73ffffffffffffffffffffffffffffffffffffffff16146105df57600080fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0e96f8986653644392af4a5daec8b04a389af0d497572173e63846ccd26c843c601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516106719190612f14565b60405180910390a150565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006106ba6106b36113f2565b84846113fa565b6001905092915050565b6000683635c9adc5dea00000905090565b60006106e28484846115c5565b6107a3846106ee6113f2565b61079e8560405180606001604052806028815260200161391860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107546113f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e0c9092919063ffffffff16565b6113fa565b600190509392505050565b6000601360179054906101000a900460ff16905090565b60006009905090565b60006107d93061094e565b905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661081f6113f2565b73ffffffffffffffffffffffffffffffffffffffff161461083f57600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f96511497113ddf59712b28350d7457b9c300ab227616bd3b451745a395a53014601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516108d19190612f14565b60405180910390a150565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661091d6113f2565b73ffffffffffffffffffffffffffffffffffffffff161461093d57600080fd5b600047905061094b81611e70565b50565b6000610998600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f6b565b9050919050565b60006109cc601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661094e565b905090565b6109d96113f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d906130ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f49594b594b000000000000000000000000000000000000000000000000000000815250905090565b6000610b9e610b976113f2565b84846115c5565b6001905092915050565b6000601360159054906101000a900460ff16905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c006113f2565b73ffffffffffffffffffffffffffffffffffffffff1614610c2057600080fd5b6000610c2b3061094e565b9050610c3681611fd9565b50565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c6b6113f2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef906130ff565b60405180910390fd5b601360149054906101000a900460ff1615610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f9061319f565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dd830601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006113fa565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e569190612a8f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb857600080fd5b505afa158015610ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef09190612a8f565b6040518363ffffffff1660e01b8152600401610f0d929190612f2f565b602060405180830381600087803b158015610f2757600080fd5b505af1158015610f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5f9190612a8f565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fe83061094e565b600080610ff3610b24565b426040518863ffffffff1660e01b815260040161101596959493929190612f81565b6060604051808303818588803b15801561102e57600080fd5b505af1158015611042573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110679190612ba8565b505050674563918244f40000600e819055506802b5e3af16b1880000600f8190555060784261109691906132c4565b60148190555061a8c0426110aa91906132c4565b601581905550610e10426110be91906132c4565b600d819055506001601360146101000a81548160ff021916908315150217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161117e929190612f58565b602060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190612b7f565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661129c6113f2565b73ffffffffffffffffffffffffffffffffffffffff16146112bc57600080fd5b6000601360176101000a81548160ff0219169083151502179055507f875ab13664b130e9f02c6927ebda6944d90a0f0db6c0fdb7cc7ec5f85ed630b8601360179054906101000a900460ff166040516113159190612fe2565b60405180910390a1565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113606113f2565b73ffffffffffffffffffffffffffffffffffffffff161461138057600080fd5b601360159054906101000a900460ff1615601360156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601360159054906101000a900460ff166040516113e89190612fe2565b60405180910390a1565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561146a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114619061317f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061305f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b891906131df565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162c9061313f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c9061301f565b60405180910390fd5b600081116116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df9061311f565b60405180910390fd5b6000600190506116f6610b24565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117645750611734610b24565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d3757601360159054906101000a900460ff161561186a57600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16611869576040518060600160405280600081526020016000815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119155750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561196b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611baa5760016009819055506009600a81905550601360149054906101000a900460ff166119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906131bf565b60405180910390fd5b426015541115611a3957600f546119f76119e88561094e565b846122d390919063ffffffff16565b1115611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f9061315f565b60405180910390fd5b5b601360159054906101000a900460ff1615611b4057426014541115611b3f57600e54821115611a6757600080fd5b42600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae29061307f565b60405180910390fd5b601e42611af891906132c4565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b601360159054906101000a900460ff1615611ba957600f42611b6291906132c4565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b5b6000611bb53061094e565b9050601360169054906101000a900460ff16158015611c225750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c3a5750601360149054906101000a900460ff165b15611d35576001915060016009819055506009600a8190555042600d541115611c6e576003600981905550600c600a819055505b601360159054906101000a900460ff1615611d085742600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe906130bf565b60405180910390fd5b5b6000811115611d1b57611d1a81611fd9565b5b60004790506000811115611d3357611d3247611e70565b5b505b505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611df05750601360179054906101000a900460ff16155b15611dfa57600090505b611e0684848484612331565b50505050565b6000838311158290611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b9190612ffd565b60405180910390fd5b5060008385611e6391906133a5565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611ec060028461235e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611eeb573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611f3c60028461235e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611f67573d6000803e3d6000fd5b5050565b6000600754821115611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa99061303f565b60405180910390fd5b6000611fbc6123a8565b9050611fd1818461235e90919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612037577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120655781602001602082028036833780820191505090505b50905030816000815181106120a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561214557600080fd5b505afa158015612159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217d9190612a8f565b816001815181106121b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061221e30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113fa565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122829594939291906131fa565b600060405180830381600087803b15801561229c57600080fd5b505af11580156122b0573d6000803e3d6000fd5b50505050506000601360166101000a81548160ff02191690831515021790555050565b60008082846122e291906132c4565b905083811015612327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231e9061309f565b60405180910390fd5b8091505092915050565b8061233f5761233e6123d3565b5b61234a848484612416565b80612358576123576125e1565b5b50505050565b60006123a083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125f5565b905092915050565b60008060006123b5612658565b915091506123cc818361235e90919063ffffffff16565b9250505090565b60006009541480156123e757506000600a54145b156123f157612414565b600954600b81905550600a54600c8190555060006009819055506000600a819055505b565b600080600080600080612428876126ba565b95509550955095509550955061248686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061251b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125678161276c565b6125718483612829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125ce91906131df565b60405180910390a3505050505050505050565b600b54600981905550600c54600a81905550565b6000808311829061263c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126339190612ffd565b60405180910390fd5b506000838561264b919061331a565b9050809150509392505050565b600080600060075490506000683635c9adc5dea00000905061268e683635c9adc5dea0000060075461235e90919063ffffffff16565b8210156126ad57600754683635c9adc5dea000009350935050506126b6565b81819350935050505b9091565b60008060008060008060008060006126d78a600954600a54612863565b92509250925060006126e76123a8565b905060008060006126fa8e8787876128f9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061276483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e0c565b905092915050565b60006127766123a8565b9050600061278d828461298290919063ffffffff16565b90506127e181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61283e8260075461272290919063ffffffff16565b600781905550612859816008546122d390919063ffffffff16565b6008819055505050565b60008060008061288f6064612881888a61298290919063ffffffff16565b61235e90919063ffffffff16565b905060006128b960646128ab888b61298290919063ffffffff16565b61235e90919063ffffffff16565b905060006128e2826128d4858c61272290919063ffffffff16565b61272290919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612912858961298290919063ffffffff16565b90506000612929868961298290919063ffffffff16565b90506000612940878961298290919063ffffffff16565b905060006129698261295b858761272290919063ffffffff16565b61272290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561299557600090506129f7565b600082846129a3919061334b565b90508284826129b2919061331a565b146129f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e9906130df565b60405180910390fd5b809150505b92915050565b600081359050612a0c816138d2565b92915050565b600081519050612a21816138d2565b92915050565b600081519050612a36816138e9565b92915050565b600081359050612a4b81613900565b92915050565b600081519050612a6081613900565b92915050565b600060208284031215612a7857600080fd5b6000612a86848285016129fd565b91505092915050565b600060208284031215612aa157600080fd5b6000612aaf84828501612a12565b91505092915050565b60008060408385031215612acb57600080fd5b6000612ad9858286016129fd565b9250506020612aea858286016129fd565b9150509250929050565b600080600060608486031215612b0957600080fd5b6000612b17868287016129fd565b9350506020612b28868287016129fd565b9250506040612b3986828701612a3c565b9150509250925092565b60008060408385031215612b5657600080fd5b6000612b64858286016129fd565b9250506020612b7585828601612a3c565b9150509250929050565b600060208284031215612b9157600080fd5b6000612b9f84828501612a27565b91505092915050565b600080600060608486031215612bbd57600080fd5b6000612bcb86828701612a51565b9350506020612bdc86828701612a51565b9250506040612bed86828701612a51565b9150509250925092565b6000612c038383612c1e565b60208301905092915050565b612c188161342e565b82525050565b612c27816133d9565b82525050565b612c36816133d9565b82525050565b6000612c478261327f565b612c5181856132a2565b9350612c5c8361326f565b8060005b83811015612c8d578151612c748882612bf7565b9750612c7f83613295565b925050600181019050612c60565b5085935050505092915050565b612ca3816133eb565b82525050565b612cb281613440565b82525050565b6000612cc38261328a565b612ccd81856132b3565b9350612cdd818560208601613476565b612ce681613507565b840191505092915050565b6000612cfe6023836132b3565b9150612d0982613518565b604082019050919050565b6000612d21602a836132b3565b9150612d2c82613567565b604082019050919050565b6000612d446022836132b3565b9150612d4f826135b6565b604082019050919050565b6000612d676022836132b3565b9150612d7282613605565b604082019050919050565b6000612d8a601b836132b3565b9150612d9582613654565b602082019050919050565b6000612dad6023836132b3565b9150612db88261367d565b604082019050919050565b6000612dd06021836132b3565b9150612ddb826136cc565b604082019050919050565b6000612df36020836132b3565b9150612dfe8261371b565b602082019050919050565b6000612e166029836132b3565b9150612e2182613744565b604082019050919050565b6000612e396025836132b3565b9150612e4482613793565b604082019050919050565b6000612e5c6027836132b3565b9150612e67826137e2565b604082019050919050565b6000612e7f6024836132b3565b9150612e8a82613831565b604082019050919050565b6000612ea26017836132b3565b9150612ead82613880565b602082019050919050565b6000612ec56018836132b3565b9150612ed0826138a9565b602082019050919050565b612ee481613417565b82525050565b612ef381613421565b82525050565b6000602082019050612f0e6000830184612c2d565b92915050565b6000602082019050612f296000830184612c0f565b92915050565b6000604082019050612f446000830185612c2d565b612f516020830184612c2d565b9392505050565b6000604082019050612f6d6000830185612c2d565b612f7a6020830184612edb565b9392505050565b600060c082019050612f966000830189612c2d565b612fa36020830188612edb565b612fb06040830187612ca9565b612fbd6060830186612ca9565b612fca6080830185612c2d565b612fd760a0830184612edb565b979650505050505050565b6000602082019050612ff76000830184612c9a565b92915050565b600060208201905081810360008301526130178184612cb8565b905092915050565b6000602082019050818103600083015261303881612cf1565b9050919050565b6000602082019050818103600083015261305881612d14565b9050919050565b6000602082019050818103600083015261307881612d37565b9050919050565b6000602082019050818103600083015261309881612d5a565b9050919050565b600060208201905081810360008301526130b881612d7d565b9050919050565b600060208201905081810360008301526130d881612da0565b9050919050565b600060208201905081810360008301526130f881612dc3565b9050919050565b6000602082019050818103600083015261311881612de6565b9050919050565b6000602082019050818103600083015261313881612e09565b9050919050565b6000602082019050818103600083015261315881612e2c565b9050919050565b6000602082019050818103600083015261317881612e4f565b9050919050565b6000602082019050818103600083015261319881612e72565b9050919050565b600060208201905081810360008301526131b881612e95565b9050919050565b600060208201905081810360008301526131d881612eb8565b9050919050565b60006020820190506131f46000830184612edb565b92915050565b600060a08201905061320f6000830188612edb565b61321c6020830187612ca9565b818103604083015261322e8186612c3c565b905061323d6060830185612c2d565b61324a6080830184612edb565b9695505050505050565b60006020820190506132696000830184612eea565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132cf82613417565b91506132da83613417565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561330f5761330e6134a9565b5b828201905092915050565b600061332582613417565b915061333083613417565b9250826133405761333f6134d8565b5b828204905092915050565b600061335682613417565b915061336183613417565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561339a576133996134a9565b5b828202905092915050565b60006133b082613417565b91506133bb83613417565b9250828210156133ce576133cd6134a9565b5b828203905092915050565b60006133e4826133f7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061343982613452565b9050919050565b600061344b82613417565b9050919050565b600061345d82613464565b9050919050565b600061346f826133f7565b9050919050565b60005b83811015613494578082015181840152602081019050613479565b838111156134a3576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f596f752063616e2774206f776e2074686174206d616e7920746f6b656e73206160008201527f74206f6e63652e00000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6138db816133d9565b81146138e657600080fd5b50565b6138f2816133eb565b81146138fd57600080fd5b50565b61390981613417565b811461391457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122086abdfd8b00a51b51348c490b27a8791162a6acad800665400a9574cdab544a464736f6c63430008040033

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

000000000000000000000000a2de32028b38e9733d537a6772277d5812975ad40000000000000000000000009ae74a4b2893381884cfdcec4fb9efd6681023bb

-----Decoded View---------------
Arg [0] : feeAddress1 (address): 0xA2DE32028b38E9733d537a6772277D5812975aD4
Arg [1] : feeAddress2 (address): 0x9aE74A4B2893381884cfdCeC4FB9eFd6681023BB

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a2de32028b38e9733d537a6772277d5812975ad4
Arg [1] : 0000000000000000000000009ae74a4b2893381884cfdcec4fb9efd6681023bb


Deployed Bytecode Sourcemap

4417:13839:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17005:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18156:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7567:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6992:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7736:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17961:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6901:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17849:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17218:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16637:191;;;;;;;;;;;;;:::i;:::-;;7095:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17741:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3496:148;;;;;;;;;;;;;:::i;:::-;;3282:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6806:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7241:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17637:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16433:192;;;;;;;;;;;;;:::i;:::-;;18051:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15356:1069;;;;;;;;;;;;;:::i;:::-;;7416:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16836:161;;;;;;;;;;;;;:::i;:::-;;17431:198;;;;;;;;;;;;;:::i;:::-;;6715:83;6752:13;6785:5;;;;;;;;;;;;;;;;;6778:12;;6715:83;:::o;17005:205::-;17096:12;;;;;;;;;;;17080:28;;:12;:10;:12::i;:::-;:28;;;17072:37;;;;;;17143:10;17120:12;;:34;;;;;;;;;;;;;;;;;;17170:32;17189:12;;;;;;;;;;;17170:32;;;;;;:::i;:::-;;;;;;;;17005:205;:::o;18156:97::-;18206:7;18233:12;;;;;;;;;;;18226:19;;18156:97;:::o;7567:161::-;7642:4;7659:39;7668:12;:10;:12::i;:::-;7682:7;7691:6;7659:8;:39::i;:::-;7716:4;7709:11;;7567:161;;;;:::o;6992:95::-;7045:7;4870:12;7065:14;;6992:95;:::o;7736:313::-;7834:4;7851:36;7861:6;7869:9;7880:6;7851:9;:36::i;:::-;7898:121;7907:6;7915:12;:10;:12::i;:::-;7929:89;7967:6;7929:89;;;;;;;;;;;;;;;;;:11;:19;7941:6;7929:19;;;;;;;;;;;;;;;:33;7949:12;:10;:12::i;:::-;7929:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7898:8;:121::i;:::-;8037:4;8030:11;;7736:313;;;;;:::o;17961:82::-;18003:4;18027:8;;;;;;;;;;;18020:15;;17961:82;:::o;6901:83::-;6942:5;5136:1;6960:16;;6901:83;:::o;17849:104::-;17897:4;17921:24;17939:4;17921:9;:24::i;:::-;17914:31;;17849:104;:::o;17218:205::-;17309:12;;;;;;;;;;;17293:28;;:12;:10;:12::i;:::-;:28;;;17285:37;;;;;;17356:10;17333:12;;:34;;;;;;;;;;;;;;;;;;17383:32;17402:12;;;;;;;;;;;17383:32;;;;;;:::i;:::-;;;;;;;;17218:205;:::o;16637:191::-;16703:12;;;;;;;;;;;16687:28;;:12;:10;:12::i;:::-;:28;;;16679:37;;;;;;16727:26;16756:21;16727:50;;16788:32;16801:18;16788:12;:32::i;:::-;16637:191;:::o;7095:138::-;7161:7;7188:37;7208:7;:16;7216:7;7208:16;;;;;;;;;;;;;;;;7188:19;:37::i;:::-;7181:44;;7095:138;;;:::o;17741:100::-;17785:4;17809:24;17819:13;;;;;;;;;;;17809:9;:24::i;:::-;17802:31;;17741:100;:::o;3496:148::-;3419:12;:10;:12::i;:::-;3409:22;;:6;;;;;;;;;;:22;;;3401:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3603:1:::1;3566:40;;3587:6;::::0;::::1;;;;;;;;3566:40;;;;;;;;;;;;3634:1;3617:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3496:148::o:0;3282:79::-;3320:7;3347:6;;;;;;;;;;;3340:13;;3282:79;:::o;6806:87::-;6845:13;6878:7;;;;;;;;;;;;;;;;;6871:14;;6806:87;:::o;7241:167::-;7319:4;7336:42;7346:12;:10;:12::i;:::-;7360:9;7371:6;7336:9;:42::i;:::-;7396:4;7389:11;;7241:167;;;;:::o;17637:96::-;17685:4;17709:16;;;;;;;;;;;17702:23;;17637:96;:::o;16433:192::-;16499:12;;;;;;;;;;;16483:28;;:12;:10;:12::i;:::-;:28;;;16475:37;;;;;;16523:23;16549:24;16567:4;16549:9;:24::i;:::-;16523:50;;16584:33;16601:15;16584:16;:33::i;:::-;16433:192;:::o;18051:97::-;18101:7;18128:12;;;;;;;;;;;18121:19;;18051:97;:::o;15356:1069::-;3419:12;:10;:12::i;:::-;3409:22;;:6;;;;;;;;;;:22;;;3401:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15420:12:::1;;;;;;;;;;;15419:13;15411:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15470:35;15527:42;15470:100;;15599:16;15581:15;;:34;;;;;;;;;;;;;;;;;;15626:58;15643:4;15658:15;;;;;;;;;;;4870:12;15626:8;:58::i;:::-;15729:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15711:56;;;15776:4;15783:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15711:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15695:13;;:112;;;;;;;;;;;;;;;;;;15818:15;;;;;;;;;;;:31;;;15857:21;15888:4;15894:24;15912:4;15894:9;:24::i;:::-;15919:1;15921::::0;15923:7:::1;:5;:7::i;:::-;15931:15;15818:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15974:18;15958:13;:34;;;;16116:19;16099:14;:36;;;;16180:11;16161:15;:31;;;;:::i;:::-;16146:12;:46;;;;16242:8;16223:15;:28;;;;:::i;:::-;16203:17;:48;;;;16297:7;16278:15;:27;;;;:::i;:::-;16262:13;:43;;;;16331:4;16316:12;;:19;;;;;;;;;;;;;;;;;;16353:13;;;;;;;;;;;16346:29;;;16384:15;;;;;;;;;;;16402:14;16346:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3479:1;15356:1069::o:0;7416:143::-;7497:7;7524:11;:18;7536:5;7524:18;;;;;;;;;;;;;;;:27;7543:7;7524:27;;;;;;;;;;;;;;;;7517:34;;7416:143;;;;:::o;16836:161::-;16902:12;;;;;;;;;;;16886:28;;:12;:10;:12::i;:::-;:28;;;16878:37;;;;;;16937:5;16926:8;;:16;;;;;;;;;;;;;;;;;;16958:31;16980:8;;;;;;;;;;;16958:31;;;;;;:::i;:::-;;;;;;;;16836:161::o;17431:198::-;17505:12;;;;;;;;;;;17489:28;;:12;:10;:12::i;:::-;:28;;;17481:37;;;;;;17549:16;;;;;;;;;;;17548:17;17529:16;;:36;;;;;;;;;;;;;;;;;;17581:40;17604:16;;;;;;;;;;;17581:40;;;;;;:::i;:::-;;;;;;;;17431:198::o;691:98::-;744:7;771:10;764:17;;691:98;:::o;8664:335::-;8774:1;8757:19;;:5;:19;;;;8749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8855:1;8836:21;;:7;:21;;;;8828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8937:6;8907:11;:18;8919:5;8907:18;;;;;;;;;;;;;;;:27;8926:7;8907:27;;;;;;;;;;;;;;;:36;;;;8975:7;8959:32;;8968:5;8959:32;;;8984:6;8959:32;;;;;;:::i;:::-;;;;;;;;8664:335;;;:::o;9007:2809::-;9111:1;9095:18;;:4;:18;;;;9087:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9188:1;9174:16;;:2;:16;;;;9166:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9258:1;9249:6;:10;9241:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9360:12;9375:4;9360:19;;9403:7;:5;:7::i;:::-;9395:15;;:4;:15;;;;:32;;;;;9420:7;:5;:7::i;:::-;9414:13;;:2;:13;;;;9395:32;9392:2237;;;9447:16;;;;;;;;;;;9444:168;;;9488:8;:20;9497:10;9488:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;9484:113;;9563:14;;;;;;;;9568:1;9563:14;;;;9570:1;9563:14;;;;9572:4;9563:14;;;;;9540:8;:20;9549:10;9540:20;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9484:113;9444:168;9659:13;;;;;;;;;;;9651:21;;:4;:21;;;:55;;;;;9690:15;;;;;;;;;;;9676:30;;:2;:30;;;;9651:55;:82;;;;;9711:18;:22;9730:2;9711:22;;;;;;;;;;;;;;;;;;;;;;;;;9710:23;9651:82;9648:952;;;9764:1;9754:7;:11;;;;9795:1;9784:8;:12;;;;9823;;;;;;;;;;;9815:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9906:15;9886:17;;:35;9883:187;;;9992:14;;9954:34;9965:22;9983:2;9965:9;:22::i;:::-;9954:6;:10;;:34;;;;:::i;:::-;:52;;9946:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;9883:187;10091:16;;;;;;;;;;;10088:365;;;10150:15;10135:12;;:30;10132:302;;;10212:13;;10202:6;:23;;10194:32;;;;;;10280:15;10261:8;:12;10270:2;10261:12;;;;;;;;;;;;;;;:16;;;:34;10253:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10399:10;10380:15;:30;;;;:::i;:::-;10361:8;:12;10370:2;10361:12;;;;;;;;;;;;;;;:16;;:49;;;;10132:302;10088:365;10474:16;;;;;;;;;;;10471:114;;;10554:10;10535:15;:30;;;;:::i;:::-;10515:8;:12;10524:2;10515:12;;;;;;;;;;;;;;;:17;;:50;;;;10471:114;9648:952;10614:28;10645:24;10663:4;10645:9;:24::i;:::-;10614:55;;10711:6;;;;;;;;;;;10710:7;:32;;;;;10729:13;;;;;;;;;;;10721:21;;:4;:21;;;;10710:32;:48;;;;;10746:12;;;;;;;;;;;10710:48;10707:911;;;10827:4;10817:14;;10860:1;10850:7;:11;;;;10891:1;10880:8;:12;;;;11005:15;10989:13;;:31;10986:126;;;11055:1;11045:7;:11;;;;11090:2;11079:8;:13;;;;10986:126;11135:16;;;;;;;;;;;11132:149;;;11206:15;11184:8;:14;11193:4;11184:14;;;;;;;;;;;;;;;:19;;;:37;11176:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11132:149;11327:1;11304:20;:24;11301:110;;;11353:38;11370:20;11353:16;:38::i;:::-;11301:110;11429:26;11458:21;11429:50;;11522:1;11501:18;:22;11498:105;;;11548:35;11561:21;11548:12;:35::i;:::-;11498:105;10707:911;;9392:2237;;11644:18;:24;11663:4;11644:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11672:18;:22;11691:2;11672:22;;;;;;;;;;;;;;;;;;;;;;;;;11644:50;:63;;;;11699:8;;;;;;;;;;;11698:9;11644:63;11641:109;;;11733:5;11723:15;;11641:109;11770:38;11785:4;11790:2;11793:6;11800:7;11770:14;:38::i;:::-;9007:2809;;;;:::o;1828:190::-;1914:7;1947:1;1942;:6;;1950:12;1934:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1974:9;1990:1;1986;:5;;;;:::i;:::-;1974:17;;2009:1;2002:8;;;1828:190;;;;;:::o;12323:148::-;12380:12;;;;;;;;;;;:21;;:36;12402:13;12413:1;12402:6;:10;;:13;;;;:::i;:::-;12380:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12427:12;;;;;;;;;;;:21;;:36;12449:13;12460:1;12449:6;:10;;:13;;;;:::i;:::-;12427:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12323:148;:::o;8057:254::-;8124:7;8163;;8152;:18;;8144:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8228:19;8251:10;:8;:10::i;:::-;8228:33;;8279:24;8291:11;8279:7;:11;;:24;;;;:::i;:::-;8272:31;;;8057:254;;;:::o;11824:483::-;6204:4;6195:6;;:13;;;;;;;;;;;;;;;;;;11902:21:::1;11940:1;11926:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11902:40;;11971:4;11953;11958:1;11953:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;11997:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11987:4;11992:1;11987:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;12030:62;12047:4;12062:15;;;;;;;;;;;12080:11;12030:8;:62::i;:::-;12103:15;;;;;;;;;;;:66;;;12184:11;12210:1;12226:4;12253;12273:15;12103:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6219:1;6240:5:::0;6231:6;;:14;;;;;;;;;;;;;;;;;;11824:483;:::o;1497:179::-;1555:7;1575:9;1591:1;1587;:5;;;;:::i;:::-;1575:17;;1616:1;1611;:6;;1603:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1667:1;1660:8;;;1497:179;;;;:::o;12483:263::-;12595:7;12591:40;;12617:14;:12;:14::i;:::-;12591:40;12642:44;12660:6;12668:9;12679:6;12642:17;:44::i;:::-;12701:7;12697:41;;12723:15;:13;:15::i;:::-;12697:41;12483:263;;;;:::o;2279:132::-;2337:7;2364:39;2368:1;2371;2364:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2357:46;;2279:132;;;;:::o;14087:163::-;14128:7;14149:15;14166;14185:19;:17;:19::i;:::-;14148:56;;;;14222:20;14234:7;14222;:11;;:20;;;;:::i;:::-;14215:27;;;;14087:163;:::o;8319:210::-;8376:1;8365:7;;:12;:29;;;;;8393:1;8381:8;;:13;8365:29;8362:41;;;8396:7;;8362:41;8431:7;;8413:15;:25;;;;8468:8;;8449:16;:27;;;;8497:1;8487:7;:11;;;;8520:1;8509:8;:12;;;;8319:210;:::o;12754:490::-;12853:15;12870:23;12895:12;12909:23;12934:12;12948:13;12965:19;12976:7;12965:10;:19::i;:::-;12852:132;;;;;;;;;;;;13013:28;13033:7;13013;:15;13021:6;13013:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12995:7;:15;13003:6;12995:15;;;;;;;;;;;;;;;:46;;;;13073:39;13096:15;13073:7;:18;13081:9;13073:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13052:7;:18;13060:9;13052:18;;;;;;;;;;;;;;;:60;;;;13126:16;13136:5;13126:9;:16::i;:::-;13153:23;13165:4;13171;13153:11;:23::i;:::-;13209:9;13192:44;;13201:6;13192:44;;;13220:15;13192:44;;;;;;:::i;:::-;;;;;;;;12754:490;;;;;;;;;:::o;8541:115::-;8595:15;;8585:7;:25;;;;8632:16;;8621:8;:27;;;;8541:115::o;2419:189::-;2505:7;2537:1;2533;:5;2540:12;2525:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2564:9;2580:1;2576;:5;;;;:::i;:::-;2564:17;;2599:1;2592:8;;;2419:189;;;;;:::o;14258:255::-;14308:7;14317;14337:15;14355:7;;14337:25;;14373:15;4870:12;14373:25;;14422:20;4870:12;14422:7;;:11;;:20;;;;:::i;:::-;14412:7;:30;14409:60;;;14452:7;;4870:12;14444:25;;;;;;;;14409:60;14488:7;14497;14480:25;;;;;;14258:255;;;:::o;13252:468::-;13311:7;13320;13329;13338;13347;13356;13377:23;13402:12;13416:13;13433:39;13445:7;13454;;13463:8;;13433:11;:39::i;:::-;13376:96;;;;;;13483:19;13506:10;:8;:10::i;:::-;13483:33;;13528:15;13545:23;13570:12;13586:46;13598:7;13607:4;13613:5;13620:11;13586;:46::i;:::-;13527:105;;;;;;13651:7;13660:15;13677:4;13683:15;13700:4;13706:5;13643:69;;;;;;;;;;;;;;;;;;;13252:468;;;;;;;:::o;1684:136::-;1742:7;1769:43;1773:1;1776;1769:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1762:50;;1684:136;;;;:::o;14938:214::-;14991:19;15014:10;:8;:10::i;:::-;14991:33;;15035:13;15051:22;15061:11;15051:5;:9;;:22;;;;:::i;:::-;15035:38;;15111:33;15138:5;15111:7;:22;15127:4;15111:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15086:7;:22;15102:4;15086:22;;;;;;;;;;;;;;;:58;;;;14938:214;;;:::o;15160:147::-;15238:17;15250:4;15238:7;;:11;;:17;;;;:::i;:::-;15228:7;:27;;;;15279:20;15294:4;15279:10;;:14;;:20;;;;:::i;:::-;15266:10;:33;;;;15160:147;;:::o;13728:351::-;13821:7;13830;13839;13859:12;13874:28;13898:3;13874:19;13886:6;13874:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13859:43;;13913:13;13929:29;13954:3;13929:20;13941:7;13929;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13913:45;;13969:23;13995:28;14017:5;13995:17;14007:4;13995:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13969:54;;14042:15;14059:4;14065:5;14034:37;;;;;;;;;13728:351;;;;;;;:::o;14521:409::-;14631:7;14640;14649;14669:15;14687:24;14699:11;14687:7;:11;;:24;;;;:::i;:::-;14669:42;;14722:12;14737:21;14746:11;14737:4;:8;;:21;;;;:::i;:::-;14722:36;;14769:13;14785:22;14795:11;14785:5;:9;;:22;;;;:::i;:::-;14769:38;;14818:23;14844:28;14866:5;14844:17;14856:4;14844:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14818:54;;14891:7;14900:15;14917:4;14883:39;;;;;;;;;;14521:409;;;;;;;;:::o;2026:245::-;2084:7;2112:1;2107;:6;2104:46;;;2137:1;2130:8;;;;2104:46;2160:9;2176:1;2172;:5;;;;:::i;:::-;2160:17;;2205:1;2200;2196;:5;;;;:::i;:::-;:10;2188:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2262:1;2255:8;;;2026:245;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:137::-;355:5;386:6;380:13;371:22;;402:30;426:5;402:30;:::i;:::-;361:77;;;;:::o;444:139::-;490:5;528:6;515:20;506:29;;544:33;571:5;544:33;:::i;:::-;496:87;;;;:::o;589:143::-;646:5;677:6;671:13;662:22;;693:33;720:5;693:33;:::i;:::-;652:80;;;;:::o;738:262::-;797:6;846:2;834:9;825:7;821:23;817:32;814:2;;;862:1;859;852:12;814:2;905:1;930:53;975:7;966:6;955:9;951:22;930:53;:::i;:::-;920:63;;876:117;804:196;;;;:::o;1006:284::-;1076:6;1125:2;1113:9;1104:7;1100:23;1096:32;1093:2;;;1141:1;1138;1131:12;1093:2;1184:1;1209:64;1265:7;1256:6;1245:9;1241:22;1209:64;:::i;:::-;1199:74;;1155:128;1083:207;;;;:::o;1296:407::-;1364:6;1372;1421:2;1409:9;1400:7;1396:23;1392:32;1389:2;;;1437:1;1434;1427:12;1389:2;1480:1;1505:53;1550:7;1541:6;1530:9;1526:22;1505:53;:::i;:::-;1495:63;;1451:117;1607:2;1633:53;1678:7;1669:6;1658:9;1654:22;1633:53;:::i;:::-;1623:63;;1578:118;1379:324;;;;;:::o;1709:552::-;1786:6;1794;1802;1851:2;1839:9;1830:7;1826:23;1822:32;1819:2;;;1867:1;1864;1857:12;1819:2;1910:1;1935:53;1980:7;1971:6;1960:9;1956:22;1935:53;:::i;:::-;1925:63;;1881:117;2037:2;2063:53;2108:7;2099:6;2088:9;2084:22;2063:53;:::i;:::-;2053:63;;2008:118;2165:2;2191:53;2236:7;2227:6;2216:9;2212:22;2191:53;:::i;:::-;2181:63;;2136:118;1809:452;;;;;:::o;2267:407::-;2335:6;2343;2392:2;2380:9;2371:7;2367:23;2363:32;2360:2;;;2408:1;2405;2398:12;2360:2;2451:1;2476:53;2521:7;2512:6;2501:9;2497:22;2476:53;:::i;:::-;2466:63;;2422:117;2578:2;2604:53;2649:7;2640:6;2629:9;2625:22;2604:53;:::i;:::-;2594:63;;2549:118;2350:324;;;;;:::o;2680:278::-;2747:6;2796:2;2784:9;2775:7;2771:23;2767:32;2764:2;;;2812:1;2809;2802:12;2764:2;2855:1;2880:61;2933:7;2924:6;2913:9;2909:22;2880:61;:::i;:::-;2870:71;;2826:125;2754:204;;;;:::o;2964:596::-;3052:6;3060;3068;3117:2;3105:9;3096:7;3092:23;3088:32;3085:2;;;3133:1;3130;3123:12;3085:2;3176:1;3201:64;3257:7;3248:6;3237:9;3233:22;3201:64;:::i;:::-;3191:74;;3147:128;3314:2;3340:64;3396:7;3387:6;3376:9;3372:22;3340:64;:::i;:::-;3330:74;;3285:129;3453:2;3479:64;3535:7;3526:6;3515:9;3511:22;3479:64;:::i;:::-;3469:74;;3424:129;3075:485;;;;;:::o;3566:179::-;3635:10;3656:46;3698:3;3690:6;3656:46;:::i;:::-;3734:4;3729:3;3725:14;3711:28;;3646:99;;;;:::o;3751:147::-;3846:45;3885:5;3846:45;:::i;:::-;3841:3;3834:58;3824:74;;:::o;3904:108::-;3981:24;3999:5;3981:24;:::i;:::-;3976:3;3969:37;3959:53;;:::o;4018:118::-;4105:24;4123:5;4105:24;:::i;:::-;4100:3;4093:37;4083:53;;:::o;4172:732::-;4291:3;4320:54;4368:5;4320:54;:::i;:::-;4390:86;4469:6;4464:3;4390:86;:::i;:::-;4383:93;;4500:56;4550:5;4500:56;:::i;:::-;4579:7;4610:1;4595:284;4620:6;4617:1;4614:13;4595:284;;;4696:6;4690:13;4723:63;4782:3;4767:13;4723:63;:::i;:::-;4716:70;;4809:60;4862:6;4809:60;:::i;:::-;4799:70;;4655:224;4642:1;4639;4635:9;4630:14;;4595:284;;;4599:14;4895:3;4888:10;;4296:608;;;;;;;:::o;4910:109::-;4991:21;5006:5;4991:21;:::i;:::-;4986:3;4979:34;4969:50;;:::o;5025:147::-;5120:45;5159:5;5120:45;:::i;:::-;5115:3;5108:58;5098:74;;:::o;5178:364::-;5266:3;5294:39;5327:5;5294:39;:::i;:::-;5349:71;5413:6;5408:3;5349:71;:::i;:::-;5342:78;;5429:52;5474:6;5469:3;5462:4;5455:5;5451:16;5429:52;:::i;:::-;5506:29;5528:6;5506:29;:::i;:::-;5501:3;5497:39;5490:46;;5270:272;;;;;:::o;5548:366::-;5690:3;5711:67;5775:2;5770:3;5711:67;:::i;:::-;5704:74;;5787:93;5876:3;5787:93;:::i;:::-;5905:2;5900:3;5896:12;5889:19;;5694:220;;;:::o;5920:366::-;6062:3;6083:67;6147:2;6142:3;6083:67;:::i;:::-;6076:74;;6159:93;6248:3;6159:93;:::i;:::-;6277:2;6272:3;6268:12;6261:19;;6066:220;;;:::o;6292:366::-;6434:3;6455:67;6519:2;6514:3;6455:67;:::i;:::-;6448:74;;6531:93;6620:3;6531:93;:::i;:::-;6649:2;6644:3;6640:12;6633:19;;6438:220;;;:::o;6664:366::-;6806:3;6827:67;6891:2;6886:3;6827:67;:::i;:::-;6820:74;;6903:93;6992:3;6903:93;:::i;:::-;7021:2;7016:3;7012:12;7005:19;;6810:220;;;:::o;7036:366::-;7178:3;7199:67;7263:2;7258:3;7199:67;:::i;:::-;7192:74;;7275:93;7364:3;7275:93;:::i;:::-;7393:2;7388:3;7384:12;7377:19;;7182:220;;;:::o;7408:366::-;7550:3;7571:67;7635:2;7630:3;7571:67;:::i;:::-;7564:74;;7647:93;7736:3;7647:93;:::i;:::-;7765:2;7760:3;7756:12;7749:19;;7554:220;;;:::o;7780:366::-;7922:3;7943:67;8007:2;8002:3;7943:67;:::i;:::-;7936:74;;8019:93;8108:3;8019:93;:::i;:::-;8137:2;8132:3;8128:12;8121:19;;7926:220;;;:::o;8152:366::-;8294:3;8315:67;8379:2;8374:3;8315:67;:::i;:::-;8308:74;;8391:93;8480:3;8391:93;:::i;:::-;8509:2;8504:3;8500:12;8493:19;;8298:220;;;:::o;8524:366::-;8666:3;8687:67;8751:2;8746:3;8687:67;:::i;:::-;8680:74;;8763:93;8852:3;8763:93;:::i;:::-;8881:2;8876:3;8872:12;8865:19;;8670:220;;;:::o;8896:366::-;9038:3;9059:67;9123:2;9118:3;9059:67;:::i;:::-;9052:74;;9135:93;9224:3;9135:93;:::i;:::-;9253:2;9248:3;9244:12;9237:19;;9042:220;;;:::o;9268:366::-;9410:3;9431:67;9495:2;9490:3;9431:67;:::i;:::-;9424:74;;9507:93;9596:3;9507:93;:::i;:::-;9625:2;9620:3;9616:12;9609:19;;9414:220;;;:::o;9640:366::-;9782:3;9803:67;9867:2;9862:3;9803:67;:::i;:::-;9796:74;;9879:93;9968:3;9879:93;:::i;:::-;9997:2;9992:3;9988:12;9981:19;;9786:220;;;:::o;10012:366::-;10154:3;10175:67;10239:2;10234:3;10175:67;:::i;:::-;10168:74;;10251:93;10340:3;10251:93;:::i;:::-;10369:2;10364:3;10360:12;10353:19;;10158:220;;;:::o;10384:366::-;10526:3;10547:67;10611:2;10606:3;10547:67;:::i;:::-;10540:74;;10623:93;10712:3;10623:93;:::i;:::-;10741:2;10736:3;10732:12;10725:19;;10530:220;;;:::o;10756:118::-;10843:24;10861:5;10843:24;:::i;:::-;10838:3;10831:37;10821:53;;:::o;10880:112::-;10963:22;10979:5;10963:22;:::i;:::-;10958:3;10951:35;10941:51;;:::o;10998:222::-;11091:4;11129:2;11118:9;11114:18;11106:26;;11142:71;11210:1;11199:9;11195:17;11186:6;11142:71;:::i;:::-;11096:124;;;;:::o;11226:238::-;11327:4;11365:2;11354:9;11350:18;11342:26;;11378:79;11454:1;11443:9;11439:17;11430:6;11378:79;:::i;:::-;11332:132;;;;:::o;11470:332::-;11591:4;11629:2;11618:9;11614:18;11606:26;;11642:71;11710:1;11699:9;11695:17;11686:6;11642:71;:::i;:::-;11723:72;11791:2;11780:9;11776:18;11767:6;11723:72;:::i;:::-;11596:206;;;;;:::o;11808:332::-;11929:4;11967:2;11956:9;11952:18;11944:26;;11980:71;12048:1;12037:9;12033:17;12024:6;11980:71;:::i;:::-;12061:72;12129:2;12118:9;12114:18;12105:6;12061:72;:::i;:::-;11934:206;;;;;:::o;12146:807::-;12395:4;12433:3;12422:9;12418:19;12410:27;;12447:71;12515:1;12504:9;12500:17;12491:6;12447:71;:::i;:::-;12528:72;12596:2;12585:9;12581:18;12572:6;12528:72;:::i;:::-;12610:80;12686:2;12675:9;12671:18;12662:6;12610:80;:::i;:::-;12700;12776:2;12765:9;12761:18;12752:6;12700:80;:::i;:::-;12790:73;12858:3;12847:9;12843:19;12834:6;12790:73;:::i;:::-;12873;12941:3;12930:9;12926:19;12917:6;12873:73;:::i;:::-;12400:553;;;;;;;;;:::o;12959:210::-;13046:4;13084:2;13073:9;13069:18;13061:26;;13097:65;13159:1;13148:9;13144:17;13135:6;13097:65;:::i;:::-;13051:118;;;;:::o;13175:313::-;13288:4;13326:2;13315:9;13311:18;13303:26;;13375:9;13369:4;13365:20;13361:1;13350:9;13346:17;13339:47;13403:78;13476:4;13467:6;13403:78;:::i;:::-;13395:86;;13293:195;;;;:::o;13494:419::-;13660:4;13698:2;13687:9;13683:18;13675:26;;13747:9;13741:4;13737:20;13733:1;13722:9;13718:17;13711:47;13775:131;13901:4;13775:131;:::i;:::-;13767:139;;13665:248;;;:::o;13919:419::-;14085:4;14123:2;14112:9;14108:18;14100:26;;14172:9;14166:4;14162:20;14158:1;14147:9;14143:17;14136:47;14200:131;14326:4;14200:131;:::i;:::-;14192:139;;14090:248;;;:::o;14344:419::-;14510:4;14548:2;14537:9;14533:18;14525:26;;14597:9;14591:4;14587:20;14583:1;14572:9;14568:17;14561:47;14625:131;14751:4;14625:131;:::i;:::-;14617:139;;14515:248;;;:::o;14769:419::-;14935:4;14973:2;14962:9;14958:18;14950:26;;15022:9;15016:4;15012:20;15008:1;14997:9;14993:17;14986:47;15050:131;15176:4;15050:131;:::i;:::-;15042:139;;14940:248;;;:::o;15194:419::-;15360:4;15398:2;15387:9;15383:18;15375:26;;15447:9;15441:4;15437:20;15433:1;15422:9;15418:17;15411:47;15475:131;15601:4;15475:131;:::i;:::-;15467:139;;15365:248;;;:::o;15619:419::-;15785:4;15823:2;15812:9;15808:18;15800:26;;15872:9;15866:4;15862:20;15858:1;15847:9;15843:17;15836:47;15900:131;16026:4;15900:131;:::i;:::-;15892:139;;15790:248;;;:::o;16044:419::-;16210:4;16248:2;16237:9;16233:18;16225:26;;16297:9;16291:4;16287:20;16283:1;16272:9;16268:17;16261:47;16325:131;16451:4;16325:131;:::i;:::-;16317:139;;16215:248;;;:::o;16469:419::-;16635:4;16673:2;16662:9;16658:18;16650:26;;16722:9;16716:4;16712:20;16708:1;16697:9;16693:17;16686:47;16750:131;16876:4;16750:131;:::i;:::-;16742:139;;16640:248;;;:::o;16894:419::-;17060:4;17098:2;17087:9;17083:18;17075:26;;17147:9;17141:4;17137:20;17133:1;17122:9;17118:17;17111:47;17175:131;17301:4;17175:131;:::i;:::-;17167:139;;17065:248;;;:::o;17319:419::-;17485:4;17523:2;17512:9;17508:18;17500:26;;17572:9;17566:4;17562:20;17558:1;17547:9;17543:17;17536:47;17600:131;17726:4;17600:131;:::i;:::-;17592:139;;17490:248;;;:::o;17744:419::-;17910:4;17948:2;17937:9;17933:18;17925:26;;17997:9;17991:4;17987:20;17983:1;17972:9;17968:17;17961:47;18025:131;18151:4;18025:131;:::i;:::-;18017:139;;17915:248;;;:::o;18169:419::-;18335:4;18373:2;18362:9;18358:18;18350:26;;18422:9;18416:4;18412:20;18408:1;18397:9;18393:17;18386:47;18450:131;18576:4;18450:131;:::i;:::-;18442:139;;18340:248;;;:::o;18594:419::-;18760:4;18798:2;18787:9;18783:18;18775:26;;18847:9;18841:4;18837:20;18833:1;18822:9;18818:17;18811:47;18875:131;19001:4;18875:131;:::i;:::-;18867:139;;18765:248;;;:::o;19019:419::-;19185:4;19223:2;19212:9;19208:18;19200:26;;19272:9;19266:4;19262:20;19258:1;19247:9;19243:17;19236:47;19300:131;19426:4;19300:131;:::i;:::-;19292:139;;19190:248;;;:::o;19444:222::-;19537:4;19575:2;19564:9;19560:18;19552:26;;19588:71;19656:1;19645:9;19641:17;19632:6;19588:71;:::i;:::-;19542:124;;;;:::o;19672:831::-;19935:4;19973:3;19962:9;19958:19;19950:27;;19987:71;20055:1;20044:9;20040:17;20031:6;19987:71;:::i;:::-;20068:80;20144:2;20133:9;20129:18;20120:6;20068:80;:::i;:::-;20195:9;20189:4;20185:20;20180:2;20169:9;20165:18;20158:48;20223:108;20326:4;20317:6;20223:108;:::i;:::-;20215:116;;20341:72;20409:2;20398:9;20394:18;20385:6;20341:72;:::i;:::-;20423:73;20491:3;20480:9;20476:19;20467:6;20423:73;:::i;:::-;19940:563;;;;;;;;:::o;20509:214::-;20598:4;20636:2;20625:9;20621:18;20613:26;;20649:67;20713:1;20702:9;20698:17;20689:6;20649:67;:::i;:::-;20603:120;;;;:::o;20729:132::-;20796:4;20819:3;20811:11;;20849:4;20844:3;20840:14;20832:22;;20801:60;;;:::o;20867:114::-;20934:6;20968:5;20962:12;20952:22;;20941:40;;;:::o;20987:99::-;21039:6;21073:5;21067:12;21057:22;;21046:40;;;:::o;21092:113::-;21162:4;21194;21189:3;21185:14;21177:22;;21167:38;;;:::o;21211:184::-;21310:11;21344:6;21339:3;21332:19;21384:4;21379:3;21375:14;21360:29;;21322:73;;;;:::o;21401:169::-;21485:11;21519:6;21514:3;21507:19;21559:4;21554:3;21550:14;21535:29;;21497:73;;;;:::o;21576:305::-;21616:3;21635:20;21653:1;21635:20;:::i;:::-;21630:25;;21669:20;21687:1;21669:20;:::i;:::-;21664:25;;21823:1;21755:66;21751:74;21748:1;21745:81;21742:2;;;21829:18;;:::i;:::-;21742:2;21873:1;21870;21866:9;21859:16;;21620:261;;;;:::o;21887:185::-;21927:1;21944:20;21962:1;21944:20;:::i;:::-;21939:25;;21978:20;21996:1;21978:20;:::i;:::-;21973:25;;22017:1;22007:2;;22022:18;;:::i;:::-;22007:2;22064:1;22061;22057:9;22052:14;;21929:143;;;;:::o;22078:348::-;22118:7;22141:20;22159:1;22141:20;:::i;:::-;22136:25;;22175:20;22193:1;22175:20;:::i;:::-;22170:25;;22363:1;22295:66;22291:74;22288:1;22285:81;22280:1;22273:9;22266:17;22262:105;22259:2;;;22370:18;;:::i;:::-;22259:2;22418:1;22415;22411:9;22400:20;;22126:300;;;;:::o;22432:191::-;22472:4;22492:20;22510:1;22492:20;:::i;:::-;22487:25;;22526:20;22544:1;22526:20;:::i;:::-;22521:25;;22565:1;22562;22559:8;22556:2;;;22570:18;;:::i;:::-;22556:2;22615:1;22612;22608:9;22600:17;;22477:146;;;;:::o;22629:96::-;22666:7;22695:24;22713:5;22695:24;:::i;:::-;22684:35;;22674:51;;;:::o;22731:90::-;22765:7;22808:5;22801:13;22794:21;22783:32;;22773:48;;;:::o;22827:126::-;22864:7;22904:42;22897:5;22893:54;22882:65;;22872:81;;;:::o;22959:77::-;22996:7;23025:5;23014:16;;23004:32;;;:::o;23042:86::-;23077:7;23117:4;23110:5;23106:16;23095:27;;23085:43;;;:::o;23134:134::-;23192:9;23225:37;23256:5;23225:37;:::i;:::-;23212:50;;23202:66;;;:::o;23274:121::-;23332:9;23365:24;23383:5;23365:24;:::i;:::-;23352:37;;23342:53;;;:::o;23401:126::-;23451:9;23484:37;23515:5;23484:37;:::i;:::-;23471:50;;23461:66;;;:::o;23533:113::-;23583:9;23616:24;23634:5;23616:24;:::i;:::-;23603:37;;23593:53;;;:::o;23652:307::-;23720:1;23730:113;23744:6;23741:1;23738:13;23730:113;;;23829:1;23824:3;23820:11;23814:18;23810:1;23805:3;23801:11;23794:39;23766:2;23763:1;23759:10;23754:15;;23730:113;;;23861:6;23858:1;23855:13;23852:2;;;23941:1;23932:6;23927:3;23923:16;23916:27;23852:2;23701:258;;;;:::o;23965:180::-;24013:77;24010:1;24003:88;24110:4;24107:1;24100:15;24134:4;24131:1;24124:15;24151:180;24199:77;24196:1;24189:88;24296:4;24293:1;24286:15;24320:4;24317:1;24310:15;24337:102;24378:6;24429:2;24425:7;24420:2;24413:5;24409:14;24405:28;24395:38;;24385:54;;;:::o;24445:222::-;24585:34;24581:1;24573:6;24569:14;24562:58;24654:5;24649:2;24641:6;24637:15;24630:30;24551:116;:::o;24673:229::-;24813:34;24809:1;24801:6;24797:14;24790:58;24882:12;24877:2;24869:6;24865:15;24858:37;24779:123;:::o;24908:221::-;25048:34;25044:1;25036:6;25032:14;25025:58;25117:4;25112:2;25104:6;25100:15;25093:29;25014:115;:::o;25135:221::-;25275:34;25271:1;25263:6;25259:14;25252:58;25344:4;25339:2;25331:6;25327:15;25320:29;25241:115;:::o;25362:177::-;25502:29;25498:1;25490:6;25486:14;25479:53;25468:71;:::o;25545:222::-;25685:34;25681:1;25673:6;25669:14;25662:58;25754:5;25749:2;25741:6;25737:15;25730:30;25651:116;:::o;25773:220::-;25913:34;25909:1;25901:6;25897:14;25890:58;25982:3;25977:2;25969:6;25965:15;25958:28;25879:114;:::o;25999:182::-;26139:34;26135:1;26127:6;26123:14;26116:58;26105:76;:::o;26187:228::-;26327:34;26323:1;26315:6;26311:14;26304:58;26396:11;26391:2;26383:6;26379:15;26372:36;26293:122;:::o;26421:224::-;26561:34;26557:1;26549:6;26545:14;26538:58;26630:7;26625:2;26617:6;26613:15;26606:32;26527:118;:::o;26651:226::-;26791:34;26787:1;26779:6;26775:14;26768:58;26860:9;26855:2;26847:6;26843:15;26836:34;26757:120;:::o;26883:223::-;27023:34;27019:1;27011:6;27007:14;27000:58;27092:6;27087:2;27079:6;27075:15;27068:31;26989:117;:::o;27112:173::-;27252:25;27248:1;27240:6;27236:14;27229:49;27218:67;:::o;27291:174::-;27431:26;27427:1;27419:6;27415:14;27408:50;27397:68;:::o;27471:122::-;27544:24;27562:5;27544:24;:::i;:::-;27537:5;27534:35;27524:2;;27583:1;27580;27573:12;27524:2;27514:79;:::o;27599:116::-;27669:21;27684:5;27669:21;:::i;:::-;27662:5;27659:32;27649:2;;27705:1;27702;27695:12;27649:2;27639:76;:::o;27721:122::-;27794:24;27812:5;27794:24;:::i;:::-;27787:5;27784:35;27774:2;;27833:1;27830;27823:12;27774:2;27764:79;:::o

Swarm Source

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