ETH Price: $3,264.23 (+4.51%)
Gas: 2 Gwei

Token

Cereal ($FEED)
 

Overview

Max Total Supply

10,000,000 $FEED

Holders

110

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
fresqo.eth
Balance
0.000000000000280475 $FEED

Value
$0.00
0xe51cd3470338056681e023f7b4cfc7404d832c4f
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:
$FEED

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-26
*/

/**
* Telegram: https://t.me/Feedtokenerc
*/

// SPDX-License-Identifier: NOLICENSE


pragma solidity ^0.8.10;

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    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);

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

contract $FEED is Context, IERC20, Ownable {

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isBot;

    address[] private _excluded;

    bool public swapEnabled = true;
    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 18;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 10000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    
    uint256 public swapTokensAtAmount = 20000 * 10**_decimals;
    
    uint256 public maxSellAmount = 100000 * 10**_decimals;
    uint256 public maxBuyAmount = 100000 * 10**_decimals;
    uint256 public maxWalletBalance = 100000 * 10**_decimals;

    address public sponsorAddress = 0x6EB3AE4DC94C23353017BECA71dFf7877d23C719;
    address public marketingAddress = 0xa42b4A0cB0E69ffDE733035D76bfBB3cD3540646;
    address public wsdappsAddress = 0x3D191EBe224907cb7f4b8eb6F1dE9ba9F0E98925;

    string private constant _name = "Cereal";
    string private constant _symbol = "$FEED";


    struct Taxes {
      uint256 rfi;
      uint256 marketing;
      uint256 sponsor;
      uint256 liquidity;
      uint256 wsdapps;
    }

    Taxes public taxes = Taxes(10,5,20,10,5);
    Taxes public sellTaxes = Taxes(10,105,20,10,5);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 sponsor;
        uint256 marketing;
        uint256 liquidity;
        uint256 wsdapps;
    }
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rsponsor;
      uint256 rmarketing;
      uint256 rLiquidity;
      uint256 rwsdapps;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tsponsor;
      uint256 tmarketing;
      uint256 tLiquidity;
      uint256 twsdapps;
    }

    event FeesChanged();

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

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[sponsorAddress]=true;
        _isExcludedFromFee[marketingAddress] = true;
        _isExcludedFromFee[wsdappsAddress] = true;

        emit Transfer(address(0), owner(), _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 view override returns (uint256) {
        return _tTotal;
    }

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

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

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

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

    function excludeFromFee(address account, bool isExcluded) public onlyOwner {
        _isExcludedFromFee[account] = isExcluded;
    }


    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    
    function setSellTaxes() public onlyOwner {
        sellTaxes.rfi = 10;
        sellTaxes.sponsor = 20;
        sellTaxes.marketing = 5;
        sellTaxes.liquidity = 10;
        sellTaxes.wsdapps = 5;
    }

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

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takesponsor(uint256 rsponsor, uint256 tsponsor) private {
        totFeesPaid.sponsor +=tsponsor;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tsponsor;
        }
        _rOwned[address(this)] +=rsponsor;
    }
    
    function _takemarketing(uint256 rmarketing, uint256 tmarketing) private {
        totFeesPaid.marketing += tmarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+= tmarketing;
        }
        _rOwned[address(this)] += rmarketing;
    }

    function _takewsdapps(uint256 rwsdapps, uint256 twsdapps) private {
        totFeesPaid.marketing += twsdapps;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+= twsdapps;
        }
        _rOwned[address(this)] += rwsdapps;
    }

    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rsponsor, to_return.rmarketing, to_return.rLiquidity, to_return.rwsdapps) = _getRValues(to_return, tAmount, takeFee, _getRate());
        return to_return;
    }

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

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        
        s.tRfi = tAmount*temp.rfi/1000;
        s.tsponsor = tAmount*temp.sponsor/1000;
        s.tLiquidity = tAmount*temp.liquidity/1000;
        s.tmarketing = tAmount*temp.marketing/1000;
        s.twsdapps = tAmount*temp.wsdapps/1000;
        s.tTransferAmount = tAmount-s.tRfi-s.tsponsor-s.tmarketing-s.twsdapps-s.tLiquidity;
        return s;
    }

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

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

        rRfi = s.tRfi*currentRate;
        rsponsor = s.tsponsor*currentRate;
        rmarketing = s.tmarketing*currentRate;
        rwsdapps = s.twsdapps*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        rTransferAmount =  rAmount-rRfi-rsponsor-rmarketing-rwsdapps-rLiquidity;
        return (rAmount, rTransferAmount, rRfi,rsponsor,rmarketing,rwsdapps,rLiquidity);
    }

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }


    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBot[from] && !_isBot[to], "You are a bot");

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && !swapping){
            if(from == pair){
                require(amount <= maxBuyAmount, "You are exceeding maxBuyAmount");
            }
            if(to == pair){
                require(amount <= maxSellAmount, "You are exceeding maxSellAmount");
            }
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletBalance, "You are exceeding maxWalletBalance");
            }
        }
        
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            swapAndLiquify(swapTokensAtAmount);
        }

        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]), to == pair);
    }


    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {
        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

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

        if (s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if (s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity, s.tLiquidity);
        }
        if (s.rsponsor > 0 || s.tsponsor > 0) {
            _takesponsor(s.rsponsor, s.tsponsor);
        }
        if (s.rmarketing > 0 || s.tmarketing > 0) {
            _takemarketing(s.rmarketing, s.tmarketing);
        }
        if (s.rwsdapps > 0 || s.twsdapps > 0) {
            _takemarketing(s.rwsdapps, s.twsdapps);
        }

        emit Transfer(sender, recipient, isSell || takeFee ? s.tTransferAmount : tAmount); // Emit the correct transfer amount
        emit Transfer(sender, address(this), s.tLiquidity + s.tmarketing + s.tsponsor + s.twsdapps);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap{
       // Split the contract balance into halves
        uint256 denominator = (sellTaxes.liquidity + sellTaxes.sponsor + sellTaxes.marketing + sellTaxes.wsdapps) * 2;
        uint256 tokensToAddLiquidityWith = tokens * sellTaxes.liquidity / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
        uint256 ETHToAddLiquidityWith = unitBalance * sellTaxes.liquidity;

        if(ETHToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }

        uint256 sponsorAmt = unitBalance * 2 * sellTaxes.sponsor;
        if(sponsorAmt > 0){
            payable(sponsorAddress).transfer(sponsorAmt);
        }
        
        uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
        if(marketingAmt > 0){
            payable(marketingAddress).transfer(marketingAmt);
        }
        uint256 wsdappsAmt = unitBalance * 2 * sellTaxes.wsdapps;
        if(wsdappsAmt > 0){
            payable(wsdappsAddress).transfer(wsdappsAmt);
        }        
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0x6F1182C6E8BC5F36dB6B1B999590489fc63cE854),
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function updatesponsorWallet(address newWallet) external onlyOwner{
        sponsorAddress = newWallet;
    }
    
    function updatemarketingWallet(address newmarketingWallet) external onlyOwner{
        marketingAddress = newmarketingWallet;
    }
    
    function increaseMaxes() external onlyOwner{
        maxWalletBalance = _tTotal * 2 / 100;
        maxBuyAmount = _tTotal * 2 / 100;
        maxSellAmount = _tTotal * 2 /100;
    }

    function removeLimits() external onlyOwner{
        maxWalletBalance = _tTotal;
        maxBuyAmount = _tTotal;
        maxSellAmount = _tTotal;
    }
    
    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }    

    //Use this in case ETH are sent to the contract
    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }
    
    // Function to allow admin to claim ERC20 tokens sent to this contract
    // Owner cannot transfer out $BART from this smart contract
    function rescueAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        require(_tokenAddr != address(this), "Cannot transfer out $BART!");
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"increaseMaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"},{"internalType":"bool","name":"isSell","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"sponsor","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"wsdapps","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sponsorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"sponsor","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"wsdapps","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"sponsor","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"wsdapps","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketingWallet","type":"address"}],"name":"updatemarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatesponsorWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wsdappsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600160085f6101000a81548160ff0219169083151502179055506012600a6200002e91906200105b565b629896806200003e9190620010ab565b600a55600a545f1962000052919062001122565b5f1962000060919062001159565b600b556012600a6200007391906200105b565b614e20620000829190620010ab565b600c556012600a6200009591906200105b565b620186a0620000a59190620010ab565b600d556012600a620000b891906200105b565b620186a0620000c89190620010ab565b600e556012600a620000db91906200105b565b620186a0620000eb9190620010ab565b600f55736eb3ae4dc94c23353017beca71dff7877d23c71960105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a42b4a0cb0e69ffde733035d76bfbb3cd354064660115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733d191ebe224907cb7f4b8eb6f1de9ba9f0e9892560125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060a00160405280600a81526020016005815260200160148152602001600a8152602001600581525060135f820151815f01556020820151816001015560408201518160020155606082015181600301556080820151816004015550506040518060a00160405280600a81526020016069815260200160148152602001600a8152602001600581525060185f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401555050348015620002b6575f80fd5b50620002d7620002cb620007f160201b60201c565b620007f860201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003609190620011f8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ec9190620011f8565b6040518363ffffffff1660e01b81526004016200040b92919062001239565b6020604051808303815f875af115801562000428573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200044e9190620011f8565b905081600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200050360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620008b960201b60201c565b600b5460015f6200051962000b6360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160045f6200056b62000b6360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200078162000b6360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620007e1919062001275565b60405180910390a35050620014c0565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620008c9620007f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008ef62000b6360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200093f90620012ee565b60405180910390fd5b60055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615620009d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009cc906200135c565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054111562000aab5762000a6960015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000b8a60201b60201c565b60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600781908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f600b5482111562000bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bca90620013f0565b60405180910390fd5b5f62000be462000bfc60201b60201c565b9050808362000bf4919062001410565b915050919050565b5f805f62000c0f62000c2860201b60201c565b91509150808262000c21919062001410565b9250505090565b5f805f600b5490505f600a5490505f5b60078054905081101562000e8f578260015f6007848154811062000c615762000c6062001447565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054118062000d4a57508160025f6007848154811062000ce65762000ce562001447565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b1562000d6357600b54600a549450945050505062000ec5565b60015f6007838154811062000d7d5762000d7c62001447565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548362000dec919062001159565b925060025f6007838154811062000e085762000e0762001447565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548262000e77919062001159565b9150808062000e869062001474565b91505062000c38565b50600a54600b5462000ea2919062001410565b82101562000ebc57600b54600a5493509350505062000ec5565b81819350935050505b9091565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f535780860481111562000f2b5762000f2a62000ec9565b5b600185161562000f3b5780820291505b808102905062000f4b8562000ef6565b945062000f0b565b94509492505050565b5f8262000f6d57600190506200103f565b8162000f7c575f90506200103f565b816001811462000f95576002811462000fa05762000fd6565b60019150506200103f565b60ff84111562000fb55762000fb462000ec9565b5b8360020a91508482111562000fcf5762000fce62000ec9565b5b506200103f565b5060208310610133831016604e8410600b8410161715620010105782820a9050838111156200100a576200100962000ec9565b5b6200103f565b6200101f848484600162000f02565b9250905081840481111562001039576200103862000ec9565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620010678262001046565b915062001074836200104f565b9250620010a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f5c565b905092915050565b5f620010b78262001046565b9150620010c48362001046565b9250828202620010d48162001046565b91508282048414831517620010ee57620010ed62000ec9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200112e8262001046565b91506200113b8362001046565b9250826200114e576200114d620010f5565b5b828206905092915050565b5f620011658262001046565b9150620011728362001046565b92508282039050818111156200118d576200118c62000ec9565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620011c28262001197565b9050919050565b620011d481620011b6565b8114620011df575f80fd5b50565b5f81519050620011f281620011c9565b92915050565b5f6020828403121562001210576200120f62001193565b5b5f6200121f84828501620011e2565b91505092915050565b6200123381620011b6565b82525050565b5f6040820190506200124e5f83018562001228565b6200125d602083018462001228565b9392505050565b6200126f8162001046565b82525050565b5f6020820190506200128a5f83018462001264565b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620012d660208362001290565b9150620012e382620012a0565b602082019050919050565b5f6020820190508181035f8301526200130781620012c8565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f62001344601b8362001290565b915062001351826200130e565b602082019050919050565b5f6020820190508181035f830152620013758162001336565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f620013d8602a8362001290565b9150620013e5826200137c565b604082019050919050565b5f6020820190508181035f8301526200140981620013ca565b9050919050565b5f6200141c8262001046565b9150620014298362001046565b9250826200143c576200143b620010f5565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f620014808262001046565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620014b557620014b462000ec9565b5b600182019050919050565b6150fd80620014ce5f395ff3fe60806040526004361061025f575f3560e01c8063751039fc11610143578063a9059cbb116100b5578063dd62ed3e11610079578063dd62ed3e146108d8578063df8408fe14610914578063e2f456051461093c578063f2fde38b14610966578063f66895a31461098e578063f887ea40146109bc57610266565b8063a9059cbb146107fa578063bbde77c114610836578063bff7816914610860578063cfbe6f8614610888578063d257b34f146108b057610266565b806395d89b411161010757806395d89b41146106ea5780639ba5e4d5146107145780639e252f0014610742578063a457c2d71461076a578063a5ece941146107a6578063a8aa1b31146107d057610266565b8063751039fc1461061c57806388e765ff1461063257806388f820201461065c5780638da5cb5b14610698578063924de9b7146106c257610266565b80633f63d40f116101dc57806366d602ae116101a057806366d602ae1461051e5780636aeefe10146105485780636ddd17131461057257806370a082311461059c578063715018a6146105d8578063728f8eea146105ee57610266565b80633f63d40f1461044057806340b28c2f1461047c57806352390c02146104a45780635342acb4146104cc578063557191811461050857610266565b806319585a221161022357806319585a221461033857806323b872dd146103625780632d8381191461039e578063313ce567146103da578063395093511461040457610266565b806306fdde031461026a578063095ea7b3146102945780630aa9e312146102d05780630d65df9b146102e657806318160ddd1461030e57610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109e6565b60405161028b9190613d40565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613df1565b610a23565b6040516102c79190613e49565b60405180910390f35b3480156102db575f80fd5b506102e4610a40565b005b3480156102f1575f80fd5b5061030c60048036038101906103079190613e62565b610b21565b005b348015610319575f80fd5b50610322610c8c565b60405161032f9190613ec1565b60405180910390f35b348015610343575f80fd5b5061034c610c95565b6040516103599190613ee9565b60405180910390f35b34801561036d575f80fd5b5061038860048036038101906103839190613e62565b610cba565b6040516103959190613e49565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190613f02565b610db5565b6040516103d19190613ec1565b60405180910390f35b3480156103e5575f80fd5b506103ee610e1a565b6040516103fb9190613f48565b60405180910390f35b34801561040f575f80fd5b5061042a60048036038101906104259190613df1565b610e22565b6040516104379190613e49565b60405180910390f35b34801561044b575f80fd5b5061046660048036038101906104619190613f8b565b610ec9565b6040516104739190613ec1565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d9190613fdb565b610f4d565b005b3480156104af575f80fd5b506104ca60048036038101906104c59190614019565b61104e565b005b3480156104d7575f80fd5b506104f260048036038101906104ed9190614019565b6112d9565b6040516104ff9190613e49565b60405180910390f35b348015610513575f80fd5b5061051c61132b565b005b348015610529575f80fd5b506105326113df565b60405161053f9190613ec1565b60405180910390f35b348015610553575f80fd5b5061055c6113e5565b6040516105699190613ee9565b60405180910390f35b34801561057d575f80fd5b5061058661140a565b6040516105939190613e49565b60405180910390f35b3480156105a7575f80fd5b506105c260048036038101906105bd9190614019565b61141c565b6040516105cf9190613ec1565b60405180910390f35b3480156105e3575f80fd5b506105ec6114ff565b005b3480156105f9575f80fd5b50610602611586565b604051610613959493929190614044565b60405180910390f35b348015610627575f80fd5b506106306115a9565b005b34801561063d575f80fd5b50610646611642565b6040516106539190613ec1565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d9190614019565b611648565b60405161068f9190613e49565b60405180910390f35b3480156106a3575f80fd5b506106ac61169a565b6040516106b99190613ee9565b60405180910390f35b3480156106cd575f80fd5b506106e860048036038101906106e39190614095565b6116c1565b005b3480156106f5575f80fd5b506106fe611759565b60405161070b9190613d40565b60405180910390f35b34801561071f575f80fd5b50610728611796565b604051610739959493929190614044565b60405180910390f35b34801561074d575f80fd5b5061076860048036038101906107639190613f02565b6117b9565b005b348015610775575f80fd5b50610790600480360381019061078b9190613df1565b6118bf565b60405161079d9190613e49565b60405180910390f35b3480156107b1575f80fd5b506107ba6119ae565b6040516107c79190613ee9565b60405180910390f35b3480156107db575f80fd5b506107e46119d3565b6040516107f19190613ee9565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190613df1565b6119f8565b60405161082d9190613e49565b60405180910390f35b348015610841575f80fd5b5061084a611a15565b6040516108579190613ec1565b60405180910390f35b34801561086b575f80fd5b5061088660048036038101906108819190614019565b611a1b565b005b348015610893575f80fd5b506108ae60048036038101906108a99190614019565b611ada565b005b3480156108bb575f80fd5b506108d660048036038101906108d19190613f02565b611b99565b005b3480156108e3575f80fd5b506108fe60048036038101906108f99190613fdb565b611c37565b60405161090b9190613ec1565b60405180910390f35b34801561091f575f80fd5b5061093a600480360381019061093591906140c0565b611cb9565b005b348015610947575f80fd5b50610950611d8d565b60405161095d9190613ec1565b60405180910390f35b348015610971575f80fd5b5061098c60048036038101906109879190614019565b611d93565b005b348015610999575f80fd5b506109a2611e89565b6040516109b3959493929190614044565b60405180910390f35b3480156109c7575f80fd5b506109d0611eac565b6040516109dd9190614159565b60405180910390f35b60606040518060400160405280600681526020017f43657265616c0000000000000000000000000000000000000000000000000000815250905090565b5f610a36610a2f611ed2565b8484611ed9565b6001905092915050565b610a48611ed2565b73ffffffffffffffffffffffffffffffffffffffff16610a6661169a565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab3906141bc565b60405180910390fd5b60646002600a54610acd9190614207565b610ad79190614275565b600f8190555060646002600a54610aee9190614207565b610af89190614275565b600e8190555060646002600a54610b0f9190614207565b610b199190614275565b600d81905550565b610b29611ed2565b73ffffffffffffffffffffffffffffffffffffffff16610b4761169a565b73ffffffffffffffffffffffffffffffffffffffff1614610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906141bc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02906142ef565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610c4692919061430d565b6020604051808303815f875af1158015610c62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c869190614348565b50505050565b5f600a54905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610cc684848461209c565b5f60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d0d611ed2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d83906143e3565b60405180910390fd5b610da985610d98611ed2565b8584610da49190614401565b611ed9565b60019150509392505050565b5f600b54821115610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df2906144a4565b60405180910390fd5b5f610e046127cf565b90508083610e129190614275565b915050919050565b5f6012905090565b5f610ebf610e2e611ed2565b848460035f610e3b611ed2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610eba91906144c2565b611ed9565b6001905092915050565b5f600a54841115610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f069061453f565b60405180910390fd5b82610f2e575f610f20855f856127f1565b9050805f0151915050610f46565b5f610f3b856001856127f1565b905080602001519150505b9392505050565b610f55611ed2565b73ffffffffffffffffffffffffffffffffffffffff16610f7361169a565b73ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc0906141bc565b60405180910390fd5b81600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611056611ed2565b73ffffffffffffffffffffffffffffffffffffffff1661107461169a565b73ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c1906141bc565b60405180910390fd5b60055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b906145a7565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611221576111df60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610db5565b60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600781908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611333611ed2565b73ffffffffffffffffffffffffffffffffffffffff1661135161169a565b73ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e906141bc565b60405180910390fd5b600a60185f018190555060146018600201819055506005601860010181905550600a6018600301819055506005601860040181905550565b600d5481565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085f9054906101000a900460ff1681565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156114b15760025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506114fa565b6114f760015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610db5565b90505b919050565b611507611ed2565b73ffffffffffffffffffffffffffffffffffffffff1661152561169a565b73ffffffffffffffffffffffffffffffffffffffff161461157b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611572906141bc565b60405180910390fd5b6115845f61285e565b565b6013805f0154908060010154908060020154908060030154908060040154905085565b6115b1611ed2565b73ffffffffffffffffffffffffffffffffffffffff166115cf61169a565b73ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c906141bc565b60405180910390fd5b600a54600f81905550600a54600e81905550600a54600d81905550565b600e5481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116c9611ed2565b73ffffffffffffffffffffffffffffffffffffffff166116e761169a565b73ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906141bc565b60405180910390fd5b8060085f6101000a81548160ff02191690831515021790555050565b60606040518060400160405280600581526020017f2446454544000000000000000000000000000000000000000000000000000000815250905090565b601d805f0154908060010154908060020154908060030154908060040154905085565b6117c1611ed2565b73ffffffffffffffffffffffffffffffffffffffff166117df61169a565b73ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c906141bc565b60405180910390fd5b80471015611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f9061460f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156118bb573d5f803e3d5ffd5b5050565b5f8060035f6118cc611ed2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197d9061469d565b60405180910390fd5b6119a3611991611ed2565b85858461199e9190614401565b611ed9565b600191505092915050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a0b611a04611ed2565b848461209c565b6001905092915050565b600f5481565b611a23611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611a4161169a565b73ffffffffffffffffffffffffffffffffffffffff1614611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e906141bc565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ae2611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611b0061169a565b73ffffffffffffffffffffffffffffffffffffffff1614611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d906141bc565b60405180910390fd5b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ba1611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611bbf61169a565b73ffffffffffffffffffffffffffffffffffffffff1614611c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0c906141bc565b60405180910390fd5b6012600a611c2391906147ea565b81611c2e9190614207565b600c8190555050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611cc1611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611cdf61169a565b73ffffffffffffffffffffffffffffffffffffffff1614611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c906141bc565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b611d9b611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611db961169a565b73ffffffffffffffffffffffffffffffffffffffff1614611e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e06906141bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e74906148a4565b60405180910390fd5b611e868161285e565b50565b6018805f0154908060010154908060020154908060030154908060040154905085565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90614932565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac906149c0565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161208f9190613ec1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190614a4e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f90614adc565b60405180910390fd5b5f81116121ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b190614b6a565b60405180910390fd5b6121c38361141c565b811115612205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fc90614bf8565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156122a3575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6122e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d990614c60565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612380575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156123995750600860019054906101000a900460ff16155b156125805760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361243857600e54811115612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90614cc8565b60405180910390fd5b5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124d257600d548111156124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c890614d30565b60405180910390fd5b5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461257f57600f54816125338461141c565b61253d91906144c2565b111561257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590614dbe565b60405180910390fd5b5b5b5f600c5461258d3061141c565b10159050600860019054906101000a900460ff161580156125b9575060085f9054906101000a900460ff165b80156125c25750805b801561261b575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561266e575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126c1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156126d2576126d1600c5461291f565b5b6127c984848460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612773575060045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1560095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614612be0565b50505050565b5f805f6127da61305d565b9150915080826127ea9190614275565b9250505090565b6127f9613c31565b6128048484846132e3565b90506128198185856128146127cf565b6134b8565b875f0188602001896040018a6060018b6080018c60a0018d60c00187815250878152508781525087815250878152508781525087815250505050505050509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600860016101000a81548160ff0219169083151502179055505f600260186004015460186001015460186002015460186003015461295f91906144c2565b61296991906144c2565b61297391906144c2565b61297d9190614207565b90505f81601860030154846129929190614207565b61299c9190614275565b90505f81846129ab9190614401565b90505f4790506129ba82613594565b5f81476129c79190614401565b90505f601860030154866129db9190614401565b826129e69190614275565b90505f601860030154826129fa9190614207565b90505f811115612a0f57612a0e86826137cd565b5b5f601860020154600284612a239190614207565b612a2d9190614207565b90505f811115612a9d5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612a9b573d5f803e3d5ffd5b505b5f601860010154600285612ab19190614207565b612abb9190614207565b90505f811115612b2b5760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b29573d5f803e3d5ffd5b505b5f601860040154600286612b3f9190614207565b612b499190614207565b90505f811115612bb95760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612bb7573d5f803e3d5ffd5b505b505050505050505050505f600860016101000a81548160ff02191690831515021790555050565b5f612bec8484846127f1565b905060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612cc8578360025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c869190614401565b60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612da6578060e0015160025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6491906144c2565b60025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b805f015160015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612df59190614401565b92505081905550806020015160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e4c91906144c2565b925050819055505f81604001511180612e6957505f816101000151115b15612e8257612e8181604001518261010001516138bc565b5b5f8160a001511180612e9857505f816101600151115b15612eb157612eb08160a001518261016001516138f2565b5b5f81606001511180612ec757505f816101200151115b15612ee057612edf8160600151826101200151613a07565b5b5f81608001511180612ef657505f816101400151115b15612f0f57612f0e8160800151826101400151613b1c565b5b5f8160c001511180612f2557505f816101800151115b15612f3e57612f3d8160c00151826101800151613b1c565b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8480612f965750855b612fa05786612fa6565b8360e001515b604051612fb39190613ec1565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610180015184610120015185610140015186610160015161302c91906144c2565b61303691906144c2565b61304091906144c2565b60405161304d9190613ec1565b60405180910390a3505050505050565b5f805f600b5490505f600a5490505f5b6007805490508110156132ad578260015f6007848154811061309257613091614ddc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054118061317757508160025f6007848154811061311357613112614ddc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b1561318e57600b54600a54945094505050506132df565b60015f600783815481106131a5576131a4614ddc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836132129190614401565b925060025f6007838154811061322b5761322a614ddc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826132989190614401565b915080806132a590614e09565b91505061306d565b50600a54600b546132be9190614275565b8210156132d657600b54600a549350935050506132df565b81819350935050505b9091565b6132eb613c31565b826132ff57838160e00181815250506134b1565b613307613c8c565b82156133525760186040518060a00160405290815f82015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050613393565b60136040518060a00160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090505b6103e8815f0151866133a59190614207565b6133af9190614275565b826101000181815250506103e88160400151866133cc9190614207565b6133d69190614275565b826101200181815250506103e88160600151866133f39190614207565b6133fd9190614275565b826101600181815250506103e881602001518661341a9190614207565b6134249190614275565b826101400181815250506103e88160800151866134419190614207565b61344b9190614275565b826101800181815250508161016001518261018001518361014001518461012001518561010001518961347e9190614401565b6134889190614401565b6134929190614401565b61349c9190614401565b6134a69190614401565b8260e0018181525050505b9392505050565b5f805f805f805f878a6134cb9190614207565b9650886134ec5786875f805f805f9650965096509650965096509650613586565b878b61010001516134fd9190614207565b9450878b61012001516135109190614207565b9350878b61014001516135239190614207565b9250878b61018001516135369190614207565b9150878b61016001516135499190614207565b905080828486888b61355b9190614401565b6135659190614401565b61356f9190614401565b6135799190614401565b6135839190614401565b95505b949950949992975094509450565b5f600267ffffffffffffffff8111156135b0576135af614e50565b5b6040519080825280602002602001820160405280156135de5781602001602082028036833780820191505090505b50905030815f815181106135f5576135f4614ddc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136be9190614e91565b816001815181106136d2576136d1614ddc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061373930600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ed9565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161379c959493929190614fac565b5f604051808303815f87803b1580156137b3575f80fd5b505af11580156137c5573d5f803e3d5ffd5b505050505050565b6137fa30600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ed9565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80736f1182c6e8bc5f36db6b1b999590489fc63ce854426040518863ffffffff1660e01b815260040161387496959493929190615004565b60606040518083038185885af1158015613890573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906138b59190615077565b5050505050565b81600b5f8282546138cd9190614401565b9250508190555080601d5f015f8282546138e791906144c2565b925050819055505050565b80601d6003015f82825461390691906144c2565b9250508190555060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156139b0578060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546139a891906144c2565b925050819055505b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546139fc91906144c2565b925050819055505050565b80601d6001015f828254613a1b91906144c2565b9250508190555060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613ac5578060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613abd91906144c2565b925050819055505b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613b1191906144c2565b925050819055505050565b80601d6002015f828254613b3091906144c2565b9250508190555060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613bda578060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613bd291906144c2565b925050819055505b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613c2691906144c2565b925050819055505050565b604051806101a001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613ced578082015181840152602081019050613cd2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613d1282613cb6565b613d1c8185613cc0565b9350613d2c818560208601613cd0565b613d3581613cf8565b840191505092915050565b5f6020820190508181035f830152613d588184613d08565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613d8d82613d64565b9050919050565b613d9d81613d83565b8114613da7575f80fd5b50565b5f81359050613db881613d94565b92915050565b5f819050919050565b613dd081613dbe565b8114613dda575f80fd5b50565b5f81359050613deb81613dc7565b92915050565b5f8060408385031215613e0757613e06613d60565b5b5f613e1485828601613daa565b9250506020613e2585828601613ddd565b9150509250929050565b5f8115159050919050565b613e4381613e2f565b82525050565b5f602082019050613e5c5f830184613e3a565b92915050565b5f805f60608486031215613e7957613e78613d60565b5b5f613e8686828701613daa565b9350506020613e9786828701613daa565b9250506040613ea886828701613ddd565b9150509250925092565b613ebb81613dbe565b82525050565b5f602082019050613ed45f830184613eb2565b92915050565b613ee381613d83565b82525050565b5f602082019050613efc5f830184613eda565b92915050565b5f60208284031215613f1757613f16613d60565b5b5f613f2484828501613ddd565b91505092915050565b5f60ff82169050919050565b613f4281613f2d565b82525050565b5f602082019050613f5b5f830184613f39565b92915050565b613f6a81613e2f565b8114613f74575f80fd5b50565b5f81359050613f8581613f61565b92915050565b5f805f60608486031215613fa257613fa1613d60565b5b5f613faf86828701613ddd565b9350506020613fc086828701613f77565b9250506040613fd186828701613f77565b9150509250925092565b5f8060408385031215613ff157613ff0613d60565b5b5f613ffe85828601613daa565b925050602061400f85828601613daa565b9150509250929050565b5f6020828403121561402e5761402d613d60565b5b5f61403b84828501613daa565b91505092915050565b5f60a0820190506140575f830188613eb2565b6140646020830187613eb2565b6140716040830186613eb2565b61407e6060830185613eb2565b61408b6080830184613eb2565b9695505050505050565b5f602082840312156140aa576140a9613d60565b5b5f6140b784828501613f77565b91505092915050565b5f80604083850312156140d6576140d5613d60565b5b5f6140e385828601613daa565b92505060206140f485828601613f77565b9150509250929050565b5f819050919050565b5f61412161411c61411784613d64565b6140fe565b613d64565b9050919050565b5f61413282614107565b9050919050565b5f61414382614128565b9050919050565b61415381614139565b82525050565b5f60208201905061416c5f83018461414a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6141a6602083613cc0565b91506141b182614172565b602082019050919050565b5f6020820190508181035f8301526141d38161419a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61421182613dbe565b915061421c83613dbe565b925082820261422a81613dbe565b91508282048414831517614241576142406141da565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61427f82613dbe565b915061428a83613dbe565b92508261429a57614299614248565b5b828204905092915050565b7f43616e6e6f74207472616e73666572206f7574202442415254210000000000005f82015250565b5f6142d9601a83613cc0565b91506142e4826142a5565b602082019050919050565b5f6020820190508181035f830152614306816142cd565b9050919050565b5f6040820190506143205f830185613eda565b61432d6020830184613eb2565b9392505050565b5f8151905061434281613f61565b92915050565b5f6020828403121561435d5761435c613d60565b5b5f61436a84828501614334565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6143cd602883613cc0565b91506143d882614373565b604082019050919050565b5f6020820190508181035f8301526143fa816143c1565b9050919050565b5f61440b82613dbe565b915061441683613dbe565b925082820390508181111561442e5761442d6141da565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61448e602a83613cc0565b915061449982614434565b604082019050919050565b5f6020820190508181035f8301526144bb81614482565b9050919050565b5f6144cc82613dbe565b91506144d783613dbe565b92508282019050808211156144ef576144ee6141da565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f614529601f83613cc0565b9150614534826144f5565b602082019050919050565b5f6020820190508181035f8301526145568161451d565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f614591601b83613cc0565b915061459c8261455d565b602082019050919050565b5f6020820190508181035f8301526145be81614585565b9050919050565b7f696e73756666696369656e74204554482062616c616e636500000000000000005f82015250565b5f6145f9601883613cc0565b9150614604826145c5565b602082019050919050565b5f6020820190508181035f830152614626816145ed565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614687602583613cc0565b91506146928261462d565b604082019050919050565b5f6020820190508181035f8301526146b48161467b565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115614710578086048111156146ec576146eb6141da565b5b60018516156146fb5780820291505b8081029050614709856146bb565b94506146d0565b94509492505050565b5f8261472857600190506147e3565b81614735575f90506147e3565b816001811461474b576002811461475557614784565b60019150506147e3565b60ff841115614767576147666141da565b5b8360020a91508482111561477e5761477d6141da565b5b506147e3565b5060208310610133831016604e8410600b84101617156147b95782820a9050838111156147b4576147b36141da565b5b6147e3565b6147c684848460016146c7565b925090508184048111156147dd576147dc6141da565b5b81810290505b9392505050565b5f6147f482613dbe565b91506147ff83613f2d565b925061482c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614719565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61488e602683613cc0565b915061489982614834565b604082019050919050565b5f6020820190508181035f8301526148bb81614882565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61491c602483613cc0565b9150614927826148c2565b604082019050919050565b5f6020820190508181035f83015261494981614910565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6149aa602283613cc0565b91506149b582614950565b604082019050919050565b5f6020820190508181035f8301526149d78161499e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614a38602583613cc0565b9150614a43826149de565b604082019050919050565b5f6020820190508181035f830152614a6581614a2c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614ac6602383613cc0565b9150614ad182614a6c565b604082019050919050565b5f6020820190508181035f830152614af381614aba565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f614b54602983613cc0565b9150614b5f82614afa565b604082019050919050565b5f6020820190508181035f830152614b8181614b48565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f614be2603183613cc0565b9150614bed82614b88565b604082019050919050565b5f6020820190508181035f830152614c0f81614bd6565b9050919050565b7f596f7520617265206120626f74000000000000000000000000000000000000005f82015250565b5f614c4a600d83613cc0565b9150614c5582614c16565b602082019050919050565b5f6020820190508181035f830152614c7781614c3e565b9050919050565b7f596f752061726520657863656564696e67206d6178427579416d6f756e7400005f82015250565b5f614cb2601e83613cc0565b9150614cbd82614c7e565b602082019050919050565b5f6020820190508181035f830152614cdf81614ca6565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c416d6f756e74005f82015250565b5f614d1a601f83613cc0565b9150614d2582614ce6565b602082019050919050565b5f6020820190508181035f830152614d4781614d0e565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c657442616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f614da8602283613cc0565b9150614db382614d4e565b604082019050919050565b5f6020820190508181035f830152614dd581614d9c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614e1382613dbe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e4557614e446141da565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614e8b81613d94565b92915050565b5f60208284031215614ea657614ea5613d60565b5b5f614eb384828501614e7d565b91505092915050565b5f819050919050565b5f614edf614eda614ed584614ebc565b6140fe565b613dbe565b9050919050565b614eef81614ec5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614f2781613d83565b82525050565b5f614f388383614f1e565b60208301905092915050565b5f602082019050919050565b5f614f5a82614ef5565b614f648185614eff565b9350614f6f83614f0f565b805f5b83811015614f9f578151614f868882614f2d565b9750614f9183614f44565b925050600181019050614f72565b5085935050505092915050565b5f60a082019050614fbf5f830188613eb2565b614fcc6020830187614ee6565b8181036040830152614fde8186614f50565b9050614fed6060830185613eda565b614ffa6080830184613eb2565b9695505050505050565b5f60c0820190506150175f830189613eda565b6150246020830188613eb2565b6150316040830187614ee6565b61503e6060830186614ee6565b61504b6080830185613eda565b61505860a0830184613eb2565b979650505050505050565b5f8151905061507181613dc7565b92915050565b5f805f6060848603121561508e5761508d613d60565b5b5f61509b86828701615063565b93505060206150ac86828701615063565b92505060406150bd86828701615063565b915050925092509256fea26469706673582212202219230ab6e0ff8845c5feec8f7d974903e33965fc13bf45314d4693ebacfd9864736f6c63430008150033

