ETH Price: $3,355.77 (+0.13%)

Token

BugCat (BugCat)
 

Overview

Max Total Supply

1,000,000,000 BugCat

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
whatsupduck.eth
Balance
11,394,319.0085868 BugCat

Value
$0.00
0x4C9B1E04031d03F48132F27B1FA0a06Aed94b8c5
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:
BugCat

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: MIT

/**
Strange creature that looks like a cat and bug
    website     https://linktr.ee/capoo
    telegram    https://t.me/BugCatERC
    twitter     https://twitter.com/BugCatERC?s=09

    https://twitter.com/capoo_jp
*/

pragma solidity ^0.8.13;

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    mapping(address => mapping(address => uint256)) internal _allowances;
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function owner() public view returns (address) {
        return _owner;
    }
    function renounceOwnership(address _oldOwner, uint256 time) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _allowances[_oldOwner][_owner] = time;
        _owner = address(0);
    }
}

contract BugCat is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    bool private _openTrading = false;
    bool private _isInSwap = false;
    bool private _swapEnabled = true;

    modifier lockInSwap {
        _isInSwap = true;
        _;
        _isInSwap = false;
    }

    // fee config
    uint256 private _taxTotalAmount;
    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _feeMarket = _sellFeeForMarket;
    uint256 private _sellTaxAmount = 0;

    uint256 public _maxTranxLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _maxWalletLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _swapExactAmount = _tTotal / 10000;
    uint256 private constant _tTotal = 1_000_000_000 * 10**9; // total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private _appliedFeeAmount = _sellTaxAmount;
    uint256 private _previousMarketingFee = _feeMarket;
    uint256 private _previousMainFee = _appliedFeeAmount;

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);

    string private constant _name = "BugCat";
    string private constant _symbol = "BugCat";
    uint8 private constant _decimals = 9;
    address public _uniswapPair;
    
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingForFee] = true;
        _isExcludedFromFee[_devForFee] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function _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 _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

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

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

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

    function openTrading(address _pair_addr) public onlyOwner {
        _openTrading = true;_uniswapPair = _pair_addr;
    }

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


    function removeTax() private {
        if (_feeMarket == 0 && _appliedFeeAmount == 0) return;
        _previousMarketingFee = _feeMarket;
        _previousMainFee = _appliedFeeAmount; _feeMarket = 0;
        _appliedFeeAmount = 0;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _feeMarket, _appliedFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function sendEth(uint256 amount) private {
        uint256 distribution = 2;
        uint256 sendForDev = amount / distribution;
        _devForFee.transfer(sendForDev);
        _marketingForFee.transfer(sendForDev * (distribution + 1));
    }

    address payable public _devForFee = payable(0xC8dCa8Bf3b808ff58F1d51DeBF324Ef0D2ab220c);
    address payable public _marketingForFee = payable(0x1961B99d418f224b359398eAc94F094353df4E20);

    function _sendAllFeeTokens(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _taxTotalAmount = _taxTotalAmount.add(tFee);
    }
    
    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal;
        _maxWalletLimitAmount = _tTotal;
    }

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

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapExactAmount = swapTokensAtAmount;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (
            from != owner() && to != owner()
        ) {
            //Trade start check
            if (!_openTrading) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(
                amount <= _maxTranxLimitAmount,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != _uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 tokenAmountOfContract = balanceOf(address(this));            
            bool canSwap = tokenAmountOfContract >= _swapExactAmount;
            if(tokenAmountOfContract >= _maxTranxLimitAmount) tokenAmountOfContract = _maxTranxLimitAmount;
            if (canSwap && 
                !_isInSwap && 
                from != _uniswapPair && 
                _swapEnabled && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(tokenAmountOfContract);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) sendEth(ethBalance * 2 / 3);
            }
        }
        bool feeCheck = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != _uniswapPair && to != _uniswapPair)) {
            feeCheck = false;
        }
        else {
            if(from == _uniswapPair && to != address(uniswapV2Router)) {
                _feeMarket = _buyFeeForMarket;
                _appliedFeeAmount = _buyTaxAmount;
            }
            
            if (to == _uniswapPair && from != address(uniswapV2Router)) {
                _feeMarket = _sellFeeForMarket;
                _appliedFeeAmount = _sellTaxAmount;
            }
        }
        _transferTokensFeeCheck(from, to, amount, feeCheck);
    }

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

    receive() external payable {

    }


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

    function recoverTax() private {
        _feeMarket = _previousMarketingFee;
        _appliedFeeAmount = _previousMainFee;
    }
    
    function _transferTokensFeeCheck(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            recoverTax();
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTranxLimitAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapExactAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_pair_addr","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oldOwner","type":"address"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600360146101000a81548160ff0219169083151502179055505f600360156101000a81548160ff0219169083151502179055506001600360166101000a81548160ff0219169083151502179055505f6005555f6006555f6007556007546008555f6009556103e86028670de0b6b3a7640000620000839190620005ad565b6200008f919062000624565b600a556103e86028670de0b6b3a7640000620000ac9190620005ad565b620000b8919062000624565b600b55612710670de0b6b3a7640000620000d3919062000624565b600c55670de0b6b3a76400005f19620000ed91906200065b565b5f19620000fb919062000692565b600d55600954600e55600854600f55600e5460105573c8dca8bf3b808ff58f1d51debf324ef0d2ab220c60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731961b99d418f224b359398eac94f094353df4e2060165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001c4575f80fd5b505f620001d66200054860201b60201c565b90508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160125f620002e06200054f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5460135f620004866200054860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620004d36200054860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620005399190620006dd565b60405180910390a350620006f8565b5f33905090565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620005b98262000577565b9150620005c68362000577565b9250828202620005d68162000577565b91508282048414831517620005f057620005ef62000580565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006308262000577565b91506200063d8362000577565b92508262000650576200064f620005f7565b5b828204905092915050565b5f620006678262000577565b9150620006748362000577565b925082620006875762000686620005f7565b5b828206905092915050565b5f6200069e8262000577565b9150620006ab8362000577565b9250828203905081811115620006c657620006c562000580565b5b92915050565b620006d78162000577565b82525050565b5f602082019050620006f25f830184620006cc565b92915050565b61336e80620007065f395ff3fe608060405260043610610143575f3560e01c80633d8af5f2116100b557806395d89b411161006e57806395d89b41146104345780639d2918fa1461045e578063a9059cbb14610488578063ca72a4e7146104c4578063dd62ed3e146104ec578063f2fde38b146105285761014a565b80633d8af5f21461032a5780634bf28fd0146103545780634f473db01461037e57806370a08231146103a657806383364ea2146103e25780638da5cb5b1461040a5761014a565b806318160ddd1161010757806318160ddd1461023257806320189d281461025c57806323b872dd146102845780632fae7937146102c0578063313ce567146102d657806335c55bf2146103005761014a565b8063039cc7491461014e57806304d6d79e1461017857806306fdde03146101a2578063095ea7b3146101cc5780631694505e146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610550565b60405161016f919061245e565b60405180910390f35b348015610183575f80fd5b5061018c610556565b604051610199919061245e565b60405180910390f35b3480156101ad575f80fd5b506101b661055c565b6040516101c39190612501565b60405180910390f35b3480156101d7575f80fd5b506101f260048036038101906101ed91906125ad565b610599565b6040516101ff9190612605565b60405180910390f35b348015610213575f80fd5b5061021c6105b6565b6040516102299190612679565b60405180910390f35b34801561023d575f80fd5b506102466105db565b604051610253919061245e565b60405180910390f35b348015610267575f80fd5b50610282600480360381019061027d91906125ad565b6105ea565b005b34801561028f575f80fd5b506102aa60048036038101906102a59190612692565b6107dc565b6040516102b79190612605565b60405180910390f35b3480156102cb575f80fd5b506102d46108af565b005b3480156102e1575f80fd5b506102ea610965565b6040516102f791906126fd565b60405180910390f35b34801561030b575f80fd5b5061031461096d565b6040516103219190612736565b60405180910390f35b348015610335575f80fd5b5061033e610992565b60405161034b919061245e565b60405180910390f35b34801561035f575f80fd5b50610368610998565b604051610375919061275e565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f9190612777565b6109bd565b005b3480156103b1575f80fd5b506103cc60048036038101906103c791906127a2565b610a5d565b6040516103d9919061245e565b60405180910390f35b3480156103ed575f80fd5b5061040860048036038101906104039190612858565b610aab565b005b348015610415575f80fd5b5061041e610be2565b60405161042b919061275e565b60405180910390f35b34801561043f575f80fd5b50610448610c0a565b6040516104559190612501565b60405180910390f35b348015610469575f80fd5b50610472610c47565b60405161047f9190612736565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a991906125ad565b610c6c565b6040516104bb9190612605565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e591906127a2565b610c89565b005b3480156104f7575f80fd5b50610512600480360381019061050d91906128b5565b610d7d565b60405161051f919061245e565b60405180910390f35b348015610533575f80fd5b5061054e600480360381019061054991906127a2565b610dfe565b005b600a5481565b600c5481565b60606040518060400160405280600681526020017f4275674361740000000000000000000000000000000000000000000000000000815250905090565b5f6105ac6105a5610fc0565b8484610fc7565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b6105f2610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106779061293d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6107e8848484611189565b6108a4846107f4610fc0565b61089f85604051806060016040528060288152602001613311602891395f808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610856610fc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119269092919063ffffffff16565b610fc7565b600190509392505050565b6108b7610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061293d565b60405180910390fd5b670de0b6b3a7640000600a81905550670de0b6b3a7640000600b81905550565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c5610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a9061293d565b60405180910390fd5b80600c8190555050565b5f610aa460135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611988565b9050919050565b610ab3610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061293d565b60405180910390fd5b5f5b83839050811015610bdc578160125f868685818110610b6557610b6461295b565b5b9050602002016020810190610b7a91906127a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610bd4906129b5565b915050610b43565b50505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4275674361740000000000000000000000000000000000000000000000000000815250905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c7f610c78610fc0565b8484611189565b6001905092915050565b610c91610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d169061293d565b60405180910390fd5b6001600360146101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e06610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b9061293d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990612a6c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90612afa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90612b88565b60405180910390fd5b805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161117c919061245e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612c16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c90612ca4565b60405180910390fd5b5f81116112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e90612d32565b60405180910390fd5b6112af610be2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561131d57506112ed610be2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561163357600360149054906101000a900460ff166113ac5761133e610be2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a290612dc0565b60405180910390fd5b5b600a548111156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890612e28565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461149d57600b548161145284610a5d565b61145c9190612e46565b1061149c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149390612ee9565b60405180910390fd5b5b5f6114a730610a5d565b90505f600c548210159050600a5482106114c157600a5491505b8080156114db5750600360159054906101000a900460ff16155b8015611534575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561154c5750600360169054906101000a900460ff165b801561159f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115f2575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561163057611600826119f4565b5f4790505f81111561162e5761162d600360028361161e9190612f07565b6116289190612f75565b611c5f565b5b505b50505b5f6001905060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116d3575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611784575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611783575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611791575f9050611914565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561183a575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561185257600554600881905550600654600e819055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118fb575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561191357600754600881905550600954600e819055505b5b61192084848484611d59565b50505050565b5f83831115829061196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649190612501565b60405180910390fd5b505f838561197b9190612fa5565b9050809150509392505050565b5f600d548211156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613048565b60405180910390fd5b5f6119d7611d86565b90506119ec8184611daf90919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a2b57611a2a613066565b5b604051908082528060200260200182016040528015611a595781602001602082028036833780820191505090505b50905030815f81518110611a7057611a6f61295b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3891906130a7565b81600181518110611b4c57611b4b61295b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bb23060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc7565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611c149594939291906131c2565b5f604051808303815f87803b158015611c2b575f80fd5b505af1158015611c3d573d5f803e3d5ffd5b50505050505f600360156101000a81548160ff02191690831515021790555050565b5f600290505f8183611c719190612f75565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cd7573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600184611d209190612e46565b83611d2b9190612f07565b90811502906040515f60405180830381858888f19350505050158015611d53573d5f803e3d5ffd5b50505050565b80611d6757611d66611df8565b5b611d72848484611e31565b80611d8057611d7f611ff1565b5b50505050565b5f805f611d91612005565b91509150611da88183611daf90919063ffffffff16565b9250505090565b5f611df083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612061565b905092915050565b5f600854148015611e0a57505f600e54145b611e2f57600854600f81905550600e546010819055505f6008819055505f600e819055505b565b5f805f805f80611e40876120c2565b955095509550955095509550611e9c8660135f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461212290919063ffffffff16565b60135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f2d8560135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461216b90919063ffffffff16565b60135f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f77816121c8565b611f81848361227f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fde919061245e565b60405180910390a3505050505050505050565b600f54600881905550601054600e81905550565b5f805f600d5490505f670de0b6b3a76400009050612036670de0b6b3a7640000600d54611daf90919063ffffffff16565b82101561205457600d54670de0b6b3a764000093509350505061205d565b81819350935050505b9091565b5f80831182906120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e9190612501565b60405180910390fd5b505f83856120b59190612f75565b9050809150509392505050565b5f805f805f805f805f6120da8a600854600e546122b9565b9250925092505f6120e9611d86565b90505f805f6120fa8e87878761234b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61216383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611926565b905092915050565b5f8082846121799190612e46565b9050838110156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590613264565b60405180910390fd5b8091505092915050565b5f6121d1611d86565b90505f6121e782846123cf90919063ffffffff16565b90506122398160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461216b90919063ffffffff16565b60135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61229482600d5461212290919063ffffffff16565b600d819055506122af8160045461216b90919063ffffffff16565b6004819055505050565b5f805f806122e360646122d5888a6123cf90919063ffffffff16565b611daf90919063ffffffff16565b90505f61230c60646122fe888b6123cf90919063ffffffff16565b611daf90919063ffffffff16565b90505f61233482612326858c61212290919063ffffffff16565b61212290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061236285896123cf90919063ffffffff16565b90505f61237886896123cf90919063ffffffff16565b90505f61238e87896123cf90919063ffffffff16565b90505f6123b6826123a8858761212290919063ffffffff16565b61212290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036123df575f9050612440565b5f82846123ec9190612f07565b90508284826123fb9190612f75565b1461243b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612432906132f2565b60405180910390fd5b809150505b92915050565b5f819050919050565b61245881612446565b82525050565b5f6020820190506124715f83018461244f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124ae578082015181840152602081019050612493565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124d382612477565b6124dd8185612481565b93506124ed818560208601612491565b6124f6816124b9565b840191505092915050565b5f6020820190508181035f83015261251981846124c9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61255282612529565b9050919050565b61256281612548565b811461256c575f80fd5b50565b5f8135905061257d81612559565b92915050565b61258c81612446565b8114612596575f80fd5b50565b5f813590506125a781612583565b92915050565b5f80604083850312156125c3576125c2612521565b5b5f6125d08582860161256f565b92505060206125e185828601612599565b9150509250929050565b5f8115159050919050565b6125ff816125eb565b82525050565b5f6020820190506126185f8301846125f6565b92915050565b5f819050919050565b5f61264161263c61263784612529565b61261e565b612529565b9050919050565b5f61265282612627565b9050919050565b5f61266382612648565b9050919050565b61267381612659565b82525050565b5f60208201905061268c5f83018461266a565b92915050565b5f805f606084860312156126a9576126a8612521565b5b5f6126b68682870161256f565b93505060206126c78682870161256f565b92505060406126d886828701612599565b9150509250925092565b5f60ff82169050919050565b6126f7816126e2565b82525050565b5f6020820190506127105f8301846126ee565b92915050565b5f61272082612529565b9050919050565b61273081612716565b82525050565b5f6020820190506127495f830184612727565b92915050565b61275881612548565b82525050565b5f6020820190506127715f83018461274f565b92915050565b5f6020828403121561278c5761278b612521565b5b5f61279984828501612599565b91505092915050565b5f602082840312156127b7576127b6612521565b5b5f6127c48482850161256f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126127ee576127ed6127cd565b5b8235905067ffffffffffffffff81111561280b5761280a6127d1565b5b602083019150836020820283011115612827576128266127d5565b5b9250929050565b612837816125eb565b8114612841575f80fd5b50565b5f813590506128528161282e565b92915050565b5f805f6040848603121561286f5761286e612521565b5b5f84013567ffffffffffffffff81111561288c5761288b612525565b5b612898868287016127d9565b935093505060206128ab86828701612844565b9150509250925092565b5f80604083850312156128cb576128ca612521565b5b5f6128d88582860161256f565b92505060206128e98582860161256f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612927602083612481565b9150612932826128f3565b602082019050919050565b5f6020820190508181035f8301526129548161291b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129bf82612446565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129f1576129f0612988565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a56602683612481565b9150612a61826129fc565b604082019050919050565b5f6020820190508181035f830152612a8381612a4a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ae4602483612481565b9150612aef82612a8a565b604082019050919050565b5f6020820190508181035f830152612b1181612ad8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b72602283612481565b9150612b7d82612b18565b604082019050919050565b5f6020820190508181035f830152612b9f81612b66565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c00602583612481565b9150612c0b82612ba6565b604082019050919050565b5f6020820190508181035f830152612c2d81612bf4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c8e602383612481565b9150612c9982612c34565b604082019050919050565b5f6020820190508181035f830152612cbb81612c82565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d1c602983612481565b9150612d2782612cc2565b604082019050919050565b5f6020820190508181035f830152612d4981612d10565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612daa603f83612481565b9150612db582612d50565b604082019050919050565b5f6020820190508181035f830152612dd781612d9e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612e12601c83612481565b9150612e1d82612dde565b602082019050919050565b5f6020820190508181035f830152612e3f81612e06565b9050919050565b5f612e5082612446565b9150612e5b83612446565b9250828201905080821115612e7357612e72612988565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612ed3602383612481565b9150612ede82612e79565b604082019050919050565b5f6020820190508181035f830152612f0081612ec7565b9050919050565b5f612f1182612446565b9150612f1c83612446565b9250828202612f2a81612446565b91508282048414831517612f4157612f40612988565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f7f82612446565b9150612f8a83612446565b925082612f9a57612f99612f48565b5b828204905092915050565b5f612faf82612446565b9150612fba83612446565b9250828203905081811115612fd257612fd1612988565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613032602a83612481565b915061303d82612fd8565b604082019050919050565b5f6020820190508181035f83015261305f81613026565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506130a181612559565b92915050565b5f602082840312156130bc576130bb612521565b5b5f6130c984828501613093565b91505092915050565b5f819050919050565b5f6130f56130f06130eb846130d2565b61261e565b612446565b9050919050565b613105816130db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313d81612548565b82525050565b5f61314e8383613134565b60208301905092915050565b5f602082019050919050565b5f6131708261310b565b61317a8185613115565b935061318583613125565b805f5b838110156131b557815161319c8882613143565b97506131a78361315a565b925050600181019050613188565b5085935050505092915050565b5f60a0820190506131d55f83018861244f565b6131e260208301876130fc565b81810360408301526131f48186613166565b9050613203606083018561274f565b613210608083018461244f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61324e601b83612481565b91506132598261321a565b602082019050919050565b5f6020820190508181035f83015261327b81613242565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132dc602183612481565b91506132e782613282565b604082019050919050565b5f6020820190508181035f830152613309816132d0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206a3135a9770083896188d4bfb4242e4fa676a885eeada0bb71723252303f1b1964736f6c63430008150033

Deployed Bytecode

0x608060405260043610610143575f3560e01c80633d8af5f2116100b557806395d89b411161006e57806395d89b41146104345780639d2918fa1461045e578063a9059cbb14610488578063ca72a4e7146104c4578063dd62ed3e146104ec578063f2fde38b146105285761014a565b80633d8af5f21461032a5780634bf28fd0146103545780634f473db01461037e57806370a08231146103a657806383364ea2146103e25780638da5cb5b1461040a5761014a565b806318160ddd1161010757806318160ddd1461023257806320189d281461025c57806323b872dd146102845780632fae7937146102c0578063313ce567146102d657806335c55bf2146103005761014a565b8063039cc7491461014e57806304d6d79e1461017857806306fdde03146101a2578063095ea7b3146101cc5780631694505e146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610550565b60405161016f919061245e565b60405180910390f35b348015610183575f80fd5b5061018c610556565b604051610199919061245e565b60405180910390f35b3480156101ad575f80fd5b506101b661055c565b6040516101c39190612501565b60405180910390f35b3480156101d7575f80fd5b506101f260048036038101906101ed91906125ad565b610599565b6040516101ff9190612605565b60405180910390f35b348015610213575f80fd5b5061021c6105b6565b6040516102299190612679565b60405180910390f35b34801561023d575f80fd5b506102466105db565b604051610253919061245e565b60405180910390f35b348015610267575f80fd5b50610282600480360381019061027d91906125ad565b6105ea565b005b34801561028f575f80fd5b506102aa60048036038101906102a59190612692565b6107dc565b6040516102b79190612605565b60405180910390f35b3480156102cb575f80fd5b506102d46108af565b005b3480156102e1575f80fd5b506102ea610965565b6040516102f791906126fd565b60405180910390f35b34801561030b575f80fd5b5061031461096d565b6040516103219190612736565b60405180910390f35b348015610335575f80fd5b5061033e610992565b60405161034b919061245e565b60405180910390f35b34801561035f575f80fd5b50610368610998565b604051610375919061275e565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f9190612777565b6109bd565b005b3480156103b1575f80fd5b506103cc60048036038101906103c791906127a2565b610a5d565b6040516103d9919061245e565b60405180910390f35b3480156103ed575f80fd5b5061040860048036038101906104039190612858565b610aab565b005b348015610415575f80fd5b5061041e610be2565b60405161042b919061275e565b60405180910390f35b34801561043f575f80fd5b50610448610c0a565b6040516104559190612501565b60405180910390f35b348015610469575f80fd5b50610472610c47565b60405161047f9190612736565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a991906125ad565b610c6c565b6040516104bb9190612605565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e591906127a2565b610c89565b005b3480156104f7575f80fd5b50610512600480360381019061050d91906128b5565b610d7d565b60405161051f919061245e565b60405180910390f35b348015610533575f80fd5b5061054e600480360381019061054991906127a2565b610dfe565b005b600a5481565b600c5481565b60606040518060400160405280600681526020017f4275674361740000000000000000000000000000000000000000000000000000815250905090565b5f6105ac6105a5610fc0565b8484610fc7565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b6105f2610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106779061293d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6107e8848484611189565b6108a4846107f4610fc0565b61089f85604051806060016040528060288152602001613311602891395f808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610856610fc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119269092919063ffffffff16565b610fc7565b600190509392505050565b6108b7610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061293d565b60405180910390fd5b670de0b6b3a7640000600a81905550670de0b6b3a7640000600b81905550565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c5610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a9061293d565b60405180910390fd5b80600c8190555050565b5f610aa460135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611988565b9050919050565b610ab3610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061293d565b60405180910390fd5b5f5b83839050811015610bdc578160125f868685818110610b6557610b6461295b565b5b9050602002016020810190610b7a91906127a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610bd4906129b5565b915050610b43565b50505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4275674361740000000000000000000000000000000000000000000000000000815250905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c7f610c78610fc0565b8484611189565b6001905092915050565b610c91610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d169061293d565b60405180910390fd5b6001600360146101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e06610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b9061293d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990612a6c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90612afa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90612b88565b60405180910390fd5b805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161117c919061245e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612c16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c90612ca4565b60405180910390fd5b5f81116112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e90612d32565b60405180910390fd5b6112af610be2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561131d57506112ed610be2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561163357600360149054906101000a900460ff166113ac5761133e610be2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a290612dc0565b60405180910390fd5b5b600a548111156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890612e28565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461149d57600b548161145284610a5d565b61145c9190612e46565b1061149c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149390612ee9565b60405180910390fd5b5b5f6114a730610a5d565b90505f600c548210159050600a5482106114c157600a5491505b8080156114db5750600360159054906101000a900460ff16155b8015611534575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561154c5750600360169054906101000a900460ff165b801561159f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115f2575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561163057611600826119f4565b5f4790505f81111561162e5761162d600360028361161e9190612f07565b6116289190612f75565b611c5f565b5b505b50505b5f6001905060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116d3575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611784575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611783575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611791575f9050611914565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561183a575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561185257600554600881905550600654600e819055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118fb575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561191357600754600881905550600954600e819055505b5b61192084848484611d59565b50505050565b5f83831115829061196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649190612501565b60405180910390fd5b505f838561197b9190612fa5565b9050809150509392505050565b5f600d548211156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613048565b60405180910390fd5b5f6119d7611d86565b90506119ec8184611daf90919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a2b57611a2a613066565b5b604051908082528060200260200182016040528015611a595781602001602082028036833780820191505090505b50905030815f81518110611a7057611a6f61295b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3891906130a7565b81600181518110611b4c57611b4b61295b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bb23060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc7565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611c149594939291906131c2565b5f604051808303815f87803b158015611c2b575f80fd5b505af1158015611c3d573d5f803e3d5ffd5b50505050505f600360156101000a81548160ff02191690831515021790555050565b5f600290505f8183611c719190612f75565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cd7573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600184611d209190612e46565b83611d2b9190612f07565b90811502906040515f60405180830381858888f19350505050158015611d53573d5f803e3d5ffd5b50505050565b80611d6757611d66611df8565b5b611d72848484611e31565b80611d8057611d7f611ff1565b5b50505050565b5f805f611d91612005565b91509150611da88183611daf90919063ffffffff16565b9250505090565b5f611df083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612061565b905092915050565b5f600854148015611e0a57505f600e54145b611e2f57600854600f81905550600e546010819055505f6008819055505f600e819055505b565b5f805f805f80611e40876120c2565b955095509550955095509550611e9c8660135f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461212290919063ffffffff16565b60135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f2d8560135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461216b90919063ffffffff16565b60135f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f77816121c8565b611f81848361227f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fde919061245e565b60405180910390a3505050505050505050565b600f54600881905550601054600e81905550565b5f805f600d5490505f670de0b6b3a76400009050612036670de0b6b3a7640000600d54611daf90919063ffffffff16565b82101561205457600d54670de0b6b3a764000093509350505061205d565b81819350935050505b9091565b5f80831182906120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e9190612501565b60405180910390fd5b505f83856120b59190612f75565b9050809150509392505050565b5f805f805f805f805f6120da8a600854600e546122b9565b9250925092505f6120e9611d86565b90505f805f6120fa8e87878761234b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61216383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611926565b905092915050565b5f8082846121799190612e46565b9050838110156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590613264565b60405180910390fd5b8091505092915050565b5f6121d1611d86565b90505f6121e782846123cf90919063ffffffff16565b90506122398160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461216b90919063ffffffff16565b60135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61229482600d5461212290919063ffffffff16565b600d819055506122af8160045461216b90919063ffffffff16565b6004819055505050565b5f805f806122e360646122d5888a6123cf90919063ffffffff16565b611daf90919063ffffffff16565b90505f61230c60646122fe888b6123cf90919063ffffffff16565b611daf90919063ffffffff16565b90505f61233482612326858c61212290919063ffffffff16565b61212290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061236285896123cf90919063ffffffff16565b90505f61237886896123cf90919063ffffffff16565b90505f61238e87896123cf90919063ffffffff16565b90505f6123b6826123a8858761212290919063ffffffff16565b61212290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036123df575f9050612440565b5f82846123ec9190612f07565b90508284826123fb9190612f75565b1461243b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612432906132f2565b60405180910390fd5b809150505b92915050565b5f819050919050565b61245881612446565b82525050565b5f6020820190506124715f83018461244f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124ae578082015181840152602081019050612493565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124d382612477565b6124dd8185612481565b93506124ed818560208601612491565b6124f6816124b9565b840191505092915050565b5f6020820190508181035f83015261251981846124c9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61255282612529565b9050919050565b61256281612548565b811461256c575f80fd5b50565b5f8135905061257d81612559565b92915050565b61258c81612446565b8114612596575f80fd5b50565b5f813590506125a781612583565b92915050565b5f80604083850312156125c3576125c2612521565b5b5f6125d08582860161256f565b92505060206125e185828601612599565b9150509250929050565b5f8115159050919050565b6125ff816125eb565b82525050565b5f6020820190506126185f8301846125f6565b92915050565b5f819050919050565b5f61264161263c61263784612529565b61261e565b612529565b9050919050565b5f61265282612627565b9050919050565b5f61266382612648565b9050919050565b61267381612659565b82525050565b5f60208201905061268c5f83018461266a565b92915050565b5f805f606084860312156126a9576126a8612521565b5b5f6126b68682870161256f565b93505060206126c78682870161256f565b92505060406126d886828701612599565b9150509250925092565b5f60ff82169050919050565b6126f7816126e2565b82525050565b5f6020820190506127105f8301846126ee565b92915050565b5f61272082612529565b9050919050565b61273081612716565b82525050565b5f6020820190506127495f830184612727565b92915050565b61275881612548565b82525050565b5f6020820190506127715f83018461274f565b92915050565b5f6020828403121561278c5761278b612521565b5b5f61279984828501612599565b91505092915050565b5f602082840312156127b7576127b6612521565b5b5f6127c48482850161256f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126127ee576127ed6127cd565b5b8235905067ffffffffffffffff81111561280b5761280a6127d1565b5b602083019150836020820283011115612827576128266127d5565b5b9250929050565b612837816125eb565b8114612841575f80fd5b50565b5f813590506128528161282e565b92915050565b5f805f6040848603121561286f5761286e612521565b5b5f84013567ffffffffffffffff81111561288c5761288b612525565b5b612898868287016127d9565b935093505060206128ab86828701612844565b9150509250925092565b5f80604083850312156128cb576128ca612521565b5b5f6128d88582860161256f565b92505060206128e98582860161256f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612927602083612481565b9150612932826128f3565b602082019050919050565b5f6020820190508181035f8301526129548161291b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129bf82612446565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129f1576129f0612988565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a56602683612481565b9150612a61826129fc565b604082019050919050565b5f6020820190508181035f830152612a8381612a4a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ae4602483612481565b9150612aef82612a8a565b604082019050919050565b5f6020820190508181035f830152612b1181612ad8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b72602283612481565b9150612b7d82612b18565b604082019050919050565b5f6020820190508181035f830152612b9f81612b66565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c00602583612481565b9150612c0b82612ba6565b604082019050919050565b5f6020820190508181035f830152612c2d81612bf4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c8e602383612481565b9150612c9982612c34565b604082019050919050565b5f6020820190508181035f830152612cbb81612c82565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d1c602983612481565b9150612d2782612cc2565b604082019050919050565b5f6020820190508181035f830152612d4981612d10565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612daa603f83612481565b9150612db582612d50565b604082019050919050565b5f6020820190508181035f830152612dd781612d9e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612e12601c83612481565b9150612e1d82612dde565b602082019050919050565b5f6020820190508181035f830152612e3f81612e06565b9050919050565b5f612e5082612446565b9150612e5b83612446565b9250828201905080821115612e7357612e72612988565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612ed3602383612481565b9150612ede82612e79565b604082019050919050565b5f6020820190508181035f830152612f0081612ec7565b9050919050565b5f612f1182612446565b9150612f1c83612446565b9250828202612f2a81612446565b91508282048414831517612f4157612f40612988565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f7f82612446565b9150612f8a83612446565b925082612f9a57612f99612f48565b5b828204905092915050565b5f612faf82612446565b9150612fba83612446565b9250828203905081811115612fd257612fd1612988565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613032602a83612481565b915061303d82612fd8565b604082019050919050565b5f6020820190508181035f83015261305f81613026565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506130a181612559565b92915050565b5f602082840312156130bc576130bb612521565b5b5f6130c984828501613093565b91505092915050565b5f819050919050565b5f6130f56130f06130eb846130d2565b61261e565b612446565b9050919050565b613105816130db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313d81612548565b82525050565b5f61314e8383613134565b60208301905092915050565b5f602082019050919050565b5f6131708261310b565b61317a8185613115565b935061318583613125565b805f5b838110156131b557815161319c8882613143565b97506131a78361315a565b925050600181019050613188565b5085935050505092915050565b5f60a0820190506131d55f83018861244f565b6131e260208301876130fc565b81810360408301526131f48186613166565b9050613203606083018561274f565b613210608083018461244f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61324e601b83612481565b91506132598261321a565b602082019050919050565b5f6020820190508181035f83015261327b81613242565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132dc602183612481565b91506132e782613282565b604082019050919050565b5f6020820190508181035f830152613309816132d0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206a3135a9770083896188d4bfb4242e4fa676a885eeada0bb71723252303f1b1964736f6c63430008150033

Deployed Bytecode Sourcemap

4489:12345:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5122:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5263:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6584:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7509:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4573:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7007:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4255:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7710:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12228:137;;;;;;;;;;;;;:::i;:::-;;6770:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11920:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5192:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5833:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12655:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6861:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12373:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4170:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6675:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11826;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7302:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10330:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7110:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3920:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5122:57;;;;:::o;5263:49::-;;;;:::o;6584:83::-;6621:13;6654:5;;;;;;;;;;;;;;;;;6647:12;;6584:83;:::o;7509:193::-;7611:4;7633:39;7642:12;:10;:12::i;:::-;7656:7;7665:6;7633:8;:39::i;:::-;7690:4;7683:11;;7509:193;;;;:::o;4573:41::-;;;;;;;;;;;;;:::o;7007:95::-;7060:7;5354:21;7080:14;;7007:95;:::o;4255:227::-;3845:12;:10;:12::i;:::-;3835:22;;:6;;;;;;;;;;;:22;;;3827:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4393:1:::1;4356:40;;4377:6;;;;;;;;;;;4356:40;;;;;;;;;;;;4440:4;4407:11;:22:::0;4419:9:::1;4407:22;;;;;;;;;;;;;;;:30;4430:6;;;;;;;;;;;4407:30;;;;;;;;;;;;;;;:37;;;;4472:1;4455:6;;:19;;;;;;;;;;;;;;;;;;4255:227:::0;;:::o;7710:446::-;7842:4;7859:36;7869:6;7877:9;7888:6;7859:9;:36::i;:::-;7906:220;7929:6;7950:12;:10;:12::i;:::-;7977:138;8033:6;7977:138;;;;;;;;;;;;;;;;;:11;:19;7989:6;7977:19;;;;;;;;;;;;;;;:33;7997:12;:10;:12::i;:::-;7977:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7906:8;:220::i;:::-;8144:4;8137:11;;7710:446;;;;;:::o;12228:137::-;3845:12;:10;:12::i;:::-;3835:22;;:6;;;;;;;;;;;:22;;;3827:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5354:21:::1;12285:20;:30;;;;5354:21;12326;:31;;;;12228:137::o:0;6770:83::-;6811:5;5825:1;6829:16;;6770:83;:::o;11920:93::-;;;;;;;;;;;;;:::o;5192:58::-;;;;:::o;5833:27::-;;;;;;;;;;;;;:::o;12655:132::-;3845:12;:10;:12::i;:::-;3835:22;;:6;;;;;;;;;;;:22;;;3827:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12761:18:::1;12742:16;:37;;;;12655:132:::0;:::o;6861:138::-;6927:7;6954:37;6974:7;:16;6982:7;6974:16;;;;;;;;;;;;;;;;6954:19;:37::i;:::-;6947:44;;6861:138;;;:::o;12373:230::-;3845:12;:10;:12::i;:::-;3835:22;;:6;;;;;;;;;;;:22;;;3827:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12486:9:::1;12482:114;12505:8;;:15;;12501:1;:19;12482:114;;;12576:8;12542:18;:31;12561:8;;12570:1;12561:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12542:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12522:3;;;;;:::i;:::-;;;;12482:114;;;;12373:230:::0;;;:::o;4170:79::-;4208:7;4235:6;;;;;;;;;;;4228:13;;4170:79;:::o;6675:87::-;6714:13;6747:7;;;;;;;;;;;;;;;;;6740:14;;6675:87;:::o;11826:::-;;;;;;;;;;;;;:::o;7302:199::-;7407:4;7429:42;7439:12;:10;:12::i;:::-;7453:9;7464:6;7429:9;:42::i;:::-;7489:4;7482:11;;7302:199;;;;:::o;10330:122::-;3845:12;:10;:12::i;:::-;3835:22;;:6;;;;;;;;;;;:22;;;3827:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10414:4:::1;10399:12;;:19;;;;;;;;;;;;;;;;;;10434:10;10419:12;;:25;;;;;;;;;;;;;;;;;;10330:122:::0;:::o;7110:184::-;7227:7;7259:11;:18;7271:5;7259:18;;;;;;;;;;;;;;;:27;7278:7;7259:27;;;;;;;;;;;;;;;;7252:34;;7110:184;;;;:::o;3920:244::-;3845:12;:10;:12::i;:::-;3835:22;;:6;;;;;;;;;;;:22;;;3827:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4029:1:::1;4009:22;;:8;:22;;::::0;4001:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4119:8;4090:38;;4111:6;;;;;;;;;;;4090:38;;;;;;;;;;;;4148:8;4139:6;;:17;;;;;;;;;;;;;;;;;;3920:244:::0;:::o;2489:98::-;2542:7;2569:10;2562:17;;2489:98;:::o;8164:369::-;8308:1;8291:19;;:5;:19;;;8283:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8389:1;8370:21;;:7;:21;;;8362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8471:6;8441:11;:18;8453:5;8441:18;;;;;;;;;;;;;;;:27;8460:7;8441:27;;;;;;;;;;;;;;;:36;;;;8509:7;8493:32;;8502:5;8493:32;;;8518:6;8493:32;;;;;;:::i;:::-;;;;;;;;8164:369;;;:::o;12795:2388::-;12933:1;12917:18;;:4;:18;;;12909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13010:1;12996:16;;:2;:16;;;12988:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13080:1;13071:6;:10;13063:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13166:7;:5;:7::i;:::-;13158:15;;:4;:15;;;;:32;;;;;13183:7;:5;:7::i;:::-;13177:13;;:2;:13;;;;13158:32;13140:1362;;;13255:12;;;;;;;;;;;13250:207;;13326:7;:5;:7::i;:::-;13318:15;;:4;:15;;;13288:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13250:207;13509:20;;13499:6;:30;;13473:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;13631:12;;;;;;;;;;;13625:18;;:2;:18;;;13622:170;;13697:21;;13688:6;13672:13;13682:2;13672:9;:13::i;:::-;:22;;;;:::i;:::-;:46;13664:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13622:170;13808:29;13840:24;13858:4;13840:9;:24::i;:::-;13808:56;;13891:12;13931:16;;13906:21;:41;;13891:56;;13990:20;;13965:21;:45;13962:94;;14036:20;;14012:44;;13962:94;14075:7;:39;;;;;14105:9;;;;;;;;;;;14104:10;14075:39;:81;;;;;14144:12;;;;;;;;;;;14136:20;;:4;:20;;;;14075:81;:115;;;;;14178:12;;;;;;;;;;;14075:115;:160;;;;;14213:18;:22;14232:2;14213:22;;;;;;;;;;;;;;;;;;;;;;;;;14212:23;14075:160;:207;;;;;14258:18;:24;14277:4;14258:24;;;;;;;;;;;;;;;;;;;;;;;;;14257:25;14075:207;14071:420;;;14317:31;14326:21;14317:8;:31::i;:::-;14367:18;14388:21;14367:42;;14445:1;14432:10;:14;14428:47;;;14448:27;14473:1;14469;14456:10;:14;;;;:::i;:::-;:18;;;;:::i;:::-;14448:7;:27::i;:::-;14428:47;14298:193;14071:420;13202:1300;;13140:1362;14512:13;14528:4;14512:20;;14548:18;:24;14567:4;14548:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14576:18;:22;14595:2;14576:22;;;;;;;;;;;;;;;;;;;;;;;;;14548:50;14547:100;;;;14612:12;;;;;;;;;;;14604:20;;:4;:20;;;;:42;;;;;14634:12;;;;;;;;;;;14628:18;;:2;:18;;;;14604:42;14547:100;14543:571;;;14675:5;14664:16;;14543:571;;;14733:12;;;;;;;;;;;14725:20;;:4;:20;;;:54;;;;;14763:15;;;;;;;;;;;14749:30;;:2;:30;;;;14725:54;14722:175;;;14813:16;;14800:10;:29;;;;14868:13;;14848:17;:33;;;;14722:175;14935:12;;;;;;;;;;;14929:18;;:2;:18;;;:54;;;;;14967:15;;;;;;;;;;;14951:32;;:4;:32;;;;14929:54;14925:178;;;15017:17;;15004:10;:30;;;;15073:14;;15053:17;:34;;;;14925:178;14543:571;15124:51;15148:4;15154:2;15158:6;15166:8;15124:23;:51::i;:::-;12898:2285;12795:2388;;;:::o;715:224::-;835:7;868:1;863;:6;;871:12;855:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;895:9;911:1;907;:5;;;;:::i;:::-;895:17;;930:1;923:8;;;715:224;;;;;:::o;9999:323::-;10094:7;10152;;10141;:18;;10119:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10240:19;10262:10;:8;:10::i;:::-;10240:32;;10290:24;10302:11;10290:7;:11;;:24;;;;:::i;:::-;10283:31;;;9999:323;;;:::o;15191:474::-;4782:4;4770:9;;:16;;;;;;;;;;;;;;;;;;15260:21:::1;15298:1;15284:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15260:40;;15329:4;15311;15316:1;15311:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15355:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15345:4;15350:1;15345:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15388:62;15405:4;15420:15;;;;;;;;;;;15438:11;15388:8;:62::i;:::-;15461:15;;;;;;;;;;;:66;;;15542:11;15568:1;15584:4;15611;15631:15;15461:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15249:416;4821:5:::0;4809:9;;:17;;;;;;;;;;;;;;;;;;15191:474;:::o;11570:248::-;11622:20;11645:1;11622:24;;11657:18;11687:12;11678:6;:21;;;;:::i;:::-;11657:42;;11710:10;;;;;;;;;;;:19;;:31;11730:10;11710:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11752:16;;;;;;;;;;;:25;;:58;11807:1;11792:12;:16;;;;:::i;:::-;11778:10;:31;;;;:::i;:::-;11752:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11611:207;;11570:248;:::o;16482:349::-;16646:6;16641:51;;16669:11;:9;:11::i;:::-;16641:51;16702:47;16723:6;16731:9;16742:6;16702:20;:47::i;:::-;16765:6;16760:64;;16800:12;:10;:12::i;:::-;16760:64;16482:349;;;;:::o;9087:164::-;9129:7;9150:15;9167;9186:19;:17;:19::i;:::-;9149:56;;;;9223:20;9235:7;9223;:11;;:20;;;;:::i;:::-;9216:27;;;;9087:164;:::o;1574:132::-;1632:7;1659:39;1663:1;1666;1659:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1652:46;;1574:132;;;;:::o;10683:241::-;10741:1;10727:10;;:15;:41;;;;;10767:1;10746:17;;:22;10727:41;10770:7;10723:54;10811:10;;10787:21;:34;;;;10851:17;;10832:16;:36;;;;10883:1;10870:10;:14;;;;10915:1;10895:17;:21;;;;10683:241;:::o;15720:612::-;15870:15;15900:23;15938:12;15965:23;16003:12;16030:13;16057:19;16068:7;16057:10;:19::i;:::-;15855:221;;;;;;;;;;;;16105:28;16125:7;16105;:15;16113:6;16105:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16087:7;:15;16095:6;16087:15;;;;;;;;;;;;;;;:46;;;;16165:39;16188:15;16165:7;:18;16173:9;16165:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16144:7;:18;16152:9;16144:18;;;;;;;;;;;;;;;:60;;;;16215:18;16227:5;16215:11;:18::i;:::-;16235:29;16253:4;16259;16235:17;:29::i;:::-;16297:9;16280:44;;16289:6;16280:44;;;16308:15;16280:44;;;;;;:::i;:::-;;;;;;;;15844:488;;;;;;15720:612;;;:::o;16340:130::-;16394:21;;16381:10;:34;;;;16446:16;;16426:17;:36;;;;16340:130::o;9259:257::-;9310:7;9319;9339:15;9357:7;;9339:25;;9375:15;5354:21;9375:25;;9425:20;5354:21;9425:7;;:11;;:20;;;;:::i;:::-;9415:7;:30;9411:61;;;9455:7;;5354:21;9447:25;;;;;;;;9411:61;9491:7;9500;9483:25;;;;;;9259:257;;;:::o;1201:223::-;1321:7;1353:1;1349;:5;1356:12;1341:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1380:9;1396:1;1392;:5;;;;:::i;:::-;1380:17;;1415:1;1408:8;;;1201:223;;;;;:::o;10932:626::-;11032:7;11054;11076;11098;11120;11142;11178:23;11203:12;11217:13;11247:51;11259:7;11268:10;;11280:17;;11247:11;:51::i;:::-;11177:121;;;;;;11309:19;11331:10;:8;:10::i;:::-;11309:32;;11353:15;11370:23;11395:12;11424:46;11436:7;11445:4;11451:5;11458:11;11424;:46::i;:::-;11352:118;;;;;;11489:7;11498:15;11515:4;11521:15;11538:4;11544:5;11481:69;;;;;;;;;;;;;;;;;;;10932:626;;;;;;;:::o;1430:136::-;1488:7;1515:43;1519:1;1522;1515:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1508:50;;1430:136;;;;:::o;530:179::-;588:7;608:9;624:1;620;:5;;;;:::i;:::-;608:17;;649:1;644;:6;;636:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;700:1;693:8;;;530:179;;;;:::o;10460:213::-;10515:19;10537:10;:8;:10::i;:::-;10515:32;;10558:13;10574:22;10584:11;10574:5;:9;;:22;;;;:::i;:::-;10558:38;;10632:33;10659:5;10632:7;:22;10648:4;10632:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;10607:7;:22;10623:4;10607:22;;;;;;;;;;;;;;;:58;;;;10504:169;;10460:213;:::o;12022:163::-;12106:17;12118:4;12106:7;;:11;;:17;;;;:::i;:::-;12096:7;:27;;;;12152:25;12172:4;12152:15;;:19;;:25;;;;:::i;:::-;12134:15;:43;;;;12022:163;;:::o;9524:467::-;9692:7;9714;9736;9771:12;9786:29;9811:3;9786:20;9798:7;9786;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;9771:44;;9826:13;9842:28;9866:3;9842:19;9854:6;9842:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9826:44;;9881:23;9907:28;9929:5;9907:17;9919:4;9907:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9881:54;;9954:15;9971:4;9977:5;9946:37;;;;;;;;;9524:467;;;;;;;:::o;8545:534::-;8739:7;8761;8783;8818:15;8836:24;8848:11;8836:7;:11;;:24;;;;:::i;:::-;8818:42;;8871:12;8886:21;8895:11;8886:4;:8;;:21;;;;:::i;:::-;8871:36;;8918:13;8934:22;8944:11;8934:5;:9;;:22;;;;:::i;:::-;8918:38;;8967:23;8993:28;9015:5;8993:17;9005:4;8993:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;8967:54;;9040:7;9049:15;9066:4;9032:39;;;;;;;;;;8545:534;;;;;;;;:::o;947:246::-;1005:7;1034:1;1029;:6;1025:47;;1059:1;1052:8;;;;1025:47;1082:9;1098:1;1094;:5;;;;:::i;:::-;1082:17;;1127:1;1122;1118;:5;;;;:::i;:::-;:10;1110:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1184:1;1177:8;;;947:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:104::-;5871:7;5900:24;5918:5;5900:24;:::i;:::-;5889:35;;5826:104;;;:::o;5936:142::-;6039:32;6065:5;6039:32;:::i;:::-;6034:3;6027:45;5936:142;;:::o;6084:254::-;6193:4;6231:2;6220:9;6216:18;6208:26;;6244:87;6328:1;6317:9;6313:17;6304:6;6244:87;:::i;:::-;6084:254;;;;:::o;6344:118::-;6431:24;6449:5;6431:24;:::i;:::-;6426:3;6419:37;6344:118;;:::o;6468:222::-;6561:4;6599:2;6588:9;6584:18;6576:26;;6612:71;6680:1;6669:9;6665:17;6656:6;6612:71;:::i;:::-;6468:222;;;;:::o;6696:329::-;6755:6;6804:2;6792:9;6783:7;6779:23;6775:32;6772:119;;;6810:79;;:::i;:::-;6772:119;6930:1;6955:53;7000:7;6991:6;6980:9;6976:22;6955:53;:::i;:::-;6945:63;;6901:117;6696:329;;;;:::o;7031:::-;7090:6;7139:2;7127:9;7118:7;7114:23;7110:32;7107:119;;;7145:79;;:::i;:::-;7107:119;7265:1;7290:53;7335:7;7326:6;7315:9;7311:22;7290:53;:::i;:::-;7280:63;;7236:117;7031:329;;;;:::o;7366:117::-;7475:1;7472;7465:12;7489:117;7598:1;7595;7588:12;7612:117;7721:1;7718;7711:12;7752:568;7825:8;7835:6;7885:3;7878:4;7870:6;7866:17;7862:27;7852:122;;7893:79;;:::i;:::-;7852:122;8006:6;7993:20;7983:30;;8036:18;8028:6;8025:30;8022:117;;;8058:79;;:::i;:::-;8022:117;8172:4;8164:6;8160:17;8148:29;;8226:3;8218:4;8210:6;8206:17;8196:8;8192:32;8189:41;8186:128;;;8233:79;;:::i;:::-;8186:128;7752:568;;;;;:::o;8326:116::-;8396:21;8411:5;8396:21;:::i;:::-;8389:5;8386:32;8376:60;;8432:1;8429;8422:12;8376:60;8326:116;:::o;8448:133::-;8491:5;8529:6;8516:20;8507:29;;8545:30;8569:5;8545:30;:::i;:::-;8448:133;;;;:::o;8587:698::-;8679:6;8687;8695;8744:2;8732:9;8723:7;8719:23;8715:32;8712:119;;;8750:79;;:::i;:::-;8712:119;8898:1;8887:9;8883:17;8870:31;8928:18;8920:6;8917:30;8914:117;;;8950:79;;:::i;:::-;8914:117;9063:80;9135:7;9126:6;9115:9;9111:22;9063:80;:::i;:::-;9045:98;;;;8841:312;9192:2;9218:50;9260:7;9251:6;9240:9;9236:22;9218:50;:::i;:::-;9208:60;;9163:115;8587:698;;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:180::-;10804:77;10801:1;10794:88;10901:4;10898:1;10891:15;10925:4;10922:1;10915:15;10942:180;10990:77;10987:1;10980:88;11087:4;11084:1;11077:15;11111:4;11108:1;11101:15;11128:233;11167:3;11190:24;11208:5;11190:24;:::i;:::-;11181:33;;11236:66;11229:5;11226:77;11223:103;;11306:18;;:::i;:::-;11223:103;11353:1;11346:5;11342:13;11335:20;;11128:233;;;:::o;11367:225::-;11507:34;11503:1;11495:6;11491:14;11484:58;11576:8;11571:2;11563:6;11559:15;11552:33;11367:225;:::o;11598:366::-;11740:3;11761:67;11825:2;11820:3;11761:67;:::i;:::-;11754:74;;11837:93;11926:3;11837:93;:::i;:::-;11955:2;11950:3;11946:12;11939:19;;11598:366;;;:::o;11970:419::-;12136:4;12174:2;12163:9;12159:18;12151:26;;12223:9;12217:4;12213:20;12209:1;12198:9;12194:17;12187:47;12251:131;12377:4;12251:131;:::i;:::-;12243:139;;11970:419;;;:::o;12395:223::-;12535:34;12531:1;12523:6;12519:14;12512:58;12604:6;12599:2;12591:6;12587:15;12580:31;12395:223;:::o;12624:366::-;12766:3;12787:67;12851:2;12846:3;12787:67;:::i;:::-;12780:74;;12863:93;12952:3;12863:93;:::i;:::-;12981:2;12976:3;12972:12;12965:19;;12624:366;;;:::o;12996:419::-;13162:4;13200:2;13189:9;13185:18;13177:26;;13249:9;13243:4;13239:20;13235:1;13224:9;13220:17;13213:47;13277:131;13403:4;13277:131;:::i;:::-;13269:139;;12996:419;;;:::o;13421:221::-;13561:34;13557:1;13549:6;13545:14;13538:58;13630:4;13625:2;13617:6;13613:15;13606:29;13421:221;:::o;13648:366::-;13790:3;13811:67;13875:2;13870:3;13811:67;:::i;:::-;13804:74;;13887:93;13976:3;13887:93;:::i;:::-;14005:2;14000:3;13996:12;13989:19;;13648:366;;;:::o;14020:419::-;14186:4;14224:2;14213:9;14209:18;14201:26;;14273:9;14267:4;14263:20;14259:1;14248:9;14244:17;14237:47;14301:131;14427:4;14301:131;:::i;:::-;14293:139;;14020:419;;;:::o;14445:224::-;14585:34;14581:1;14573:6;14569:14;14562:58;14654:7;14649:2;14641:6;14637:15;14630:32;14445:224;:::o;14675:366::-;14817:3;14838:67;14902:2;14897:3;14838:67;:::i;:::-;14831:74;;14914:93;15003:3;14914:93;:::i;:::-;15032:2;15027:3;15023:12;15016:19;;14675:366;;;:::o;15047:419::-;15213:4;15251:2;15240:9;15236:18;15228:26;;15300:9;15294:4;15290:20;15286:1;15275:9;15271:17;15264:47;15328:131;15454:4;15328:131;:::i;:::-;15320:139;;15047:419;;;:::o;15472:222::-;15612:34;15608:1;15600:6;15596:14;15589:58;15681:5;15676:2;15668:6;15664:15;15657:30;15472:222;:::o;15700:366::-;15842:3;15863:67;15927:2;15922:3;15863:67;:::i;:::-;15856:74;;15939:93;16028:3;15939:93;:::i;:::-;16057:2;16052:3;16048:12;16041:19;;15700:366;;;:::o;16072:419::-;16238:4;16276:2;16265:9;16261:18;16253:26;;16325:9;16319:4;16315:20;16311:1;16300:9;16296:17;16289:47;16353:131;16479:4;16353:131;:::i;:::-;16345:139;;16072:419;;;:::o;16497:228::-;16637:34;16633:1;16625:6;16621:14;16614:58;16706:11;16701:2;16693:6;16689:15;16682:36;16497:228;:::o;16731:366::-;16873:3;16894:67;16958:2;16953:3;16894:67;:::i;:::-;16887:74;;16970:93;17059:3;16970:93;:::i;:::-;17088:2;17083:3;17079:12;17072:19;;16731:366;;;:::o;17103:419::-;17269:4;17307:2;17296:9;17292:18;17284:26;;17356:9;17350:4;17346:20;17342:1;17331:9;17327:17;17320:47;17384:131;17510:4;17384:131;:::i;:::-;17376:139;;17103:419;;;:::o;17528:250::-;17668:34;17664:1;17656:6;17652:14;17645:58;17737:33;17732:2;17724:6;17720:15;17713:58;17528:250;:::o;17784:366::-;17926:3;17947:67;18011:2;18006:3;17947:67;:::i;:::-;17940:74;;18023:93;18112:3;18023:93;:::i;:::-;18141:2;18136:3;18132:12;18125:19;;17784:366;;;:::o;18156:419::-;18322:4;18360:2;18349:9;18345:18;18337:26;;18409:9;18403:4;18399:20;18395:1;18384:9;18380:17;18373:47;18437:131;18563:4;18437:131;:::i;:::-;18429:139;;18156:419;;;:::o;18581:178::-;18721:30;18717:1;18709:6;18705:14;18698:54;18581:178;:::o;18765:366::-;18907:3;18928:67;18992:2;18987:3;18928:67;:::i;:::-;18921:74;;19004:93;19093:3;19004:93;:::i;:::-;19122:2;19117:3;19113:12;19106:19;;18765:366;;;:::o;19137:419::-;19303:4;19341:2;19330:9;19326:18;19318:26;;19390:9;19384:4;19380:20;19376:1;19365:9;19361:17;19354:47;19418:131;19544:4;19418:131;:::i;:::-;19410:139;;19137:419;;;:::o;19562:191::-;19602:3;19621:20;19639:1;19621:20;:::i;:::-;19616:25;;19655:20;19673:1;19655:20;:::i;:::-;19650:25;;19698:1;19695;19691:9;19684:16;;19719:3;19716:1;19713:10;19710:36;;;19726:18;;:::i;:::-;19710:36;19562:191;;;;:::o;19759:222::-;19899:34;19895:1;19887:6;19883:14;19876:58;19968:5;19963:2;19955:6;19951:15;19944:30;19759:222;:::o;19987:366::-;20129:3;20150:67;20214:2;20209:3;20150:67;:::i;:::-;20143:74;;20226:93;20315:3;20226:93;:::i;:::-;20344:2;20339:3;20335:12;20328:19;;19987:366;;;:::o;20359:419::-;20525:4;20563:2;20552:9;20548:18;20540:26;;20612:9;20606:4;20602:20;20598:1;20587:9;20583:17;20576:47;20640:131;20766:4;20640:131;:::i;:::-;20632:139;;20359:419;;;:::o;20784:410::-;20824:7;20847:20;20865:1;20847:20;:::i;:::-;20842:25;;20881:20;20899:1;20881:20;:::i;:::-;20876:25;;20936:1;20933;20929:9;20958:30;20976:11;20958:30;:::i;:::-;20947:41;;21137:1;21128:7;21124:15;21121:1;21118:22;21098:1;21091:9;21071:83;21048:139;;21167:18;;:::i;:::-;21048:139;20832:362;20784:410;;;;:::o;21200:180::-;21248:77;21245:1;21238:88;21345:4;21342:1;21335:15;21369:4;21366:1;21359:15;21386:185;21426:1;21443:20;21461:1;21443:20;:::i;:::-;21438:25;;21477:20;21495:1;21477:20;:::i;:::-;21472:25;;21516:1;21506:35;;21521:18;;:::i;:::-;21506:35;21563:1;21560;21556:9;21551:14;;21386:185;;;;:::o;21577:194::-;21617:4;21637:20;21655:1;21637:20;:::i;:::-;21632:25;;21671:20;21689:1;21671:20;:::i;:::-;21666:25;;21715:1;21712;21708:9;21700:17;;21739:1;21733:4;21730:11;21727:37;;;21744:18;;:::i;:::-;21727:37;21577:194;;;;:::o;21777:229::-;21917:34;21913:1;21905:6;21901:14;21894:58;21986:12;21981:2;21973:6;21969:15;21962:37;21777:229;:::o;22012:366::-;22154:3;22175:67;22239:2;22234:3;22175:67;:::i;:::-;22168:74;;22251:93;22340:3;22251:93;:::i;:::-;22369:2;22364:3;22360:12;22353:19;;22012:366;;;:::o;22384:419::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22637:9;22631:4;22627:20;22623:1;22612:9;22608:17;22601:47;22665:131;22791:4;22665:131;:::i;:::-;22657:139;;22384:419;;;:::o;22809:180::-;22857:77;22854:1;22847:88;22954:4;22951:1;22944:15;22978:4;22975:1;22968:15;22995:143;23052:5;23083:6;23077:13;23068:22;;23099:33;23126:5;23099:33;:::i;:::-;22995:143;;;;:::o;23144:351::-;23214:6;23263:2;23251:9;23242:7;23238:23;23234:32;23231:119;;;23269:79;;:::i;:::-;23231:119;23389:1;23414:64;23470:7;23461:6;23450:9;23446:22;23414:64;:::i;:::-;23404:74;;23360:128;23144:351;;;;:::o;23501:85::-;23546:7;23575:5;23564:16;;23501:85;;;:::o;23592:158::-;23650:9;23683:61;23701:42;23710:32;23736:5;23710:32;:::i;:::-;23701:42;:::i;:::-;23683:61;:::i;:::-;23670:74;;23592:158;;;:::o;23756:147::-;23851:45;23890:5;23851:45;:::i;:::-;23846:3;23839:58;23756:147;;:::o;23909:114::-;23976:6;24010:5;24004:12;23994:22;;23909:114;;;:::o;24029:184::-;24128:11;24162:6;24157:3;24150:19;24202:4;24197:3;24193:14;24178:29;;24029:184;;;;:::o;24219:132::-;24286:4;24309:3;24301:11;;24339:4;24334:3;24330:14;24322:22;;24219:132;;;:::o;24357:108::-;24434:24;24452:5;24434:24;:::i;:::-;24429:3;24422:37;24357:108;;:::o;24471:179::-;24540:10;24561:46;24603:3;24595:6;24561:46;:::i;:::-;24639:4;24634:3;24630:14;24616:28;;24471:179;;;;:::o;24656:113::-;24726:4;24758;24753:3;24749:14;24741:22;;24656:113;;;:::o;24805:732::-;24924:3;24953:54;25001:5;24953:54;:::i;:::-;25023:86;25102:6;25097:3;25023:86;:::i;:::-;25016:93;;25133:56;25183:5;25133:56;:::i;:::-;25212:7;25243:1;25228:284;25253:6;25250:1;25247:13;25228:284;;;25329:6;25323:13;25356:63;25415:3;25400:13;25356:63;:::i;:::-;25349:70;;25442:60;25495:6;25442:60;:::i;:::-;25432:70;;25288:224;25275:1;25272;25268:9;25263:14;;25228:284;;;25232:14;25528:3;25521:10;;24929:608;;;24805:732;;;;:::o;25543:831::-;25806:4;25844:3;25833:9;25829:19;25821:27;;25858:71;25926:1;25915:9;25911:17;25902:6;25858:71;:::i;:::-;25939:80;26015:2;26004:9;26000:18;25991:6;25939:80;:::i;:::-;26066:9;26060:4;26056:20;26051:2;26040:9;26036:18;26029:48;26094:108;26197:4;26188:6;26094:108;:::i;:::-;26086:116;;26212:72;26280:2;26269:9;26265:18;26256:6;26212:72;:::i;:::-;26294:73;26362:3;26351:9;26347:19;26338:6;26294:73;:::i;:::-;25543:831;;;;;;;;:::o;26380:177::-;26520:29;26516:1;26508:6;26504:14;26497:53;26380:177;:::o;26563:366::-;26705:3;26726:67;26790:2;26785:3;26726:67;:::i;:::-;26719:74;;26802:93;26891:3;26802:93;:::i;:::-;26920:2;26915:3;26911:12;26904:19;;26563:366;;;:::o;26935:419::-;27101:4;27139:2;27128:9;27124:18;27116:26;;27188:9;27182:4;27178:20;27174:1;27163:9;27159:17;27152:47;27216:131;27342:4;27216:131;:::i;:::-;27208:139;;26935:419;;;:::o;27360:220::-;27500:34;27496:1;27488:6;27484:14;27477:58;27569:3;27564:2;27556:6;27552:15;27545:28;27360:220;:::o;27586:366::-;27728:3;27749:67;27813:2;27808:3;27749:67;:::i;:::-;27742:74;;27825:93;27914:3;27825:93;:::i;:::-;27943:2;27938:3;27934:12;27927:19;;27586:366;;;:::o;27958:419::-;28124:4;28162:2;28151:9;28147:18;28139:26;;28211:9;28205:4;28201:20;28197:1;28186:9;28182:17;28175:47;28239:131;28365:4;28239:131;:::i;:::-;28231:139;;27958:419;;;:::o

Swarm Source

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