ETH Price: $2,935.93 (-4.29%)
Gas: 2 Gwei

Token

DYKWIM (DYKWIM)
 

Overview

Max Total Supply

100,000,000 DYKWIM

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
2oxic.eth
Balance
2,627,734.542601257 DYKWIM

Value
$0.00
0xA8ad31d37819D3542a3a0372Eae5fd815fd3cf6A
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:
DYKWIM

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
// Submitted for moon. DYKWIM?

 _______  __      __ __    __ __       __ ______ __       __ 
/       \/  \    /  /  |  /  /  |  _  /  /      /  \     /  |
$$$$$$$  $$  \  /$$/$$ | /$$/$$ | / \ $$ $$$$$$/$$  \   /$$ |
$$ |  $$ |$$  \/$$/ $$ |/$$/ $$ |/$  \$$ | $$ | $$$  \ /$$$ |
$$ |  $$ | $$  $$/  $$  $$<  $$ /$$$  $$ | $$ | $$$$  /$$$$ |
$$ |  $$ |  $$$$/   $$$$$  \ $$ $$/$$ $$ | $$ | $$ $$ $$/$$ |
$$ |__$$ |   $$ |   $$ |$$  \$$$$/  $$$$ |_$$ |_$$ |$$$/ $$ |
$$    $$/    $$ |   $$ | $$  $$$/    $$$ / $$   $$ | $/  $$ |
$$$$$$$/     $$/    $$/   $$/$$/      $$/$$$$$$/$$/      $$/ 
                                                             


*/




// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

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

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );  
}

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);
}

