ETH Price: $2,382.18 (-1.08%)

Token

treewifhat (TIF)
 

Overview

Max Total Supply

1,000,000,000,000 TIF

Holders

52

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
TIF

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 * X: https://twitter.com/treewifhat_ERC
 *
 * https://twitter.com/binance/status/1740100296817180729
 * 
 * SPDX-License-Identifier: UNLICENSED 
*/

pragma solidity ^0.8.20;

interface IERC20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

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

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

}

contract TIF is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "treewifhat";
    string private constant _symbol = "TIF";
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private minContractTokensToSwap = 1e9 * 10**9;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxWallet;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 0;
    uint256 private _maxWalletSize = 1e10 * 10**9;
    uint256 private _buyFee = 10;
    uint256 private _sellFee = 10;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _marketingWallet;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private _noFees = false;
    bool private inSwap = false;
    mapping(address => bool) private automatedMarketMakerPairs;

    event Response(bool success);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
        constructor () {

        _marketingWallet = payable(0x362b3FE42374bD7D2Dcd10330D32e72a065f6d5E);
        
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromMaxWallet[owner()] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[_marketingWallet] = true;

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

    function name() public pure returns (string memory) {
        return _name;
    }
    
    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()) {

            if(to != uniswapV2Pair && !_isExcludedFromMaxWallet[to] && _maxWalletSize != 0) {
                require(balanceOf(address(to)) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                _teamFee = _buyFee;
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            if(!inSwap && from != uniswapV2Pair && tradingOpen) {

                _teamFee = _sellFee;

                if (automatedMarketMakerPairs[to]) {
                    if(contractTokenBalance > minContractTokensToSwap) {
                        swapBack(contractTokenBalance);
                    }
                }
            }
        }
        bool takeFee = true;

        if(_noFees || _isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        } else if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapBack(uint256 contractTokenBalance) private {
        
        swapTokensForEth(contractTokenBalance);

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        (bool success, ) = _marketingWallet.call{value: amount}("");

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

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

        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

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

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

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

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

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

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

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

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

    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 removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

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

    receive() external payable {}
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        automatedMarketMakerPairs[uniswapV2Pair] = true;
        tradingOpen = true;
    }

    function setMarketingWallet (address payable marketing) external onlyOwner {
        _isExcludedFromFee[_marketingWallet] = false;
        _marketingWallet = marketing;
        _isExcludedFromFee[marketing] = true;
    }

    function setFee(uint256 buy, uint256 sell, uint256 rfi) external onlyOwner {
        _buyFee = buy;
        _sellFee = sell;
        _taxFee = rfi;
    }
    
    function setMinContractTokensToSwap(uint256 numToken) external onlyOwner {
        minContractTokensToSwap = numToken * 10**9;
    }

    function setMaxWallet(uint256 amt) external onlyOwner {
        _maxWalletSize = amt * 10**9;
    }

    function setNoFees(bool onoff) external onlyOwner {
        _noFees = onoff;
    }

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

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"Response","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"rfi","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numToken","type":"uint256"}],"name":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setNoFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000005f196200001c919062000559565b5f196200002a9190620005bd565b600255670de0b6b3a76400006004555f600a555f600b55678ac7230489e80000600c55600a600d55600a600e55600a54600f55600b546010555f601360146101000a81548160ff0219169083151502179055505f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff021916908315150217905550348015620000bd575f80fd5b505f620000cf620004f560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073362b3fe42374bd7d2dcd10330d32e72a065f6d5e60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460055f620001d5620004f560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f62000227620004fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f62000356620004fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000480620004f560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620004e7919062000608565b60405180910390a362000623565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620005658262000523565b9150620005728362000523565b9250826200058557620005846200052c565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620005c98262000523565b9150620005d68362000523565b9250828203905081811115620005f157620005f062000590565b5b92915050565b620006028162000523565b82525050565b5f6020820190506200061d5f830184620005f7565b92915050565b61363c80620006315f395ff3fe60806040526004361061012d575f3560e01c80636fc3eaec116100aa578063a9059cbb1161006e578063a9059cbb146103b4578063c3c8cd80146103f0578063c9567bf914610406578063caa893451461041c578063db92dbb614610444578063dd62ed3e1461046e57610134565b80636fc3eaec146102f857806370a082311461030e578063715018a61461034a5780638da5cb5b1461036057806395d89b411461038a57610134565b806327f3a72a116100f157806327f3a72a1461022c578063313ce567146102565780635b65b9ab146102805780635d0044ca146102a85780635d098b38146102d057610134565b806306fdde0314610138578063095ea7b31461016257806312dfbd331461019e57806318160ddd146101c657806323b872dd146101f057610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104aa565b604051610159919061278d565b60405180910390f35b34801561016d575f80fd5b506101886004803603810190610183919061283e565b6104e7565b6040516101959190612896565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906128af565b610504565b005b3480156101d1575f80fd5b506101da6105b1565b6040516101e791906128e9565b60405180910390f35b3480156101fb575f80fd5b5061021660048036038101906102119190612902565b6105c1565b6040516102239190612896565b60405180910390f35b348015610237575f80fd5b50610240610695565b60405161024d91906128e9565b60405180910390f35b348015610261575f80fd5b5061026a6106a4565b604051610277919061296d565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190612986565b6106ac565b005b3480156102b3575f80fd5b506102ce60048036038101906102c991906128af565b61075a565b005b3480156102db575f80fd5b506102f660048036038101906102f19190612a11565b610807565b005b348015610303575f80fd5b5061030c6109a8565b005b348015610319575f80fd5b50610334600480360381019061032f9190612a3c565b610a4c565b60405161034191906128e9565b60405180910390f35b348015610355575f80fd5b5061035e610a9a565b005b34801561036b575f80fd5b50610374610be8565b6040516103819190612a76565b60405180910390f35b348015610395575f80fd5b5061039e610c0f565b6040516103ab919061278d565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d5919061283e565b610c4c565b6040516103e79190612896565b60405180910390f35b3480156103fb575f80fd5b50610404610c69565b005b348015610411575f80fd5b5061041a610d15565b005b348015610427575f80fd5b50610442600480360381019061043d9190612ab9565b611242565b005b34801561044f575f80fd5b506104586112f3565b60405161046591906128e9565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190612ae4565b611323565b6040516104a191906128e9565b60405180910390f35b60606040518060400160405280600a81526020017f7472656577696668617400000000000000000000000000000000000000000000815250905090565b5f6104fa6104f36113a5565b84846113ac565b6001905092915050565b61050c6113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058f90612b6c565b60405180910390fd5b633b9aca00816105a89190612bb7565b60048190555050565b5f683635c9adc5dea00000905090565b5f6105cd84848461156f565b61068a846105d96113a5565b610685856040518060600160405280602881526020016135df6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61063c6113a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bf39092919063ffffffff16565b6113ac565b600190509392505050565b5f61069f30610a4c565b905090565b5f6009905090565b6106b46113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790612b6c565b60405180910390fd5b82600d8190555081600e8190555080600a81905550505050565b6107626113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590612b6c565b60405180910390fd5b633b9aca00816107fe9190612bb7565b600c8190555050565b61080f6113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089290612b6c565b60405180910390fd5b5f60085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6109b06113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390612b6c565b60405180910390fd5b5f479050610a4981611c55565b50565b5f610a9360055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d19565b9050919050565b610aa26113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590612b6c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5449460000000000000000000000000000000000000000000000000000000000815250905090565b5f610c5f610c586113a5565b848461156f565b6001905092915050565b610c716113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612b6c565b60405180910390fd5b5f610d0730610a4c565b9050610d1281611d85565b50565b610d1d6113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da090612b6c565b60405180910390fd5b601360149054906101000a900460ff1615610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090612c42565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e863060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006113ac565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef39190612c74565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7c9190612c74565b6040518363ffffffff1660e01b8152600401610f99929190612c9f565b6020604051808303815f875af1158015610fb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd99190612c74565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061106030610a4c565b5f8061106a610be8565b426040518863ffffffff1660e01b815260040161108c96959493929190612d08565b60606040518083038185885af11580156110a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110cd9190612d7b565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161116d929190612dcb565b6020604051808303815f875af1158015611189573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ad9190612e06565b50600160145f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555050565b61124a6113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90612b6c565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b5f61131e60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a4c565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190612ea1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f90612f2f565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161156291906128e9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490612fbd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116429061304b565b60405180910390fd5b5f811161168d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611684906130d9565b60405180910390fd5b611695610be8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170357506116d3610be8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a755760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156117ac575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117ba57505f600c5414155b1561181857600c54816117cc84610a4c565b6117d691906130f7565b1115611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e9061319a565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118c1575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611914575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561197257601360149054906101000a900460ff16611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90613202565b60405180910390fd5b600d54600b819055505b5f61197c30610a4c565b9050601360169054906101000a900460ff161580156119e8575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a005750601360149054906101000a900460ff165b15611a7357600e54600b8190555060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a7257600454811115611a7157611a7081611ff0565b5b5b5b505b5f60019050601360159054906101000a900460ff1680611adb575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611b2c575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611b39575f9050611be1565b60145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bd7575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611be0575f90505b5b611bed84848484612013565b50505050565b5f838311158290611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c31919061278d565b60405180910390fd5b505f8385611c489190613220565b9050809150509392505050565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611c9b90613280565b5f6040518083038185875af1925050503d805f8114611cd5576040519150601f19603f3d011682016040523d82523d5f602084013e611cda565b606091505b505090507fb6caad5b328a3de9a49b44605241a4b72f6f1aa955829d12e37decfd84a0b8ca81604051611d0d9190612896565b60405180910390a15050565b5f600254821115611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5690613304565b60405180910390fd5b5f611d68612040565b9050611d7d818461206990919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611dbc57611dbb613322565b5b604051908082528060200260200182016040528015611dea5781602001602082028036833780820191505090505b50905030815f81518110611e0157611e0061334f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec99190612c74565b81600181518110611edd57611edc61334f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f433060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113ac565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611fa5959493929190613433565b5f604051808303815f87803b158015611fbc575f80fd5b505af1158015611fce573d5f803e3d5ffd5b50505050505f601360166101000a81548160ff02191690831515021790555050565b611ff981611d85565b5f4790505f81111561200f5761200e47611c55565b5b5050565b80612021576120206120b2565b5b61202c8484846120eb565b8061203a576120396122ab565b5b50505050565b5f805f61204b6122bf565b91509150612062818361206990919063ffffffff16565b9250505090565b5f6120aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061231e565b905092915050565b5f600a541480156120c457505f600b54145b6120e957600a54600f81905550600b546010819055505f600a819055505f600b819055505b565b5f805f805f806120fa8761237f565b9550955095509550955095506121568660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123df90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121e78560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242890919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061223181612485565b61223b848361253c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161229891906128e9565b60405180910390a3505050505050505050565b600f54600a81905550601054600b81905550565b5f805f60025490505f683635c9adc5dea0000090506122f2683635c9adc5dea0000060025461206990919063ffffffff16565b82101561231157600254683635c9adc5dea0000093509350505061231a565b81819350935050505b9091565b5f8083118290612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b919061278d565b60405180910390fd5b505f838561237291906134b8565b9050809150509392505050565b5f805f805f805f805f6123978a600a54600b54612576565b9250925092505f6123a6612040565b90505f805f6123b78e878787612608565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61242083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf3565b905092915050565b5f80828461243691906130f7565b90508381101561247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290613532565b60405180910390fd5b8091505092915050565b5f61248e612040565b90505f6124a4828461268c90919063ffffffff16565b90506124f68160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242890919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612551826002546123df90919063ffffffff16565b60028190555061256c8160035461242890919063ffffffff16565b6003819055505050565b5f805f806125a06064612592888a61268c90919063ffffffff16565b61206990919063ffffffff16565b90505f6125c960646125bb888b61268c90919063ffffffff16565b61206990919063ffffffff16565b90505f6125f1826125e3858c6123df90919063ffffffff16565b6123df90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061261f858961268c90919063ffffffff16565b90505f612635868961268c90919063ffffffff16565b90505f61264b878961268c90919063ffffffff16565b90505f6126738261266585876123df90919063ffffffff16565b6123df90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361269c575f90506126fd565b5f82846126a99190612bb7565b90508284826126b891906134b8565b146126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef906135c0565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561273a57808201518184015260208101905061271f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61275f82612703565b612769818561270d565b935061277981856020860161271d565b61278281612745565b840191505092915050565b5f6020820190508181035f8301526127a58184612755565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127da826127b1565b9050919050565b6127ea816127d0565b81146127f4575f80fd5b50565b5f81359050612805816127e1565b92915050565b5f819050919050565b61281d8161280b565b8114612827575f80fd5b50565b5f8135905061283881612814565b92915050565b5f8060408385031215612854576128536127ad565b5b5f612861858286016127f7565b92505060206128728582860161282a565b9150509250929050565b5f8115159050919050565b6128908161287c565b82525050565b5f6020820190506128a95f830184612887565b92915050565b5f602082840312156128c4576128c36127ad565b5b5f6128d18482850161282a565b91505092915050565b6128e38161280b565b82525050565b5f6020820190506128fc5f8301846128da565b92915050565b5f805f60608486031215612919576129186127ad565b5b5f612926868287016127f7565b9350506020612937868287016127f7565b92505060406129488682870161282a565b9150509250925092565b5f60ff82169050919050565b61296781612952565b82525050565b5f6020820190506129805f83018461295e565b92915050565b5f805f6060848603121561299d5761299c6127ad565b5b5f6129aa8682870161282a565b93505060206129bb8682870161282a565b92505060406129cc8682870161282a565b9150509250925092565b5f6129e0826127b1565b9050919050565b6129f0816129d6565b81146129fa575f80fd5b50565b5f81359050612a0b816129e7565b92915050565b5f60208284031215612a2657612a256127ad565b5b5f612a33848285016129fd565b91505092915050565b5f60208284031215612a5157612a506127ad565b5b5f612a5e848285016127f7565b91505092915050565b612a70816127d0565b82525050565b5f602082019050612a895f830184612a67565b92915050565b612a988161287c565b8114612aa2575f80fd5b50565b5f81359050612ab381612a8f565b92915050565b5f60208284031215612ace57612acd6127ad565b5b5f612adb84828501612aa5565b91505092915050565b5f8060408385031215612afa57612af96127ad565b5b5f612b07858286016127f7565b9250506020612b18858286016127f7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b5660208361270d565b9150612b6182612b22565b602082019050919050565b5f6020820190508181035f830152612b8381612b4a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bc18261280b565b9150612bcc8361280b565b9250828202612bda8161280b565b91508282048414831517612bf157612bf0612b8a565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612c2c60178361270d565b9150612c3782612bf8565b602082019050919050565b5f6020820190508181035f830152612c5981612c20565b9050919050565b5f81519050612c6e816127e1565b92915050565b5f60208284031215612c8957612c886127ad565b5b5f612c9684828501612c60565b91505092915050565b5f604082019050612cb25f830185612a67565b612cbf6020830184612a67565b9392505050565b5f819050919050565b5f819050919050565b5f612cf2612ced612ce884612cc6565b612ccf565b61280b565b9050919050565b612d0281612cd8565b82525050565b5f60c082019050612d1b5f830189612a67565b612d2860208301886128da565b612d356040830187612cf9565b612d426060830186612cf9565b612d4f6080830185612a67565b612d5c60a08301846128da565b979650505050505050565b5f81519050612d7581612814565b92915050565b5f805f60608486031215612d9257612d916127ad565b5b5f612d9f86828701612d67565b9350506020612db086828701612d67565b9250506040612dc186828701612d67565b9150509250925092565b5f604082019050612dde5f830185612a67565b612deb60208301846128da565b9392505050565b5f81519050612e0081612a8f565b92915050565b5f60208284031215612e1b57612e1a6127ad565b5b5f612e2884828501612df2565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e8b60248361270d565b9150612e9682612e31565b604082019050919050565b5f6020820190508181035f830152612eb881612e7f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f1960228361270d565b9150612f2482612ebf565b604082019050919050565b5f6020820190508181035f830152612f4681612f0d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fa760258361270d565b9150612fb282612f4d565b604082019050919050565b5f6020820190508181035f830152612fd481612f9b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61303560238361270d565b915061304082612fdb565b604082019050919050565b5f6020820190508181035f83015261306281613029565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6130c360298361270d565b91506130ce82613069565b604082019050919050565b5f6020820190508181035f8301526130f0816130b7565b9050919050565b5f6131018261280b565b915061310c8361280b565b925082820190508082111561312457613123612b8a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61318460238361270d565b915061318f8261312a565b604082019050919050565b5f6020820190508181035f8301526131b181613178565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f6131ec60188361270d565b91506131f7826131b8565b602082019050919050565b5f6020820190508181035f830152613219816131e0565b9050919050565b5f61322a8261280b565b91506132358361280b565b925082820390508181111561324d5761324c612b8a565b5b92915050565b5f81905092915050565b50565b5f61326b5f83613253565b91506132768261325d565b5f82019050919050565b5f61328a82613260565b9150819050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6132ee602a8361270d565b91506132f982613294565b604082019050919050565b5f6020820190508181035f83015261331b816132e2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133ae816127d0565b82525050565b5f6133bf83836133a5565b60208301905092915050565b5f602082019050919050565b5f6133e18261337c565b6133eb8185613386565b93506133f683613396565b805f5b8381101561342657815161340d88826133b4565b9750613418836133cb565b9250506001810190506133f9565b5085935050505092915050565b5f60a0820190506134465f8301886128da565b6134536020830187612cf9565b818103604083015261346581866133d7565b90506134746060830185612a67565b61348160808301846128da565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134c28261280b565b91506134cd8361280b565b9250826134dd576134dc61348b565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61351c601b8361270d565b9150613527826134e8565b602082019050919050565b5f6020820190508181035f83015261354981613510565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135aa60218361270d565b91506135b582613550565b604082019050919050565b5f6020820190508181035f8301526135d78161359e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f945411dc70fde8fb474555aeec6169a4779cfb65dc846cd702d51afe92b615f64736f6c63430008160033

Deployed Bytecode

0x60806040526004361061012d575f3560e01c80636fc3eaec116100aa578063a9059cbb1161006e578063a9059cbb146103b4578063c3c8cd80146103f0578063c9567bf914610406578063caa893451461041c578063db92dbb614610444578063dd62ed3e1461046e57610134565b80636fc3eaec146102f857806370a082311461030e578063715018a61461034a5780638da5cb5b1461036057806395d89b411461038a57610134565b806327f3a72a116100f157806327f3a72a1461022c578063313ce567146102565780635b65b9ab146102805780635d0044ca146102a85780635d098b38146102d057610134565b806306fdde0314610138578063095ea7b31461016257806312dfbd331461019e57806318160ddd146101c657806323b872dd146101f057610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104aa565b604051610159919061278d565b60405180910390f35b34801561016d575f80fd5b506101886004803603810190610183919061283e565b6104e7565b6040516101959190612896565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906128af565b610504565b005b3480156101d1575f80fd5b506101da6105b1565b6040516101e791906128e9565b60405180910390f35b3480156101fb575f80fd5b5061021660048036038101906102119190612902565b6105c1565b6040516102239190612896565b60405180910390f35b348015610237575f80fd5b50610240610695565b60405161024d91906128e9565b60405180910390f35b348015610261575f80fd5b5061026a6106a4565b604051610277919061296d565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a19190612986565b6106ac565b005b3480156102b3575f80fd5b506102ce60048036038101906102c991906128af565b61075a565b005b3480156102db575f80fd5b506102f660048036038101906102f19190612a11565b610807565b005b348015610303575f80fd5b5061030c6109a8565b005b348015610319575f80fd5b50610334600480360381019061032f9190612a3c565b610a4c565b60405161034191906128e9565b60405180910390f35b348015610355575f80fd5b5061035e610a9a565b005b34801561036b575f80fd5b50610374610be8565b6040516103819190612a76565b60405180910390f35b348015610395575f80fd5b5061039e610c0f565b6040516103ab919061278d565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d5919061283e565b610c4c565b6040516103e79190612896565b60405180910390f35b3480156103fb575f80fd5b50610404610c69565b005b348015610411575f80fd5b5061041a610d15565b005b348015610427575f80fd5b50610442600480360381019061043d9190612ab9565b611242565b005b34801561044f575f80fd5b506104586112f3565b60405161046591906128e9565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190612ae4565b611323565b6040516104a191906128e9565b60405180910390f35b60606040518060400160405280600a81526020017f7472656577696668617400000000000000000000000000000000000000000000815250905090565b5f6104fa6104f36113a5565b84846113ac565b6001905092915050565b61050c6113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058f90612b6c565b60405180910390fd5b633b9aca00816105a89190612bb7565b60048190555050565b5f683635c9adc5dea00000905090565b5f6105cd84848461156f565b61068a846105d96113a5565b610685856040518060600160405280602881526020016135df6028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61063c6113a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bf39092919063ffffffff16565b6113ac565b600190509392505050565b5f61069f30610a4c565b905090565b5f6009905090565b6106b46113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790612b6c565b60405180910390fd5b82600d8190555081600e8190555080600a81905550505050565b6107626113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590612b6c565b60405180910390fd5b633b9aca00816107fe9190612bb7565b600c8190555050565b61080f6113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089290612b6c565b60405180910390fd5b5f60085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6109b06113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390612b6c565b60405180910390fd5b5f479050610a4981611c55565b50565b5f610a9360055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d19565b9050919050565b610aa26113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590612b6c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5449460000000000000000000000000000000000000000000000000000000000815250905090565b5f610c5f610c586113a5565b848461156f565b6001905092915050565b610c716113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612b6c565b60405180910390fd5b5f610d0730610a4c565b9050610d1281611d85565b50565b610d1d6113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da090612b6c565b60405180910390fd5b601360149054906101000a900460ff1615610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090612c42565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e863060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006113ac565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ecf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef39190612c74565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7c9190612c74565b6040518363ffffffff1660e01b8152600401610f99929190612c9f565b6020604051808303815f875af1158015610fb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd99190612c74565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061106030610a4c565b5f8061106a610be8565b426040518863ffffffff1660e01b815260040161108c96959493929190612d08565b60606040518083038185885af11580156110a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110cd9190612d7b565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161116d929190612dcb565b6020604051808303815f875af1158015611189573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ad9190612e06565b50600160145f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555050565b61124a6113a5565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90612b6c565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b5f61131e60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a4c565b905090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190612ea1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f90612f2f565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161156291906128e9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490612fbd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361164b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116429061304b565b60405180910390fd5b5f811161168d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611684906130d9565b60405180910390fd5b611695610be8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170357506116d3610be8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a755760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156117ac575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117ba57505f600c5414155b1561181857600c54816117cc84610a4c565b6117d691906130f7565b1115611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e9061319a565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118c1575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611914575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561197257601360149054906101000a900460ff16611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90613202565b60405180910390fd5b600d54600b819055505b5f61197c30610a4c565b9050601360169054906101000a900460ff161580156119e8575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a005750601360149054906101000a900460ff165b15611a7357600e54600b8190555060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a7257600454811115611a7157611a7081611ff0565b5b5b5b505b5f60019050601360159054906101000a900460ff1680611adb575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611b2c575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611b39575f9050611be1565b60145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bd7575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611be0575f90505b5b611bed84848484612013565b50505050565b5f838311158290611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c31919061278d565b60405180910390fd5b505f8385611c489190613220565b9050809150509392505050565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611c9b90613280565b5f6040518083038185875af1925050503d805f8114611cd5576040519150601f19603f3d011682016040523d82523d5f602084013e611cda565b606091505b505090507fb6caad5b328a3de9a49b44605241a4b72f6f1aa955829d12e37decfd84a0b8ca81604051611d0d9190612896565b60405180910390a15050565b5f600254821115611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5690613304565b60405180910390fd5b5f611d68612040565b9050611d7d818461206990919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611dbc57611dbb613322565b5b604051908082528060200260200182016040528015611dea5781602001602082028036833780820191505090505b50905030815f81518110611e0157611e0061334f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec99190612c74565b81600181518110611edd57611edc61334f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f433060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113ac565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611fa5959493929190613433565b5f604051808303815f87803b158015611fbc575f80fd5b505af1158015611fce573d5f803e3d5ffd5b50505050505f601360166101000a81548160ff02191690831515021790555050565b611ff981611d85565b5f4790505f81111561200f5761200e47611c55565b5b5050565b80612021576120206120b2565b5b61202c8484846120eb565b8061203a576120396122ab565b5b50505050565b5f805f61204b6122bf565b91509150612062818361206990919063ffffffff16565b9250505090565b5f6120aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061231e565b905092915050565b5f600a541480156120c457505f600b54145b6120e957600a54600f81905550600b546010819055505f600a819055505f600b819055505b565b5f805f805f806120fa8761237f565b9550955095509550955095506121568660055f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123df90919063ffffffff16565b60055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121e78560055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242890919063ffffffff16565b60055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061223181612485565b61223b848361253c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161229891906128e9565b60405180910390a3505050505050505050565b600f54600a81905550601054600b81905550565b5f805f60025490505f683635c9adc5dea0000090506122f2683635c9adc5dea0000060025461206990919063ffffffff16565b82101561231157600254683635c9adc5dea0000093509350505061231a565b81819350935050505b9091565b5f8083118290612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b919061278d565b60405180910390fd5b505f838561237291906134b8565b9050809150509392505050565b5f805f805f805f805f6123978a600a54600b54612576565b9250925092505f6123a6612040565b90505f805f6123b78e878787612608565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61242083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf3565b905092915050565b5f80828461243691906130f7565b90508381101561247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290613532565b60405180910390fd5b8091505092915050565b5f61248e612040565b90505f6124a4828461268c90919063ffffffff16565b90506124f68160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461242890919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612551826002546123df90919063ffffffff16565b60028190555061256c8160035461242890919063ffffffff16565b6003819055505050565b5f805f806125a06064612592888a61268c90919063ffffffff16565b61206990919063ffffffff16565b90505f6125c960646125bb888b61268c90919063ffffffff16565b61206990919063ffffffff16565b90505f6125f1826125e3858c6123df90919063ffffffff16565b6123df90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061261f858961268c90919063ffffffff16565b90505f612635868961268c90919063ffffffff16565b90505f61264b878961268c90919063ffffffff16565b90505f6126738261266585876123df90919063ffffffff16565b6123df90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361269c575f90506126fd565b5f82846126a99190612bb7565b90508284826126b891906134b8565b146126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef906135c0565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561273a57808201518184015260208101905061271f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61275f82612703565b612769818561270d565b935061277981856020860161271d565b61278281612745565b840191505092915050565b5f6020820190508181035f8301526127a58184612755565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127da826127b1565b9050919050565b6127ea816127d0565b81146127f4575f80fd5b50565b5f81359050612805816127e1565b92915050565b5f819050919050565b61281d8161280b565b8114612827575f80fd5b50565b5f8135905061283881612814565b92915050565b5f8060408385031215612854576128536127ad565b5b5f612861858286016127f7565b92505060206128728582860161282a565b9150509250929050565b5f8115159050919050565b6128908161287c565b82525050565b5f6020820190506128a95f830184612887565b92915050565b5f602082840312156128c4576128c36127ad565b5b5f6128d18482850161282a565b91505092915050565b6128e38161280b565b82525050565b5f6020820190506128fc5f8301846128da565b92915050565b5f805f60608486031215612919576129186127ad565b5b5f612926868287016127f7565b9350506020612937868287016127f7565b92505060406129488682870161282a565b9150509250925092565b5f60ff82169050919050565b61296781612952565b82525050565b5f6020820190506129805f83018461295e565b92915050565b5f805f6060848603121561299d5761299c6127ad565b5b5f6129aa8682870161282a565b93505060206129bb8682870161282a565b92505060406129cc8682870161282a565b9150509250925092565b5f6129e0826127b1565b9050919050565b6129f0816129d6565b81146129fa575f80fd5b50565b5f81359050612a0b816129e7565b92915050565b5f60208284031215612a2657612a256127ad565b5b5f612a33848285016129fd565b91505092915050565b5f60208284031215612a5157612a506127ad565b5b5f612a5e848285016127f7565b91505092915050565b612a70816127d0565b82525050565b5f602082019050612a895f830184612a67565b92915050565b612a988161287c565b8114612aa2575f80fd5b50565b5f81359050612ab381612a8f565b92915050565b5f60208284031215612ace57612acd6127ad565b5b5f612adb84828501612aa5565b91505092915050565b5f8060408385031215612afa57612af96127ad565b5b5f612b07858286016127f7565b9250506020612b18858286016127f7565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b5660208361270d565b9150612b6182612b22565b602082019050919050565b5f6020820190508181035f830152612b8381612b4a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bc18261280b565b9150612bcc8361280b565b9250828202612bda8161280b565b91508282048414831517612bf157612bf0612b8a565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612c2c60178361270d565b9150612c3782612bf8565b602082019050919050565b5f6020820190508181035f830152612c5981612c20565b9050919050565b5f81519050612c6e816127e1565b92915050565b5f60208284031215612c8957612c886127ad565b5b5f612c9684828501612c60565b91505092915050565b5f604082019050612cb25f830185612a67565b612cbf6020830184612a67565b9392505050565b5f819050919050565b5f819050919050565b5f612cf2612ced612ce884612cc6565b612ccf565b61280b565b9050919050565b612d0281612cd8565b82525050565b5f60c082019050612d1b5f830189612a67565b612d2860208301886128da565b612d356040830187612cf9565b612d426060830186612cf9565b612d4f6080830185612a67565b612d5c60a08301846128da565b979650505050505050565b5f81519050612d7581612814565b92915050565b5f805f60608486031215612d9257612d916127ad565b5b5f612d9f86828701612d67565b9350506020612db086828701612d67565b9250506040612dc186828701612d67565b9150509250925092565b5f604082019050612dde5f830185612a67565b612deb60208301846128da565b9392505050565b5f81519050612e0081612a8f565b92915050565b5f60208284031215612e1b57612e1a6127ad565b5b5f612e2884828501612df2565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e8b60248361270d565b9150612e9682612e31565b604082019050919050565b5f6020820190508181035f830152612eb881612e7f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f1960228361270d565b9150612f2482612ebf565b604082019050919050565b5f6020820190508181035f830152612f4681612f0d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fa760258361270d565b9150612fb282612f4d565b604082019050919050565b5f6020820190508181035f830152612fd481612f9b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61303560238361270d565b915061304082612fdb565b604082019050919050565b5f6020820190508181035f83015261306281613029565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6130c360298361270d565b91506130ce82613069565b604082019050919050565b5f6020820190508181035f8301526130f0816130b7565b9050919050565b5f6131018261280b565b915061310c8361280b565b925082820190508082111561312457613123612b8a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61318460238361270d565b915061318f8261312a565b604082019050919050565b5f6020820190508181035f8301526131b181613178565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f6131ec60188361270d565b91506131f7826131b8565b602082019050919050565b5f6020820190508181035f830152613219816131e0565b9050919050565b5f61322a8261280b565b91506132358361280b565b925082820390508181111561324d5761324c612b8a565b5b92915050565b5f81905092915050565b50565b5f61326b5f83613253565b91506132768261325d565b5f82019050919050565b5f61328a82613260565b9150819050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6132ee602a8361270d565b91506132f982613294565b604082019050919050565b5f6020820190508181035f83015261331b816132e2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133ae816127d0565b82525050565b5f6133bf83836133a5565b60208301905092915050565b5f602082019050919050565b5f6133e18261337c565b6133eb8185613386565b93506133f683613396565b805f5b8381101561342657815161340d88826133b4565b9750613418836133cb565b9250506001810190506133f9565b5085935050505092915050565b5f60a0820190506134465f8301886128da565b6134536020830187612cf9565b818103604083015261346581866133d7565b90506134746060830185612a67565b61348160808301846128da565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134c28261280b565b91506134cd8361280b565b9250826134dd576134dc61348b565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61351c601b8361270d565b9150613527826134e8565b602082019050919050565b5f6020820190508181035f83015261354981613510565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135aa60218361270d565b91506135b582613550565b604082019050919050565b5f6020820190508181035f8301526135d78161359e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f945411dc70fde8fb474555aeec6169a4779cfb65dc846cd702d51afe92b615f64736f6c63430008160033

Deployed Bytecode Sourcemap

9107:11841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11163:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17156:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20277:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18614:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17845:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16642:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18523:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20108:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20419:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19876:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20786:153;;;;;;;;;;;;;:::i;:::-;;16859:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8950:148;;;;;;;;;;;;;:::i;:::-;;8736:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18428:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17670:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20620:154;;;;;;;;;;;;;:::i;:::-;;19101:767;;;;;;;;;;;;;:::i;:::-;;20528:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16750:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17005:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11163:83;11200:13;11233:5;;;;;;;;;;;;;;;;;11226:12;;11163:83;:::o;17156:161::-;17231:4;17248:39;17257:12;:10;:12::i;:::-;17271:7;17280:6;17248:8;:39::i;:::-;17305:4;17298:11;;17156:161;;;;:::o;20277:134::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20398:5:::1;20387:8;:16;;;;:::i;:::-;20361:23;:42;;;;20277:134:::0;:::o;18614:95::-;18667:7;9414:12;18687:14;;18614:95;:::o;17845:313::-;17943:4;17960:36;17970:6;17978:9;17989:6;17960:9;:36::i;:::-;18007:121;18016:6;18024:12;:10;:12::i;:::-;18038:89;18076:6;18038:89;;;;;;;;;;;;;;;;;:11;:19;18050:6;18038:19;;;;;;;;;;;;;;;:33;18058:12;:10;:12::i;:::-;18038:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18007:8;:121::i;:::-;18146:4;18139:11;;17845:313;;;;;:::o;16642:100::-;16686:4;16710:24;16728:4;16710:9;:24::i;:::-;16703:31;;16642:100;:::o;18523:83::-;18564:5;9322:1;18582:16;;18523:83;:::o;20108:157::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20204:3:::1;20194:7;:13;;;;20229:4;20218:8;:15;;;;20254:3;20244:7;:13;;;;20108:157:::0;;;:::o;20419:101::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20507:5:::1;20501:3;:11;;;;:::i;:::-;20484:14;:28;;;;20419:101:::0;:::o;19876:224::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20001:5:::1;19962:18;:36;19981:16;;;;;;;;;;;19962:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20036:9;20017:16;;:28;;;;;;;;;;;;;;;;;;20088:4;20056:18;:29;20075:9;20056:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19876:224:::0;:::o;20786:153::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20838:26:::1;20867:21;20838:50;;20899:32;20912:18;20899:12;:32::i;:::-;20827:112;20786:153::o:0;16859:138::-;16925:7;16952:37;16972:7;:16;16980:7;16972:16;;;;;;;;;;;;;;;;16952:19;:37::i;:::-;16945:44;;16859:138;;;:::o;8950:148::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9057:1:::1;9020:40;;9041:6;::::0;::::1;;;;;;;;9020:40;;;;;;;;;;;;9088:1;9071:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8950:148::o:0;8736:79::-;8774:7;8801:6;;;;;;;;;;;8794:13;;8736:79;:::o;18428:87::-;18467:13;18500:7;;;;;;;;;;;;;;;;;18493:14;;18428:87;:::o;17670:167::-;17748:4;17765:42;17775:12;:10;:12::i;:::-;17789:9;17800:6;17765:9;:42::i;:::-;17825:4;17818:11;;17670:167;;;;:::o;20620:154::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20672:23:::1;20698:24;20716:4;20698:9;:24::i;:::-;20672:50;;20733:33;20750:15;20733:16;:33::i;:::-;20661:113;20620:154::o:0;19101:767::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19165:11:::1;;;;;;;;;;;19164:12;19156:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;19214:35;19271:42;19214:100;;19343:16;19325:15;;:34;;;;;;;;;;;;;;;;;;19370:58;19387:4;19402:15;;;;;;;;;;;9414:12;19370:8;:58::i;:::-;19473:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19455:56;;;19520:4;19527:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19455:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19439:13;;:112;;;;;;;;;;;;;;;;;;19562:15;;;;;;;;;;;:31;;;19601:21;19632:4;19638:24;19656:4;19638:9;:24::i;:::-;19663:1;19665::::0;19667:7:::1;:5;:7::i;:::-;19675:15;19562:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19709:13;;;;;;;;;;;19702:29;;;19740:15;;;;;;;;;;;19758:14;19702:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19827:4;19784:25;:40;19810:13;;;;;;;;;;;19784:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;19856:4;19842:11;;:18;;;;;;;;;;;;;;;;;;19145:723;19101:767::o:0;20528:84::-;8873:12;:10;:12::i;:::-;8863:22;;:6;;;;;;;;;;:22;;;8855:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20599:5:::1;20589:7;;:15;;;;;;;;;;;;;;;;;;20528:84:::0;:::o;16750:101::-;16795:4;16819:24;16829:13;;;;;;;;;;;16819:9;:24::i;:::-;16812:31;;16750:101;:::o;17005:143::-;17086:7;17113:11;:18;17125:5;17113:18;;;;;;;;;;;;;;;:27;17132:7;17113:27;;;;;;;;;;;;;;;;17106:34;;17005:143;;;;:::o;8276:98::-;8329:7;8356:10;8349:17;;8276:98;:::o;18717:335::-;18827:1;18810:19;;:5;:19;;;18802:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18908:1;18889:21;;:7;:21;;;18881:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18990:6;18960:11;:18;18972:5;18960:18;;;;;;;;;;;;;;;:27;18979:7;18960:27;;;;;;;;;;;;;;;:36;;;;19028:7;19012:32;;19021:5;19012:32;;;19037:6;19012:32;;;;;;:::i;:::-;;;;;;;;18717:335;;;:::o;11258:1581::-;11362:1;11346:18;;:4;:18;;;11338:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11439:1;11425:16;;:2;:16;;;11417:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11509:1;11500:6;:10;11492:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11580:7;:5;:7::i;:::-;11572:15;;:4;:15;;;;:32;;;;;11597:7;:5;:7::i;:::-;11591:13;;:2;:13;;;;11572:32;11569:935;;;11632:13;;;;;;;;;;;11626:19;;:2;:19;;;;:52;;;;;11650:24;:28;11675:2;11650:28;;;;;;;;;;;;;;;;;;;;;;;;;11649:29;11626:52;:75;;;;;11700:1;11682:14;;:19;;11626:75;11623:212;;;11765:14;;11755:6;11730:22;11748:2;11730:9;:22::i;:::-;:31;;;;:::i;:::-;:49;;11722:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11623:212;11874:13;;;;;;;;;;;11866:21;;:4;:21;;;:55;;;;;11905:15;;;;;;;;;;;11891:30;;:2;:30;;;;11866:55;:82;;;;;11926:18;:22;11945:2;11926:22;;;;;;;;;;;;;;;;;;;;;;;;;11925:23;11866:82;11863:207;;;11977:11;;;;;;;;;;;11969:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12047:7;;12036:8;:18;;;;11863:207;12084:28;12115:24;12133:4;12115:9;:24::i;:::-;12084:55;;12160:6;;;;;;;;;;;12159:7;:32;;;;;12178:13;;;;;;;;;;;12170:21;;:4;:21;;;;12159:32;:47;;;;;12195:11;;;;;;;;;;;12159:47;12156:337;;;12240:8;;12229;:19;;;;12273:25;:29;12299:2;12273:29;;;;;;;;;;;;;;;;;;;;;;;;;12269:209;;;12353:23;;12330:20;:46;12327:132;;;12405:30;12414:20;12405:8;:30::i;:::-;12327:132;12269:209;12156:337;11606:898;11569:935;12514:12;12529:4;12514:19;;12549:7;;;;;;;;;;;:35;;;;12560:18;:24;12579:4;12560:24;;;;;;;;;;;;;;;;;;;;;;;;;12549:35;:61;;;;12588:18;:22;12607:2;12588:22;;;;;;;;;;;;;;;;;;;;;;;;;12549:61;12546:227;;;12637:5;12627:15;;12546:227;;;12664:25;:31;12690:4;12664:31;;;;;;;;;;;;;;;;;;;;;;;;;12663:32;:66;;;;;12700:25;:29;12726:2;12700:29;;;;;;;;;;;;;;;;;;;;;;;;;12699:30;12663:66;12660:113;;;12756:5;12746:15;;12660:113;12546:227;12793:38;12808:4;12813:2;12816:6;12823:7;12793:14;:38::i;:::-;11327:1512;11258:1581;;;:::o;3924:192::-;4010:7;4043:1;4038;:6;;4046:12;4030:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4070:9;4086:1;4082;:5;;;;:::i;:::-;4070:17;;4107:1;4100:8;;;3924:192;;;;;:::o;13639:159::-;13697:12;13715:16;;;;;;;;;;;:21;;13744:6;13715:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13696:59;;;13773:17;13782:7;13773:17;;;;;;:::i;:::-;;;;;;;;13685:113;13639:159;:::o;18166:254::-;18233:7;18272;;18261;:18;;18253:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18337:19;18360:10;:8;:10::i;:::-;18337:33;;18388:24;18400:11;18388:7;:11;;:24;;;;:::i;:::-;18381:31;;;18166:254;;;:::o;13140:483::-;10559:4;10550:6;;:13;;;;;;;;;;;;;;;;;;13218:21:::1;13256:1;13242:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13218:40;;13287:4;13269;13274:1;13269:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13313:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13303:4;13308:1;13303:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13346:62;13363:4;13378:15;;;;;;;;;;;13396:11;13346:8;:62::i;:::-;13419:15;;;;;;;;;;;:66;;;13500:11;13526:1;13542:4;13569;13589:15;13419:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13207:416;10595:5:::0;10586:6;;:14;;;;;;;;;;;;;;;;;;13140:483;:::o;12847:285::-;12924:38;12941:20;12924:16;:38::i;:::-;12975:26;13004:21;12975:50;;13060:1;13039:18;:22;13036:89;;;13078:35;13091:21;13078:12;:35::i;:::-;13036:89;12903:229;12847:285;:::o;13810:263::-;13922:7;13918:40;;13944:14;:12;:14::i;:::-;13918:40;13969:44;13987:6;13995:9;14006:6;13969:17;:44::i;:::-;14028:7;14024:41;;14050:15;:13;:15::i;:::-;14024:41;13810:263;;;;:::o;15414:163::-;15455:7;15476:15;15493;15512:19;:17;:19::i;:::-;15475:56;;;;15549:20;15561:7;15549;:11;;:20;;;;:::i;:::-;15542:27;;;;15414:163;:::o;5322:132::-;5380:7;5407:39;5411:1;5414;5407:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5400:46;;5322:132;;;;:::o;17325:210::-;17382:1;17371:7;;:12;:29;;;;;17399:1;17387:8;;:13;17371:29;17402:7;17368:41;17437:7;;17419:15;:25;;;;17474:8;;17455:16;:27;;;;17503:1;17493:7;:11;;;;17526:1;17515:8;:12;;;;17325:210;:::o;14081:490::-;14180:15;14197:23;14222:12;14236:23;14261:12;14275:13;14292:19;14303:7;14292:10;:19::i;:::-;14179:132;;;;;;;;;;;;14340:28;14360:7;14340;:15;14348:6;14340:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14322:7;:15;14330:6;14322:15;;;;;;;;;;;;;;;:46;;;;14400:39;14423:15;14400:7;:18;14408:9;14400:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14379:7;:18;14387:9;14379:18;;;;;;;;;;;;;;;:60;;;;14453:16;14463:5;14453:9;:16::i;:::-;14480:23;14492:4;14498;14480:11;:23::i;:::-;14536:9;14519:44;;14528:6;14519:44;;;14547:15;14519:44;;;;;;:::i;:::-;;;;;;;;14168:403;;;;;;14081:490;;;:::o;17547:115::-;17601:15;;17591:7;:25;;;;17638:16;;17627:8;:27;;;;17547:115::o;15585:255::-;15635:7;15644;15664:15;15682:7;;15664:25;;15700:15;9414:12;15700:25;;15749:20;9414:12;15749:7;;:11;;:20;;;;:::i;:::-;15739:7;:30;15736:60;;;15779:7;;9414:12;15771:25;;;;;;;;15736:60;15815:7;15824;15807:25;;;;;;15585:255;;;:::o;5950:278::-;6036:7;6068:1;6064;:5;6071:12;6056:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6095:9;6111:1;6107;:5;;;;:::i;:::-;6095:17;;6219:1;6212:8;;;5950:278;;;;;:::o;14579:468::-;14638:7;14647;14656;14665;14674;14683;14704:23;14729:12;14743:13;14760:39;14772:7;14781;;14790:8;;14760:11;:39::i;:::-;14703:96;;;;;;14810:19;14833:10;:8;:10::i;:::-;14810:33;;14855:15;14872:23;14897:12;14913:46;14925:7;14934:4;14940:5;14947:11;14913;:46::i;:::-;14854:105;;;;;;14978:7;14987:15;15004:4;15010:15;15027:4;15033:5;14970:69;;;;;;;;;;;;;;;;;;;14579:468;;;;;;;:::o;3485:136::-;3543:7;3570:43;3574:1;3577;3570:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3563:50;;3485:136;;;;:::o;3021:181::-;3079:7;3099:9;3115:1;3111;:5;;;;:::i;:::-;3099:17;;3140:1;3135;:6;;3127:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3193:1;3186:8;;;3021:181;;;;:::o;16265:214::-;16318:19;16341:10;:8;:10::i;:::-;16318:33;;16362:13;16378:22;16388:11;16378:5;:9;;:22;;;;:::i;:::-;16362:38;;16438:33;16465:5;16438:7;:22;16454:4;16438:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;16413:7;:22;16429:4;16413:22;;;;;;;;;;;;;;;:58;;;;16307:172;;16265:214;:::o;16487:147::-;16565:17;16577:4;16565:7;;:11;;:17;;;;:::i;:::-;16555:7;:27;;;;16606:20;16621:4;16606:10;;:14;;:20;;;;:::i;:::-;16593:10;:33;;;;16487:147;;:::o;15055:351::-;15148:7;15157;15166;15186:12;15201:28;15225:3;15201:19;15213:6;15201:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15186:43;;15240:13;15256:29;15281:3;15256:20;15268:7;15256;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15240:45;;15296:23;15322:28;15344:5;15322:17;15334:4;15322:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15296:54;;15369:15;15386:4;15392:5;15361:37;;;;;;;;;15055:351;;;;;;;:::o;15848:409::-;15958:7;15967;15976;15996:15;16014:24;16026:11;16014:7;:11;;:24;;;;:::i;:::-;15996:42;;16049:12;16064:21;16073:11;16064:4;:8;;:21;;;;:::i;:::-;16049:36;;16096:13;16112:22;16122:11;16112:5;:9;;:22;;;;:::i;:::-;16096:38;;16145:23;16171:28;16193:5;16171:17;16183:4;16171:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16145:54;;16218:7;16227:15;16244:4;16210:39;;;;;;;;;;15848:409;;;;;;;;:::o;4375:471::-;4433:7;4683:1;4678;:6;4674:47;;4708:1;4701:8;;;;4674:47;4733:9;4749:1;4745;:5;;;;:::i;:::-;4733:17;;4778:1;4773;4769;:5;;;;:::i;:::-;:10;4761:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4837:1;4830:8;;;4375:471;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:619::-;5265:6;5273;5281;5330:2;5318:9;5309:7;5305:23;5301:32;5298:119;;;5336:79;;:::i;:::-;5298:119;5456:1;5481:53;5526:7;5517:6;5506:9;5502:22;5481:53;:::i;:::-;5471:63;;5427:117;5583:2;5609:53;5654:7;5645:6;5634:9;5630:22;5609:53;:::i;:::-;5599:63;;5554:118;5711:2;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5682:118;5188:619;;;;;:::o;5813:104::-;5858:7;5887:24;5905:5;5887:24;:::i;:::-;5876:35;;5813:104;;;:::o;5923:138::-;6004:32;6030:5;6004:32;:::i;:::-;5997:5;5994:43;5984:71;;6051:1;6048;6041:12;5984:71;5923:138;:::o;6067:155::-;6121:5;6159:6;6146:20;6137:29;;6175:41;6210:5;6175:41;:::i;:::-;6067:155;;;;:::o;6228:345::-;6295:6;6344:2;6332:9;6323:7;6319:23;6315:32;6312:119;;;6350:79;;:::i;:::-;6312:119;6470:1;6495:61;6548:7;6539:6;6528:9;6524:22;6495:61;:::i;:::-;6485:71;;6441:125;6228:345;;;;:::o;6579:329::-;6638:6;6687:2;6675:9;6666:7;6662:23;6658:32;6655:119;;;6693:79;;:::i;:::-;6655:119;6813:1;6838:53;6883:7;6874:6;6863:9;6859:22;6838:53;:::i;:::-;6828:63;;6784:117;6579:329;;;;:::o;6914:118::-;7001:24;7019:5;7001:24;:::i;:::-;6996:3;6989:37;6914:118;;:::o;7038:222::-;7131:4;7169:2;7158:9;7154:18;7146:26;;7182:71;7250:1;7239:9;7235:17;7226:6;7182:71;:::i;:::-;7038:222;;;;:::o;7266:116::-;7336:21;7351:5;7336:21;:::i;:::-;7329:5;7326:32;7316:60;;7372:1;7369;7362:12;7316:60;7266:116;:::o;7388:133::-;7431:5;7469:6;7456:20;7447:29;;7485:30;7509:5;7485:30;:::i;:::-;7388:133;;;;:::o;7527:323::-;7583:6;7632:2;7620:9;7611:7;7607:23;7603:32;7600:119;;;7638:79;;:::i;:::-;7600:119;7758:1;7783:50;7825:7;7816:6;7805:9;7801:22;7783:50;:::i;:::-;7773:60;;7729:114;7527:323;;;;:::o;7856:474::-;7924:6;7932;7981:2;7969:9;7960:7;7956:23;7952:32;7949:119;;;7987:79;;:::i;:::-;7949:119;8107:1;8132:53;8177:7;8168:6;8157:9;8153:22;8132:53;:::i;:::-;8122:63;;8078:117;8234:2;8260:53;8305:7;8296:6;8285:9;8281:22;8260:53;:::i;:::-;8250:63;;8205:118;7856:474;;;;;:::o;8336:182::-;8476:34;8472:1;8464:6;8460:14;8453:58;8336:182;:::o;8524:366::-;8666:3;8687:67;8751:2;8746:3;8687:67;:::i;:::-;8680:74;;8763:93;8852:3;8763:93;:::i;:::-;8881:2;8876:3;8872:12;8865:19;;8524:366;;;:::o;8896:419::-;9062:4;9100:2;9089:9;9085:18;9077:26;;9149:9;9143:4;9139:20;9135:1;9124:9;9120:17;9113:47;9177:131;9303:4;9177:131;:::i;:::-;9169:139;;8896:419;;;:::o;9321:180::-;9369:77;9366:1;9359:88;9466:4;9463:1;9456:15;9490:4;9487:1;9480:15;9507:410;9547:7;9570:20;9588:1;9570:20;:::i;:::-;9565:25;;9604:20;9622:1;9604:20;:::i;:::-;9599:25;;9659:1;9656;9652:9;9681:30;9699:11;9681:30;:::i;:::-;9670:41;;9860:1;9851:7;9847:15;9844:1;9841:22;9821:1;9814:9;9794:83;9771:139;;9890:18;;:::i;:::-;9771:139;9555:362;9507:410;;;;:::o;9923:173::-;10063:25;10059:1;10051:6;10047:14;10040:49;9923:173;:::o;10102:366::-;10244:3;10265:67;10329:2;10324:3;10265:67;:::i;:::-;10258:74;;10341:93;10430:3;10341:93;:::i;:::-;10459:2;10454:3;10450:12;10443:19;;10102:366;;;:::o;10474:419::-;10640:4;10678:2;10667:9;10663:18;10655:26;;10727:9;10721:4;10717:20;10713:1;10702:9;10698:17;10691:47;10755:131;10881:4;10755:131;:::i;:::-;10747:139;;10474:419;;;:::o;10899:143::-;10956:5;10987:6;10981:13;10972:22;;11003:33;11030:5;11003:33;:::i;:::-;10899:143;;;;:::o;11048:351::-;11118:6;11167:2;11155:9;11146:7;11142:23;11138:32;11135:119;;;11173:79;;:::i;:::-;11135:119;11293:1;11318:64;11374:7;11365:6;11354:9;11350:22;11318:64;:::i;:::-;11308:74;;11264:128;11048:351;;;;:::o;11405:332::-;11526:4;11564:2;11553:9;11549:18;11541:26;;11577:71;11645:1;11634:9;11630:17;11621:6;11577:71;:::i;:::-;11658:72;11726:2;11715:9;11711:18;11702:6;11658:72;:::i;:::-;11405:332;;;;;:::o;11743:85::-;11788:7;11817:5;11806:16;;11743:85;;;:::o;11834:60::-;11862:3;11883:5;11876:12;;11834:60;;;:::o;11900:158::-;11958:9;11991:61;12009:42;12018:32;12044:5;12018:32;:::i;:::-;12009:42;:::i;:::-;11991:61;:::i;:::-;11978:74;;11900:158;;;:::o;12064:147::-;12159:45;12198:5;12159:45;:::i;:::-;12154:3;12147:58;12064:147;;:::o;12217:807::-;12466:4;12504:3;12493:9;12489:19;12481:27;;12518:71;12586:1;12575:9;12571:17;12562:6;12518:71;:::i;:::-;12599:72;12667:2;12656:9;12652:18;12643:6;12599:72;:::i;:::-;12681:80;12757:2;12746:9;12742:18;12733:6;12681:80;:::i;:::-;12771;12847:2;12836:9;12832:18;12823:6;12771:80;:::i;:::-;12861:73;12929:3;12918:9;12914:19;12905:6;12861:73;:::i;:::-;12944;13012:3;13001:9;12997:19;12988:6;12944:73;:::i;:::-;12217:807;;;;;;;;;:::o;13030:143::-;13087:5;13118:6;13112:13;13103:22;;13134:33;13161:5;13134:33;:::i;:::-;13030:143;;;;:::o;13179:663::-;13267:6;13275;13283;13332:2;13320:9;13311:7;13307:23;13303:32;13300:119;;;13338:79;;:::i;:::-;13300:119;13458:1;13483:64;13539:7;13530:6;13519:9;13515:22;13483:64;:::i;:::-;13473:74;;13429:128;13596:2;13622:64;13678:7;13669:6;13658:9;13654:22;13622:64;:::i;:::-;13612:74;;13567:129;13735:2;13761:64;13817:7;13808:6;13797:9;13793:22;13761:64;:::i;:::-;13751:74;;13706:129;13179:663;;;;;:::o;13848:332::-;13969:4;14007:2;13996:9;13992:18;13984:26;;14020:71;14088:1;14077:9;14073:17;14064:6;14020:71;:::i;:::-;14101:72;14169:2;14158:9;14154:18;14145:6;14101:72;:::i;:::-;13848:332;;;;;:::o;14186:137::-;14240:5;14271:6;14265:13;14256:22;;14287:30;14311:5;14287:30;:::i;:::-;14186:137;;;;:::o;14329:345::-;14396:6;14445:2;14433:9;14424:7;14420:23;14416:32;14413:119;;;14451:79;;:::i;:::-;14413:119;14571:1;14596:61;14649:7;14640:6;14629:9;14625:22;14596:61;:::i;:::-;14586:71;;14542:125;14329:345;;;;:::o;14680:223::-;14820:34;14816:1;14808:6;14804:14;14797:58;14889:6;14884:2;14876:6;14872:15;14865:31;14680:223;:::o;14909:366::-;15051:3;15072:67;15136:2;15131:3;15072:67;:::i;:::-;15065:74;;15148:93;15237:3;15148:93;:::i;:::-;15266:2;15261:3;15257:12;15250:19;;14909:366;;;:::o;15281:419::-;15447:4;15485:2;15474:9;15470:18;15462:26;;15534:9;15528:4;15524:20;15520:1;15509:9;15505:17;15498:47;15562:131;15688:4;15562:131;:::i;:::-;15554:139;;15281:419;;;:::o;15706:221::-;15846:34;15842:1;15834:6;15830:14;15823:58;15915:4;15910:2;15902:6;15898:15;15891:29;15706:221;:::o;15933:366::-;16075:3;16096:67;16160:2;16155:3;16096:67;:::i;:::-;16089:74;;16172:93;16261:3;16172:93;:::i;:::-;16290:2;16285:3;16281:12;16274:19;;15933:366;;;:::o;16305:419::-;16471:4;16509:2;16498:9;16494:18;16486:26;;16558:9;16552:4;16548:20;16544:1;16533:9;16529:17;16522:47;16586:131;16712:4;16586:131;:::i;:::-;16578:139;;16305:419;;;:::o;16730:224::-;16870:34;16866:1;16858:6;16854:14;16847:58;16939:7;16934:2;16926:6;16922:15;16915:32;16730:224;:::o;16960:366::-;17102:3;17123:67;17187:2;17182:3;17123:67;:::i;:::-;17116:74;;17199:93;17288:3;17199:93;:::i;:::-;17317:2;17312:3;17308:12;17301:19;;16960:366;;;:::o;17332:419::-;17498:4;17536:2;17525:9;17521:18;17513:26;;17585:9;17579:4;17575:20;17571:1;17560:9;17556:17;17549:47;17613:131;17739:4;17613:131;:::i;:::-;17605:139;;17332:419;;;:::o;17757:222::-;17897:34;17893:1;17885:6;17881:14;17874:58;17966:5;17961:2;17953:6;17949:15;17942:30;17757:222;:::o;17985:366::-;18127:3;18148:67;18212:2;18207:3;18148:67;:::i;:::-;18141:74;;18224:93;18313:3;18224:93;:::i;:::-;18342:2;18337:3;18333:12;18326:19;;17985:366;;;:::o;18357:419::-;18523:4;18561:2;18550:9;18546:18;18538:26;;18610:9;18604:4;18600:20;18596:1;18585:9;18581:17;18574:47;18638:131;18764:4;18638:131;:::i;:::-;18630:139;;18357:419;;;:::o;18782:228::-;18922:34;18918:1;18910:6;18906:14;18899:58;18991:11;18986:2;18978:6;18974:15;18967:36;18782:228;:::o;19016:366::-;19158:3;19179:67;19243:2;19238:3;19179:67;:::i;:::-;19172:74;;19255:93;19344:3;19255:93;:::i;:::-;19373:2;19368:3;19364:12;19357:19;;19016:366;;;:::o;19388:419::-;19554:4;19592:2;19581:9;19577:18;19569:26;;19641:9;19635:4;19631:20;19627:1;19616:9;19612:17;19605:47;19669:131;19795:4;19669:131;:::i;:::-;19661:139;;19388:419;;;:::o;19813:191::-;19853:3;19872:20;19890:1;19872:20;:::i;:::-;19867:25;;19906:20;19924:1;19906:20;:::i;:::-;19901:25;;19949:1;19946;19942:9;19935:16;;19970:3;19967:1;19964:10;19961:36;;;19977:18;;:::i;:::-;19961:36;19813:191;;;;:::o;20010:222::-;20150:34;20146:1;20138:6;20134:14;20127:58;20219:5;20214:2;20206:6;20202:15;20195:30;20010:222;:::o;20238:366::-;20380:3;20401:67;20465:2;20460:3;20401:67;:::i;:::-;20394:74;;20477:93;20566:3;20477:93;:::i;:::-;20595:2;20590:3;20586:12;20579:19;;20238:366;;;:::o;20610:419::-;20776:4;20814:2;20803:9;20799:18;20791:26;;20863:9;20857:4;20853:20;20849:1;20838:9;20834:17;20827:47;20891:131;21017:4;20891:131;:::i;:::-;20883:139;;20610:419;;;:::o;21035:174::-;21175:26;21171:1;21163:6;21159:14;21152:50;21035:174;:::o;21215:366::-;21357:3;21378:67;21442:2;21437:3;21378:67;:::i;:::-;21371:74;;21454:93;21543:3;21454:93;:::i;:::-;21572:2;21567:3;21563:12;21556:19;;21215:366;;;:::o;21587:419::-;21753:4;21791:2;21780:9;21776:18;21768:26;;21840:9;21834:4;21830:20;21826:1;21815:9;21811:17;21804:47;21868:131;21994:4;21868:131;:::i;:::-;21860:139;;21587:419;;;:::o;22012:194::-;22052:4;22072:20;22090:1;22072:20;:::i;:::-;22067:25;;22106:20;22124:1;22106:20;:::i;:::-;22101:25;;22150:1;22147;22143:9;22135:17;;22174:1;22168:4;22165:11;22162:37;;;22179:18;;:::i;:::-;22162:37;22012:194;;;;:::o;22212:147::-;22313:11;22350:3;22335:18;;22212:147;;;;:::o;22365:114::-;;:::o;22485:398::-;22644:3;22665:83;22746:1;22741:3;22665:83;:::i;:::-;22658:90;;22757:93;22846:3;22757:93;:::i;:::-;22875:1;22870:3;22866:11;22859:18;;22485:398;;;:::o;22889:379::-;23073:3;23095:147;23238:3;23095:147;:::i;:::-;23088:154;;23259:3;23252:10;;22889:379;;;:::o;23274:229::-;23414:34;23410:1;23402:6;23398:14;23391:58;23483:12;23478:2;23470:6;23466:15;23459:37;23274:229;:::o;23509:366::-;23651:3;23672:67;23736:2;23731:3;23672:67;:::i;:::-;23665:74;;23748:93;23837:3;23748:93;:::i;:::-;23866:2;23861:3;23857:12;23850:19;;23509:366;;;:::o;23881:419::-;24047:4;24085:2;24074:9;24070:18;24062:26;;24134:9;24128:4;24124:20;24120:1;24109:9;24105:17;24098:47;24162:131;24288:4;24162:131;:::i;:::-;24154:139;;23881:419;;;:::o;24306:180::-;24354:77;24351:1;24344:88;24451:4;24448:1;24441:15;24475:4;24472:1;24465:15;24492:180;24540:77;24537:1;24530:88;24637:4;24634:1;24627:15;24661:4;24658:1;24651:15;24678:114;24745:6;24779:5;24773:12;24763:22;;24678:114;;;:::o;24798:184::-;24897:11;24931:6;24926:3;24919:19;24971:4;24966:3;24962:14;24947:29;;24798:184;;;;:::o;24988:132::-;25055:4;25078:3;25070:11;;25108:4;25103:3;25099:14;25091:22;;24988:132;;;:::o;25126:108::-;25203:24;25221:5;25203:24;:::i;:::-;25198:3;25191:37;25126:108;;:::o;25240:179::-;25309:10;25330:46;25372:3;25364:6;25330:46;:::i;:::-;25408:4;25403:3;25399:14;25385:28;;25240:179;;;;:::o;25425:113::-;25495:4;25527;25522:3;25518:14;25510:22;;25425:113;;;:::o;25574:732::-;25693:3;25722:54;25770:5;25722:54;:::i;:::-;25792:86;25871:6;25866:3;25792:86;:::i;:::-;25785:93;;25902:56;25952:5;25902:56;:::i;:::-;25981:7;26012:1;25997:284;26022:6;26019:1;26016:13;25997:284;;;26098:6;26092:13;26125:63;26184:3;26169:13;26125:63;:::i;:::-;26118:70;;26211:60;26264:6;26211:60;:::i;:::-;26201:70;;26057:224;26044:1;26041;26037:9;26032:14;;25997:284;;;26001:14;26297:3;26290:10;;25698:608;;;25574:732;;;;:::o;26312:831::-;26575:4;26613:3;26602:9;26598:19;26590:27;;26627:71;26695:1;26684:9;26680:17;26671:6;26627:71;:::i;:::-;26708:80;26784:2;26773:9;26769:18;26760:6;26708:80;:::i;:::-;26835:9;26829:4;26825:20;26820:2;26809:9;26805:18;26798:48;26863:108;26966:4;26957:6;26863:108;:::i;:::-;26855:116;;26981:72;27049:2;27038:9;27034:18;27025:6;26981:72;:::i;:::-;27063:73;27131:3;27120:9;27116:19;27107:6;27063:73;:::i;:::-;26312:831;;;;;;;;:::o;27149:180::-;27197:77;27194:1;27187:88;27294:4;27291:1;27284:15;27318:4;27315:1;27308:15;27335:185;27375:1;27392:20;27410:1;27392:20;:::i;:::-;27387:25;;27426:20;27444:1;27426:20;:::i;:::-;27421:25;;27465:1;27455:35;;27470:18;;:::i;:::-;27455:35;27512:1;27509;27505:9;27500:14;;27335:185;;;;:::o;27526:177::-;27666:29;27662:1;27654:6;27650:14;27643:53;27526:177;:::o;27709:366::-;27851:3;27872:67;27936:2;27931:3;27872:67;:::i;:::-;27865:74;;27948:93;28037:3;27948:93;:::i;:::-;28066:2;28061:3;28057:12;28050:19;;27709:366;;;:::o;28081:419::-;28247:4;28285:2;28274:9;28270:18;28262:26;;28334:9;28328:4;28324:20;28320:1;28309:9;28305:17;28298:47;28362:131;28488:4;28362:131;:::i;:::-;28354:139;;28081:419;;;:::o;28506:220::-;28646:34;28642:1;28634:6;28630:14;28623:58;28715:3;28710:2;28702:6;28698:15;28691:28;28506:220;:::o;28732:366::-;28874:3;28895:67;28959:2;28954:3;28895:67;:::i;:::-;28888:74;;28971:93;29060:3;28971:93;:::i;:::-;29089:2;29084:3;29080:12;29073:19;;28732:366;;;:::o;29104:419::-;29270:4;29308:2;29297:9;29293:18;29285:26;;29357:9;29351:4;29347:20;29343:1;29332:9;29328:17;29321:47;29385:131;29511:4;29385:131;:::i;:::-;29377:139;;29104:419;;;:::o

Swarm Source

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