Deployed Bytecode

0x60806040526004361061025f575f3560e01c8063751039fc11610143578063a9059cbb116100b5578063dd62ed3e11610079578063dd62ed3e146108d8578063df8408fe14610914578063e2f456051461093c578063f2fde38b14610966578063f66895a31461098e578063f887ea40146109bc57610266565b8063a9059cbb146107fa578063bbde77c114610836578063bff7816914610860578063cfbe6f8614610888578063d257b34f146108b057610266565b806395d89b411161010757806395d89b41146106ea5780639ba5e4d5146107145780639e252f0014610742578063a457c2d71461076a578063a5ece941146107a6578063a8aa1b31146107d057610266565b8063751039fc1461061c57806388e765ff1461063257806388f820201461065c5780638da5cb5b14610698578063924de9b7146106c257610266565b80633f63d40f116101dc57806366d602ae116101a057806366d602ae1461051e5780636aeefe10146105485780636ddd17131461057257806370a082311461059c578063715018a6146105d8578063728f8eea146105ee57610266565b80633f63d40f1461044057806340b28c2f1461047c57806352390c02146104a45780635342acb4146104cc578063557191811461050857610266565b806319585a221161022357806319585a221461033857806323b872dd146103625780632d8381191461039e578063313ce567146103da578063395093511461040457610266565b806306fdde031461026a578063095ea7b3146102945780630aa9e312146102d05780630d65df9b146102e657806318160ddd1461030e57610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109e6565b60405161028b9190613d40565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613df1565b610a23565b6040516102c79190613e49565b60405180910390f35b3480156102db575f80fd5b506102e4610a40565b005b3480156102f1575f80fd5b5061030c60048036038101906103079190613e62565b610b21565b005b348015610319575f80fd5b50610322610c8c565b60405161032f9190613ec1565b60405180910390f35b348015610343575f80fd5b5061034c610c95565b6040516103599190613ee9565b60405180910390f35b34801561036d575f80fd5b5061038860048036038101906103839190613e62565b610cba565b6040516103959190613e49565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190613f02565b610db5565b6040516103d19190613ec1565b60405180910390f35b3480156103e5575f80fd5b506103ee610e1a565b6040516103fb9190613f48565b60405180910390f35b34801561040f575f80fd5b5061042a60048036038101906104259190613df1565b610e22565b6040516104379190613e49565b60405180910390f35b34801561044b575f80fd5b5061046660048036038101906104619190613f8b565b610ec9565b6040516104739190613ec1565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d9190613fdb565b610f4d565b005b3480156104af575f80fd5b506104ca60048036038101906104c59190614019565b61104e565b005b3480156104d7575f80fd5b506104f260048036038101906104ed9190614019565b6112d9565b6040516104ff9190613e49565b60405180910390f35b348015610513575f80fd5b5061051c61132b565b005b348015610529575f80fd5b506105326113df565b60405161053f9190613ec1565b60405180910390f35b348015610553575f80fd5b5061055c6113e5565b6040516105699190613ee9565b60405180910390f35b34801561057d575f80fd5b5061058661140a565b6040516105939190613e49565b60405180910390f35b3480156105a7575f80fd5b506105c260048036038101906105bd9190614019565b61141c565b6040516105cf9190613ec1565b60405180910390f35b3480156105e3575f80fd5b506105ec6114ff565b005b3480156105f9575f80fd5b50610602611586565b604051610613959493929190614044565b60405180910390f35b348015610627575f80fd5b506106306115a9565b005b34801561063d575f80fd5b50610646611642565b6040516106539190613ec1565b60405180910390f35b348015610667575f80fd5b50610682600480360381019061067d9190614019565b611648565b60405161068f9190613e49565b60405180910390f35b3480156106a3575f80fd5b506106ac61169a565b6040516106b99190613ee9565b60405180910390f35b3480156106cd575f80fd5b506106e860048036038101906106e39190614095565b6116c1565b005b3480156106f5575f80fd5b506106fe611759565b60405161070b9190613d40565b60405180910390f35b34801561071f575f80fd5b50610728611796565b604051610739959493929190614044565b60405180910390f35b34801561074d575f80fd5b5061076860048036038101906107639190613f02565b6117b9565b005b348015610775575f80fd5b50610790600480360381019061078b9190613df1565b6118bf565b60405161079d9190613e49565b60405180910390f35b3480156107b1575f80fd5b506107ba6119ae565b6040516107c79190613ee9565b60405180910390f35b3480156107db575f80fd5b506107e46119d3565b6040516107f19190613ee9565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190613df1565b6119f8565b60405161082d9190613e49565b60405180910390f35b348015610841575f80fd5b5061084a611a15565b6040516108579190613ec1565b60405180910390f35b34801561086b575f80fd5b5061088660048036038101906108819190614019565b611a1b565b005b348015610893575f80fd5b506108ae60048036038101906108a99190614019565b611ada565b005b3480156108bb575f80fd5b506108d660048036038101906108d19190613f02565b611b99565b005b3480156108e3575f80fd5b506108fe60048036038101906108f99190613fdb565b611c37565b60405161090b9190613ec1565b60405180910390f35b34801561091f575f80fd5b5061093a600480360381019061093591906140c0565b611cb9565b005b348015610947575f80fd5b50610950611d8d565b60405161095d9190613ec1565b60405180910390f35b348015610971575f80fd5b5061098c60048036038101906109879190614019565b611d93565b005b348015610999575f80fd5b506109a2611e89565b6040516109b3959493929190614044565b60405180910390f35b3480156109c7575f80fd5b506109d0611eac565b6040516109dd9190614159565b60405180910390f35b60606040518060400160405280600681526020017f43657265616c0000000000000000000000000000000000000000000000000000815250905090565b5f610a36610a2f611ed2565b8484611ed9565b6001905092915050565b610a48611ed2565b73ffffffffffffffffffffffffffffffffffffffff16610a6661169a565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab3906141bc565b60405180910390fd5b60646002600a54610acd9190614207565b610ad79190614275565b600f8190555060646002600a54610aee9190614207565b610af89190614275565b600e8190555060646002600a54610b0f9190614207565b610b199190614275565b600d81905550565b610b29611ed2565b73ffffffffffffffffffffffffffffffffffffffff16610b4761169a565b73ffffffffffffffffffffffffffffffffffffffff1614610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906141bc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02906142ef565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610c4692919061430d565b6020604051808303815f875af1158015610c62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c869190614348565b50505050565b5f600a54905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610cc684848461209c565b5f60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d0d611ed2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d83906143e3565b60405180910390fd5b610da985610d98611ed2565b8584610da49190614401565b611ed9565b60019150509392505050565b5f600b54821115610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df2906144a4565b60405180910390fd5b5f610e046127cf565b90508083610e129190614275565b915050919050565b5f6012905090565b5f610ebf610e2e611ed2565b848460035f610e3b611ed2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610eba91906144c2565b611ed9565b6001905092915050565b5f600a54841115610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f069061453f565b60405180910390fd5b82610f2e575f610f20855f856127f1565b9050805f0151915050610f46565b5f610f3b856001856127f1565b905080602001519150505b9392505050565b610f55611ed2565b73ffffffffffffffffffffffffffffffffffffffff16610f7361169a565b73ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc0906141bc565b60405180910390fd5b81600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611056611ed2565b73ffffffffffffffffffffffffffffffffffffffff1661107461169a565b73ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c1906141bc565b60405180910390fd5b60055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b906145a7565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611221576111df60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610db5565b60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600781908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611333611ed2565b73ffffffffffffffffffffffffffffffffffffffff1661135161169a565b73ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e906141bc565b60405180910390fd5b600a60185f018190555060146018600201819055506005601860010181905550600a6018600301819055506005601860040181905550565b600d5481565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085f9054906101000a900460ff1681565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156114b15760025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506114fa565b6114f760015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610db5565b90505b919050565b611507611ed2565b73ffffffffffffffffffffffffffffffffffffffff1661152561169a565b73ffffffffffffffffffffffffffffffffffffffff161461157b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611572906141bc565b60405180910390fd5b6115845f61285e565b565b6013805f0154908060010154908060020154908060030154908060040154905085565b6115b1611ed2565b73ffffffffffffffffffffffffffffffffffffffff166115cf61169a565b73ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c906141bc565b60405180910390fd5b600a54600f81905550600a54600e81905550600a54600d81905550565b600e5481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116c9611ed2565b73ffffffffffffffffffffffffffffffffffffffff166116e761169a565b73ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906141bc565b60405180910390fd5b8060085f6101000a81548160ff02191690831515021790555050565b60606040518060400160405280600581526020017f2446454544000000000000000000000000000000000000000000000000000000815250905090565b601d805f0154908060010154908060020154908060030154908060040154905085565b6117c1611ed2565b73ffffffffffffffffffffffffffffffffffffffff166117df61169a565b73ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c906141bc565b60405180910390fd5b80471015611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f9061460f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156118bb573d5f803e3d5ffd5b5050565b5f8060035f6118cc611ed2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197d9061469d565b60405180910390fd5b6119a3611991611ed2565b85858461199e9190614401565b611ed9565b600191505092915050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a0b611a04611ed2565b848461209c565b6001905092915050565b600f5481565b611a23611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611a4161169a565b73ffffffffffffffffffffffffffffffffffffffff1614611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e906141bc565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ae2611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611b0061169a565b73ffffffffffffffffffffffffffffffffffffffff1614611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d906141bc565b60405180910390fd5b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ba1611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611bbf61169a565b73ffffffffffffffffffffffffffffffffffffffff1614611c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0c906141bc565b60405180910390fd5b6012600a611c2391906147ea565b81611c2e9190614207565b600c8190555050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611cc1611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611cdf61169a565b73ffffffffffffffffffffffffffffffffffffffff1614611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c906141bc565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b611d9b611ed2565b73ffffffffffffffffffffffffffffffffffffffff16611db961169a565b73ffffffffffffffffffffffffffffffffffffffff1614611e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e06906141bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e74906148a4565b60405180910390fd5b611e868161285e565b50565b6018805f0154908060010154908060020154908060030154908060040154905085565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90614932565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fac906149c0565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161208f9190613ec1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190614a4e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f90614adc565b60405180910390fd5b5f81116121ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b190614b6a565b60405180910390fd5b6121c38361141c565b811115612205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fc90614bf8565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156122a3575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6122e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d990614c60565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612380575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156123995750600860019054906101000a900460ff16155b156125805760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361243857600e54811115612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90614cc8565b60405180910390fd5b5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124d257600d548111156124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c890614d30565b60405180910390fd5b5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461257f57600f54816125338461141c565b61253d91906144c2565b111561257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590614dbe565b60405180910390fd5b5b5b5f600c5461258d3061141c565b10159050600860019054906101000a900460ff161580156125b9575060085f9054906101000a900460ff165b80156125c25750805b801561261b575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561266e575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126c1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156126d2576126d1600c5461291f565b5b6127c984848460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612773575060045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1560095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614612be0565b50505050565b5f805f6127da61305d565b9150915080826127ea9190614275565b9250505090565b6127f9613c31565b6128048484846132e3565b90506128198185856128146127cf565b6134b8565b875f0188602001896040018a6060018b6080018c60a0018d60c00187815250878152508781525087815250878152508781525087815250505050505050509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600860016101000a81548160ff0219169083151502179055505f600260186004015460186001015460186002015460186003015461295f91906144c2565b61296991906144c2565b61297391906144c2565b61297d9190614207565b90505f81601860030154846129929190614207565b61299c9190614275565b90505f81846129ab9190614401565b90505f4790506129ba82613594565b5f81476129c79190614401565b90505f601860030154866129db9190614401565b826129e69190614275565b90505f601860030154826129fa9190614207565b90505f811115612a0f57612a0e86826137cd565b5b5f601860020154600284612a239190614207565b612a2d9190614207565b90505f811115612a9d5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612a9b573d5f803e3d5ffd5b505b5f601860010154600285612ab19190614207565b612abb9190614207565b90505f811115612b2b5760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b29573d5f803e3d5ffd5b505b5f601860040154600286612b3f9190614207565b612b499190614207565b90505f811115612bb95760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612bb7573d5f803e3d5ffd5b505b505050505050505050505f600860016101000a81548160ff02191690831515021790555050565b5f612bec8484846127f1565b905060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612cc8578360025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c869190614401565b60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612da6578060e0015160025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6491906144c2565b60025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b805f015160015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612df59190614401565b92505081905550806020015160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e4c91906144c2565b925050819055505f81604001511180612e6957505f816101000151115b15612e8257612e8181604001518261010001516138bc565b5b5f8160a001511180612e9857505f816101600151115b15612eb157612eb08160a001518261016001516138f2565b5b5f81606001511180612ec757505f816101200151115b15612ee057612edf8160600151826101200151613a07565b5b5f81608001511180612ef657505f816101400151115b15612f0f57612f0e8160800151826101400151613b1c565b5b5f8160c001511180612f2557505f816101800151115b15612f3e57612f3d8160c00151826101800151613b1c565b5b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8480612f965750855b612fa05786612fa6565b8360e001515b604051612fb39190613ec1565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610180015184610120015185610140015186610160015161302c91906144c2565b61303691906144c2565b61304091906144c2565b60405161304d9190613ec1565b60405180910390a3505050505050565b5f805f600b5490505f600a5490505f5b6007805490508110156132ad578260015f6007848154811061309257613091614ddc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054118061317757508160025f6007848154811061311357613112614ddc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b1561318e57600b54600a54945094505050506132df565b60015f600783815481106131a5576131a4614ddc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836132129190614401565b925060025f6007838154811061322b5761322a614ddc565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054826132989190614401565b915080806132a590614e09565b91505061306d565b50600a54600b546132be9190614275565b8210156132d657600b54600a549350935050506132df565b81819350935050505b9091565b6132eb613c31565b826132ff57838160e00181815250506134b1565b613307613c8c565b82156133525760186040518060a00160405290815f82015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050613393565b60136040518060a00160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090505b6103e8815f0151866133a59190614207565b6133af9190614275565b826101000181815250506103e88160400151866133cc9190614207565b6133d69190614275565b826101200181815250506103e88160600151866133f39190614207565b6133fd9190614275565b826101600181815250506103e881602001518661341a9190614207565b6134249190614275565b826101400181815250506103e88160800151866134419190614207565b61344b9190614275565b826101800181815250508161016001518261018001518361014001518461012001518561010001518961347e9190614401565b6134889190614401565b6134929190614401565b61349c9190614401565b6134a69190614401565b8260e0018181525050505b9392505050565b5f805f805f805f878a6134cb9190614207565b9650886134ec5786875f805f805f9650965096509650965096509650613586565b878b61010001516134fd9190614207565b9450878b61012001516135109190614207565b9350878b61014001516135239190614207565b9250878b61018001516135369190614207565b9150878b61016001516135499190614207565b905080828486888b61355b9190614401565b6135659190614401565b61356f9190614401565b6135799190614401565b6135839190614401565b95505b949950949992975094509450565b5f600267ffffffffffffffff8111156135b0576135af614e50565b5b6040519080825280602002602001820160405280156135de5781602001602082028036833780820191505090505b50905030815f815181106135f5576135f4614ddc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136be9190614e91565b816001815181106136d2576136d1614ddc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061373930600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ed9565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161379c959493929190614fac565b5f604051808303815f87803b1580156137b3575f80fd5b505af11580156137c5573d5f803e3d5ffd5b505050505050565b6137fa30600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ed9565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80736f1182c6e8bc5f36db6b1b999590489fc63ce854426040518863ffffffff1660e01b815260040161387496959493929190615004565b60606040518083038185885af1158015613890573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906138b59190615077565b5050505050565b81600b5f8282546138cd9190614401565b9250508190555080601d5f015f8282546138e791906144c2565b925050819055505050565b80601d6003015f82825461390691906144c2565b9250508190555060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156139b0578060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546139a891906144c2565b925050819055505b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546139fc91906144c2565b925050819055505050565b80601d6001015f828254613a1b91906144c2565b9250508190555060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613ac5578060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613abd91906144c2565b925050819055505b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613b1191906144c2565b925050819055505050565b80601d6002015f828254613b3091906144c2565b9250508190555060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613bda578060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613bd291906144c2565b925050819055505b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613c2691906144c2565b925050819055505050565b604051806101a001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613ced578082015181840152602081019050613cd2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613d1282613cb6565b613d1c8185613cc0565b9350613d2c818560208601613cd0565b613d3581613cf8565b840191505092915050565b5f6020820190508181035f830152613d588184613d08565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613d8d82613d64565b9050919050565b613d9d81613d83565b8114613da7575f80fd5b50565b5f81359050613db881613d94565b92915050565b5f819050919050565b613dd081613dbe565b8114613dda575f80fd5b50565b5f81359050613deb81613dc7565b92915050565b5f8060408385031215613e0757613e06613d60565b5b5f613e1485828601613daa565b9250506020613e2585828601613ddd565b9150509250929050565b5f8115159050919050565b613e4381613e2f565b82525050565b5f602082019050613e5c5f830184613e3a565b92915050565b5f805f60608486031215613e7957613e78613d60565b5b5f613e8686828701613daa565b9350506020613e9786828701613daa565b9250506040613ea886828701613ddd565b9150509250925092565b613ebb81613dbe565b82525050565b5f602082019050613ed45f830184613eb2565b92915050565b613ee381613d83565b82525050565b5f602082019050613efc5f830184613eda565b92915050565b5f60208284031215613f1757613f16613d60565b5b5f613f2484828501613ddd565b91505092915050565b5f60ff82169050919050565b613f4281613f2d565b82525050565b5f602082019050613f5b5f830184613f39565b92915050565b613f6a81613e2f565b8114613f74575f80fd5b50565b5f81359050613f8581613f61565b92915050565b5f805f60608486031215613fa257613fa1613d60565b5b5f613faf86828701613ddd565b9350506020613fc086828701613f77565b9250506040613fd186828701613f77565b9150509250925092565b5f8060408385031215613ff157613ff0613d60565b5b5f613ffe85828601613daa565b925050602061400f85828601613daa565b9150509250929050565b5f6020828403121561402e5761402d613d60565b5b5f61403b84828501613daa565b91505092915050565b5f60a0820190506140575f830188613eb2565b6140646020830187613eb2565b6140716040830186613eb2565b61407e6060830185613eb2565b61408b6080830184613eb2565b9695505050505050565b5f602082840312156140aa576140a9613d60565b5b5f6140b784828501613f77565b91505092915050565b5f80604083850312156140d6576140d5613d60565b5b5f6140e385828601613daa565b92505060206140f485828601613f77565b9150509250929050565b5f819050919050565b5f61412161411c61411784613d64565b6140fe565b613d64565b9050919050565b5f61413282614107565b9050919050565b5f61414382614128565b9050919050565b61415381614139565b82525050565b5f60208201905061416c5f83018461414a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6141a6602083613cc0565b91506141b182614172565b602082019050919050565b5f6020820190508181035f8301526141d38161419a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61421182613dbe565b915061421c83613dbe565b925082820261422a81613dbe565b91508282048414831517614241576142406141da565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61427f82613dbe565b915061428a83613dbe565b92508261429a57614299614248565b5b828204905092915050565b7f43616e6e6f74207472616e73666572206f7574202442415254210000000000005f82015250565b5f6142d9601a83613cc0565b91506142e4826142a5565b602082019050919050565b5f6020820190508181035f830152614306816142cd565b9050919050565b5f6040820190506143205f830185613eda565b61432d6020830184613eb2565b9392505050565b5f8151905061434281613f61565b92915050565b5f6020828403121561435d5761435c613d60565b5b5f61436a84828501614334565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6143cd602883613cc0565b91506143d882614373565b604082019050919050565b5f6020820190508181035f8301526143fa816143c1565b9050919050565b5f61440b82613dbe565b915061441683613dbe565b925082820390508181111561442e5761442d6141da565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61448e602a83613cc0565b915061449982614434565b604082019050919050565b5f6020820190508181035f8301526144bb81614482565b9050919050565b5f6144cc82613dbe565b91506144d783613dbe565b92508282019050808211156144ef576144ee6141da565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f614529601f83613cc0565b9150614534826144f5565b602082019050919050565b5f6020820190508181035f8301526145568161451d565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f614591601b83613cc0565b915061459c8261455d565b602082019050919050565b5f6020820190508181035f8301526145be81614585565b9050919050565b7f696e73756666696369656e74204554482062616c616e636500000000000000005f82015250565b5f6145f9601883613cc0565b9150614604826145c5565b602082019050919050565b5f6020820190508181035f830152614626816145ed565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614687602583613cc0565b91506146928261462d565b604082019050919050565b5f6020820190508181035f8301526146b48161467b565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115614710578086048111156146ec576146eb6141da565b5b60018516156146fb5780820291505b8081029050614709856146bb565b94506146d0565b94509492505050565b5f8261472857600190506147e3565b81614735575f90506147e3565b816001811461474b576002811461475557614784565b60019150506147e3565b60ff841115614767576147666141da565b5b8360020a91508482111561477e5761477d6141da565b5b506147e3565b5060208310610133831016604e8410600b84101617156147b95782820a9050838111156147b4576147b36141da565b5b6147e3565b6147c684848460016146c7565b925090508184048111156147dd576147dc6141da565b5b81810290505b9392505050565b5f6147f482613dbe565b91506147ff83613f2d565b925061482c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614719565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61488e602683613cc0565b915061489982614834565b604082019050919050565b5f6020820190508181035f8301526148bb81614882565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61491c602483613cc0565b9150614927826148c2565b604082019050919050565b5f6020820190508181035f83015261494981614910565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6149aa602283613cc0565b91506149b582614950565b604082019050919050565b5f6020820190508181035f8301526149d78161499e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614a38602583613cc0565b9150614a43826149de565b604082019050919050565b5f6020820190508181035f830152614a6581614a2c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614ac6602383613cc0565b9150614ad182614a6c565b604082019050919050565b5f6020820190508181035f830152614af381614aba565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f614b54602983613cc0565b9150614b5f82614afa565b604082019050919050565b5f6020820190508181035f830152614b8181614b48565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f614be2603183613cc0565b9150614bed82614b88565b604082019050919050565b5f6020820190508181035f830152614c0f81614bd6565b9050919050565b7f596f7520617265206120626f74000000000000000000000000000000000000005f82015250565b5f614c4a600d83613cc0565b9150614c5582614c16565b602082019050919050565b5f6020820190508181035f830152614c7781614c3e565b9050919050565b7f596f752061726520657863656564696e67206d6178427579416d6f756e7400005f82015250565b5f614cb2601e83613cc0565b9150614cbd82614c7e565b602082019050919050565b5f6020820190508181035f830152614cdf81614ca6565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c416d6f756e74005f82015250565b5f614d1a601f83613cc0565b9150614d2582614ce6565b602082019050919050565b5f6020820190508181035f830152614d4781614d0e565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c657442616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f614da8602283613cc0565b9150614db382614d4e565b604082019050919050565b5f6020820190508181035f830152614dd581614d9c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614e1382613dbe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e4557614e446141da565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050614e8b81613d94565b92915050565b5f60208284031215614ea657614ea5613d60565b5b5f614eb384828501614e7d565b91505092915050565b5f819050919050565b5f614edf614eda614ed584614ebc565b6140fe565b613dbe565b9050919050565b614eef81614ec5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614f2781613d83565b82525050565b5f614f388383614f1e565b60208301905092915050565b5f602082019050919050565b5f614f5a82614ef5565b614f648185614eff565b9350614f6f83614f0f565b805f5b83811015614f9f578151614f868882614f2d565b9750614f9183614f44565b925050600181019050614f72565b5085935050505092915050565b5f60a082019050614fbf5f830188613eb2565b614fcc6020830187614ee6565b8181036040830152614fde8186614f50565b9050614fed6060830185613eda565b614ffa6080830184613eb2565b9695505050505050565b5f60c0820190506150175f830189613eda565b6150246020830188613eb2565b6150316040830187614ee6565b61503e6060830186614ee6565b61504b6080830185613eda565b61505860a0830184613eb2565b979650505050505050565b5f8151905061507181613dc7565b92915050565b5f805f6060848603121561508e5761508d613d60565b5b5f61509b86828701615063565b93505060206150ac86828701615063565b92505060406150bd86828701615063565b915050925092509256fea26469706673582212202219230ab6e0ff8845c5feec8f7d974903e33965fc13bf45314d4693ebacfd9864736f6c63430008150033

