ETH Price: $4,014.10 (+3.89%)

Token

ERC-20: Trust The Elites (TRUSTELITES)
 

Overview

Max Total Supply

100,000,000,000,000 TRUSTELITES

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,940,860,957,012.054129022 TRUSTELITES

Value
$0.00
0xf55bdffecd0da2c51ba550a3b522fbb57e999db5
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:
TrustElites

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
                                                                                                      
   ████████╗██████╗░██╗░░░██╗░██████╗████████╗  ████████╗██╗░░██╗███████╗
   ╚══██╔══╝██╔══██╗██║░░░██║██╔════╝╚══██╔══╝  ╚══██╔══╝██║░░██║██╔════╝
   ░░░██║░░░██████╔╝██║░░░██║╚█████╗░░░░██║░░░  ░░░██║░░░███████║█████╗░░
   ░░░██║░░░██╔══██╗██║░░░██║░╚═══██╗░░░██║░░░  ░░░██║░░░██╔══██║██╔══╝░░
   ░░░██║░░░██║░░██║╚██████╔╝██████╔╝░░░██║░░░  ░░░██║░░░██║░░██║███████╗
   ░░░╚═╝░░░╚═╝░░╚═╝░╚═════╝░╚═════╝░░░░╚═╝░░░  ░░░╚═╝░░░╚═╝░░╚═╝╚══════╝

   ███████╗██╗░░░░░██╗████████╗███████╗░██████╗
   ██╔════╝██║░░░░░██║╚══██╔══╝██╔════╝██╔════╝
   ████╗░░░██║░░░░░██║░░░██║░░░█████╗░░╚█████╗░
   ██╔══╝░░██║░░░░░██║░░░██║░░░██╔══╝░░░╚═══██╗
   ███████╗███████╗██║░░░██║░░░███████╗██████╔╝
   ╚══════╝╚══════╝╚═╝░░░╚═╝░░░╚══════╝╚═════╝░

   We do not intend to create a Telegram group, we do not intend to reveal who we are really.

   Telegram groups are socials that are setup lately just to pump coins and not to gather and create real & strong communities.

   People need to “Trust The Elites”.

   There is a 2%  Fee.

   Ape and trust the Elites.

*/