contract DYKWIM is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"DYKWIM";
    string private constant _symbol = unicode"DYKWIM";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 15;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 44;
  
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

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

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xb38ca938858A80BD00Ff14EF73132f5e85355B69);
    address payable private _marketingAddress = payable(0xb38ca938858A80BD00Ff14EF73132f5e85355B69);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount =  3 * (_tTotal/100);
    uint256 public _maxWalletSize = 3 * (_tTotal/100);
    uint256 public _swapTokensAtAmount = 30 *(_tTotal/1000);

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

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

        if (from != owner() && to != owner()) {

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
    
    function setTrading(bool _tradingOpen) public onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

    function setMaxAll() public onlyOwner {
        _maxWalletSize = _tTotal;
        _maxTxAmount = _tTotal;
    }
}

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setMaxAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a6200001491906200075b565b6305f5e100620000259190620007ac565b6000196200003491906200083c565b60001962000043919062000874565b6006556000600855600f6009556000600a55602c600b55600a54600c55600b54600d55600c54600e55600d54600f5573b38ca938858a80bd00ff14ef73132f5e85355b69601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b38ca938858a80bd00ff14ef73132f5e85355b69601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555060646009600a6200017e91906200075b565b6305f5e1006200018f9190620007ac565b6200019b9190620008af565b6003620001a99190620007ac565b60165560646009600a620001be91906200075b565b6305f5e100620001cf9190620007ac565b620001db9190620008af565b6003620001e99190620007ac565b6017556103e86009600a620001ff91906200075b565b6305f5e100620002109190620007ac565b6200021c9190620008af565b601e6200022a9190620007ac565b6018553480156200023a57600080fd5b5060006200024d6200059060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620003026200059060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620003566200059860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005036200059060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200056291906200075b565b6305f5e100620005739190620007ac565b604051620005829190620008f8565b60405180910390a362000915565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200064f57808604811115620006275762000626620005c1565b5b6001851615620006375780820291505b80810290506200064785620005f0565b945062000607565b94509492505050565b6000826200066a57600190506200073d565b816200067a57600090506200073d565b81600181146200069357600281146200069e57620006d4565b60019150506200073d565b60ff841115620006b357620006b2620005c1565b5b8360020a915084821115620006cd57620006cc620005c1565b5b506200073d565b5060208310610133831016604e8410600b84101617156200070e5782820a905083811115620007085762000707620005c1565b5b6200073d565b6200071d8484846001620005fd565b92509050818404811115620007375762000736620005c1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007688262000744565b915062000775836200074e565b9250620007a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000658565b905092915050565b6000620007b98262000744565b9150620007c68362000744565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620008025762000801620005c1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008498262000744565b9150620008568362000744565b9250826200086957620008686200080d565b5b828206905092915050565b6000620008818262000744565b91506200088e8362000744565b925082821015620008a457620008a3620005c1565b5b828203905092915050565b6000620008bc8262000744565b9150620008c98362000744565b925082620008dc57620008db6200080d565b5b828204905092915050565b620008f28162000744565b82525050565b60006020820190506200090f6000830184620008e7565b92915050565b613ca580620009256000396000f3fe6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd80146105f5578063dd62ed3e1461060c578063ea1644d514610649578063f2fde38b14610672576101c2565b8063a2a957bb14610552578063a9059cbb1461057b578063bfd79284146105b8576101c2565b80638f70ccf7116100c65780638f70ccf7146104aa5780638f9a55c0146104d357806395d89b41146104fe57806398a5c31514610529576101c2565b80637d1db4a5146104175780637f2feddc146104425780638da5cb5b1461047f576101c2565b806341c2bd55116101595780636fc3eaec116101335780636fc3eaec1461038357806370a082311461039a578063715018a6146103d757806374010ece146103ee576101c2565b806341c2bd551461031857806349bd5a5e1461032f5780636d8aa8f81461035a576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069b565b6040516101e99190612bbf565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612c7a565b6106d8565b6040516102269190612cd5565b60405180910390f35b34801561023b57600080fd5b506102446106f6565b6040516102519190612d4f565b60405180910390f35b34801561026657600080fd5b5061026f61071c565b60405161027c9190612d79565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612d94565b610740565b6040516102b99190612cd5565b60405180910390f35b3480156102ce57600080fd5b506102d7610819565b6040516102e49190612d79565b60405180910390f35b3480156102f957600080fd5b5061030261081f565b60405161030f9190612e03565b60405180910390f35b34801561032457600080fd5b5061032d610828565b005b34801561033b57600080fd5b50610344610905565b6040516103519190612e2d565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612e74565b61092b565b005b34801561038f57600080fd5b506103986109dd565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190612ea1565b610aae565b6040516103ce9190612d79565b60405180910390f35b3480156103e357600080fd5b506103ec610aff565b005b3480156103fa57600080fd5b5061041560048036038101906104109190612ece565b610c52565b005b34801561042357600080fd5b5061042c610cf1565b6040516104399190612d79565b60405180910390f35b34801561044e57600080fd5b5061046960048036038101906104649190612ea1565b610cf7565b6040516104769190612d79565b60405180910390f35b34801561048b57600080fd5b50610494610d0f565b6040516104a19190612e2d565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612e74565b610d38565b005b3480156104df57600080fd5b506104e861100c565b6040516104f59190612d79565b60405180910390f35b34801561050a57600080fd5b50610513611012565b6040516105209190612bbf565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190612ece565b61104f565b005b34801561055e57600080fd5b5061057960048036038101906105749190612efb565b6110ee565b005b34801561058757600080fd5b506105a2600480360381019061059d9190612c7a565b6111a5565b6040516105af9190612cd5565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612ea1565b6111c3565b6040516105ec9190612cd5565b60405180910390f35b34801561060157600080fd5b5061060a6111e3565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f62565b6112bc565b6040516106409190612d79565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612ece565b611343565b005b34801561067e57600080fd5b5061069960048036038101906106949190612ea1565b6113e2565b005b60606040518060400160405280600681526020017f44594b57494d0000000000000000000000000000000000000000000000000000815250905090565b60006106ec6106e56115a4565b84846115ac565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a61072c9190613104565b6305f5e10061073b919061314f565b905090565b600061074d848484611777565b61080e846107596115a4565b61080985604051806060016040528060288152602001613c4860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bf6115a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ffc9092919063ffffffff16565b6115ac565b600190509392505050565b60185481565b60006009905090565b6108306115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906131f5565b60405180910390fd5b6009600a6108cb9190613104565b6305f5e1006108da919061314f565b6017819055506009600a6108ee9190613104565b6305f5e1006108fd919061314f565b601681905550565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109336115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b7906131f5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a1e6115a4565b73ffffffffffffffffffffffffffffffffffffffff161480610a945750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a7c6115a4565b73ffffffffffffffffffffffffffffffffffffffff16145b610a9d57600080fd5b6000479050610aab81612060565b50565b6000610af8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cc565b9050919050565b610b076115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b906131f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c5a6115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde906131f5565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d406115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc4906131f5565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e6d57600080fd5b505afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea5919061322a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0757600080fd5b505afa158015610f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3f919061322a565b6040518363ffffffff1660e01b8152600401610f5c929190613257565b602060405180830381600087803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae919061322a565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601560146101000a81548160ff0219169083151502179055505050565b60175481565b60606040518060400160405280600681526020017f44594b57494d0000000000000000000000000000000000000000000000000000815250905090565b6110576115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db906131f5565b60405180910390fd5b8060188190555050565b6110f66115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a906131f5565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006111b96111b26115a4565b8484611777565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112246115a4565b73ffffffffffffffffffffffffffffffffffffffff16148061129a5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112826115a4565b73ffffffffffffffffffffffffffffffffffffffff16145b6112a357600080fd5b60006112ae30610aae565b90506112b98161213a565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61134b6115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf906131f5565b60405180910390fd5b8060178190555050565b6113ea6115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e906131f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114de906132f2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613384565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390613416565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161176a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de906134a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e9061353a565b60405180910390fd5b6000811161189a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611891906135cc565b60405180910390fd5b6118a2610d0f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191057506118e0610d0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611cfb57601560149054906101000a900460ff1661199f57611931610d0f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461199e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119959061365e565b60405180910390fd5b5b6016548111156119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db906136ca565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a885750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe9061375c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b745760175481611b2984610aae565b611b33919061377c565b10611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613844565b60405180910390fd5b5b6000611b7f30610aae565b9050600060185482101590506016548210611b9a5760165491505b808015611bb2575060158054906101000a900460ff16155b8015611c0c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c245750601560169054906101000a900460ff165b8015611c7a5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cd05750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cf857611cde8261213a565b60004790506000811115611cf657611cf547612060565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611da25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e555750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e545750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e635760009050611fea565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f0e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f2657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fd15750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fe957600a54600c81905550600b54600d819055505b5b611ff6848484846123c3565b50505050565b6000838311158290612044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203b9190612bbf565b60405180910390fd5b50600083856120539190613864565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120c8573d6000803e3d6000fd5b5050565b6000600654821115612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a9061390a565b60405180910390fd5b600061211d6123f0565b9050612132818461241b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121715761217061392a565b5b60405190808252806020026020018201604052801561219f5781602001602082028036833780820191505090505b50905030816000815181106121b7576121b6613959565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561225957600080fd5b505afa15801561226d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612291919061322a565b816001815181106122a5576122a4613959565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230c30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ac565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352aa4c2283600084306000426040518763ffffffff1660e01b815260040161237396959493929190613a81565b600060405180830381600087803b15801561238d57600080fd5b505af11580156123a1573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123d1576123d0612465565b5b6123dc8484846124a8565b806123ea576123e9612673565b5b50505050565b60008060006123fd612687565b91509150612414818361241b90919063ffffffff16565b9250505090565b600061245d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612722565b905092915050565b6000600c5414801561247957506000600d54145b15612483576124a6565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124ba87612785565b95509550955095509550955061251886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ed90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ad85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125f981612895565b6126038483612952565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126609190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006009600a6126a19190613104565b6305f5e1006126b0919061314f565b90506126e36009600a6126c39190613104565b6305f5e1006126d2919061314f565b60065461241b90919063ffffffff16565b821015612715576006546009600a6126fb9190613104565b6305f5e10061270a919061314f565b93509350505061271e565b81819350935050505b9091565b60008083118290612769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127609190612bbf565b60405180910390fd5b50600083856127789190613b18565b9050809150509392505050565b60008060008060008060008060006127a28a600c54600d5461298c565b92509250925060006127b26123f0565b905060008060006127c58e878787612a22565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ffc565b905092915050565b6000808284612846919061377c565b90508381101561288b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288290613b95565b60405180910390fd5b8091505092915050565b600061289f6123f0565b905060006128b68284612aab90919063ffffffff16565b905061290a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612967826006546127ed90919063ffffffff16565b6006819055506129828160075461283790919063ffffffff16565b6007819055505050565b6000806000806129b860646129aa888a612aab90919063ffffffff16565b61241b90919063ffffffff16565b905060006129e260646129d4888b612aab90919063ffffffff16565b61241b90919063ffffffff16565b90506000612a0b826129fd858c6127ed90919063ffffffff16565b6127ed90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a3b8589612aab90919063ffffffff16565b90506000612a528689612aab90919063ffffffff16565b90506000612a698789612aab90919063ffffffff16565b90506000612a9282612a8485876127ed90919063ffffffff16565b6127ed90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612abe5760009050612b20565b60008284612acc919061314f565b9050828482612adb9190613b18565b14612b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1290613c27565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b60578082015181840152602081019050612b45565b83811115612b6f576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b9182612b26565b612b9b8185612b31565b9350612bab818560208601612b42565b612bb481612b75565b840191505092915050565b60006020820190508181036000830152612bd98184612b86565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612be1565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b600080600060608486031215612dad57612dac612be1565b5b6000612dbb86828701612c2f565b9350506020612dcc86828701612c2f565b9250506040612ddd86828701612c65565b9150509250925092565b600060ff82169050919050565b612dfd81612de7565b82525050565b6000602082019050612e186000830184612df4565b92915050565b612e2781612c06565b82525050565b6000602082019050612e426000830184612e1e565b92915050565b612e5181612cba565b8114612e5c57600080fd5b50565b600081359050612e6e81612e48565b92915050565b600060208284031215612e8a57612e89612be1565b5b6000612e9884828501612e5f565b91505092915050565b600060208284031215612eb757612eb6612be1565b5b6000612ec584828501612c2f565b91505092915050565b600060208284031215612ee457612ee3612be1565b5b6000612ef284828501612c65565b91505092915050565b60008060008060808587031215612f1557612f14612be1565b5b6000612f2387828801612c65565b9450506020612f3487828801612c65565b9350506040612f4587828801612c65565b9250506060612f5687828801612c65565b91505092959194509250565b60008060408385031215612f7957612f78612be1565b5b6000612f8785828601612c2f565b9250506020612f9885828601612c2f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156130285780860481111561300457613003612fa2565b5b60018516156130135780820291505b808102905061302185612fd1565b9450612fe8565b94509492505050565b60008261304157600190506130fd565b8161304f57600090506130fd565b8160018114613065576002811461306f5761309e565b60019150506130fd565b60ff84111561308157613080612fa2565b5b8360020a91508482111561309857613097612fa2565b5b506130fd565b5060208310610133831016604e8410600b84101617156130d35782820a9050838111156130ce576130cd612fa2565b5b6130fd565b6130e08484846001612fde565b925090508184048111156130f7576130f6612fa2565b5b81810290505b9392505050565b600061310f82612c44565b915061311a83612de7565b92506131477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613031565b905092915050565b600061315a82612c44565b915061316583612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561319e5761319d612fa2565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131df602083612b31565b91506131ea826131a9565b602082019050919050565b6000602082019050818103600083015261320e816131d2565b9050919050565b60008151905061322481612c18565b92915050565b6000602082840312156132405761323f612be1565b5b600061324e84828501613215565b91505092915050565b600060408201905061326c6000830185612e1e565b6132796020830184612e1e565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132dc602683612b31565b91506132e782613280565b604082019050919050565b6000602082019050818103600083015261330b816132cf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061336e602483612b31565b915061337982613312565b604082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613400602283612b31565b915061340b826133a4565b604082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613492602583612b31565b915061349d82613436565b604082019050919050565b600060208201905081810360008301526134c181613485565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613524602383612b31565b915061352f826134c8565b604082019050919050565b6000602082019050818103600083015261355381613517565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006135b6602983612b31565b91506135c18261355a565b604082019050919050565b600060208201905081810360008301526135e5816135a9565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613648603f83612b31565b9150613653826135ec565b604082019050919050565b600060208201905081810360008301526136778161363b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006136b4601c83612b31565b91506136bf8261367e565b602082019050919050565b600060208201905081810360008301526136e3816136a7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613746602383612b31565b9150613751826136ea565b604082019050919050565b6000602082019050818103600083015261377581613739565b9050919050565b600061378782612c44565b915061379283612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137c7576137c6612fa2565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061382e602383612b31565b9150613839826137d2565b604082019050919050565b6000602082019050818103600083015261385d81613821565b9050919050565b600061386f82612c44565b915061387a83612c44565b92508282101561388d5761388c612fa2565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006138f4602a83612b31565b91506138ff82613898565b604082019050919050565b60006020820190508181036000830152613923816138e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006139ad6139a86139a384613988565b612cf0565b612c44565b9050919050565b6139bd81613992565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139f881612c06565b82525050565b6000613a0a83836139ef565b60208301905092915050565b6000602082019050919050565b6000613a2e826139c3565b613a3881856139ce565b9350613a43836139df565b8060005b83811015613a74578151613a5b88826139fe565b9750613a6683613a16565b925050600181019050613a47565b5085935050505092915050565b600060c082019050613a966000830189612d6a565b613aa360208301886139b4565b8181036040830152613ab58187613a23565b9050613ac46060830186612e1e565b613ad16080830185612e1e565b613ade60a0830184612d6a565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b2382612c44565b9150613b2e83612c44565b925082613b3e57613b3d613ae9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b7f601b83612b31565b9150613b8a82613b49565b602082019050919050565b60006020820190508181036000830152613bae81613b72565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c11602183612b31565b9150613c1c82613bb5565b604082019050919050565b60006020820190508181036000830152613c4081613c04565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220adec833d50bf98e7730c949e0bdd43cf19a6f8d6b9d9b3d763579e6a012a93dd64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637d1db4a5116100ec578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd80146105f5578063dd62ed3e1461060c578063ea1644d514610649578063f2fde38b14610672576101c2565b8063a2a957bb14610552578063a9059cbb1461057b578063bfd79284146105b8576101c2565b80638f70ccf7116100c65780638f70ccf7146104aa5780638f9a55c0146104d357806395d89b41146104fe57806398a5c31514610529576101c2565b80637d1db4a5146104175780637f2feddc146104425780638da5cb5b1461047f576101c2565b806341c2bd55116101595780636fc3eaec116101335780636fc3eaec1461038357806370a082311461039a578063715018a6146103d757806374010ece146103ee576101c2565b806341c2bd551461031857806349bd5a5e1461032f5780636d8aa8f81461035a576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069b565b6040516101e99190612bbf565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612c7a565b6106d8565b6040516102269190612cd5565b60405180910390f35b34801561023b57600080fd5b506102446106f6565b6040516102519190612d4f565b60405180910390f35b34801561026657600080fd5b5061026f61071c565b60405161027c9190612d79565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612d94565b610740565b6040516102b99190612cd5565b60405180910390f35b3480156102ce57600080fd5b506102d7610819565b6040516102e49190612d79565b60405180910390f35b3480156102f957600080fd5b5061030261081f565b60405161030f9190612e03565b60405180910390f35b34801561032457600080fd5b5061032d610828565b005b34801561033b57600080fd5b50610344610905565b6040516103519190612e2d565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612e74565b61092b565b005b34801561038f57600080fd5b506103986109dd565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190612ea1565b610aae565b6040516103ce9190612d79565b60405180910390f35b3480156103e357600080fd5b506103ec610aff565b005b3480156103fa57600080fd5b5061041560048036038101906104109190612ece565b610c52565b005b34801561042357600080fd5b5061042c610cf1565b6040516104399190612d79565b60405180910390f35b34801561044e57600080fd5b5061046960048036038101906104649190612ea1565b610cf7565b6040516104769190612d79565b60405180910390f35b34801561048b57600080fd5b50610494610d0f565b6040516104a19190612e2d565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612e74565b610d38565b005b3480156104df57600080fd5b506104e861100c565b6040516104f59190612d79565b60405180910390f35b34801561050a57600080fd5b50610513611012565b6040516105209190612bbf565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190612ece565b61104f565b005b34801561055e57600080fd5b5061057960048036038101906105749190612efb565b6110ee565b005b34801561058757600080fd5b506105a2600480360381019061059d9190612c7a565b6111a5565b6040516105af9190612cd5565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612ea1565b6111c3565b6040516105ec9190612cd5565b60405180910390f35b34801561060157600080fd5b5061060a6111e3565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f62565b6112bc565b6040516106409190612d79565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612ece565b611343565b005b34801561067e57600080fd5b5061069960048036038101906106949190612ea1565b6113e2565b005b60606040518060400160405280600681526020017f44594b57494d0000000000000000000000000000000000000000000000000000815250905090565b60006106ec6106e56115a4565b84846115ac565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a61072c9190613104565b6305f5e10061073b919061314f565b905090565b600061074d848484611777565b61080e846107596115a4565b61080985604051806060016040528060288152602001613c4860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bf6115a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ffc9092919063ffffffff16565b6115ac565b600190509392505050565b60185481565b60006009905090565b6108306115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906131f5565b60405180910390fd5b6009600a6108cb9190613104565b6305f5e1006108da919061314f565b6017819055506009600a6108ee9190613104565b6305f5e1006108fd919061314f565b601681905550565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109336115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b7906131f5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a1e6115a4565b73ffffffffffffffffffffffffffffffffffffffff161480610a945750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a7c6115a4565b73ffffffffffffffffffffffffffffffffffffffff16145b610a9d57600080fd5b6000479050610aab81612060565b50565b6000610af8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cc565b9050919050565b610b076115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b906131f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c5a6115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde906131f5565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d406115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc4906131f5565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e6d57600080fd5b505afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea5919061322a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0757600080fd5b505afa158015610f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3f919061322a565b6040518363ffffffff1660e01b8152600401610f5c929190613257565b602060405180830381600087803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae919061322a565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601560146101000a81548160ff0219169083151502179055505050565b60175481565b60606040518060400160405280600681526020017f44594b57494d0000000000000000000000000000000000000000000000000000815250905090565b6110576115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db906131f5565b60405180910390fd5b8060188190555050565b6110f66115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a906131f5565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006111b96111b26115a4565b8484611777565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112246115a4565b73ffffffffffffffffffffffffffffffffffffffff16148061129a5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112826115a4565b73ffffffffffffffffffffffffffffffffffffffff16145b6112a357600080fd5b60006112ae30610aae565b90506112b98161213a565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61134b6115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf906131f5565b60405180910390fd5b8060178190555050565b6113ea6115a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e906131f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114de906132f2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613384565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390613416565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161176a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de906134a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e9061353a565b60405180910390fd5b6000811161189a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611891906135cc565b60405180910390fd5b6118a2610d0f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561191057506118e0610d0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611cfb57601560149054906101000a900460ff1661199f57611931610d0f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461199e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119959061365e565b60405180910390fd5b5b6016548111156119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db906136ca565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a885750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe9061375c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b745760175481611b2984610aae565b611b33919061377c565b10611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613844565b60405180910390fd5b5b6000611b7f30610aae565b9050600060185482101590506016548210611b9a5760165491505b808015611bb2575060158054906101000a900460ff16155b8015611c0c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c245750601560169054906101000a900460ff165b8015611c7a5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cd05750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cf857611cde8261213a565b60004790506000811115611cf657611cf547612060565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611da25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e555750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e545750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e635760009050611fea565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f0e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f2657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fd15750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fe957600a54600c81905550600b54600d819055505b5b611ff6848484846123c3565b50505050565b6000838311158290612044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203b9190612bbf565b60405180910390fd5b50600083856120539190613864565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120c8573d6000803e3d6000fd5b5050565b6000600654821115612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a9061390a565b60405180910390fd5b600061211d6123f0565b9050612132818461241b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121715761217061392a565b5b60405190808252806020026020018201604052801561219f5781602001602082028036833780820191505090505b50905030816000815181106121b7576121b6613959565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561225957600080fd5b505afa15801561226d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612291919061322a565b816001815181106122a5576122a4613959565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230c30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ac565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352aa4c2283600084306000426040518763ffffffff1660e01b815260040161237396959493929190613a81565b600060405180830381600087803b15801561238d57600080fd5b505af11580156123a1573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123d1576123d0612465565b5b6123dc8484846124a8565b806123ea576123e9612673565b5b50505050565b60008060006123fd612687565b91509150612414818361241b90919063ffffffff16565b9250505090565b600061245d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612722565b905092915050565b6000600c5414801561247957506000600d54145b15612483576124a6565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124ba87612785565b95509550955095509550955061251886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ed90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ad85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125f981612895565b6126038483612952565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126609190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006009600a6126a19190613104565b6305f5e1006126b0919061314f565b90506126e36009600a6126c39190613104565b6305f5e1006126d2919061314f565b60065461241b90919063ffffffff16565b821015612715576006546009600a6126fb9190613104565b6305f5e10061270a919061314f565b93509350505061271e565b81819350935050505b9091565b60008083118290612769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127609190612bbf565b60405180910390fd5b50600083856127789190613b18565b9050809150509392505050565b60008060008060008060008060006127a28a600c54600d5461298c565b92509250925060006127b26123f0565b905060008060006127c58e878787612a22565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ffc565b905092915050565b6000808284612846919061377c565b90508381101561288b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288290613b95565b60405180910390fd5b8091505092915050565b600061289f6123f0565b905060006128b68284612aab90919063ffffffff16565b905061290a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612967826006546127ed90919063ffffffff16565b6006819055506129828160075461283790919063ffffffff16565b6007819055505050565b6000806000806129b860646129aa888a612aab90919063ffffffff16565b61241b90919063ffffffff16565b905060006129e260646129d4888b612aab90919063ffffffff16565b61241b90919063ffffffff16565b90506000612a0b826129fd858c6127ed90919063ffffffff16565b6127ed90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a3b8589612aab90919063ffffffff16565b90506000612a528689612aab90919063ffffffff16565b90506000612a698789612aab90919063ffffffff16565b90506000612a9282612a8485876127ed90919063ffffffff16565b6127ed90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612abe5760009050612b20565b60008284612acc919061314f565b9050828482612adb9190613b18565b14612b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1290613c27565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b60578082015181840152602081019050612b45565b83811115612b6f576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b9182612b26565b612b9b8185612b31565b9350612bab818560208601612b42565b612bb481612b75565b840191505092915050565b60006020820190508181036000830152612bd98184612b86565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612be1565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b600080600060608486031215612dad57612dac612be1565b5b6000612dbb86828701612c2f565b9350506020612dcc86828701612c2f565b9250506040612ddd86828701612c65565b9150509250925092565b600060ff82169050919050565b612dfd81612de7565b82525050565b6000602082019050612e186000830184612df4565b92915050565b612e2781612c06565b82525050565b6000602082019050612e426000830184612e1e565b92915050565b612e5181612cba565b8114612e5c57600080fd5b50565b600081359050612e6e81612e48565b92915050565b600060208284031215612e8a57612e89612be1565b5b6000612e9884828501612e5f565b91505092915050565b600060208284031215612eb757612eb6612be1565b5b6000612ec584828501612c2f565b91505092915050565b600060208284031215612ee457612ee3612be1565b5b6000612ef284828501612c65565b91505092915050565b60008060008060808587031215612f1557612f14612be1565b5b6000612f2387828801612c65565b9450506020612f3487828801612c65565b9350506040612f4587828801612c65565b9250506060612f5687828801612c65565b91505092959194509250565b60008060408385031215612f7957612f78612be1565b5b6000612f8785828601612c2f565b9250506020612f9885828601612c2f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156130285780860481111561300457613003612fa2565b5b60018516156130135780820291505b808102905061302185612fd1565b9450612fe8565b94509492505050565b60008261304157600190506130fd565b8161304f57600090506130fd565b8160018114613065576002811461306f5761309e565b60019150506130fd565b60ff84111561308157613080612fa2565b5b8360020a91508482111561309857613097612fa2565b5b506130fd565b5060208310610133831016604e8410600b84101617156130d35782820a9050838111156130ce576130cd612fa2565b5b6130fd565b6130e08484846001612fde565b925090508184048111156130f7576130f6612fa2565b5b81810290505b9392505050565b600061310f82612c44565b915061311a83612de7565b92506131477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613031565b905092915050565b600061315a82612c44565b915061316583612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561319e5761319d612fa2565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131df602083612b31565b91506131ea826131a9565b602082019050919050565b6000602082019050818103600083015261320e816131d2565b9050919050565b60008151905061322481612c18565b92915050565b6000602082840312156132405761323f612be1565b5b600061324e84828501613215565b91505092915050565b600060408201905061326c6000830185612e1e565b6132796020830184612e1e565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132dc602683612b31565b91506132e782613280565b604082019050919050565b6000602082019050818103600083015261330b816132cf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061336e602483612b31565b915061337982613312565b604082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613400602283612b31565b915061340b826133a4565b604082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613492602583612b31565b915061349d82613436565b604082019050919050565b600060208201905081810360008301526134c181613485565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613524602383612b31565b915061352f826134c8565b604082019050919050565b6000602082019050818103600083015261355381613517565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006135b6602983612b31565b91506135c18261355a565b604082019050919050565b600060208201905081810360008301526135e5816135a9565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613648603f83612b31565b9150613653826135ec565b604082019050919050565b600060208201905081810360008301526136778161363b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006136b4601c83612b31565b91506136bf8261367e565b602082019050919050565b600060208201905081810360008301526136e3816136a7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613746602383612b31565b9150613751826136ea565b604082019050919050565b6000602082019050818103600083015261377581613739565b9050919050565b600061378782612c44565b915061379283612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137c7576137c6612fa2565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061382e602383612b31565b9150613839826137d2565b604082019050919050565b6000602082019050818103600083015261385d81613821565b9050919050565b600061386f82612c44565b915061387a83612c44565b92508282101561388d5761388c612fa2565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006138f4602a83612b31565b91506138ff82613898565b604082019050919050565b60006020820190508181036000830152613923816138e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006139ad6139a86139a384613988565b612cf0565b612c44565b9050919050565b6139bd81613992565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139f881612c06565b82525050565b6000613a0a83836139ef565b60208301905092915050565b6000602082019050919050565b6000613a2e826139c3565b613a3881856139ce565b9350613a43836139df565b8060005b83811015613a74578151613a5b88826139fe565b9750613a6683613a16565b925050600181019050613a47565b5085935050505092915050565b600060c082019050613a966000830189612d6a565b613aa360208301886139b4565b8181036040830152613ab58187613a23565b9050613ac46060830186612e1e565b613ad16080830185612e1e565b613ade60a0830184612d6a565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b2382612c44565b9150613b2e83612c44565b925082613b3e57613b3d613ae9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b7f601b83612b31565b9150613b8a82613b49565b602082019050919050565b60006020820190508181036000830152613bae81613b72565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c11602183612b31565b9150613c1c82613bb5565b604082019050919050565b60006020820190508181036000830152613c4081613c04565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220adec833d50bf98e7730c949e0bdd43cf19a6f8d6b9d9b3d763579e6a012a93dd64736f6c63430008090033