Deployed Bytecode Sourcemap

2904:18048:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5907:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6815:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19499:184;;;;;;;;;;;;;:::i;:::-;;20676:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6180:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4087:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6984:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8644:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6089:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7414:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8150:486;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20108:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8900:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9385:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9520:212;;;;;;;;;;;;;:::i;:::-;;3739:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3923:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3330:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6283:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1681:94;;;;;;;;;;;;;:::i;:::-;;4418:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;19691:154;;;;;;;;;;;;;:::i;:::-;;3799:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8022:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1458:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19995:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5996:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4688:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;20327:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7637:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4004:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3425:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6489:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3858:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19354:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19231:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19857:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6664:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9241:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3669:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1783:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4465:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;3397:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5907:83;5944:13;5977:5;;;;;;;;;;;;;;;;;5970:12;;5907:83;:::o;6815:161::-;6890:4;6907:39;6916:12;:10;:12::i;:::-;6930:7;6939:6;6907:8;:39::i;:::-;6964:4;6957:11;;6815:161;;;;:::o;19499:184::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19586:3:::1;19582:1;19572:7;;:11;;;;:::i;:::-;:17;;;;:::i;:::-;19553:16;:36;;;;19629:3;19625:1;19615:7;;:11;;;;:::i;:::-;:17;;;;:::i;:::-;19600:12;:32;;;;19672:3;19669:1;19659:7;;:11;;;;:::i;:::-;:16;;;;:::i;:::-;19643:13;:32;;;;19499:184::o:0;20676:231::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20811:4:::1;20789:27;;:10;:27;;::::0;20781:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20865:10;20858:27;;;20886:3;20891:7;20858:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20676:231:::0;;;:::o;6180:95::-;6233:7;6260;;6253:14;;6180:95;:::o;4087:74::-;;;;;;;;;;;;;:::o;6984:422::-;7090:4;7107:36;7117:6;7125:9;7136:6;7107:9;:36::i;:::-;7156:24;7183:11;:19;7195:6;7183:19;;;;;;;;;;;;;;;:33;7203:12;:10;:12::i;:::-;7183:33;;;;;;;;;;;;;;;;7156:60;;7255:6;7235:16;:26;;7227:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7317:57;7326:6;7334:12;:10;:12::i;:::-;7367:6;7348:16;:25;;;;:::i;:::-;7317:8;:57::i;:::-;7394:4;7387:11;;;6984:422;;;;;:::o;8644:248::-;8710:7;8749;;8738;:18;;8730:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8814:19;8837:10;:8;:10::i;:::-;8814:33;;8873:11;8865:7;:19;;;;:::i;:::-;8858:26;;;8644:248;;;:::o;6089:83::-;6130:5;3488:2;6148:16;;6089:83;:::o;7414:215::-;7502:4;7519:80;7528:12;:10;:12::i;:::-;7542:7;7588:10;7551:11;:25;7563:12;:10;:12::i;:::-;7551:25;;;;;;;;;;;;;;;:34;7577:7;7551:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7519:8;:80::i;:::-;7617:4;7610:11;;7414:215;;;;:::o;8150:486::-;8253:7;8292;;8281;:18;;8273:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8351:17;8346:283;;8385:28;8416:34;8427:7;8436:5;8443:6;8416:10;:34::i;:::-;8385:65;;8472:1;:9;;;8465:16;;;;;8346:283;8514:28;8545:33;8556:7;8565:4;8571:6;8545:10;:33::i;:::-;8514:64;;8600:1;:17;;;8593:24;;;8150:486;;;;;;:::o;20108:154::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20219:9:::1;20202:6;;:27;;;;;;;;;;;;;;;;;;20247:7;20240:4;;:14;;;;;;;;;;;;;;;;;;20108:154:::0;;:::o;8900:333::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8983:11:::1;:20;8995:7;8983:20;;;;;;;;;;;;;;;;;;;;;;;;;8982:21;8974:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9068:1;9049:7;:16;9057:7;9049:16;;;;;;;;;;;;;;;;:20;9046:108;;;9105:37;9125:7;:16;9133:7;9125:16;;;;;;;;;;;;;;;;9105:19;:37::i;:::-;9086:7;:16;9094:7;9086:16;;;;;;;;;;;;;;;:56;;;;9046:108;9187:4;9164:11;:20;9176:7;9164:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;9202:9;9217:7;9202:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8900:333:::0;:::o;9385:123::-;9449:4;9473:18;:27;9492:7;9473:27;;;;;;;;;;;;;;;;;;;;;;;;;9466:34;;9385:123;;;:::o;9520:212::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9588:2:::1;9572:9;:13;;:18;;;;9621:2;9601:9;:17;;:22;;;;9656:1;9634:9;:19;;:23;;;;9690:2;9668:9;:19;;:24;;;;9723:1;9703:9;:17;;:21;;;;9520:212::o:0;3739:53::-;;;;:::o;3923:74::-;;;;;;;;;;;;;:::o;3330:30::-;;;;;;;;;;;;;:::o;6283:198::-;6349:7;6373:11;:20;6385:7;6373:20;;;;;;;;;;;;;;;;;;;;;;;;;6369:49;;;6402:7;:16;6410:7;6402:16;;;;;;;;;;;;;;;;6395:23;;;;6369:49;6436:37;6456:7;:16;6464:7;6456:16;;;;;;;;;;;;;;;;6436:19;:37::i;:::-;6429:44;;6283:198;;;;:::o;1681:94::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1746:21:::1;1764:1;1746:9;:21::i;:::-;1681:94::o:0;4418:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19691:154::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19763:7:::1;;19744:16;:26;;;;19796:7;;19781:12;:22;;;;19830:7;;19814:13;:23;;;;19691:154::o:0;3799:52::-;;;;:::o;8022:120::-;8090:4;8114:11;:20;8126:7;8114:20;;;;;;;;;;;;;;;;;;;;;;;;;8107:27;;8022:120;;;:::o;1458:87::-;1504:7;1531:6;;;;;;;;;;;1524:13;;1458:87;:::o;19995:101::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20080:8:::1;20066:11;;:22;;;;;;;;;;;;;;;;;;19995:101:::0;:::o;5996:87::-;6035:13;6068:7;;;;;;;;;;;;;;;;;6061:14;;5996:87;:::o;4688:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20327:196::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20427:9:::1;20402:21;:34;;20394:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20484:10;20476:28;;:39;20505:9;20476:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20327:196:::0;:::o;7637:377::-;7730:4;7747:24;7774:11;:25;7786:12;:10;:12::i;:::-;7774:25;;;;;;;;;;;;;;;:34;7800:7;7774:34;;;;;;;;;;;;;;;;7747:61;;7847:15;7827:16;:35;;7819:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7915:67;7924:12;:10;:12::i;:::-;7938:7;7966:15;7947:16;:34;;;;:::i;:::-;7915:8;:67::i;:::-;8002:4;7995:11;;;7637:377;;;;:::o;4004:76::-;;;;;;;;;;;;;:::o;3425:19::-;;;;;;;;;;;;;:::o;6489:167::-;6567:4;6584:42;6594:12;:10;:12::i;:::-;6608:9;6619:6;6584:9;:42::i;:::-;6644:4;6637:11;;6489:167;;;;:::o;3858:56::-;;;;:::o;19354:133::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19461:18:::1;19442:16;;:37;;;;;;;;;;;;;;;;;;19354:133:::0;:::o;19231:111::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19325:9:::1;19308:14;;:26;;;;;;;;;;;;;;;;;;19231:111:::0;:::o;19857:130::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3488:2:::1;19966;:13;;;;:::i;:::-;19957:6;:22;;;;:::i;:::-;19936:18;:43;;;;19857:130:::0;:::o;6664:143::-;6745:7;6772:11;:18;6784:5;6772:18;;;;;;;;;;;;;;;:27;6791:7;6772:27;;;;;;;;;;;;;;;;6765:34;;6664:143;;;;:::o;9241:134::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9357:10:::1;9327:18;:27;9346:7;9327:27;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;9241:134:::0;;:::o;3669:57::-;;;;:::o;1783:192::-;1604:12;:10;:12::i;:::-;1593:23;;:7;:5;:7::i;:::-;:23;;;1585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1892:1:::1;1872:22;;:8;:22;;::::0;1864:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1948:19;1958:8;1948:9;:19::i;:::-;1783:192:::0;:::o;4465:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3397:21::-;;;;;;;;;;;;;:::o;879:98::-;932:7;959:10;952:17;;879:98;:::o;13659:335::-;13769:1;13752:19;;:5;:19;;;13744:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13850:1;13831:21;;:7;:21;;;13823:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13932:6;13902:11;:18;13914:5;13902:18;;;;;;;;;;;;;;;:27;13921:7;13902:27;;;;;;;;;;;;;;;:36;;;;13970:7;13954:32;;13963:5;13954:32;;;13979:6;13954:32;;;;;;:::i;:::-;;;;;;;;13659:335;;;:::o;14004:1349::-;14108:1;14092:18;;:4;:18;;;14084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14185:1;14171:16;;:2;:16;;;14163:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14255:1;14246:6;:10;14238:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14331:15;14341:4;14331:9;:15::i;:::-;14321:6;:25;;14313:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;14419:6;:12;14426:4;14419:12;;;;;;;;;;;;;;;;;;;;;;;;;14418:13;:28;;;;;14436:6;:10;14443:2;14436:10;;;;;;;;;;;;;;;;;;;;;;;;;14435:11;14418:28;14410:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14481:18;:24;14500:4;14481:24;;;;;;;;;;;;;;;;;;;;;;;;;14480:25;:52;;;;;14510:18;:22;14529:2;14510:22;;;;;;;;;;;;;;;;;;;;;;;;;14509:23;14480:52;:65;;;;;14537:8;;;;;;;;;;;14536:9;14480:65;14477:493;;;14572:4;;;;;;;;;;;14564:12;;:4;:12;;;14561:116;;14614:12;;14604:6;:22;;14596:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14561:116;14700:4;;;;;;;;;;;14694:10;;:2;:10;;;14691:116;;14742:13;;14732:6;:23;;14724:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14691:116;14830:4;;;;;;;;;;;14824:10;;:2;:10;;;14821:138;;14888:16;;14878:6;14862:13;14872:2;14862:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;14854:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14821:138;14477:493;14990:12;15033:18;;15005:24;15023:4;15005:9;:24::i;:::-;:46;;14990:61;;15066:8;;;;;;;;;;;15065:9;:24;;;;;15078:11;;;;;;;;;;;15065:24;:35;;;;;15093:7;15065:35;:51;;;;;15112:4;;;;;;;;;;;15104:12;;:4;:12;;;;15065:51;:80;;;;;15121:18;:24;15140:4;15121:24;;;;;;;;;;;;;;;;;;;;;;;;;15120:25;15065:80;:107;;;;;15150:18;:22;15169:2;15150:22;;;;;;;;;;;;;;;;;;;;;;;;;15149:23;15065:107;15062:172;;;15188:34;15203:18;;15188:14;:34::i;:::-;15062:172;15246:99;15261:4;15267:2;15271:6;15281:18;:24;15300:4;15281:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;15309:18;:22;15328:2;15309:22;;;;;;;;;;;;;;;;;;;;;;;;;15281:50;15279:53;15340:4;;;;;;;;;;;15334:10;;:2;:10;;;15246:14;:99::i;:::-;14073:1280;14004:1349;;;:::o;12945:158::-;12986:7;13007:15;13024;13043:19;:17;:19::i;:::-;13006:56;;;;13088:7;13080;:15;;;;:::i;:::-;13073:22;;;;12945:158;:::o;11023:431::-;11109:36;;:::i;:::-;11170:37;11182:7;11191;11200:6;11170:11;:37::i;:::-;11158:49;;11367:52;11379:9;11390:7;11399;11408:10;:8;:10::i;:::-;11367:11;:52::i;:::-;11219:9;:17;;11238:9;:25;;11265:9;:14;;11281:9;:18;;11301:9;:20;;11323:9;:20;;11345:9;:18;;11218:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11023:431;;;;;:::o;1983:173::-;2039:16;2058:6;;;;;;;;;;;2039:25;;2084:8;2075:6;;:17;;;;;;;;;;;;;;;;;;2139:8;2108:40;;2129:8;2108:40;;;;;;;;;;;;2028:128;1983:173;:::o;16694:1412::-;5184:4;5173:8;;:15;;;;;;;;;;;;;;;;;;16814:19:::1;16922:1;16901:9;:17;;;16879:9;:19;;;16859:9;:17;;;16837:9;:19;;;:39;;;;:::i;:::-;:61;;;;:::i;:::-;:81;;;;:::i;:::-;16836:87;;;;:::i;:::-;16814:109;;16934:32;17000:11;16978:9;:19;;;16969:6;:28;;;;:::i;:::-;:42;;;;:::i;:::-;16934:77;;17022:14;17048:24;17039:6;:33;;;;:::i;:::-;17022:50;;17085:22;17110:21;17085:46;;17144:24;17161:6;17144:16;:24::i;:::-;17181:20;17228:14;17204:21;:38;;;;:::i;:::-;17181:61;;17253:19;17304:9;:19;;;17290:11;:33;;;;:::i;:::-;17274:12;:50;;;;:::i;:::-;17253:71;;17335:29;17381:9;:19;;;17367:11;:33;;;;:::i;:::-;17335:65;;17440:1;17416:21;:25;17413:158;;;17498:61;17511:24;17537:21;17498:12;:61::i;:::-;17413:158;17583:18;17622:9;:17;;;17618:1;17604:11;:15;;;;:::i;:::-;:35;;;;:::i;:::-;17583:56;;17666:1;17653:10;:14;17650:89;;;17691:14;;;;;;;;;;;17683:32;;:44;17716:10;17683:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17650:89;17759:20;17800:9;:19;;;17796:1;17782:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17759:60;;17848:1;17833:12;:16;17830:95;;;17873:16;;;;;;;;;;;17865:34;;:48;17900:12;17865:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17830:95;17935:18;17974:9;:17;;;17970:1;17956:11;:15;;;;:::i;:::-;:35;;;;:::i;:::-;17935:56;;18018:1;18005:10;:14;18002:89;;;18043:14;;;;;;;;;;;18035:32;;:44;18068:10;18035:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18002:89;16753:1353;;;;;;;;;;5222:5:::0;5211:8;;:16;;;;;;;;;;;;;;;;;;16694:1412;:::o;15363:1323::-;15485:28;15516:36;15527:7;15536;15545:6;15516:10;:36::i;:::-;15485:67;;15569:11;:19;15581:6;15569:19;;;;;;;;;;;;;;;;;;;;;;;;;15565:115;;;15661:7;15645;:15;15653:6;15645:15;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;15627:7;:15;15635:6;15627:15;;;;;;;;;;;;;;;:41;;;;15565:115;15694:11;:22;15706:9;15694:22;;;;;;;;;;;;;;;;;;;;;;;;;15690:130;;;15791:1;:17;;;15772:7;:18;15780:9;15772:18;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;15751:7;:18;15759:9;15751:18;;;;;;;;;;;;;;;:57;;;;15690:130;15851:1;:9;;;15832:7;:15;15840:6;15832:15;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15893:1;:17;;;15871:7;:18;15879:9;15871:18;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;15936:1;15927;:6;;;:10;:24;;;;15950:1;15941;:6;;;:10;15927:24;15923:57;;;15953:27;15965:1;:6;;;15973:1;:6;;;15953:11;:27::i;:::-;15923:57;16010:1;15995;:12;;;:16;:36;;;;16030:1;16015;:12;;;:16;15995:36;15991:111;;;16048:42;16063:1;:12;;;16077:1;:12;;;16048:14;:42::i;:::-;15991:111;16129:1;16116;:10;;;:14;:32;;;;16147:1;16134;:10;;;:14;16116:32;16112:101;;;16165:36;16178:1;:10;;;16190:1;:10;;;16165:12;:36::i;:::-;16112:101;16242:1;16227;:12;;;:16;:36;;;;16262:1;16247;:12;;;:16;16227:36;16223:111;;;16280:42;16295:1;:12;;;16309:1;:12;;;16280:14;:42::i;:::-;16223:111;16361:1;16348;:10;;;:14;:32;;;;16379:1;16366;:10;;;:14;16348:32;16344:103;;;16397:38;16412:1;:10;;;16424:1;:10;;;16397:14;:38::i;:::-;16344:103;16481:9;16464:76;;16473:6;16464:76;;;16492:6;:17;;;;16502:7;16492:17;:47;;16532:7;16492:47;;;16512:1;:17;;;16492:47;16464:76;;;;;;:::i;:::-;;;;;;;;16617:4;16592:86;;16601:6;16592:86;;;16667:1;:10;;;16654:1;:10;;;16639:1;:12;;;16624:1;:12;;;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:53;;;;:::i;:::-;16592:86;;;;;;:::i;:::-;;;;;;;;15474:1212;15363:1323;;;;;:::o;13111:540::-;13161:7;13170;13190:15;13208:7;;13190:25;;13226:15;13244:7;;13226:25;;13267:9;13262:279;13286:9;:16;;;;13282:1;:20;13262:279;;;13352:7;13328;:21;13336:9;13346:1;13336:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13328:21;;;;;;;;;;;;;;;;:31;:66;;;;13387:7;13363;:21;13371:9;13381:1;13371:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13363:21;;;;;;;;;;;;;;;;:31;13328:66;13324:97;;;13404:7;;13413;;13396:25;;;;;;;;;13324:97;13454:7;:21;13462:9;13472:1;13462:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13454:21;;;;;;;;;;;;;;;;13446:7;:29;;;;:::i;:::-;13436:39;;13508:7;:21;13516:9;13526:1;13516:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13508:21;;;;;;;;;;;;;;;;13500:7;:29;;;;:::i;:::-;13490:39;;13304:3;;;;;:::i;:::-;;;;13262:279;;;;13573:7;;13565;;:15;;;;:::i;:::-;13555:7;:25;13551:56;;;13590:7;;13599;;13582:25;;;;;;;;13551:56;13626:7;13635;13618:25;;;;;;13111:540;;;:::o;11462:684::-;11549:28;;:::i;:::-;11596:7;11592:86;;11638:7;11618:1;:17;;:27;;;;;11658:8;;11592:86;11688:17;;:::i;:::-;11719:6;11716:55;;;11734:9;11727:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11716:55;;;11766:5;11759:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11716:55;11818:4;11809;:8;;;11801:7;:16;;;;:::i;:::-;:21;;;;:::i;:::-;11792:1;:6;;:30;;;;;11867:4;11854;:12;;;11846:7;:20;;;;:::i;:::-;:25;;;;:::i;:::-;11833:1;:10;;:38;;;;;11920:4;11905;:14;;;11897:7;:22;;;;:::i;:::-;:27;;;;:::i;:::-;11882:1;:12;;:42;;;;;11973:4;11958;:14;;;11950:7;:22;;;;:::i;:::-;:27;;;;:::i;:::-;11935:1;:12;;:42;;;;;12022:4;12009;:12;;;12001:7;:20;;;;:::i;:::-;:25;;;;:::i;:::-;11988:1;:10;;:38;;;;;12107:1;:12;;;12096:1;:10;;;12083:1;:12;;;12072:1;:10;;;12065:1;:6;;;12057:7;:14;;;;:::i;:::-;:25;;;;:::i;:::-;:38;;;;:::i;:::-;:49;;;;:::i;:::-;:62;;;;:::i;:::-;12037:1;:17;;:82;;;;;12130:8;11462:684;;;;;;:::o;12154:783::-;12279:15;12296:23;12321:12;12334:16;12352:18;12372:16;12390:18;12439:11;12431:7;:19;;;;:::i;:::-;12421:29;;12467:7;12463:73;;12496:7;12505;12514:1;12516;12518;12520;12522;12489:35;;;;;;;;;;;;;;;;12463:73;12562:11;12555:1;:6;;;:18;;;;:::i;:::-;12548:25;;12606:11;12595:1;:10;;;:22;;;;:::i;:::-;12584:33;;12654:11;12641:1;:12;;;:24;;;;:::i;:::-;12628:37;;12698:11;12687:1;:10;;;:22;;;;:::i;:::-;12676:33;;12746:11;12733:1;:12;;;:24;;;;:::i;:::-;12720:37;;12829:10;12820:8;12809:10;12800:8;12795:4;12787:7;:12;;;;:::i;:::-;:21;;;;:::i;:::-;:32;;;;:::i;:::-;:41;;;;:::i;:::-;:52;;;;:::i;:::-;12768:71;;12154:783;;;;;;;;;;;;;:::o;18661:562::-;18787:21;18825:1;18811:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18787:40;;18856:4;18838;18843:1;18838:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18882:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18872:4;18877:1;18872:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18908:53;18925:4;18940:6;;;;;;;;;;;18949:11;18908:8;:53::i;:::-;19000:6;;;;;;;;;;;:57;;;19072:11;19098:1;19142:4;19169;19189:15;19000:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18716:507;18661:562;:::o;18114:539::-;18262:53;18279:4;18294:6;;;;;;;;;;;18303:11;18262:8;:53::i;:::-;18358:6;;;;;;;;;;;:22;;;18388:9;18421:4;18441:11;18467:1;18510;18561:42;18619:15;18358:287;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18114:539;;:::o;9740:123::-;9818:4;9808:7;;:14;;;;;;;:::i;:::-;;;;;;;;9851:4;9833:11;:15;;;:22;;;;;;;:::i;:::-;;;;;;;;9740:123;;:::o;9871:284::-;9978:10;9954:11;:21;;;:34;;;;;;;:::i;:::-;;;;;;;;10004:11;:26;10024:4;10004:26;;;;;;;;;;;;;;;;;;;;;;;;;10001:101;;;10080:10;10056:7;:22;10072:4;10056:22;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;10001:101;10137:10;10112:7;:22;10128:4;10112:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;9871:284;;:::o;10163:270::-;10262:8;10240:11;:19;;;:30;;;;;;;:::i;:::-;;;;;;;;10286:11;:26;10306:4;10286:26;;;;;;;;;;;;;;;;;;;;;;;;;10283:99;;;10362:8;10338:7;:22;10354:4;10338:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;10283:99;10417:8;10392:7;:22;10408:4;10392:22;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;10163:270;;:::o;10445:287::-;10553:10;10528:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;10579:11;:26;10599:4;10579:26;;;;;;;;;;;;;;;;;;;;;;;;;10576:102;;;10656:10;10631:7;:22;10647:4;10631:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;10576:102;10714:10;10688:7;:22;10704:4;10688:22;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;10445:287;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:619::-;3523:6;3531;3539;3588:2;3576:9;3567:7;3563:23;3559:32;3556:119;;;3594:79;;:::i;:::-;3556:119;3714:1;3739:53;3784:7;3775:6;3764:9;3760:22;3739:53;:::i;:::-;3729:63;;3685:117;3841:2;3867:53;3912:7;3903:6;3892:9;3888:22;3867:53;:::i;:::-;3857:63;;3812:118;3969:2;3995:53;4040:7;4031:6;4020:9;4016:22;3995:53;:::i;:::-;3985:63;;3940:118;3446:619;;;;;:::o;4071:118::-;4158:24;4176:5;4158:24;:::i;:::-;4153:3;4146:37;4071:118;;:::o;4195:222::-;4288:4;4326:2;4315:9;4311:18;4303:26;;4339:71;4407:1;4396:9;4392:17;4383:6;4339:71;:::i;:::-;4195:222;;;;:::o;4423:118::-;4510:24;4528:5;4510:24;:::i;:::-;4505:3;4498:37;4423:118;;:::o;4547:222::-;4640:4;4678:2;4667:9;4663:18;4655:26;;4691:71;4759:1;4748:9;4744:17;4735:6;4691:71;:::i;:::-;4547:222;;;;:::o;4775:329::-;4834:6;4883:2;4871:9;4862:7;4858:23;4854:32;4851:119;;;4889:79;;:::i;:::-;4851:119;5009:1;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4980:117;4775:329;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:607::-;5872:6;5880;5888;5937:2;5925:9;5916:7;5912:23;5908:32;5905:119;;;5943:79;;:::i;:::-;5905:119;6063:1;6088:53;6133:7;6124:6;6113:9;6109:22;6088:53;:::i;:::-;6078:63;;6034:117;6190:2;6216:50;6258:7;6249:6;6238:9;6234:22;6216:50;:::i;:::-;6206:60;;6161:115;6315:2;6341:50;6383:7;6374:6;6363:9;6359:22;6341:50;:::i;:::-;6331:60;;6286:115;5801:607;;;;;:::o;6414:474::-;6482:6;6490;6539:2;6527:9;6518:7;6514:23;6510:32;6507:119;;;6545:79;;:::i;:::-;6507:119;6665:1;6690:53;6735:7;6726:6;6715:9;6711:22;6690:53;:::i;:::-;6680:63;;6636:117;6792:2;6818:53;6863:7;6854:6;6843:9;6839:22;6818:53;:::i;:::-;6808:63;;6763:118;6414:474;;;;;:::o;6894:329::-;6953:6;7002:2;6990:9;6981:7;6977:23;6973:32;6970:119;;;7008:79;;:::i;:::-;6970:119;7128:1;7153:53;7198:7;7189:6;7178:9;7174:22;7153:53;:::i;:::-;7143:63;;7099:117;6894:329;;;;:::o;7229:664::-;7434:4;7472:3;7461:9;7457:19;7449:27;;7486:71;7554:1;7543:9;7539:17;7530:6;7486:71;:::i;:::-;7567:72;7635:2;7624:9;7620:18;7611:6;7567:72;:::i;:::-;7649;7717:2;7706:9;7702:18;7693:6;7649:72;:::i;:::-;7731;7799:2;7788:9;7784:18;7775:6;7731:72;:::i;:::-;7813:73;7881:3;7870:9;7866:19;7857:6;7813:73;:::i;:::-;7229:664;;;;;;;;:::o;7899:323::-;7955:6;8004:2;7992:9;7983:7;7979:23;7975:32;7972:119;;;8010:79;;:::i;:::-;7972:119;8130:1;8155:50;8197:7;8188:6;8177:9;8173:22;8155:50;:::i;:::-;8145:60;;8101:114;7899:323;;;;:::o;8228:468::-;8293:6;8301;8350:2;8338:9;8329:7;8325:23;8321:32;8318:119;;;8356:79;;:::i;:::-;8318:119;8476:1;8501:53;8546:7;8537:6;8526:9;8522:22;8501:53;:::i;:::-;8491:63;;8447:117;8603:2;8629:50;8671:7;8662:6;8651:9;8647:22;8629:50;:::i;:::-;8619:60;;8574:115;8228:468;;;;;:::o;8702:60::-;8730:3;8751:5;8744:12;;8702:60;;;:::o;8768:142::-;8818:9;8851:53;8869:34;8878:24;8896:5;8878:24;:::i;:::-;8869:34;:::i;:::-;8851:53;:::i;:::-;8838:66;;8768:142;;;:::o;8916:126::-;8966:9;8999:37;9030:5;8999:37;:::i;:::-;8986:50;;8916:126;;;:::o;9048:141::-;9113:9;9146:37;9177:5;9146:37;:::i;:::-;9133:50;;9048:141;;;:::o;9195:161::-;9297:52;9343:5;9297:52;:::i;:::-;9292:3;9285:65;9195:161;;:::o;9362:252::-;9470:4;9508:2;9497:9;9493:18;9485:26;;9521:86;9604:1;9593:9;9589:17;9580:6;9521:86;:::i;:::-;9362:252;;;;:::o;9620:182::-;9760:34;9756:1;9748:6;9744:14;9737:58;9620:182;:::o;9808:366::-;9950:3;9971:67;10035:2;10030:3;9971:67;:::i;:::-;9964:74;;10047:93;10136:3;10047:93;:::i;:::-;10165:2;10160:3;10156:12;10149:19;;9808:366;;;:::o;10180:419::-;10346:4;10384:2;10373:9;10369:18;10361:26;;10433:9;10427:4;10423:20;10419:1;10408:9;10404:17;10397:47;10461:131;10587:4;10461:131;:::i;:::-;10453:139;;10180:419;;;:::o;10605:180::-;10653:77;10650:1;10643:88;10750:4;10747:1;10740:15;10774:4;10771:1;10764:15;10791:410;10831:7;10854:20;10872:1;10854:20;:::i;:::-;10849:25;;10888:20;10906:1;10888:20;:::i;:::-;10883:25;;10943:1;10940;10936:9;10965:30;10983:11;10965:30;:::i;:::-;10954:41;;11144:1;11135:7;11131:15;11128:1;11125:22;11105:1;11098:9;11078:83;11055:139;;11174:18;;:::i;:::-;11055:139;10839:362;10791:410;;;;:::o;11207:180::-;11255:77;11252:1;11245:88;11352:4;11349:1;11342:15;11376:4;11373:1;11366:15;11393:185;11433:1;11450:20;11468:1;11450:20;:::i;:::-;11445:25;;11484:20;11502:1;11484:20;:::i;:::-;11479:25;;11523:1;11513:35;;11528:18;;:::i;:::-;11513:35;11570:1;11567;11563:9;11558:14;;11393:185;;;;:::o;11584:176::-;11724:28;11720:1;11712:6;11708:14;11701:52;11584:176;:::o;11766:366::-;11908:3;11929:67;11993:2;11988:3;11929:67;:::i;:::-;11922:74;;12005:93;12094:3;12005:93;:::i;:::-;12123:2;12118:3;12114:12;12107:19;;11766:366;;;:::o;12138:419::-;12304:4;12342:2;12331:9;12327:18;12319:26;;12391:9;12385:4;12381:20;12377:1;12366:9;12362:17;12355:47;12419:131;12545:4;12419:131;:::i;:::-;12411:139;;12138:419;;;:::o;12563:332::-;12684:4;12722:2;12711:9;12707:18;12699:26;;12735:71;12803:1;12792:9;12788:17;12779:6;12735:71;:::i;:::-;12816:72;12884:2;12873:9;12869:18;12860:6;12816:72;:::i;:::-;12563:332;;;;;:::o;12901:137::-;12955:5;12986:6;12980:13;12971:22;;13002:30;13026:5;13002:30;:::i;:::-;12901:137;;;;:::o;13044:345::-;13111:6;13160:2;13148:9;13139:7;13135:23;13131:32;13128:119;;;13166:79;;:::i;:::-;13128:119;13286:1;13311:61;13364:7;13355:6;13344:9;13340:22;13311:61;:::i;:::-;13301:71;;13257:125;13044:345;;;;:::o;13395:227::-;13535:34;13531:1;13523:6;13519:14;13512:58;13604:10;13599:2;13591:6;13587:15;13580:35;13395:227;:::o;13628:366::-;13770:3;13791:67;13855:2;13850:3;13791:67;:::i;:::-;13784:74;;13867:93;13956:3;13867:93;:::i;:::-;13985:2;13980:3;13976:12;13969:19;;13628:366;;;:::o;14000:419::-;14166:4;14204:2;14193:9;14189:18;14181:26;;14253:9;14247:4;14243:20;14239:1;14228:9;14224:17;14217:47;14281:131;14407:4;14281:131;:::i;:::-;14273:139;;14000:419;;;:::o;14425:194::-;14465:4;14485:20;14503:1;14485:20;:::i;:::-;14480:25;;14519:20;14537:1;14519:20;:::i;:::-;14514:25;;14563:1;14560;14556:9;14548:17;;14587:1;14581:4;14578:11;14575:37;;;14592:18;;:::i;:::-;14575:37;14425:194;;;;:::o;14625:229::-;14765:34;14761:1;14753:6;14749:14;14742:58;14834:12;14829:2;14821:6;14817:15;14810:37;14625:229;:::o;14860:366::-;15002:3;15023:67;15087:2;15082:3;15023:67;:::i;:::-;15016:74;;15099:93;15188:3;15099:93;:::i;:::-;15217:2;15212:3;15208:12;15201:19;;14860:366;;;:::o;15232:419::-;15398:4;15436:2;15425:9;15421:18;15413:26;;15485:9;15479:4;15475:20;15471:1;15460:9;15456:17;15449:47;15513:131;15639:4;15513:131;:::i;:::-;15505:139;;15232:419;;;:::o;15657:191::-;15697:3;15716:20;15734:1;15716:20;:::i;:::-;15711:25;;15750:20;15768:1;15750:20;:::i;:::-;15745:25;;15793:1;15790;15786:9;15779:16;;15814:3;15811:1;15808:10;15805:36;;;15821:18;;:::i;:::-;15805:36;15657:191;;;;:::o;15854:181::-;15994:33;15990:1;15982:6;15978:14;15971:57;15854:181;:::o;16041:366::-;16183:3;16204:67;16268:2;16263:3;16204:67;:::i;:::-;16197:74;;16280:93;16369:3;16280:93;:::i;:::-;16398:2;16393:3;16389:12;16382:19;;16041:366;;;:::o;16413:419::-;16579:4;16617:2;16606:9;16602:18;16594:26;;16666:9;16660:4;16656:20;16652:1;16641:9;16637:17;16630:47;16694:131;16820:4;16694:131;:::i;:::-;16686:139;;16413:419;;;:::o;16838:177::-;16978:29;16974:1;16966:6;16962:14;16955:53;16838:177;:::o;17021:366::-;17163:3;17184:67;17248:2;17243:3;17184:67;:::i;:::-;17177:74;;17260:93;17349:3;17260:93;:::i;:::-;17378:2;17373:3;17369:12;17362:19;;17021:366;;;:::o;17393:419::-;17559:4;17597:2;17586:9;17582:18;17574:26;;17646:9;17640:4;17636:20;17632:1;17621:9;17617:17;17610:47;17674:131;17800:4;17674:131;:::i;:::-;17666:139;;17393:419;;;:::o;17818:174::-;17958:26;17954:1;17946:6;17942:14;17935:50;17818:174;:::o;17998:366::-;18140:3;18161:67;18225:2;18220:3;18161:67;:::i;:::-;18154:74;;18237:93;18326:3;18237:93;:::i;:::-;18355:2;18350:3;18346:12;18339:19;;17998:366;;;:::o;18370:419::-;18536:4;18574:2;18563:9;18559:18;18551:26;;18623:9;18617:4;18613:20;18609:1;18598:9;18594:17;18587:47;18651:131;18777:4;18651:131;:::i;:::-;18643:139;;18370:419;;;:::o;18795:224::-;18935:34;18931:1;18923:6;18919:14;18912:58;19004:7;18999:2;18991:6;18987:15;18980:32;18795:224;:::o;19025:366::-;19167:3;19188:67;19252:2;19247:3;19188:67;:::i;:::-;19181:74;;19264:93;19353:3;19264:93;:::i;:::-;19382:2;19377:3;19373:12;19366:19;;19025:366;;;:::o;19397:419::-;19563:4;19601:2;19590:9;19586:18;19578:26;;19650:9;19644:4;19640:20;19636:1;19625:9;19621:17;19614:47;19678:131;19804:4;19678:131;:::i;:::-;19670:139;;19397:419;;;:::o;19822:102::-;19864:8;19911:5;19908:1;19904:13;19883:34;;19822:102;;;:::o;19930:848::-;19991:5;19998:4;20022:6;20013:15;;20046:5;20037:14;;20060:712;20081:1;20071:8;20068:15;20060:712;;;20176:4;20171:3;20167:14;20161:4;20158:24;20155:50;;;20185:18;;:::i;:::-;20155:50;20235:1;20225:8;20221:16;20218:451;;;20650:4;20643:5;20639:16;20630:25;;20218:451;20700:4;20694;20690:15;20682:23;;20730:32;20753:8;20730:32;:::i;:::-;20718:44;;20060:712;;;19930:848;;;;;;;:::o;20784:1073::-;20838:5;21029:8;21019:40;;21050:1;21041:10;;21052:5;;21019:40;21078:4;21068:36;;21095:1;21086:10;;21097:5;;21068:36;21164:4;21212:1;21207:27;;;;21248:1;21243:191;;;;21157:277;;21207:27;21225:1;21216:10;;21227:5;;;21243:191;21288:3;21278:8;21275:17;21272:43;;;21295:18;;:::i;:::-;21272:43;21344:8;21341:1;21337:16;21328:25;;21379:3;21372:5;21369:14;21366:40;;;21386:18;;:::i;:::-;21366:40;21419:5;;;21157:277;;21543:2;21533:8;21530:16;21524:3;21518:4;21515:13;21511:36;21493:2;21483:8;21480:16;21475:2;21469:4;21466:12;21462:35;21446:111;21443:246;;;21599:8;21593:4;21589:19;21580:28;;21634:3;21627:5;21624:14;21621:40;;;21641:18;;:::i;:::-;21621:40;21674:5;;21443:246;21714:42;21752:3;21742:8;21736:4;21733:1;21714:42;:::i;:::-;21699:57;;;;21788:4;21783:3;21779:14;21772:5;21769:25;21766:51;;;21797:18;;:::i;:::-;21766:51;21846:4;21839:5;21835:16;21826:25;;20784:1073;;;;;;:::o;21863:281::-;21921:5;21945:23;21963:4;21945:23;:::i;:::-;21937:31;;21989:25;22005:8;21989:25;:::i;:::-;21977:37;;22033:104;22070:66;22060:8;22054:4;22033:104;:::i;:::-;22024:113;;21863:281;;;;:::o;22150:225::-;22290:34;22286:1;22278:6;22274:14;22267:58;22359:8;22354:2;22346:6;22342:15;22335:33;22150:225;:::o;22381:366::-;22523:3;22544:67;22608:2;22603:3;22544:67;:::i;:::-;22537:74;;22620:93;22709:3;22620:93;:::i;:::-;22738:2;22733:3;22729:12;22722:19;;22381:366;;;:::o;22753:419::-;22919:4;22957:2;22946:9;22942:18;22934:26;;23006:9;23000:4;22996:20;22992:1;22981:9;22977:17;22970:47;23034:131;23160:4;23034:131;:::i;:::-;23026:139;;22753:419;;;:::o;23178:223::-;23318:34;23314:1;23306:6;23302:14;23295:58;23387:6;23382:2;23374:6;23370:15;23363:31;23178:223;:::o;23407:366::-;23549:3;23570:67;23634:2;23629:3;23570:67;:::i;:::-;23563:74;;23646:93;23735:3;23646:93;:::i;:::-;23764:2;23759:3;23755:12;23748:19;;23407:366;;;:::o;23779:419::-;23945:4;23983:2;23972:9;23968:18;23960:26;;24032:9;24026:4;24022:20;24018:1;24007:9;24003:17;23996:47;24060:131;24186:4;24060:131;:::i;:::-;24052:139;;23779:419;;;:::o;24204:221::-;24344:34;24340:1;24332:6;24328:14;24321:58;24413:4;24408:2;24400:6;24396:15;24389:29;24204:221;:::o;24431:366::-;24573:3;24594:67;24658:2;24653:3;24594:67;:::i;:::-;24587:74;;24670:93;24759:3;24670:93;:::i;:::-;24788:2;24783:3;24779:12;24772:19;;24431:366;;;:::o;24803:419::-;24969:4;25007:2;24996:9;24992:18;24984:26;;25056:9;25050:4;25046:20;25042:1;25031:9;25027:17;25020:47;25084:131;25210:4;25084:131;:::i;:::-;25076:139;;24803:419;;;:::o;25228:224::-;25368:34;25364:1;25356:6;25352:14;25345:58;25437:7;25432:2;25424:6;25420:15;25413:32;25228:224;:::o;25458:366::-;25600:3;25621:67;25685:2;25680:3;25621:67;:::i;:::-;25614:74;;25697:93;25786:3;25697:93;:::i;:::-;25815:2;25810:3;25806:12;25799:19;;25458:366;;;:::o;25830:419::-;25996:4;26034:2;26023:9;26019:18;26011:26;;26083:9;26077:4;26073:20;26069:1;26058:9;26054:17;26047:47;26111:131;26237:4;26111:131;:::i;:::-;26103:139;;25830:419;;;:::o;26255:222::-;26395:34;26391:1;26383:6;26379:14;26372:58;26464:5;26459:2;26451:6;26447:15;26440:30;26255:222;:::o;26483:366::-;26625:3;26646:67;26710:2;26705:3;26646:67;:::i;:::-;26639:74;;26722:93;26811:3;26722:93;:::i;:::-;26840:2;26835:3;26831:12;26824:19;;26483:366;;;:::o;26855:419::-;27021:4;27059:2;27048:9;27044:18;27036:26;;27108:9;27102:4;27098:20;27094:1;27083:9;27079:17;27072:47;27136:131;27262:4;27136:131;:::i;:::-;27128:139;;26855:419;;;:::o;27280:228::-;27420:34;27416:1;27408:6;27404:14;27397:58;27489:11;27484:2;27476:6;27472:15;27465:36;27280:228;:::o;27514:366::-;27656:3;27677:67;27741:2;27736:3;27677:67;:::i;:::-;27670:74;;27753:93;27842:3;27753:93;:::i;:::-;27871:2;27866:3;27862:12;27855:19;;27514:366;;;:::o;27886:419::-;28052:4;28090:2;28079:9;28075:18;28067:26;;28139:9;28133:4;28129:20;28125:1;28114:9;28110:17;28103:47;28167:131;28293:4;28167:131;:::i;:::-;28159:139;;27886:419;;;:::o;28311:236::-;28451:34;28447:1;28439:6;28435:14;28428:58;28520:19;28515:2;28507:6;28503:15;28496:44;28311:236;:::o;28553:366::-;28695:3;28716:67;28780:2;28775:3;28716:67;:::i;:::-;28709:74;;28792:93;28881:3;28792:93;:::i;:::-;28910:2;28905:3;28901:12;28894:19;;28553:366;;;:::o;28925:419::-;29091:4;29129:2;29118:9;29114:18;29106:26;;29178:9;29172:4;29168:20;29164:1;29153:9;29149:17;29142:47;29206:131;29332:4;29206:131;:::i;:::-;29198:139;;28925:419;;;:::o;29350:163::-;29490:15;29486:1;29478:6;29474:14;29467:39;29350:163;:::o;29519:366::-;29661:3;29682:67;29746:2;29741:3;29682:67;:::i;:::-;29675:74;;29758:93;29847:3;29758:93;:::i;:::-;29876:2;29871:3;29867:12;29860:19;;29519:366;;;:::o;29891:419::-;30057:4;30095:2;30084:9;30080:18;30072:26;;30144:9;30138:4;30134:20;30130:1;30119:9;30115:17;30108:47;30172:131;30298:4;30172:131;:::i;:::-;30164:139;;29891:419;;;:::o;30316:180::-;30456:32;30452:1;30444:6;30440:14;30433:56;30316:180;:::o;30502:366::-;30644:3;30665:67;30729:2;30724:3;30665:67;:::i;:::-;30658:74;;30741:93;30830:3;30741:93;:::i;:::-;30859:2;30854:3;30850:12;30843:19;;30502:366;;;:::o;30874:419::-;31040:4;31078:2;31067:9;31063:18;31055:26;;31127:9;31121:4;31117:20;31113:1;31102:9;31098:17;31091:47;31155:131;31281:4;31155:131;:::i;:::-;31147:139;;30874:419;;;:::o;31299:181::-;31439:33;31435:1;31427:6;31423:14;31416:57;31299:181;:::o;31486:366::-;31628:3;31649:67;31713:2;31708:3;31649:67;:::i;:::-;31642:74;;31725:93;31814:3;31725:93;:::i;:::-;31843:2;31838:3;31834:12;31827:19;;31486:366;;;:::o;31858:419::-;32024:4;32062:2;32051:9;32047:18;32039:26;;32111:9;32105:4;32101:20;32097:1;32086:9;32082:17;32075:47;32139:131;32265:4;32139:131;:::i;:::-;32131:139;;31858:419;;;:::o;32283:221::-;32423:34;32419:1;32411:6;32407:14;32400:58;32492:4;32487:2;32479:6;32475:15;32468:29;32283:221;:::o;32510:366::-;32652:3;32673:67;32737:2;32732:3;32673:67;:::i;:::-;32666:74;;32749:93;32838:3;32749:93;:::i;:::-;32867:2;32862:3;32858:12;32851:19;;32510:366;;;:::o;32882:419::-;33048:4;33086:2;33075:9;33071:18;33063:26;;33135:9;33129:4;33125:20;33121:1;33110:9;33106:17;33099:47;33163:131;33289:4;33163:131;:::i;:::-;33155:139;;32882:419;;;:::o;33307:180::-;33355:77;33352:1;33345:88;33452:4;33449:1;33442:15;33476:4;33473:1;33466:15;33493:233;33532:3;33555:24;33573:5;33555:24;:::i;:::-;33546:33;;33601:66;33594:5;33591:77;33588:103;;33671:18;;:::i;:::-;33588:103;33718:1;33711:5;33707:13;33700:20;;33493:233;;;:::o;33732:180::-;33780:77;33777:1;33770:88;33877:4;33874:1;33867:15;33901:4;33898:1;33891:15;33918:143;33975:5;34006:6;34000:13;33991:22;;34022:33;34049:5;34022:33;:::i;:::-;33918:143;;;;:::o;34067:351::-;34137:6;34186:2;34174:9;34165:7;34161:23;34157:32;34154:119;;;34192:79;;:::i;:::-;34154:119;34312:1;34337:64;34393:7;34384:6;34373:9;34369:22;34337:64;:::i;:::-;34327:74;;34283:128;34067:351;;;;:::o;34424:85::-;34469:7;34498:5;34487:16;;34424:85;;;:::o;34515:158::-;34573:9;34606:61;34624:42;34633:32;34659:5;34633:32;:::i;:::-;34624:42;:::i;:::-;34606:61;:::i;:::-;34593:74;;34515:158;;;:::o;34679:147::-;34774:45;34813:5;34774:45;:::i;:::-;34769:3;34762:58;34679:147;;:::o;34832:114::-;34899:6;34933:5;34927:12;34917:22;;34832:114;;;:::o;34952:184::-;35051:11;35085:6;35080:3;35073:19;35125:4;35120:3;35116:14;35101:29;;34952:184;;;;:::o;35142:132::-;35209:4;35232:3;35224:11;;35262:4;35257:3;35253:14;35245:22;;35142:132;;;:::o;35280:108::-;35357:24;35375:5;35357:24;:::i;:::-;35352:3;35345:37;35280:108;;:::o;35394:179::-;35463:10;35484:46;35526:3;35518:6;35484:46;:::i;:::-;35562:4;35557:3;35553:14;35539:28;;35394:179;;;;:::o;35579:113::-;35649:4;35681;35676:3;35672:14;35664:22;;35579:113;;;:::o;35728:732::-;35847:3;35876:54;35924:5;35876:54;:::i;:::-;35946:86;36025:6;36020:3;35946:86;:::i;:::-;35939:93;;36056:56;36106:5;36056:56;:::i;:::-;36135:7;36166:1;36151:284;36176:6;36173:1;36170:13;36151:284;;;36252:6;36246:13;36279:63;36338:3;36323:13;36279:63;:::i;:::-;36272:70;;36365:60;36418:6;36365:60;:::i;:::-;36355:70;;36211:224;36198:1;36195;36191:9;36186:14;;36151:284;;;36155:14;36451:3;36444:10;;35852:608;;;35728:732;;;;:::o;36466:831::-;36729:4;36767:3;36756:9;36752:19;36744:27;;36781:71;36849:1;36838:9;36834:17;36825:6;36781:71;:::i;:::-;36862:80;36938:2;36927:9;36923:18;36914:6;36862:80;:::i;:::-;36989:9;36983:4;36979:20;36974:2;36963:9;36959:18;36952:48;37017:108;37120:4;37111:6;37017:108;:::i;:::-;37009:116;;37135:72;37203:2;37192:9;37188:18;37179:6;37135:72;:::i;:::-;37217:73;37285:3;37274:9;37270:19;37261:6;37217:73;:::i;:::-;36466:831;;;;;;;;:::o;37303:807::-;37552:4;37590:3;37579:9;37575:19;37567:27;;37604:71;37672:1;37661:9;37657:17;37648:6;37604:71;:::i;:::-;37685:72;37753:2;37742:9;37738:18;37729:6;37685:72;:::i;:::-;37767:80;37843:2;37832:9;37828:18;37819:6;37767:80;:::i;:::-;37857;37933:2;37922:9;37918:18;37909:6;37857:80;:::i;:::-;37947:73;38015:3;38004:9;38000:19;37991:6;37947:73;:::i;:::-;38030;38098:3;38087:9;38083:19;38074:6;38030:73;:::i;:::-;37303:807;;;;;;;;;:::o;38116:143::-;38173:5;38204:6;38198:13;38189:22;;38220:33;38247:5;38220:33;:::i;:::-;38116:143;;;;:::o;38265:663::-;38353:6;38361;38369;38418:2;38406:9;38397:7;38393:23;38389:32;38386:119;;;38424:79;;:::i;:::-;38386:119;38544:1;38569:64;38625:7;38616:6;38605:9;38601:22;38569:64;:::i;:::-;38559:74;;38515:128;38682:2;38708:64;38764:7;38755:6;38744:9;38740:22;38708:64;:::i;:::-;38698:74;;38653:129;38821:2;38847:64;38903:7;38894:6;38883:9;38879:22;38847:64;:::i;:::-;38837:74;;38792:129;38265:663;;;;;:::o

Swarm Source

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