//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract TrustElites is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _maxTxAmount = _tTotal;
    uint256 private openBlock;
    uint256 public _swapTokensAtAmount = 100000000000 * 10**9; //0.1%
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;

    string private constant _name = "Trust The Elites";
    string private constant _symbol = "TRUSTELITES";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _feeAddrWallet1 = payable(0xF828cA5B9ba835BDE8137Bb3a6D7df96a613dc13);
        _feeAddrWallet2 = payable(0xF828cA5B9ba835BDE8137Bb3a6D7df96a613dc13);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(
            address(0xF828cA5B9ba835BDE8137Bb3a6D7df96a613dc13),
            _msgSender(),
            _tTotal
        );
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

    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 _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
       
        _feeAddr1 = 1;
        _feeAddr2 = 1;
        if (from != owner() && to != owner() && from != address(this)) {
            
            
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                
                // Not over max tx amount
                require(amount <= _maxTxAmount, "Over max transaction amount.");
                // Cooldown
                require(cooldown[to] < block.timestamp, "Cooldown enforced.");
                // Max wallet
                require(balanceOf(to) + amount <= _maxWalletAmount, "Over max wallet amount.");
                cooldown[to] = block.timestamp + (30 seconds);
            }

            if (
                to == uniswapV2Pair &&
                from != address(uniswapV2Router) &&
                !_isExcludedFromFee[from]
            ) {
                _feeAddr1 = 1;
                _feeAddr2 = 1;
            }

            if (openBlock + 3 >= block.number && from == uniswapV2Pair) {
                _feeAddr1 = 99;
                _feeAddr2 = 1;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        } else {
            // Only if it's not from or to owner or from contract address.
            _feeAddr1 = 0;
            _feeAddr2 = 0;
        }

        _tokenTransfer(from, to, amount);
    }

    function swapAndLiquifyEnabled(bool enabled) public onlyOwner {
        inSwap = enabled;
    }

    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 {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }

    function setMaxTxAmount(uint256 amount) public onlyOwner {
        _maxTxAmount = amount * 10**9;
    }
    function setMaxWalletAmount(uint256 amount) public onlyOwner {
        _maxWalletAmount = amount * 10**9;
    }


    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
        );
        swapEnabled = true;
        cooldownEnabled = true;
        // .5% 
        _maxTxAmount = 1000000000001 * 10**9;
        _maxWalletAmount = 2000000000001 * 10**9;
        tradingOpen = true;
        openBlock = block.number;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

    function addBot(address theBot) public onlyOwner {
        bots[theBot] = true;
    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

    

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"theBot","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"swapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269152d02c7e14af68000006000196200001e91906200051e565b6000196200002d919062000585565b60085569152d02c7e14af6800000600a5568056bc75e2d63100000600c5569152d02c7e14af6800000600d556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506000601360176101000a81548160ff021916908315150217905550348015620000b757600080fd5b506000620000ca620004b460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073f828ca5b9ba835bde8137bb3a6d7df96a613dc13601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f828ca5b9ba835bde8137bb3a6d7df96a613dc13601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008546002600062000229620004b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200027d620004bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200042a620004b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673f828ca5b9ba835bde8137bb3a6d7df96a613dc1373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620004a69190620005d1565b60405180910390a3620005ee565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200052b82620004e5565b91506200053883620004e5565b9250826200054b576200054a620004ef565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200059282620004e5565b91506200059f83620004e5565b925082821015620005b557620005b462000556565b5b828203905092915050565b620005cb81620004e5565b82525050565b6000602082019050620005e86000830184620005c0565b92915050565b61379c80620005fe6000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c91906128e9565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906129a4565b6104fc565b60405161019991906129ff565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190612a29565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612a44565b61052c565b60405161020191906129ff565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c9190612a97565b610605565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612ac4565b6106f5565b005b34801561026857600080fd5b506102716107a3565b60405161027e9190612a29565b60405180910390f35b34801561029357600080fd5b5061029c6107a9565b6040516102a99190612b0d565b60405180910390f35b3480156102be57600080fd5b506102c76107b2565b005b3480156102d557600080fd5b506102f060048036038101906102eb9190612b54565b61082c565b005b3480156102fe57600080fd5b5061031960048036038101906103149190612a97565b6108de565b6040516103269190612a29565b60405180910390f35b34801561033b57600080fd5b5061034461092f565b005b34801561035257600080fd5b5061035b610a82565b6040516103689190612b90565b60405180910390f35b34801561037d57600080fd5b50610386610aab565b60405161039391906128e9565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906129a4565b610ae8565b6040516103d091906129ff565b60405180910390f35b3480156103e557600080fd5b506103ee610b06565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612bab565b61107b565b6040516104249190612a29565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190612b54565b611102565b005b34801561046257600080fd5b5061047d60048036038101906104789190612ac4565b6111b4565b005b34801561048b57600080fd5b50610494611262565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190612a97565b6112d4565b005b60606040518060400160405280601081526020017f54727573742054686520456c6974657300000000000000000000000000000000815250905090565b60006105106105096113c4565b84846113cc565b6001905092915050565b600069152d02c7e14af6800000905090565b6000610539848484611597565b6105fa846105456113c4565b6105f58560405180606001604052806028815260200161373f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ab6113c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d429092919063ffffffff16565b6113cc565b600190509392505050565b61060d6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612c37565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fd6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612c37565b60405180910390fd5b633b9aca008161079a9190612c86565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f36113c4565b73ffffffffffffffffffffffffffffffffffffffff161461081357600080fd5b600061081e306108de565b905061082981611da6565b50565b6108346113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890612c37565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610928600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202e565b9050919050565b6109376113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612c37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f5452555354454c49544553000000000000000000000000000000000000000000815250905090565b6000610afc610af56113c4565b8484611597565b6001905092915050565b610b0e6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612c37565b60405180910390fd5b601360149054906101000a900460ff1615610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612d2c565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006113cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612d61565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5c57600080fd5b505afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d949190612d61565b6040518363ffffffff1660e01b8152600401610db1929190612d8e565b602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e039190612d61565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c306108de565b600080610e97610a82565b426040518863ffffffff1660e01b8152600401610eb996959493929190612dfc565b6060604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190612e72565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550683635c9adc61a3aca00600a81905550686c6b935b8bf8daca00600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611025929190612ec5565b602060405180830381600087803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612f03565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110a6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612c37565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111bc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612c37565b60405180910390fd5b633b9aca00816112599190612c86565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a36113c4565b73ffffffffffffffffffffffffffffffffffffffff16146112c357600080fd5b60004790506112d18161209c565b50565b6112dc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612c37565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612fa2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390613034565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158a9190612a29565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe906130c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90613158565b60405180910390fd5b600081116116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906131ea565b60405180910390fd5b6001600e819055506001600f819055506116d2610a82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117405750611710610a82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118215750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61182a57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561192b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119435750601360179054906101000a900460ff165b15611ab757600a5481111561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613256565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906132c2565b60405180910390fd5b600d5481611a1b846108de565b611a2591906132e2565b1115611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613384565b60405180910390fd5b601e42611a7391906132e2565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bce576001600e819055506001600f819055505b436003600b54611bde91906132e2565b10158015611c395750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c4f576063600e819055506001600f819055505b6000611c5a306108de565b90506000600c548210159050808015611c805750601360159054906101000a900460ff16155b8015611cda5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf25750601360169054906101000a900460ff165b15611d1a57611d0082611da6565b60004790506000811115611d1857611d174761209c565b5b505b5050611d32565b6000600e819055506000600f819055505b611d3d838383612197565b505050565b6000838311158290611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8191906128e9565b60405180910390fd5b5060008385611d9991906133a4565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dde57611ddd6133d8565b5b604051908082528060200260200182016040528015611e0c5781602001602082028036833780820191505090505b5090503081600081518110611e2457611e23613407565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec657600080fd5b505afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe9190612d61565b81600181518110611f1257611f11613407565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113cc565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fdd9594939291906134f4565b600060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906135c0565b60405180910390fd5b600061207f6121a7565b905061209481846121d290919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ec6002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612117573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121686002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612193573d6000803e3d6000fd5b5050565b6121a283838361221c565b505050565b60008060006121b46123e7565b915091506121cb81836121d290919063ffffffff16565b9250505090565b600061221483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244c565b905092915050565b60008060008060008061222e876124af565b95509550955095509550955061228c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d816125bf565b612377848361267c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d49190612a29565b60405180910390a3505050505050505050565b60008060006008549050600069152d02c7e14af6800000905061241f69152d02c7e14af68000006008546121d290919063ffffffff16565b82101561243f5760085469152d02c7e14af6800000935093505050612448565b81819350935050505b9091565b60008083118290612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a91906128e9565b60405180910390fd5b50600083856124a2919061360f565b9050809150509392505050565b60008060008060008060008060006124cc8a600e54600f546126b6565b92509250925060006124dc6121a7565b905060008060006124ef8e87878761274c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061255983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d42565b905092915050565b600080828461257091906132e2565b9050838110156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac9061368c565b60405180910390fd5b8091505092915050565b60006125c96121a7565b905060006125e082846127d590919063ffffffff16565b905061263481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126918260085461251790919063ffffffff16565b6008819055506126ac8160095461256190919063ffffffff16565b6009819055505050565b6000806000806126e260646126d4888a6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061270c60646126fe888b6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061273582612727858c61251790919063ffffffff16565b61251790919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276585896127d590919063ffffffff16565b9050600061277c86896127d590919063ffffffff16565b9050600061279387896127d590919063ffffffff16565b905060006127bc826127ae858761251790919063ffffffff16565b61251790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127e8576000905061284a565b600082846127f69190612c86565b9050828482612805919061360f565b14612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c9061371e565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561288a57808201518184015260208101905061286f565b83811115612899576000848401525b50505050565b6000601f19601f8301169050919050565b60006128bb82612850565b6128c5818561285b565b93506128d581856020860161286c565b6128de8161289f565b840191505092915050565b6000602082019050818103600083015261290381846128b0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061293b82612910565b9050919050565b61294b81612930565b811461295657600080fd5b50565b60008135905061296881612942565b92915050565b6000819050919050565b6129818161296e565b811461298c57600080fd5b50565b60008135905061299e81612978565b92915050565b600080604083850312156129bb576129ba61290b565b5b60006129c985828601612959565b92505060206129da8582860161298f565b9150509250929050565b60008115159050919050565b6129f9816129e4565b82525050565b6000602082019050612a1460008301846129f0565b92915050565b612a238161296e565b82525050565b6000602082019050612a3e6000830184612a1a565b92915050565b600080600060608486031215612a5d57612a5c61290b565b5b6000612a6b86828701612959565b9350506020612a7c86828701612959565b9250506040612a8d8682870161298f565b9150509250925092565b600060208284031215612aad57612aac61290b565b5b6000612abb84828501612959565b91505092915050565b600060208284031215612ada57612ad961290b565b5b6000612ae88482850161298f565b91505092915050565b600060ff82169050919050565b612b0781612af1565b82525050565b6000602082019050612b226000830184612afe565b92915050565b612b31816129e4565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600060208284031215612b6a57612b6961290b565b5b6000612b7884828501612b3f565b91505092915050565b612b8a81612930565b82525050565b6000602082019050612ba56000830184612b81565b92915050565b60008060408385031215612bc257612bc161290b565b5b6000612bd085828601612959565b9250506020612be185828601612959565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c2160208361285b565b9150612c2c82612beb565b602082019050919050565b60006020820190508181036000830152612c5081612c14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c918261296e565b9150612c9c8361296e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cd557612cd4612c57565b5b828202905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612d1660178361285b565b9150612d2182612ce0565b602082019050919050565b60006020820190508181036000830152612d4581612d09565b9050919050565b600081519050612d5b81612942565b92915050565b600060208284031215612d7757612d7661290b565b5b6000612d8584828501612d4c565b91505092915050565b6000604082019050612da36000830185612b81565b612db06020830184612b81565b9392505050565b6000819050919050565b6000819050919050565b6000612de6612de1612ddc84612db7565b612dc1565b61296e565b9050919050565b612df681612dcb565b82525050565b600060c082019050612e116000830189612b81565b612e1e6020830188612a1a565b612e2b6040830187612ded565b612e386060830186612ded565b612e456080830185612b81565b612e5260a0830184612a1a565b979650505050505050565b600081519050612e6c81612978565b92915050565b600080600060608486031215612e8b57612e8a61290b565b5b6000612e9986828701612e5d565b9350506020612eaa86828701612e5d565b9250506040612ebb86828701612e5d565b9150509250925092565b6000604082019050612eda6000830185612b81565b612ee76020830184612a1a565b9392505050565b600081519050612efd81612b28565b92915050565b600060208284031215612f1957612f1861290b565b5b6000612f2784828501612eee565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f8c60248361285b565b9150612f9782612f30565b604082019050919050565b60006020820190508181036000830152612fbb81612f7f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061301e60228361285b565b915061302982612fc2565b604082019050919050565b6000602082019050818103600083015261304d81613011565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130b060258361285b565b91506130bb82613054565b604082019050919050565b600060208201905081810360008301526130df816130a3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061314260238361285b565b915061314d826130e6565b604082019050919050565b6000602082019050818103600083015261317181613135565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131d460298361285b565b91506131df82613178565b604082019050919050565b60006020820190508181036000830152613203816131c7565b9050919050565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b6000613240601c8361285b565b915061324b8261320a565b602082019050919050565b6000602082019050818103600083015261326f81613233565b9050919050565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b60006132ac60128361285b565b91506132b782613276565b602082019050919050565b600060208201905081810360008301526132db8161329f565b9050919050565b60006132ed8261296e565b91506132f88361296e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561332d5761332c612c57565b5b828201905092915050565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b600061336e60178361285b565b915061337982613338565b602082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b60006133af8261296e565b91506133ba8361296e565b9250828210156133cd576133cc612c57565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61346b81612930565b82525050565b600061347d8383613462565b60208301905092915050565b6000602082019050919050565b60006134a182613436565b6134ab8185613441565b93506134b683613452565b8060005b838110156134e75781516134ce8882613471565b97506134d983613489565b9250506001810190506134ba565b5085935050505092915050565b600060a0820190506135096000830188612a1a565b6135166020830187612ded565b81810360408301526135288186613496565b90506135376060830185612b81565b6135446080830184612a1a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135aa602a8361285b565b91506135b58261354e565b604082019050919050565b600060208201905081810360008301526135d98161359d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061361a8261296e565b91506136258361296e565b925082613635576136346135e0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613676601b8361285b565b915061368182613640565b602082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061370860218361285b565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206424b55097ed43be1a23bfe3c3aa2999956e8f2ba1584ec9d27a9f2f85de127764736f6c63430008090033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c91906128e9565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906129a4565b6104fc565b60405161019991906129ff565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190612a29565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612a44565b61052c565b60405161020191906129ff565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c9190612a97565b610605565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612ac4565b6106f5565b005b34801561026857600080fd5b506102716107a3565b60405161027e9190612a29565b60405180910390f35b34801561029357600080fd5b5061029c6107a9565b6040516102a99190612b0d565b60405180910390f35b3480156102be57600080fd5b506102c76107b2565b005b3480156102d557600080fd5b506102f060048036038101906102eb9190612b54565b61082c565b005b3480156102fe57600080fd5b5061031960048036038101906103149190612a97565b6108de565b6040516103269190612a29565b60405180910390f35b34801561033b57600080fd5b5061034461092f565b005b34801561035257600080fd5b5061035b610a82565b6040516103689190612b90565b60405180910390f35b34801561037d57600080fd5b50610386610aab565b60405161039391906128e9565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906129a4565b610ae8565b6040516103d091906129ff565b60405180910390f35b3480156103e557600080fd5b506103ee610b06565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612bab565b61107b565b6040516104249190612a29565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190612b54565b611102565b005b34801561046257600080fd5b5061047d60048036038101906104789190612ac4565b6111b4565b005b34801561048b57600080fd5b50610494611262565b005b3480156104a257600080fd5b506104bd60048036038101906104b89190612a97565b6112d4565b005b60606040518060400160405280601081526020017f54727573742054686520456c6974657300000000000000000000000000000000815250905090565b60006105106105096113c4565b84846113cc565b6001905092915050565b600069152d02c7e14af6800000905090565b6000610539848484611597565b6105fa846105456113c4565b6105f58560405180606001604052806028815260200161373f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ab6113c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d429092919063ffffffff16565b6113cc565b600190509392505050565b61060d6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612c37565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fd6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612c37565b60405180910390fd5b633b9aca008161079a9190612c86565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f36113c4565b73ffffffffffffffffffffffffffffffffffffffff161461081357600080fd5b600061081e306108de565b905061082981611da6565b50565b6108346113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890612c37565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610928600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202e565b9050919050565b6109376113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612c37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f5452555354454c49544553000000000000000000000000000000000000000000815250905090565b6000610afc610af56113c4565b8484611597565b6001905092915050565b610b0e6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612c37565b60405180910390fd5b601360149054906101000a900460ff1615610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612d2c565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006113cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612d61565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5c57600080fd5b505afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d949190612d61565b6040518363ffffffff1660e01b8152600401610db1929190612d8e565b602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e039190612d61565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c306108de565b600080610e97610a82565b426040518863ffffffff1660e01b8152600401610eb996959493929190612dfc565b6060604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190612e72565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550683635c9adc61a3aca00600a81905550686c6b935b8bf8daca00600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611025929190612ec5565b602060405180830381600087803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612f03565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110a6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612c37565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111bc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612c37565b60405180910390fd5b633b9aca00816112599190612c86565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a36113c4565b73ffffffffffffffffffffffffffffffffffffffff16146112c357600080fd5b60004790506112d18161209c565b50565b6112dc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612c37565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612fa2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390613034565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158a9190612a29565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe906130c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90613158565b60405180910390fd5b600081116116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b1906131ea565b60405180910390fd5b6001600e819055506001600f819055506116d2610a82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117405750611710610a82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118215750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61182a57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561192b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119435750601360179054906101000a900460ff165b15611ab757600a5481111561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613256565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906132c2565b60405180910390fd5b600d5481611a1b846108de565b611a2591906132e2565b1115611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90613384565b60405180910390fd5b601e42611a7391906132e2565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bce576001600e819055506001600f819055505b436003600b54611bde91906132e2565b10158015611c395750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c4f576063600e819055506001600f819055505b6000611c5a306108de565b90506000600c548210159050808015611c805750601360159054906101000a900460ff16155b8015611cda5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf25750601360169054906101000a900460ff165b15611d1a57611d0082611da6565b60004790506000811115611d1857611d174761209c565b5b505b5050611d32565b6000600e819055506000600f819055505b611d3d838383612197565b505050565b6000838311158290611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8191906128e9565b60405180910390fd5b5060008385611d9991906133a4565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dde57611ddd6133d8565b5b604051908082528060200260200182016040528015611e0c5781602001602082028036833780820191505090505b5090503081600081518110611e2457611e23613407565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec657600080fd5b505afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe9190612d61565b81600181518110611f1257611f11613407565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113cc565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fdd9594939291906134f4565b600060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906135c0565b60405180910390fd5b600061207f6121a7565b905061209481846121d290919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ec6002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612117573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121686002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612193573d6000803e3d6000fd5b5050565b6121a283838361221c565b505050565b60008060006121b46123e7565b915091506121cb81836121d290919063ffffffff16565b9250505090565b600061221483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244c565b905092915050565b60008060008060008061222e876124af565b95509550955095509550955061228c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d816125bf565b612377848361267c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d49190612a29565b60405180910390a3505050505050505050565b60008060006008549050600069152d02c7e14af6800000905061241f69152d02c7e14af68000006008546121d290919063ffffffff16565b82101561243f5760085469152d02c7e14af6800000935093505050612448565b81819350935050505b9091565b60008083118290612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a91906128e9565b60405180910390fd5b50600083856124a2919061360f565b9050809150509392505050565b60008060008060008060008060006124cc8a600e54600f546126b6565b92509250925060006124dc6121a7565b905060008060006124ef8e87878761274c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061255983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d42565b905092915050565b600080828461257091906132e2565b9050838110156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac9061368c565b60405180910390fd5b8091505092915050565b60006125c96121a7565b905060006125e082846127d590919063ffffffff16565b905061263481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126918260085461251790919063ffffffff16565b6008819055506126ac8160095461256190919063ffffffff16565b6009819055505050565b6000806000806126e260646126d4888a6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061270c60646126fe888b6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061273582612727858c61251790919063ffffffff16565b61251790919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276585896127d590919063ffffffff16565b9050600061277c86896127d590919063ffffffff16565b9050600061279387896127d590919063ffffffff16565b905060006127bc826127ae858761251790919063ffffffff16565b61251790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127e8576000905061284a565b600082846127f69190612c86565b9050828482612805919061360f565b14612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c9061371e565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561288a57808201518184015260208101905061286f565b83811115612899576000848401525b50505050565b6000601f19601f8301169050919050565b60006128bb82612850565b6128c5818561285b565b93506128d581856020860161286c565b6128de8161289f565b840191505092915050565b6000602082019050818103600083015261290381846128b0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061293b82612910565b9050919050565b61294b81612930565b811461295657600080fd5b50565b60008135905061296881612942565b92915050565b6000819050919050565b6129818161296e565b811461298c57600080fd5b50565b60008135905061299e81612978565b92915050565b600080604083850312156129bb576129ba61290b565b5b60006129c985828601612959565b92505060206129da8582860161298f565b9150509250929050565b60008115159050919050565b6129f9816129e4565b82525050565b6000602082019050612a1460008301846129f0565b92915050565b612a238161296e565b82525050565b6000602082019050612a3e6000830184612a1a565b92915050565b600080600060608486031215612a5d57612a5c61290b565b5b6000612a6b86828701612959565b9350506020612a7c86828701612959565b9250506040612a8d8682870161298f565b9150509250925092565b600060208284031215612aad57612aac61290b565b5b6000612abb84828501612959565b91505092915050565b600060208284031215612ada57612ad961290b565b5b6000612ae88482850161298f565b91505092915050565b600060ff82169050919050565b612b0781612af1565b82525050565b6000602082019050612b226000830184612afe565b92915050565b612b31816129e4565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600060208284031215612b6a57612b6961290b565b5b6000612b7884828501612b3f565b91505092915050565b612b8a81612930565b82525050565b6000602082019050612ba56000830184612b81565b92915050565b60008060408385031215612bc257612bc161290b565b5b6000612bd085828601612959565b9250506020612be185828601612959565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c2160208361285b565b9150612c2c82612beb565b602082019050919050565b60006020820190508181036000830152612c5081612c14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c918261296e565b9150612c9c8361296e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612cd557612cd4612c57565b5b828202905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612d1660178361285b565b9150612d2182612ce0565b602082019050919050565b60006020820190508181036000830152612d4581612d09565b9050919050565b600081519050612d5b81612942565b92915050565b600060208284031215612d7757612d7661290b565b5b6000612d8584828501612d4c565b91505092915050565b6000604082019050612da36000830185612b81565b612db06020830184612b81565b9392505050565b6000819050919050565b6000819050919050565b6000612de6612de1612ddc84612db7565b612dc1565b61296e565b9050919050565b612df681612dcb565b82525050565b600060c082019050612e116000830189612b81565b612e1e6020830188612a1a565b612e2b6040830187612ded565b612e386060830186612ded565b612e456080830185612b81565b612e5260a0830184612a1a565b979650505050505050565b600081519050612e6c81612978565b92915050565b600080600060608486031215612e8b57612e8a61290b565b5b6000612e9986828701612e5d565b9350506020612eaa86828701612e5d565b9250506040612ebb86828701612e5d565b9150509250925092565b6000604082019050612eda6000830185612b81565b612ee76020830184612a1a565b9392505050565b600081519050612efd81612b28565b92915050565b600060208284031215612f1957612f1861290b565b5b6000612f2784828501612eee565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f8c60248361285b565b9150612f9782612f30565b604082019050919050565b60006020820190508181036000830152612fbb81612f7f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061301e60228361285b565b915061302982612fc2565b604082019050919050565b6000602082019050818103600083015261304d81613011565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130b060258361285b565b91506130bb82613054565b604082019050919050565b600060208201905081810360008301526130df816130a3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061314260238361285b565b915061314d826130e6565b604082019050919050565b6000602082019050818103600083015261317181613135565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131d460298361285b565b91506131df82613178565b604082019050919050565b60006020820190508181036000830152613203816131c7565b9050919050565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b6000613240601c8361285b565b915061324b8261320a565b602082019050919050565b6000602082019050818103600083015261326f81613233565b9050919050565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b60006132ac60128361285b565b91506132b782613276565b602082019050919050565b600060208201905081810360008301526132db8161329f565b9050919050565b60006132ed8261296e565b91506132f88361296e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561332d5761332c612c57565b5b828201905092915050565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b600061336e60178361285b565b915061337982613338565b602082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b60006133af8261296e565b91506133ba8361296e565b9250828210156133cd576133cc612c57565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61346b81612930565b82525050565b600061347d8383613462565b60208301905092915050565b6000602082019050919050565b60006134a182613436565b6134ab8185613441565b93506134b683613452565b8060005b838110156134e75781516134ce8882613471565b97506134d983613489565b9250506001810190506134ba565b5085935050505092915050565b600060a0820190506135096000830188612a1a565b6135166020830187612ded565b81810360408301526135288186613496565b90506135376060830185612b81565b6135446080830184612a1a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135aa602a8361285b565b91506135b58261354e565b604082019050919050565b600060208201905081810360008301526135d98161359d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061361a8261296e565b91506136258361296e565b925082613635576136346135e0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613676601b8361285b565b915061368182613640565b602082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061370860218361285b565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206424b55097ed43be1a23bfe3c3aa2999956e8f2ba1584ec9d27a9f2f85de127764736f6c63430008090033

Deployed Bytecode Sourcemap

6424:12931:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8529:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9454:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8806:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9655:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15466:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14148:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7120:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8715:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16781:195;;;;;;;;;;;;;:::i;:::-;;10109:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8909:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5376:148;;;;;;;;;;;;;:::i;:::-;;5162:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8620:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9055:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14271:1092;;;;;;;;;;;;;:::i;:::-;;9262:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13279:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14037:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16984:194;;;;;;;;;;;;;:::i;:::-;;15371:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8529:83;8566:13;8599:5;;;;;;;;;;;;;;;;;8592:12;;8529:83;:::o;9454:193::-;9556:4;9578:39;9587:12;:10;:12::i;:::-;9601:7;9610:6;9578:8;:39::i;:::-;9635:4;9628:11;;9454:193;;;;:::o;8806:95::-;8859:7;6924:23;8879:14;;8806:95;:::o;9655:446::-;9787:4;9804:36;9814:6;9822:9;9833:6;9804:9;:36::i;:::-;9851:220;9874:6;9895:12;:10;:12::i;:::-;9922:138;9978:6;9922:138;;;;;;;;;;;;;;;;;:11;:19;9934:6;9922:19;;;;;;;;;;;;;;;:33;9942:12;:10;:12::i;:::-;9922:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;9851:8;:220::i;:::-;10089:4;10082:11;;9655:446;;;;;:::o;15466:88::-;5299:12;:10;:12::i;:::-;5289:22;;:6;;;;;;;;;;:22;;;5281:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15541:5:::1;15526:4;:12;15531:6;15526:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15466:88:::0;:::o;14148:113::-;5299:12;:10;:12::i;:::-;5289:22;;:6;;;;;;;;;;:22;;;5281:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14248:5:::1;14239:6;:14;;;;:::i;:::-;14220:16;:33;;;;14148:113:::0;:::o;7120:57::-;;;;:::o;8715:83::-;8756:5;7544:1;8774:16;;8715:83;:::o;16781:195::-;16847:15;;;;;;;;;;;16831:31;;:12;:10;:12::i;:::-;:31;;;16823:40;;;;;;16874:23;16900:24;16918:4;16900:9;:24::i;:::-;16874:50;;16935:33;16952:15;16935:16;:33::i;:::-;16812:164;16781:195::o;10109:101::-;5299:12;:10;:12::i;:::-;5289:22;;:6;;;;;;;;;;:22;;;5281:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10197:5:::1;10179:15;;:23;;;;;;;;;;;;;;;;;;10109:101:::0;:::o;8909:138::-;8975:7;9002:37;9022:7;:16;9030:7;9022:16;;;;;;;;;;;;;;;;9002:19;:37::i;:::-;8995:44;;8909:138;;;:::o;5376:148::-;5299:12;:10;:12::i;:::-;5289:22;;:6;;;;;;;;;;:22;;;5281:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5483:1:::1;5446:40;;5467:6;::::0;::::1;;;;;;;;5446:40;;;;;;;;;;;;5514:1;5497:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5376:148::o:0;5162:79::-;5200:7;5227:6;;;;;;;;;;;5220:13;;5162:79;:::o;8620:87::-;8659:13;8692:7;;;;;;;;;;;;;;;;;8685:14;;8620:87;:::o;9055:199::-;9160:4;9182:42;9192:12;:10;:12::i;:::-;9206:9;9217:6;9182:9;:42::i;:::-;9242:4;9235:11;;9055:199;;;;:::o;14271:1092::-;5299:12;:10;:12::i;:::-;5289:22;;:6;;;;;;;;;;:22;;;5281:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14333:11:::1;;;;;;;;;;;14332:12;14324:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14383:35;14454:42;14383:124;;14536:16;14518:15;;:34;;;;;;;;;;;;;;;;;;14563:58;14580:4;14595:15;;;;;;;;;;;6924:23;14563:8;:58::i;:::-;14666:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14648:70;;;14727:4;14734:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14648:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14632:13;;:126;;;;;;;;;;;;;;;;;;14769:15;;;;;;;;;;;:31;;;14808:21;14853:4;14873:24;14891:4;14873:9;:24::i;:::-;14912:1;14928::::0;14944:7:::1;:5;:7::i;:::-;14966:15;14769:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15017:4;15003:11;;:18;;;;;;;;;;;;;;;;;;15050:4;15032:15;;:22;;;;;;;;;;;;;;;;;;15097:21;15082:12;:36;;;;15148:21;15129:16;:40;;;;15194:4;15180:11;;:18;;;;;;;;;;;;;;;;;;15221:12;15209:9;:24;;;;15251:13;;;;;;;;;;;15244:29;;;15296:15;;;;;;;;;;;15327:17;15244:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14313:1050;14271:1092::o:0;9262:184::-;9379:7;9411:11;:18;9423:5;9411:18;;;;;;;;;;;;;;;:27;9430:7;9411:27;;;;;;;;;;;;;;;;9404:34;;9262:184;;;;:::o;13279:97::-;5299:12;:10;:12::i;:::-;5289:22;;:6;;;;;;;;;;:22;;;5281:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13361:7:::1;13352:6;;:16;;;;;;;;;;;;;;;;;;13279:97:::0;:::o;14037:105::-;5299:12;:10;:12::i;:::-;5289:22;;:6;;;;;;;;;;:22;;;5281:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14129:5:::1;14120:6;:14;;;;:::i;:::-;14105:12;:29;;;;14037:105:::0;:::o;16984:194::-;17050:15;;;;;;;;;;;17034:31;;:12;:10;:12::i;:::-;:31;;;17026:40;;;;;;17077:26;17106:21;17077:50;;17138:32;17151:18;17138:12;:32::i;:::-;17015:163;16984:194::o;15371:87::-;5299:12;:10;:12::i;:::-;5289:22;;:6;;;;;;;;;;:22;;;5281:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15446:4:::1;15431;:12;15436:6;15431:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;15371:87:::0;:::o;2665:98::-;2718:7;2745:10;2738:17;;2665:98;:::o;10549:369::-;10693:1;10676:19;;:5;:19;;;;10668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10774:1;10755:21;;:7;:21;;;;10747:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10856:6;10826:11;:18;10838:5;10826:18;;;;;;;;;;;;;;;:27;10845:7;10826:27;;;;;;;;;;;;;;;:36;;;;10894:7;10878:32;;10887:5;10878:32;;;10903:6;10878:32;;;;;;:::i;:::-;;;;;;;;10549:369;;;:::o;10926:2345::-;11066:1;11050:18;;:4;:18;;;;11042:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11143:1;11129:16;;:2;:16;;;;11121:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11213:1;11204:6;:10;11196:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11302:1;11290:9;:13;;;;11326:1;11314:9;:13;;;;11350:7;:5;:7::i;:::-;11342:15;;:4;:15;;;;:32;;;;;11367:7;:5;:7::i;:::-;11361:13;;:2;:13;;;;11342:32;:57;;;;;11394:4;11378:21;;:4;:21;;;;11342:57;11338:1881;;;11453:4;:10;11458:4;11453:10;;;;;;;;;;;;;;;;;;;;;;;;;11452:11;:24;;;;;11468:4;:8;11473:2;11468:8;;;;;;;;;;;;;;;;;;;;;;;;;11467:9;11452:24;11444:33;;;;;;11522:13;;;;;;;;;;;11514:21;;:4;:21;;;:72;;;;;11570:15;;;;;;;;;;;11556:30;;:2;:30;;;;11514:72;:116;;;;;11608:18;:22;11627:2;11608:22;;;;;;;;;;;;;;;;;;;;;;;;;11607:23;11514:116;:152;;;;;11651:15;;;;;;;;;;;11514:152;11492:650;;;11780:12;;11770:6;:22;;11762:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11896:15;11881:8;:12;11890:2;11881:12;;;;;;;;;;;;;;;;:30;11873:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12018:16;;12008:6;11992:13;12002:2;11992:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;11984:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;12115:10;12096:15;:30;;;;:::i;:::-;12081:8;:12;12090:2;12081:12;;;;;;;;;;;;;;;:45;;;;11492:650;12186:13;;;;;;;;;;;12180:19;;:2;:19;;;:72;;;;;12236:15;;;;;;;;;;;12220:32;;:4;:32;;;;12180:72;:118;;;;;12274:18;:24;12293:4;12274:24;;;;;;;;;;;;;;;;;;;;;;;;;12273:25;12180:118;12158:236;;;12345:1;12333:9;:13;;;;12377:1;12365:9;:13;;;;12158:236;12431:12;12426:1;12414:9;;:13;;;;:::i;:::-;:29;;:54;;;;;12455:13;;;;;;;;;;;12447:21;;:4;:21;;;12414:54;12410:141;;;12501:2;12489:9;:14;;;;12534:1;12522:9;:13;;;;12410:141;12567:28;12598:24;12616:4;12598:9;:24::i;:::-;12567:55;;12637:12;12676:19;;12652:20;:43;;12637:58;;12714:7;:18;;;;;12726:6;;;;;;;;;;;12725:7;12714:18;:43;;;;;12744:13;;;;;;;;;;;12736:21;;:4;:21;;;;12714:43;:58;;;;;12761:11;;;;;;;;;;;12714:58;12710:348;;;12811:38;12828:20;12811:16;:38::i;:::-;12868:26;12897:21;12868:50;;12962:1;12941:18;:22;12937:106;;;12988:35;13001:21;12988:12;:35::i;:::-;12937:106;12774:284;12710:348;11401:1668;;11338:1881;;;13178:1;13166:9;:13;;;;13206:1;13194:9;:13;;;;11338:1881;13231:32;13246:4;13252:2;13256:6;13231:14;:32::i;:::-;10926:2345;;;:::o;3927:224::-;4047:7;4080:1;4075;:6;;4083:12;4067:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4107:9;4123:1;4119;:5;;;;:::i;:::-;4107:17;;4142:1;4135:8;;;3927:224;;;;;:::o;13384:483::-;7888:4;7879:6;;:13;;;;;;;;;;;;;;;;;;13462:21:::1;13500:1;13486:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13462:40;;13531:4;13513;13518:1;13513:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13557:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13547:4;13552:1;13547:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13590:62;13607:4;13622:15;;;;;;;;;;;13640:11;13590:8;:62::i;:::-;13663:15;;;;;;;;;;;:66;;;13744:11;13770:1;13786:4;13813;13833:15;13663:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13451:416;7924:5:::0;7915:6;;:14;;;;;;;;;;;;;;;;;;13384:483;:::o;10218:323::-;10313:7;10371;;10360;:18;;10338:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10459:19;10481:10;:8;:10::i;:::-;10459:32;;10509:24;10521:11;10509:7;:11;;:24;;;;:::i;:::-;10502:31;;;10218:323;;;:::o;13875:154::-;13932:15;;;;;;;;;;;:24;;:39;13957:13;13968:1;13957:6;:10;;:13;;;;:::i;:::-;13932:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13982:15;;;;;;;;;;;:24;;:39;14007:13;14018:1;14007:6;:10;;:13;;;;:::i;:::-;13982:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13875:154;:::o;15564:180::-;15692:44;15710:6;15718:9;15729:6;15692:17;:44::i;:::-;15564:180;;;:::o;18923:164::-;18965:7;18986:15;19003;19022:19;:17;:19::i;:::-;18985:56;;;;19059:20;19071:7;19059;:11;;:20;;;;:::i;:::-;19052:27;;;;18923:164;:::o;4413:132::-;4471:7;4498:39;4502:1;4505;4498:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4491:46;;4413:132;;;;:::o;15752:610::-;15899:15;15929:23;15967:12;15994:23;16032:12;16059:13;16086:19;16097:7;16086:10;:19::i;:::-;15884:221;;;;;;;;;;;;16134:28;16154:7;16134;:15;16142:6;16134:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16116:7;:15;16124:6;16116:15;;;;;;;;;;;;;;;:46;;;;16194:39;16217:15;16194:7;:18;16202:9;16194:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16173:7;:18;16181:9;16173:18;;;;;;;;;;;;;;;:60;;;;16244:16;16254:5;16244:9;:16::i;:::-;16271:23;16283:4;16289;16271:11;:23::i;:::-;16327:9;16310:44;;16319:6;16310:44;;;16338:15;16310:44;;;;;;:::i;:::-;;;;;;;;15873:489;;;;;;15752:610;;;:::o;19095:257::-;19146:7;19155;19175:15;19193:7;;19175:25;;19211:15;6924:23;19211:25;;19261:20;6924:23;19261:7;;:11;;:20;;;;:::i;:::-;19251:7;:30;19247:61;;;19291:7;;6924:23;19283:25;;;;;;;;19247:61;19327:7;19336;19319:25;;;;;;19095:257;;;:::o;4553:223::-;4673:7;4705:1;4701;:5;4708:12;4693:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4732:9;4748:1;4744;:5;;;;:::i;:::-;4732:17;;4767:1;4760:8;;;4553:223;;;;;:::o;17186:704::-;17286:7;17308;17330;17352;17374;17396;17432:23;17457:12;17471:13;17488:92;17514:7;17536:9;;17560;;17488:11;:92::i;:::-;17431:149;;;;;;17591:19;17613:10;:8;:10::i;:::-;17591:32;;17635:15;17652:23;17677:12;17693:109;17719:7;17741:4;17760:5;17780:11;17693;:109::i;:::-;17634:168;;;;;;17821:7;17830:15;17847:4;17853:15;17870:4;17876:5;17813:69;;;;;;;;;;;;;;;;;;;17186:704;;;;;;;:::o;3783:136::-;3841:7;3868:43;3872:1;3875;3868:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3861:50;;3783:136;;;;:::o;3596:179::-;3654:7;3674:9;3690:1;3686;:5;;;;:::i;:::-;3674:17;;3715:1;3710;:6;;3702:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3766:1;3759:8;;;3596:179;;;;:::o;16370:211::-;16423:19;16445:10;:8;:10::i;:::-;16423:32;;16466:13;16482:22;16492:11;16482:5;:9;;:22;;;;:::i;:::-;16466:38;;16540:33;16567:5;16540:7;:22;16556:4;16540:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;16515:7;:22;16531:4;16515:22;;;;;;;;;;;;;;;:58;;;;16412:169;;16370:211;:::o;16589:147::-;16667:17;16679:4;16667:7;;:11;;:17;;;;:::i;:::-;16657:7;:27;;;;16708:20;16723:4;16708:10;;:14;;:20;;;;:::i;:::-;16695:10;:33;;;;16589:147;;:::o;17898:467::-;18066:7;18088;18110;18145:12;18160:28;18184:3;18160:19;18172:6;18160:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;18145:43;;18199:13;18215:29;18240:3;18215:20;18227:7;18215;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;18199:45;;18255:23;18281:28;18303:5;18281:17;18293:4;18281:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18255:54;;18328:15;18345:4;18351:5;18320:37;;;;;;;;;17898:467;;;;;;;:::o;18373:534::-;18567:7;18589;18611;18646:15;18664:24;18676:11;18664:7;:11;;:24;;;;:::i;:::-;18646:42;;18699:12;18714:21;18723:11;18714:4;:8;;:21;;;;:::i;:::-;18699:36;;18746:13;18762:22;18772:11;18762:5;:9;;:22;;;;:::i;:::-;18746:38;;18795:23;18821:28;18843:5;18821:17;18833:4;18821:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18795:54;;18868:7;18877:15;18894:4;18860:39;;;;;;;;;;18373:534;;;;;;;;:::o;4159:246::-;4217:7;4246:1;4241;:6;4237:47;;;4271:1;4264:8;;;;4237:47;4294:9;4310:1;4306;:5;;;;:::i;:::-;4294:17;;4339:1;4334;4330;:5;;;;:::i;:::-;:10;4322:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4396:1;4389:8;;;4159:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:::-;4865:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:119;;;4920:79;;:::i;:::-;4882:119;5040:1;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5011:117;4806:329;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:116::-;5641:21;5656:5;5641:21;:::i;:::-;5634:5;5631:32;5621:60;;5677:1;5674;5667:12;5621:60;5571:116;:::o;5693:133::-;5736:5;5774:6;5761:20;5752:29;;5790:30;5814:5;5790:30;:::i;:::-;5693:133;;;;:::o;5832:323::-;5888:6;5937:2;5925:9;5916:7;5912:23;5908:32;5905:119;;;5943:79;;:::i;:::-;5905:119;6063:1;6088:50;6130:7;6121:6;6110:9;6106:22;6088:50;:::i;:::-;6078:60;;6034:114;5832:323;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:182::-;7133:34;7129:1;7121:6;7117:14;7110:58;6993:182;:::o;7181:366::-;7323:3;7344:67;7408:2;7403:3;7344:67;:::i;:::-;7337:74;;7420:93;7509:3;7420:93;:::i;:::-;7538:2;7533:3;7529:12;7522:19;;7181:366;;;:::o;7553:419::-;7719:4;7757:2;7746:9;7742:18;7734:26;;7806:9;7800:4;7796:20;7792:1;7781:9;7777:17;7770:47;7834:131;7960:4;7834:131;:::i;:::-;7826:139;;7553:419;;;:::o;7978:180::-;8026:77;8023:1;8016:88;8123:4;8120:1;8113:15;8147:4;8144:1;8137:15;8164:348;8204:7;8227:20;8245:1;8227:20;:::i;:::-;8222:25;;8261:20;8279:1;8261:20;:::i;:::-;8256:25;;8449:1;8381:66;8377:74;8374:1;8371:81;8366:1;8359:9;8352:17;8348:105;8345:131;;;8456:18;;:::i;:::-;8345:131;8504:1;8501;8497:9;8486:20;;8164:348;;;;:::o;8518:173::-;8658:25;8654:1;8646:6;8642:14;8635:49;8518:173;:::o;8697:366::-;8839:3;8860:67;8924:2;8919:3;8860:67;:::i;:::-;8853:74;;8936:93;9025:3;8936:93;:::i;:::-;9054:2;9049:3;9045:12;9038:19;;8697:366;;;:::o;9069:419::-;9235:4;9273:2;9262:9;9258:18;9250:26;;9322:9;9316:4;9312:20;9308:1;9297:9;9293:17;9286:47;9350:131;9476:4;9350:131;:::i;:::-;9342:139;;9069:419;;;:::o;9494:143::-;9551:5;9582:6;9576:13;9567:22;;9598:33;9625:5;9598:33;:::i;:::-;9494:143;;;;:::o;9643:351::-;9713:6;9762:2;9750:9;9741:7;9737:23;9733:32;9730:119;;;9768:79;;:::i;:::-;9730:119;9888:1;9913:64;9969:7;9960:6;9949:9;9945:22;9913:64;:::i;:::-;9903:74;;9859:128;9643:351;;;;:::o;10000:332::-;10121:4;10159:2;10148:9;10144:18;10136:26;;10172:71;10240:1;10229:9;10225:17;10216:6;10172:71;:::i;:::-;10253:72;10321:2;10310:9;10306:18;10297:6;10253:72;:::i;:::-;10000:332;;;;;:::o;10338:85::-;10383:7;10412:5;10401:16;;10338:85;;;:::o;10429:60::-;10457:3;10478:5;10471:12;;10429:60;;;:::o;10495:158::-;10553:9;10586:61;10604:42;10613:32;10639:5;10613:32;:::i;:::-;10604:42;:::i;:::-;10586:61;:::i;:::-;10573:74;;10495:158;;;:::o;10659:147::-;10754:45;10793:5;10754:45;:::i;:::-;10749:3;10742:58;10659:147;;:::o;10812:807::-;11061:4;11099:3;11088:9;11084:19;11076:27;;11113:71;11181:1;11170:9;11166:17;11157:6;11113:71;:::i;:::-;11194:72;11262:2;11251:9;11247:18;11238:6;11194:72;:::i;:::-;11276:80;11352:2;11341:9;11337:18;11328:6;11276:80;:::i;:::-;11366;11442:2;11431:9;11427:18;11418:6;11366:80;:::i;:::-;11456:73;11524:3;11513:9;11509:19;11500:6;11456:73;:::i;:::-;11539;11607:3;11596:9;11592:19;11583:6;11539:73;:::i;:::-;10812:807;;;;;;;;;:::o;11625:143::-;11682:5;11713:6;11707:13;11698:22;;11729:33;11756:5;11729:33;:::i;:::-;11625:143;;;;:::o;11774:663::-;11862:6;11870;11878;11927:2;11915:9;11906:7;11902:23;11898:32;11895:119;;;11933:79;;:::i;:::-;11895:119;12053:1;12078:64;12134:7;12125:6;12114:9;12110:22;12078:64;:::i;:::-;12068:74;;12024:128;12191:2;12217:64;12273:7;12264:6;12253:9;12249:22;12217:64;:::i;:::-;12207:74;;12162:129;12330:2;12356:64;12412:7;12403:6;12392:9;12388:22;12356:64;:::i;:::-;12346:74;;12301:129;11774:663;;;;;:::o;12443:332::-;12564:4;12602:2;12591:9;12587:18;12579:26;;12615:71;12683:1;12672:9;12668:17;12659:6;12615:71;:::i;:::-;12696:72;12764:2;12753:9;12749:18;12740:6;12696:72;:::i;:::-;12443:332;;;;;:::o;12781:137::-;12835:5;12866:6;12860:13;12851:22;;12882:30;12906:5;12882:30;:::i;:::-;12781:137;;;;:::o;12924:345::-;12991:6;13040:2;13028:9;13019:7;13015:23;13011:32;13008:119;;;13046:79;;:::i;:::-;13008:119;13166:1;13191:61;13244:7;13235:6;13224:9;13220:22;13191:61;:::i;:::-;13181:71;;13137:125;12924:345;;;;:::o;13275:223::-;13415:34;13411:1;13403:6;13399:14;13392:58;13484:6;13479:2;13471:6;13467:15;13460:31;13275:223;:::o;13504:366::-;13646:3;13667:67;13731:2;13726:3;13667:67;:::i;:::-;13660:74;;13743:93;13832:3;13743:93;:::i;:::-;13861:2;13856:3;13852:12;13845:19;;13504:366;;;:::o;13876:419::-;14042:4;14080:2;14069:9;14065:18;14057:26;;14129:9;14123:4;14119:20;14115:1;14104:9;14100:17;14093:47;14157:131;14283:4;14157:131;:::i;:::-;14149:139;;13876:419;;;:::o;14301:221::-;14441:34;14437:1;14429:6;14425:14;14418:58;14510:4;14505:2;14497:6;14493:15;14486:29;14301:221;:::o;14528:366::-;14670:3;14691:67;14755:2;14750:3;14691:67;:::i;:::-;14684:74;;14767:93;14856:3;14767:93;:::i;:::-;14885:2;14880:3;14876:12;14869:19;;14528:366;;;:::o;14900:419::-;15066:4;15104:2;15093:9;15089:18;15081:26;;15153:9;15147:4;15143:20;15139:1;15128:9;15124:17;15117:47;15181:131;15307:4;15181:131;:::i;:::-;15173:139;;14900:419;;;:::o;15325:224::-;15465:34;15461:1;15453:6;15449:14;15442:58;15534:7;15529:2;15521:6;15517:15;15510:32;15325:224;:::o;15555:366::-;15697:3;15718:67;15782:2;15777:3;15718:67;:::i;:::-;15711:74;;15794:93;15883:3;15794:93;:::i;:::-;15912:2;15907:3;15903:12;15896:19;;15555:366;;;:::o;15927:419::-;16093:4;16131:2;16120:9;16116:18;16108:26;;16180:9;16174:4;16170:20;16166:1;16155:9;16151:17;16144:47;16208:131;16334:4;16208:131;:::i;:::-;16200:139;;15927:419;;;:::o;16352:222::-;16492:34;16488:1;16480:6;16476:14;16469:58;16561:5;16556:2;16548:6;16544:15;16537:30;16352:222;:::o;16580:366::-;16722:3;16743:67;16807:2;16802:3;16743:67;:::i;:::-;16736:74;;16819:93;16908:3;16819:93;:::i;:::-;16937:2;16932:3;16928:12;16921:19;;16580:366;;;:::o;16952:419::-;17118:4;17156:2;17145:9;17141:18;17133:26;;17205:9;17199:4;17195:20;17191:1;17180:9;17176:17;17169:47;17233:131;17359:4;17233:131;:::i;:::-;17225:139;;16952:419;;;:::o;17377:228::-;17517:34;17513:1;17505:6;17501:14;17494:58;17586:11;17581:2;17573:6;17569:15;17562:36;17377:228;:::o;17611:366::-;17753:3;17774:67;17838:2;17833:3;17774:67;:::i;:::-;17767:74;;17850:93;17939:3;17850:93;:::i;:::-;17968:2;17963:3;17959:12;17952:19;;17611:366;;;:::o;17983:419::-;18149:4;18187:2;18176:9;18172:18;18164:26;;18236:9;18230:4;18226:20;18222:1;18211:9;18207:17;18200:47;18264:131;18390:4;18264:131;:::i;:::-;18256:139;;17983:419;;;:::o;18408:178::-;18548:30;18544:1;18536:6;18532:14;18525:54;18408:178;:::o;18592:366::-;18734:3;18755:67;18819:2;18814:3;18755:67;:::i;:::-;18748:74;;18831:93;18920:3;18831:93;:::i;:::-;18949:2;18944:3;18940:12;18933:19;;18592:366;;;:::o;18964:419::-;19130:4;19168:2;19157:9;19153:18;19145:26;;19217:9;19211:4;19207:20;19203:1;19192:9;19188:17;19181:47;19245:131;19371:4;19245:131;:::i;:::-;19237:139;;18964:419;;;:::o;19389:168::-;19529:20;19525:1;19517:6;19513:14;19506:44;19389:168;:::o;19563:366::-;19705:3;19726:67;19790:2;19785:3;19726:67;:::i;:::-;19719:74;;19802:93;19891:3;19802:93;:::i;:::-;19920:2;19915:3;19911:12;19904:19;;19563:366;;;:::o;19935:419::-;20101:4;20139:2;20128:9;20124:18;20116:26;;20188:9;20182:4;20178:20;20174:1;20163:9;20159:17;20152:47;20216:131;20342:4;20216:131;:::i;:::-;20208:139;;19935:419;;;:::o;20360:305::-;20400:3;20419:20;20437:1;20419:20;:::i;:::-;20414:25;;20453:20;20471:1;20453:20;:::i;:::-;20448:25;;20607:1;20539:66;20535:74;20532:1;20529:81;20526:107;;;20613:18;;:::i;:::-;20526:107;20657:1;20654;20650:9;20643:16;;20360:305;;;;:::o;20671:173::-;20811:25;20807:1;20799:6;20795:14;20788:49;20671:173;:::o;20850:366::-;20992:3;21013:67;21077:2;21072:3;21013:67;:::i;:::-;21006:74;;21089:93;21178:3;21089:93;:::i;:::-;21207:2;21202:3;21198:12;21191:19;;20850:366;;;:::o;21222:419::-;21388:4;21426:2;21415:9;21411:18;21403:26;;21475:9;21469:4;21465:20;21461:1;21450:9;21446:17;21439:47;21503:131;21629:4;21503:131;:::i;:::-;21495:139;;21222:419;;;:::o;21647:191::-;21687:4;21707:20;21725:1;21707:20;:::i;:::-;21702:25;;21741:20;21759:1;21741:20;:::i;:::-;21736:25;;21780:1;21777;21774:8;21771:34;;;21785:18;;:::i;:::-;21771:34;21830:1;21827;21823:9;21815:17;;21647:191;;;;:::o;21844:180::-;21892:77;21889:1;21882:88;21989:4;21986:1;21979:15;22013:4;22010:1;22003:15;22030:180;22078:77;22075:1;22068:88;22175:4;22172:1;22165:15;22199:4;22196:1;22189:15;22216:114;22283:6;22317:5;22311:12;22301:22;;22216:114;;;:::o;22336:184::-;22435:11;22469:6;22464:3;22457:19;22509:4;22504:3;22500:14;22485:29;;22336:184;;;;:::o;22526:132::-;22593:4;22616:3;22608:11;;22646:4;22641:3;22637:14;22629:22;;22526:132;;;:::o;22664:108::-;22741:24;22759:5;22741:24;:::i;:::-;22736:3;22729:37;22664:108;;:::o;22778:179::-;22847:10;22868:46;22910:3;22902:6;22868:46;:::i;:::-;22946:4;22941:3;22937:14;22923:28;;22778:179;;;;:::o;22963:113::-;23033:4;23065;23060:3;23056:14;23048:22;;22963:113;;;:::o;23112:732::-;23231:3;23260:54;23308:5;23260:54;:::i;:::-;23330:86;23409:6;23404:3;23330:86;:::i;:::-;23323:93;;23440:56;23490:5;23440:56;:::i;:::-;23519:7;23550:1;23535:284;23560:6;23557:1;23554:13;23535:284;;;23636:6;23630:13;23663:63;23722:3;23707:13;23663:63;:::i;:::-;23656:70;;23749:60;23802:6;23749:60;:::i;:::-;23739:70;;23595:224;23582:1;23579;23575:9;23570:14;;23535:284;;;23539:14;23835:3;23828:10;;23236:608;;;23112:732;;;;:::o;23850:831::-;24113:4;24151:3;24140:9;24136:19;24128:27;;24165:71;24233:1;24222:9;24218:17;24209:6;24165:71;:::i;:::-;24246:80;24322:2;24311:9;24307:18;24298:6;24246:80;:::i;:::-;24373:9;24367:4;24363:20;24358:2;24347:9;24343:18;24336:48;24401:108;24504:4;24495:6;24401:108;:::i;:::-;24393:116;;24519:72;24587:2;24576:9;24572:18;24563:6;24519:72;:::i;:::-;24601:73;24669:3;24658:9;24654:19;24645:6;24601:73;:::i;:::-;23850:831;;;;;;;;:::o;24687:229::-;24827:34;24823:1;24815:6;24811:14;24804:58;24896:12;24891:2;24883:6;24879:15;24872:37;24687:229;:::o;24922:366::-;25064:3;25085:67;25149:2;25144:3;25085:67;:::i;:::-;25078:74;;25161:93;25250:3;25161:93;:::i;:::-;25279:2;25274:3;25270:12;25263:19;;24922:366;;;:::o;25294:419::-;25460:4;25498:2;25487:9;25483:18;25475:26;;25547:9;25541:4;25537:20;25533:1;25522:9;25518:17;25511:47;25575:131;25701:4;25575:131;:::i;:::-;25567:139;;25294:419;;;:::o;25719:180::-;25767:77;25764:1;25757:88;25864:4;25861:1;25854:15;25888:4;25885:1;25878:15;25905:185;25945:1;25962:20;25980:1;25962:20;:::i;:::-;25957:25;;25996:20;26014:1;25996:20;:::i;:::-;25991:25;;26035:1;26025:35;;26040:18;;:::i;:::-;26025:35;26082:1;26079;26075:9;26070:14;;25905:185;;;;:::o;26096:177::-;26236:29;26232:1;26224:6;26220:14;26213:53;26096:177;:::o;26279:366::-;26421:3;26442:67;26506:2;26501:3;26442:67;:::i;:::-;26435:74;;26518:93;26607:3;26518:93;:::i;:::-;26636:2;26631:3;26627:12;26620:19;;26279:366;;;:::o;26651:419::-;26817:4;26855:2;26844:9;26840:18;26832:26;;26904:9;26898:4;26894:20;26890:1;26879:9;26875:17;26868:47;26932:131;27058:4;26932:131;:::i;:::-;26924:139;;26651:419;;;:::o;27076:220::-;27216:34;27212:1;27204:6;27200:14;27193:58;27285:3;27280:2;27272:6;27268:15;27261:28;27076:220;:::o;27302:366::-;27444:3;27465:67;27529:2;27524:3;27465:67;:::i;:::-;27458:74;;27541:93;27630:3;27541:93;:::i;:::-;27659:2;27654:3;27650:12;27643:19;;27302:366;;;:::o;27674:419::-;27840:4;27878:2;27867:9;27863:18;27855:26;;27927:9;27921:4;27917:20;27913:1;27902:9;27898:17;27891:47;27955:131;28081:4;27955:131;:::i;:::-;27947:139;;27674:419;;;:::o

Swarm Source

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