Deployed Bytecode Sourcemap

4407:13168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6621:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7546:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5754:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6898:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7747:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6062:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6807:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17458:114;;;;;;;;;;;;;:::i;:::-;;5802:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17079:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12904:235;;;;;;;;;;;;;:::i;:::-;;7001:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2242:148;;;;;;;;;;;;;:::i;:::-;;17219:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5951:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5496:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2028:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12258:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6006:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6712:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16888:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16545:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7147:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5458:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12660:236;;;;;;;;;;;;;:::i;:::-;;7354:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17335:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2398:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6621:83;6658:13;6691:5;;;;;;;;;;;;;;;;;6684:12;;6621:83;:::o;7546:193::-;7648:4;7670:39;7679:12;:10;:12::i;:::-;7693:7;7702:6;7670:8;:39::i;:::-;7727:4;7720:11;;7546:193;;;;:::o;5754:41::-;;;;;;;;;;;;;:::o;6898:95::-;6951:7;4640:1;4981:2;:13;;;;:::i;:::-;4967:11;:27;;;;:::i;:::-;6971:14;;6898:95;:::o;7747:446::-;7879:4;7896:36;7906:6;7914:9;7925:6;7896:9;:36::i;:::-;7943:220;7966:6;7987:12;:10;:12::i;:::-;8014:138;8070:6;8014:138;;;;;;;;;;;;;;;;;:11;:19;8026:6;8014:19;;;;;;;;;;;;;;;:33;8034:12;:10;:12::i;:::-;8014:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7943:8;:220::i;:::-;8181:4;8174:11;;7747:446;;;;;:::o;6062:55::-;;;;:::o;6807:83::-;6848:5;4640:1;6866:16;;6807:83;:::o;17458:114::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4640:1:::1;4981:2;:13;;;;:::i;:::-;4967:11;:27;;;;:::i;:::-;17507:14;:24;;;;4640:1;4981:2;:13;;;;:::i;:::-;4967:11;:27;;;;:::i;:::-;17542:12;:22;;;;17458:114::o:0;5802:28::-;;;;;;;;;;;;;:::o;17079:101::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17160:12:::1;17146:11;;:26;;;;;;;;;;;;;;;;;;17079:101:::0;:::o;12904:235::-;12970:19;;;;;;;;;;;12954:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13009:17;;;;;;;;;;;12993:33;;:12;:10;:12::i;:::-;:33;;;12954:72;12946:81;;;;;;13038:26;13067:21;13038:50;;13099:32;13112:18;13099:12;:32::i;:::-;12935:204;12904:235::o;7001:138::-;7067:7;7094:37;7114:7;:16;7122:7;7114:16;;;;;;;;;;;;;;;;7094:19;:37::i;:::-;7087:44;;7001:138;;;:::o;2242:148::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2349:1:::1;2312:40;;2333:6;::::0;::::1;;;;;;;;2312:40;;;;;;;;;;;;2380:1;2363:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2242:148::o:0;17219:108::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17308:11:::1;17293:12;:26;;;;17219:108:::0;:::o;5951:48::-;;;;:::o;5496:43::-;;;;;;;;;;;;;;;;;:::o;2028:79::-;2066:7;2093:6;;;;;;;;;;;2086:13;;2028:79;:::o;12258:394::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12325:35:::1;12382:42;12325:100;;12454:16;12436:15;;:34;;;;;;;;;;;;;;;;;;12515:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12497:70;;;12576:4;12583:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12497:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12481:13;;:126;;;;;;;;;;;;;;;;;;12632:12;12618:11;;:26;;;;;;;;;;;;;;;;;;12314:338;12258:394:::0;:::o;6006:49::-;;;;:::o;6712:87::-;6751:13;6784:7;;;;;;;;;;;;;;;;;6777:14;;6712:87;:::o;16888:139::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17001:18:::1;16979:19;:40;;;;16888:139:::0;:::o;16545:291::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16696:13:::1;16679:14;:30;;;;16738:14;16720:15;:32;;;;16778:11;16763:12;:26;;;;16816:12;16800:13;:28;;;;16545:291:::0;;;;:::o;7147:199::-;7252:4;7274:42;7284:12;:10;:12::i;:::-;7298:9;7309:6;7274:9;:42::i;:::-;7334:4;7327:11;;7147:199;;;;:::o;5458:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12660:236::-;12726:19;;;;;;;;;;;12710:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12765:17;;;;;;;;;;;12749:33;;:12;:10;:12::i;:::-;:33;;;12710:72;12702:81;;;;;;12794:23;12820:24;12838:4;12820:9;:24::i;:::-;12794:50;;12855:33;12872:15;12855:16;:33::i;:::-;12691:205;12660:236::o;7354:184::-;7471:7;7503:11;:18;7515:5;7503:18;;;;;;;;;;;;;;;:27;7522:7;7503:27;;;;;;;;;;;;;;;;7496:34;;7354:184;;;;:::o;17335:115::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17429:13:::1;17412:14;:30;;;;17335:115:::0;:::o;2398:244::-;2165:12;:10;:12::i;:::-;2155:22;;:6;;;;;;;;;;:22;;;2147:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2507:1:::1;2487:22;;:8;:22;;;;2479:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2597:8;2568:38;;2589:6;::::0;::::1;;;;;;;;2568:38;;;;;;;;;;;;2626:8;2617:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2398:244:::0;:::o;784:98::-;837:7;864:10;857:17;;784:98;:::o;8884:369::-;9028:1;9011:19;;:5;:19;;;;9003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9109:1;9090:21;;:7;:21;;;;9082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9191:6;9161:11;:18;9173:5;9161:18;;;;;;;;;;;;;;;:27;9180:7;9161:27;;;;;;;;;;;;;;;:36;;;;9229:7;9213:32;;9222:5;9213:32;;;9238:6;9213:32;;;;;;:::i;:::-;;;;;;;;8884:369;;;:::o;9261:2330::-;9399:1;9383:18;;:4;:18;;;;9375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9476:1;9462:16;;:2;:16;;;;9454:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9546:1;9537:6;:10;9529:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9618:7;:5;:7::i;:::-;9610:15;;:4;:15;;;;:32;;;;;9635:7;:5;:7::i;:::-;9629:13;;:2;:13;;;;9610:32;9606:1259;;;9699:11;;;;;;;;;;;9694:144;;9747:7;:5;:7::i;:::-;9739:15;;:4;:15;;;9731:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9694:144;9872:12;;9862:6;:22;;9854:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9941:4;:10;9946:4;9941:10;;;;;;;;;;;;;;;;;;;;;;;;;9940:11;:24;;;;;9956:4;:8;9961:2;9956:8;;;;;;;;;;;;;;;;;;;;;;;;;9955:9;9940:24;9932:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10030:13;;;;;;;;;;;10024:19;;:2;:19;;;10021:146;;10097:14;;10088:6;10072:13;10082:2;10072:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10064:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10021:146;10183:28;10214:24;10232:4;10214:9;:24::i;:::-;10183:55;;10253:12;10292:19;;10268:20;:43;;10253:58;;10355:12;;10331:20;:36;10328:124;;10424:12;;10401:35;;10328:124;10472:7;:18;;;;;10484:6;;;;;;;;;;10483:7;10472:18;:43;;;;;10502:13;;;;;;;;;;;10494:21;;:4;:21;;;;10472:43;:58;;;;;10519:11;;;;;;;;;;;10472:58;:87;;;;;10535:18;:24;10554:4;10535:24;;;;;;;;;;;;;;;;;;;;;;;;;10534:25;10472:87;:114;;;;;10564:18;:22;10583:2;10564:22;;;;;;;;;;;;;;;;;;;;;;;;;10563:23;10472:114;10468:386;;;10607:38;10624:20;10607:16;:38::i;:::-;10664:26;10693:21;10664:50;;10758:1;10737:18;:22;10733:106;;;10784:35;10797:21;10784:12;:35::i;:::-;10733:106;10588:266;10468:386;9644:1221;;9606:1259;10877:12;10892:4;10877:19;;10941:18;:24;10960:4;10941:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10969:18;:22;10988:2;10969:22;;;;;;;;;;;;;;;;;;;;;;;;;10941:50;10940:102;;;;11005:13;;;;;;;;;;;10997:21;;:4;:21;;;;:44;;;;;11028:13;;;;;;;;;;;11022:19;;:2;:19;;;;10997:44;10940:102;10936:594;;;11069:5;11059:15;;10936:594;;;11152:13;;;;;;;;;;;11144:21;;:4;:21;;;:55;;;;;11183:15;;;;;;;;;;;11169:30;;:2;:30;;;;11144:55;11141:162;;;11232:14;;11220:9;:26;;;;11275:12;;11265:7;:22;;;;11141:162;11362:13;;;;;;;;;;;11356:19;;:2;:19;;;:55;;;;;11395:15;;;;;;;;;;;11379:32;;:4;:32;;;;11356:55;11352:165;;;11444:15;;11432:9;:27;;;;11488:13;;11478:7;:23;;;;11352:165;10936:594;11542:41;11557:4;11563:2;11567:6;11575:7;11542:14;:41::i;:::-;9364:2227;9261:2330;;;:::o;3006:224::-;3126:7;3159:1;3154;:6;;3162:12;3146:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3186:9;3202:1;3198;:5;;;;:::i;:::-;3186:17;;3221:1;3214:8;;;3006:224;;;;;:::o;12147:99::-;12204:17;;;;;;;;;;;:26;;:34;12231:6;12204:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12147:99;:::o;8201:323::-;8296:7;8354;;8343;:18;;8321:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8442:19;8464:10;:8;:10::i;:::-;8442:32;;8492:24;8504:11;8492:7;:11;;:24;;;;:::i;:::-;8485:31;;;8201:323;;;:::o;11599:540::-;6220:4;6211:6;;:13;;;;;;;;;;;;;;;;;;11677:21:::1;11715:1;11701:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11677:40;;11746:4;11728;11733:1;11728:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11772:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11762:4;11767:1;11762:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11805:62;11822:4;11837:15;;;;;;;;;;;11855:11;11805:8;:62::i;:::-;11878:15;;;;;;;;;;;:66;;;11959:11;11985:1;12001:4;12028;12048:42;12105:15;11878:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11666:473;6257:5:::0;6248:6;;:14;;;;;;;;;;;;;;;;;;11599:540;:::o;13147:282::-;13303:7;13298:28;;13312:14;:12;:14::i;:::-;13298:28;13337:44;13355:6;13363:9;13374:6;13337:17;:44::i;:::-;13397:7;13392:29;;13406:15;:13;:15::i;:::-;13392:29;13147:282;;;;:::o;16108:164::-;16150:7;16171:15;16188;16207:19;:17;:19::i;:::-;16170:56;;;;16244:20;16256:7;16244;:11;;:20;;;;:::i;:::-;16237:27;;;;16108:164;:::o;3492:132::-;3550:7;3577:39;3581:1;3584;3577:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3570:46;;3492:132;;;;:::o;8532:219::-;8592:1;8579:9;;:14;:30;;;;;8608:1;8597:7;;:12;8579:30;8575:43;;;8611:7;;8575:43;8650:9;;8630:17;:29;;;;8688:7;;8670:15;:25;;;;8720:1;8708:9;:13;;;;8742:1;8732:7;:11;;;;8532:219;:::o;13437:610::-;13584:15;13614:23;13652:12;13679:23;13717:12;13744:13;13771:19;13782:7;13771:10;:19::i;:::-;13569:221;;;;;;;;;;;;13819:28;13839:7;13819;:15;13827:6;13819:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13801:7;:15;13809:6;13801:15;;;;;;;;;;;;;;;:46;;;;13879:39;13902:15;13879:7;:18;13887:9;13879:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13858:7;:18;13866:9;13858:18;;;;;;;;;;;;;;;:60;;;;13929:16;13939:5;13929:9;:16::i;:::-;13956:23;13968:4;13974;13956:11;:23::i;:::-;14012:9;13995:44;;14004:6;13995:44;;;14023:15;13995:44;;;;;;:::i;:::-;;;;;;;;13558:489;;;;;;13437:610;;;:::o;8759:117::-;8815:17;;8803:9;:29;;;;8853:15;;8843:7;:25;;;;8759:117::o;16280:257::-;16331:7;16340;16360:15;16378:7;;16360:25;;16396:15;4640:1;4981:2;:13;;;;:::i;:::-;4967:11;:27;;;;:::i;:::-;16396:25;;16446:20;4640:1;4981:2;:13;;;;:::i;:::-;4967:11;:27;;;;:::i;:::-;16446:7;;:11;;:20;;;;:::i;:::-;16436:7;:30;16432:61;;;16476:7;;4640:1;4981:2;:13;;;;:::i;:::-;4967:11;:27;;;;:::i;:::-;16468:25;;;;;;;;16432:61;16512:7;16521;16504:25;;;;;;16280:257;;;:::o;3632:223::-;3752:7;3784:1;3780;:5;3787:12;3772:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3811:9;3827:1;3823;:5;;;;:::i;:::-;3811:17;;3846:1;3839:8;;;3632:223;;;;;:::o;14466:615::-;14566:7;14588;14610;14632;14654;14676;14712:23;14737:12;14751:13;14781:40;14793:7;14802:9;;14813:7;;14781:11;:40::i;:::-;14711:110;;;;;;14832:19;14854:10;:8;:10::i;:::-;14832:32;;14876:15;14893:23;14918:12;14947:46;14959:7;14968:4;14974:5;14981:11;14947;:46::i;:::-;14875:118;;;;;;15012:7;15021:15;15038:4;15044:15;15061:4;15067:5;15004:69;;;;;;;;;;;;;;;;;;;14466:615;;;;;;;:::o;2862:136::-;2920:7;2947:43;2951:1;2954;2947:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2940:50;;2862:136;;;;:::o;2675:179::-;2733:7;2753:9;2769:1;2765;:5;;;;:::i;:::-;2753:17;;2794:1;2789;:6;;2781:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2845:1;2838:8;;;2675:179;;;;:::o;14055:211::-;14108:19;14130:10;:8;:10::i;:::-;14108:32;;14151:13;14167:22;14177:11;14167:5;:9;;:22;;;;:::i;:::-;14151:38;;14225:33;14252:5;14225:7;:22;14241:4;14225:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14200:7;:22;14216:4;14200:22;;;;;;;;;;;;;;;:58;;;;14097:169;;14055:211;:::o;14274:147::-;14352:17;14364:4;14352:7;;:11;;:17;;;;:::i;:::-;14342:7;:27;;;;14393:20;14408:4;14393:10;;:14;;:20;;;;:::i;:::-;14380:10;:33;;;;14274:147;;:::o;15089:469::-;15258:7;15280;15302;15337:12;15352:30;15378:3;15352:21;15364:8;15352:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15337:45;;15393:13;15409:28;15433:3;15409:19;15421:6;15409:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15393:44;;15448:23;15474:28;15496:5;15474:17;15486:4;15474:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15448:54;;15521:15;15538:4;15544:5;15513:37;;;;;;;;;15089:469;;;;;;;:::o;15566:534::-;15760:7;15782;15804;15839:15;15857:24;15869:11;15857:7;:11;;:24;;;;:::i;:::-;15839:42;;15892:12;15907:21;15916:11;15907:4;:8;;:21;;;;:::i;:::-;15892:36;;15939:13;15955:22;15965:11;15955:5;:9;;:22;;;;:::i;:::-;15939:38;;15988:23;16014:28;16036:5;16014:17;16026:4;16014:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15988:54;;16061:7;16070:15;16087:4;16053:39;;;;;;;;;;15566:534;;;;;;;;:::o;3238:246::-;3296:7;3325:1;3320;:6;3316:47;;;3350:1;3343:8;;;;3316:47;3373:9;3389:1;3385;:5;;;;:::i;:::-;3373:17;;3418:1;3413;3409;:5;;;;:::i;:::-;:10;3401:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3475:1;3468:8;;;3238:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:474::-;8325:6;8333;8382:2;8370:9;8361:7;8357:23;8353:32;8350:119;;;8388:79;;:::i;:::-;8350:119;8508:1;8533:53;8578:7;8569:6;8558:9;8554:22;8533:53;:::i;:::-;8523:63;;8479:117;8635:2;8661:53;8706:7;8697:6;8686:9;8682:22;8661:53;:::i;:::-;8651:63;;8606:118;8257:474;;;;;:::o;8737:180::-;8785:77;8782:1;8775:88;8882:4;8879:1;8872:15;8906:4;8903:1;8896:15;8923:102;8965:8;9012:5;9009:1;9005:13;8984:34;;8923:102;;;:::o;9031:848::-;9092:5;9099:4;9123:6;9114:15;;9147:5;9138:14;;9161:712;9182:1;9172:8;9169:15;9161:712;;;9277:4;9272:3;9268:14;9262:4;9259:24;9256:50;;;9286:18;;:::i;:::-;9256:50;9336:1;9326:8;9322:16;9319:451;;;9751:4;9744:5;9740:16;9731:25;;9319:451;9801:4;9795;9791:15;9783:23;;9831:32;9854:8;9831:32;:::i;:::-;9819:44;;9161:712;;;9031:848;;;;;;;:::o;9885:1073::-;9939:5;10130:8;10120:40;;10151:1;10142:10;;10153:5;;10120:40;10179:4;10169:36;;10196:1;10187:10;;10198:5;;10169:36;10265:4;10313:1;10308:27;;;;10349:1;10344:191;;;;10258:277;;10308:27;10326:1;10317:10;;10328:5;;;10344:191;10389:3;10379:8;10376:17;10373:43;;;10396:18;;:::i;:::-;10373:43;10445:8;10442:1;10438:16;10429:25;;10480:3;10473:5;10470:14;10467:40;;;10487:18;;:::i;:::-;10467:40;10520:5;;;10258:277;;10644:2;10634:8;10631:16;10625:3;10619:4;10616:13;10612:36;10594:2;10584:8;10581:16;10576:2;10570:4;10567:12;10563:35;10547:111;10544:246;;;10700:8;10694:4;10690:19;10681:28;;10735:3;10728:5;10725:14;10722:40;;;10742:18;;:::i;:::-;10722:40;10775:5;;10544:246;10815:42;10853:3;10843:8;10837:4;10834:1;10815:42;:::i;:::-;10800:57;;;;10889:4;10884:3;10880:14;10873:5;10870:25;10867:51;;;10898:18;;:::i;:::-;10867:51;10947:4;10940:5;10936:16;10927:25;;9885:1073;;;;;;:::o;10964:281::-;11022:5;11046:23;11064:4;11046:23;:::i;:::-;11038:31;;11090:25;11106:8;11090:25;:::i;:::-;11078:37;;11134:104;11171:66;11161:8;11155:4;11134:104;:::i;:::-;11125:113;;10964:281;;;;:::o;11251:348::-;11291:7;11314:20;11332:1;11314:20;:::i;:::-;11309:25;;11348:20;11366:1;11348:20;:::i;:::-;11343:25;;11536:1;11468:66;11464:74;11461:1;11458:81;11453:1;11446:9;11439:17;11435:105;11432:131;;;11543:18;;:::i;:::-;11432:131;11591:1;11588;11584:9;11573:20;;11251:348;;;;:::o;11605:182::-;11745:34;11741:1;11733:6;11729:14;11722:58;11605:182;:::o;11793:366::-;11935:3;11956:67;12020:2;12015:3;11956:67;:::i;:::-;11949:74;;12032:93;12121:3;12032:93;:::i;:::-;12150:2;12145:3;12141:12;12134:19;;11793:366;;;:::o;12165:419::-;12331:4;12369:2;12358:9;12354:18;12346:26;;12418:9;12412:4;12408:20;12404:1;12393:9;12389:17;12382:47;12446:131;12572:4;12446:131;:::i;:::-;12438:139;;12165:419;;;:::o;12590:143::-;12647:5;12678:6;12672:13;12663:22;;12694:33;12721:5;12694:33;:::i;:::-;12590:143;;;;:::o;12739:351::-;12809:6;12858:2;12846:9;12837:7;12833:23;12829:32;12826:119;;;12864:79;;:::i;:::-;12826:119;12984:1;13009:64;13065:7;13056:6;13045:9;13041:22;13009:64;:::i;:::-;12999:74;;12955:128;12739:351;;;;:::o;13096:332::-;13217:4;13255:2;13244:9;13240:18;13232:26;;13268:71;13336:1;13325:9;13321:17;13312:6;13268:71;:::i;:::-;13349:72;13417:2;13406:9;13402:18;13393:6;13349:72;:::i;:::-;13096:332;;;;;:::o;13434:225::-;13574:34;13570:1;13562:6;13558:14;13551:58;13643:8;13638:2;13630:6;13626:15;13619:33;13434:225;:::o;13665:366::-;13807:3;13828:67;13892:2;13887:3;13828:67;:::i;:::-;13821:74;;13904:93;13993:3;13904:93;:::i;:::-;14022:2;14017:3;14013:12;14006:19;;13665:366;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14037:419;;;:::o;14462:223::-;14602:34;14598:1;14590:6;14586:14;14579:58;14671:6;14666:2;14658:6;14654:15;14647:31;14462:223;:::o;14691:366::-;14833:3;14854:67;14918:2;14913:3;14854:67;:::i;:::-;14847:74;;14930:93;15019:3;14930:93;:::i;:::-;15048:2;15043:3;15039:12;15032:19;;14691:366;;;:::o;15063:419::-;15229:4;15267:2;15256:9;15252:18;15244:26;;15316:9;15310:4;15306:20;15302:1;15291:9;15287:17;15280:47;15344:131;15470:4;15344:131;:::i;:::-;15336:139;;15063:419;;;:::o;15488:221::-;15628:34;15624:1;15616:6;15612:14;15605:58;15697:4;15692:2;15684:6;15680:15;15673:29;15488:221;:::o;15715:366::-;15857:3;15878:67;15942:2;15937:3;15878:67;:::i;:::-;15871:74;;15954:93;16043:3;15954:93;:::i;:::-;16072:2;16067:3;16063:12;16056:19;;15715:366;;;:::o;16087:419::-;16253:4;16291:2;16280:9;16276:18;16268:26;;16340:9;16334:4;16330:20;16326:1;16315:9;16311:17;16304:47;16368:131;16494:4;16368:131;:::i;:::-;16360:139;;16087:419;;;:::o;16512:224::-;16652:34;16648:1;16640:6;16636:14;16629:58;16721:7;16716:2;16708:6;16704:15;16697:32;16512:224;:::o;16742:366::-;16884:3;16905:67;16969:2;16964:3;16905:67;:::i;:::-;16898:74;;16981:93;17070:3;16981:93;:::i;:::-;17099:2;17094:3;17090:12;17083:19;;16742:366;;;:::o;17114:419::-;17280:4;17318:2;17307:9;17303:18;17295:26;;17367:9;17361:4;17357:20;17353:1;17342:9;17338:17;17331:47;17395:131;17521:4;17395:131;:::i;:::-;17387:139;;17114:419;;;:::o;17539:222::-;17679:34;17675:1;17667:6;17663:14;17656:58;17748:5;17743:2;17735:6;17731:15;17724:30;17539:222;:::o;17767:366::-;17909:3;17930:67;17994:2;17989:3;17930:67;:::i;:::-;17923:74;;18006:93;18095:3;18006:93;:::i;:::-;18124:2;18119:3;18115:12;18108:19;;17767:366;;;:::o;18139:419::-;18305:4;18343:2;18332:9;18328:18;18320:26;;18392:9;18386:4;18382:20;18378:1;18367:9;18363:17;18356:47;18420:131;18546:4;18420:131;:::i;:::-;18412:139;;18139:419;;;:::o;18564:228::-;18704:34;18700:1;18692:6;18688:14;18681:58;18773:11;18768:2;18760:6;18756:15;18749:36;18564:228;:::o;18798:366::-;18940:3;18961:67;19025:2;19020:3;18961:67;:::i;:::-;18954:74;;19037:93;19126:3;19037:93;:::i;:::-;19155:2;19150:3;19146:12;19139:19;;18798:366;;;:::o;19170:419::-;19336:4;19374:2;19363:9;19359:18;19351:26;;19423:9;19417:4;19413:20;19409:1;19398:9;19394:17;19387:47;19451:131;19577:4;19451:131;:::i;:::-;19443:139;;19170:419;;;:::o;19595:250::-;19735:34;19731:1;19723:6;19719:14;19712:58;19804:33;19799:2;19791:6;19787:15;19780:58;19595:250;:::o;19851:366::-;19993:3;20014:67;20078:2;20073:3;20014:67;:::i;:::-;20007:74;;20090:93;20179:3;20090:93;:::i;:::-;20208:2;20203:3;20199:12;20192:19;;19851:366;;;:::o;20223:419::-;20389:4;20427:2;20416:9;20412:18;20404:26;;20476:9;20470:4;20466:20;20462:1;20451:9;20447:17;20440:47;20504:131;20630:4;20504:131;:::i;:::-;20496:139;;20223:419;;;:::o;20648:178::-;20788:30;20784:1;20776:6;20772:14;20765:54;20648:178;:::o;20832:366::-;20974:3;20995:67;21059:2;21054:3;20995:67;:::i;:::-;20988:74;;21071:93;21160:3;21071:93;:::i;:::-;21189:2;21184:3;21180:12;21173:19;;20832:366;;;:::o;21204:419::-;21370:4;21408:2;21397:9;21393:18;21385:26;;21457:9;21451:4;21447:20;21443:1;21432:9;21428:17;21421:47;21485:131;21611:4;21485:131;:::i;:::-;21477:139;;21204:419;;;:::o;21629:222::-;21769:34;21765:1;21757:6;21753:14;21746:58;21838:5;21833:2;21825:6;21821:15;21814:30;21629:222;:::o;21857:366::-;21999:3;22020:67;22084:2;22079:3;22020:67;:::i;:::-;22013:74;;22096:93;22185:3;22096:93;:::i;:::-;22214:2;22209:3;22205:12;22198:19;;21857:366;;;:::o;22229:419::-;22395:4;22433:2;22422:9;22418:18;22410:26;;22482:9;22476:4;22472:20;22468:1;22457:9;22453:17;22446:47;22510:131;22636:4;22510:131;:::i;:::-;22502:139;;22229:419;;;:::o;22654:305::-;22694:3;22713:20;22731:1;22713:20;:::i;:::-;22708:25;;22747:20;22765:1;22747:20;:::i;:::-;22742:25;;22901:1;22833:66;22829:74;22826:1;22823:81;22820:107;;;22907:18;;:::i;:::-;22820:107;22951:1;22948;22944:9;22937:16;;22654:305;;;;:::o;22965:222::-;23105:34;23101:1;23093:6;23089:14;23082:58;23174:5;23169:2;23161:6;23157:15;23150:30;22965:222;:::o;23193:366::-;23335:3;23356:67;23420:2;23415:3;23356:67;:::i;:::-;23349:74;;23432:93;23521:3;23432:93;:::i;:::-;23550:2;23545:3;23541:12;23534:19;;23193:366;;;:::o;23565:419::-;23731:4;23769:2;23758:9;23754:18;23746:26;;23818:9;23812:4;23808:20;23804:1;23793:9;23789:17;23782:47;23846:131;23972:4;23846:131;:::i;:::-;23838:139;;23565:419;;;:::o;23990:191::-;24030:4;24050:20;24068:1;24050:20;:::i;:::-;24045:25;;24084:20;24102:1;24084:20;:::i;:::-;24079:25;;24123:1;24120;24117:8;24114:34;;;24128:18;;:::i;:::-;24114:34;24173:1;24170;24166:9;24158:17;;23990:191;;;;:::o;24187:229::-;24327:34;24323:1;24315:6;24311:14;24304:58;24396:12;24391:2;24383:6;24379:15;24372:37;24187:229;:::o;24422:366::-;24564:3;24585:67;24649:2;24644:3;24585:67;:::i;:::-;24578:74;;24661:93;24750:3;24661:93;:::i;:::-;24779:2;24774:3;24770:12;24763:19;;24422:366;;;:::o;24794:419::-;24960:4;24998:2;24987:9;24983:18;24975:26;;25047:9;25041:4;25037:20;25033:1;25022:9;25018:17;25011:47;25075:131;25201:4;25075:131;:::i;:::-;25067:139;;24794:419;;;:::o;25219:180::-;25267:77;25264:1;25257:88;25364:4;25361:1;25354:15;25388:4;25385:1;25378:15;25405:180;25453:77;25450:1;25443:88;25550:4;25547:1;25540:15;25574:4;25571:1;25564:15;25591:85;25636:7;25665:5;25654:16;;25591:85;;;:::o;25682:158::-;25740:9;25773:61;25791:42;25800:32;25826:5;25800:32;:::i;:::-;25791:42;:::i;:::-;25773:61;:::i;:::-;25760:74;;25682:158;;;:::o;25846:147::-;25941:45;25980:5;25941:45;:::i;:::-;25936:3;25929:58;25846:147;;:::o;25999:114::-;26066:6;26100:5;26094:12;26084:22;;25999:114;;;:::o;26119:184::-;26218:11;26252:6;26247:3;26240:19;26292:4;26287:3;26283:14;26268:29;;26119:184;;;;:::o;26309:132::-;26376:4;26399:3;26391:11;;26429:4;26424:3;26420:14;26412:22;;26309:132;;;:::o;26447:108::-;26524:24;26542:5;26524:24;:::i;:::-;26519:3;26512:37;26447:108;;:::o;26561:179::-;26630:10;26651:46;26693:3;26685:6;26651:46;:::i;:::-;26729:4;26724:3;26720:14;26706:28;;26561:179;;;;:::o;26746:113::-;26816:4;26848;26843:3;26839:14;26831:22;;26746:113;;;:::o;26895:732::-;27014:3;27043:54;27091:5;27043:54;:::i;:::-;27113:86;27192:6;27187:3;27113:86;:::i;:::-;27106:93;;27223:56;27273:5;27223:56;:::i;:::-;27302:7;27333:1;27318:284;27343:6;27340:1;27337:13;27318:284;;;27419:6;27413:13;27446:63;27505:3;27490:13;27446:63;:::i;:::-;27439:70;;27532:60;27585:6;27532:60;:::i;:::-;27522:70;;27378:224;27365:1;27362;27358:9;27353:14;;27318:284;;;27322:14;27618:3;27611:10;;27019:608;;;26895:732;;;;:::o;27633:942::-;27924:4;27962:3;27951:9;27947:19;27939:27;;27976:71;28044:1;28033:9;28029:17;28020:6;27976:71;:::i;:::-;28057:80;28133:2;28122:9;28118:18;28109:6;28057:80;:::i;:::-;28184:9;28178:4;28174:20;28169:2;28158:9;28154:18;28147:48;28212:108;28315:4;28306:6;28212:108;:::i;:::-;28204:116;;28330:72;28398:2;28387:9;28383:18;28374:6;28330:72;:::i;:::-;28412:73;28480:3;28469:9;28465:19;28456:6;28412:73;:::i;:::-;28495;28563:3;28552:9;28548:19;28539:6;28495:73;:::i;:::-;27633:942;;;;;;;;;:::o;28581:180::-;28629:77;28626:1;28619:88;28726:4;28723:1;28716:15;28750:4;28747:1;28740:15;28767:185;28807:1;28824:20;28842:1;28824:20;:::i;:::-;28819:25;;28858:20;28876:1;28858:20;:::i;:::-;28853:25;;28897:1;28887:35;;28902:18;;:::i;:::-;28887:35;28944:1;28941;28937:9;28932:14;;28767:185;;;;:::o;28958:177::-;29098:29;29094:1;29086:6;29082:14;29075:53;28958:177;:::o;29141:366::-;29283:3;29304:67;29368:2;29363:3;29304:67;:::i;:::-;29297:74;;29380:93;29469:3;29380:93;:::i;:::-;29498:2;29493:3;29489:12;29482:19;;29141:366;;;:::o;29513:419::-;29679:4;29717:2;29706:9;29702:18;29694:26;;29766:9;29760:4;29756:20;29752:1;29741:9;29737:17;29730:47;29794:131;29920:4;29794:131;:::i;:::-;29786:139;;29513:419;;;:::o;29938:220::-;30078:34;30074:1;30066:6;30062:14;30055:58;30147:3;30142:2;30134:6;30130:15;30123:28;29938:220;:::o;30164:366::-;30306:3;30327:67;30391:2;30386:3;30327:67;:::i;:::-;30320:74;;30403:93;30492:3;30403:93;:::i;:::-;30521:2;30516:3;30512:12;30505:19;;30164:366;;;:::o;30536:419::-;30702:4;30740:2;30729:9;30725:18;30717:26;;30789:9;30783:4;30779:20;30775:1;30764:9;30760:17;30753:47;30817:131;30943:4;30817:131;:::i;:::-;30809:139;;30536:419;;;:::o

Swarm Source

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