ETH Price: $3,420.23 (+1.14%)
Gas: 4 Gwei

Token

Zamol (ZML)
 

Overview

Max Total Supply

1,000,000,000,000 ZML

Holders

142

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,119,711,134.338261219 ZML

Value
$0.00
0x4a4f365cb9422556d995ed3ad2c446d008350355
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:
Zamol

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-26
*/

//  ________   ________   _____ ______    ________   ___        ________   ___       __    ________      
// |\_____  \ |\   __  \ |\   _ \  _   \ |\   __  \ |\  \      |\   __  \ |\  \     |\  \ |\   ____\     
//  \|___/  /|\ \  \|\  \\ \  \\\__\ \  \\ \  \|\  \\ \  \     \ \  \|\  \\ \  \    \ \  \\ \  \___|_    
//      /  / / \ \   __  \\ \  \\|__| \  \\ \  \\\  \\ \  \     \ \   __  \\ \  \  __\ \  \\ \_____  \   
//     /  /_/__ \ \  \ \  \\ \  \    \ \  \\ \  \\\  \\ \  \____ \ \  \ \  \\ \  \|\__\_\  \\|____|\  \  
//    |\________\\ \__\ \__\\ \__\    \ \__\\ \_______\\ \_______\\ \__\ \__\\ \____________\ ____\_\  \ 
//     \|_______| \|__|\|__| \|__|     \|__| \|_______| \|_______| \|__|\|__| \|____________||\_________\
//                                                                                           \|_________|  
// Telegram: https://t.me/zamolaws
// Twitter: https://twitter.com/ZamoLaws
// Website: https://zamolaws.com
// Good luck! :D

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        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 Zamol is Context, IERC20, Ownable {
    
    using SafeMath for uint256;

    string private constant _name = "Zamol";
    string private constant _symbol = "ZML";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping (address => uint256) private _buyMap;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    // Buy Fee
    uint256 private _redisFeeOnBuy = 2;
    uint256 private _taxFeeOnBuy = 13;
    
    // Sell Fee
    uint256 private _redisFeeOnSell = 2;
    uint256 private _taxFeeOnSell = 13;
    
    // Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => uint256) private cooldown;
    
    address payable private _developmentAddress = payable(0xAB031382B15C268F2936207d65B419Ebf8810a30);
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    uint256 public _maxTxAmount = 5e9 * 10**9; //0.5% - 5000000000
    uint256 public _maxWalletSize = 15e9 * 10**9; //1.5%
                                        
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

    function developmentWallet() public view returns (address) {
        return _developmentAddress;
    }

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

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

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

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

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

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

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

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

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

        if (from != owner() && to != owner()) {
            
            // Trade start check
            if (!tradingOpen) {
                revert("Trading not yet enabled!");            
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                if (to != address(this) && to != _developmentAddress && from != _developmentAddress) {
                    require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
                }
            }

            if (to != uniswapV2Pair && to != _developmentAddress && to != address(this)) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
        }
        
        bool takeFee = true;

        // Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            // Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                    _buyMap[to] = block.timestamp;
                    _redisFee = _redisFeeOnBuy;
                    _taxFee = _taxFeeOnBuy;
            }
    
            // Set Fee for Sells
            // TAX SELLERS 30% WHO SELL WITHIN 48 HOURS (20% development + 10% holders redistribution)
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                if (_buyMap[from] != 0 && (_buyMap[from] + (48 hours) >= block.timestamp)) {
                    _redisFee = 10;
                    _taxFee = 20;
                } else {
                    _redisFee = _redisFeeOnSell;
                    _taxFee = _taxFeeOnSell;
                }
            }
        }

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

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

    function sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount);
    }

    // Set trading on/off
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap(uint256 amount) external {
        require(_msgSender() == _developmentAddress);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

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

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

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

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

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

    receive() external payable {}

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

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

        return (tTransferAmount, tFee, tTeam);
    }

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

        return (rAmount, rTransferAmount, rFee);
    }

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

        return rSupply.div(tSupply);
    }

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

    // Set swap enabled
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    
    // Set Max transaction
    function setMaxTxnAmount(uint256 maxTxAmount) external {
        require(_msgSender() == _developmentAddress);
        _maxTxAmount = maxTxAmount;
    }
    
    // Set Max wallet
    function setMaxWalletSize(uint256 maxWalletSize) external {
        require(_msgSender() == _developmentAddress);
        _maxWalletSize = maxWalletSize;
    }

    // Lower buy fee
    function lowerBuyTeamFee(uint256 amount) external {
        require(_msgSender() == _developmentAddress);
        require(amount >= 1 && amount <= _taxFeeOnBuy, "The amount needs to be greater than 1 and less than the current buy fee");
        _taxFeeOnBuy = amount;
    }
    // Lower sell fee
    function lowerSellTeamFee(uint256 amount) external {
        require(_msgSender() == _developmentAddress);
        require(amount >= 1 && amount <= _taxFeeOnSell, "The amount needs to be greater than 1 and less than the current sell fee");
        _taxFeeOnSell = amount;
    }
}

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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lowerBuyTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lowerSellTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d91906200075f565b6000196200002c9190620006e6565b6007556002600955600d600a556002600b55600d600c55600b54600d55600c54600e55600d54600f55600e5460105573ab031382b15c268f2936207d65b419ebf8810a30601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff021916908315150217905550674563918244f4000060155567d02ab486cedc00006016553480156200010b57600080fd5b5060006200011e6200060060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620001d36200060060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b257600080fd5b505afa158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed919062000648565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035057600080fd5b505afa15801562000365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038b919062000648565b6040518363ffffffff1660e01b8152600401620003aa9291906200069c565b602060405180830381600087803b158015620003c557600080fd5b505af1158015620003da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000400919062000648565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620004566200060860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005896200060060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620005f19190620006c9565b60405180910390a35062000814565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200064281620007fa565b92915050565b600060208284031215620006615762000660620007f5565b5b6000620006718482850162000631565b91505092915050565b620006858162000721565b82525050565b620006968162000755565b82525050565b6000604082019050620006b360008301856200067a565b620006c260208301846200067a565b9392505050565b6000602082019050620006e060008301846200068b565b92915050565b6000620006f38262000755565b9150620007008362000755565b92508282101562000716576200071562000797565b5b828203905092915050565b60006200072e8262000735565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200076c8262000755565b9150620007798362000755565b9250826200078c576200078b620007c6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b620008058162000721565b81146200081157600080fd5b50565b61371580620008246000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d15780638f9a55c01161008a578063c04a541411610064578063c04a541414610511578063dd62ed3e1461053c578063ea1644d514610579578063f2fde38b146105a257610171565b80638f9a55c01461047e57806395d89b41146104a9578063a9059cbb146104d457610171565b8063715018a61461039657806374010ece146103ad5780637d1db4a5146103d6578063881dce60146104015780638da5cb5b1461042a5780638f70ccf71461045557610171565b8063313ce56711610123578063313ce5671461029a57806346001d8e146102c557806349bd5a5e146102ee5780636d8aa8f8146103195780636fc3eaec1461034257806370a082311461035957610171565b8063043a791d1461017657806306fdde031461019f578063095ea7b3146101ca5780631694505e1461020757806318160ddd1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d60048036038101906101989190612870565b6105cb565b005b3480156101ab57600080fd5b506101b4610688565b6040516101c19190612c36565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec9190612803565b6106c5565b6040516101fe9190612c00565b60405180910390f35b34801561021357600080fd5b5061021c6106e3565b6040516102299190612c1b565b60405180910390f35b34801561023e57600080fd5b50610247610709565b6040516102549190612e58565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f91906127b0565b61071a565b6040516102919190612c00565b60405180910390f35b3480156102a657600080fd5b506102af6107f3565b6040516102bc9190612ecd565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e79190612870565b6107fc565b005b3480156102fa57600080fd5b506103036108b9565b6040516103109190612be5565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612843565b6108df565b005b34801561034e57600080fd5b50610357610991565b005b34801561036557600080fd5b50610380600480360381019061037b9190612716565b610a03565b60405161038d9190612e58565b60405180910390f35b3480156103a257600080fd5b506103ab610a54565b005b3480156103b957600080fd5b506103d460048036038101906103cf9190612870565b610ba7565b005b3480156103e257600080fd5b506103eb610c12565b6040516103f89190612e58565b60405180910390f35b34801561040d57600080fd5b5061042860048036038101906104239190612870565b610c18565b005b34801561043657600080fd5b5061043f610cdc565b60405161044c9190612be5565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190612843565b610d05565b005b34801561048a57600080fd5b50610493610db6565b6040516104a09190612e58565b60405180910390f35b3480156104b557600080fd5b506104be610dbc565b6040516104cb9190612c36565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190612803565b610df9565b6040516105089190612c00565b60405180910390f35b34801561051d57600080fd5b50610526610e17565b6040516105339190612be5565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190612770565b610e41565b6040516105709190612e58565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190612870565b610ec8565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190612716565b610f33565b005b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661060c6110f5565b73ffffffffffffffffffffffffffffffffffffffff161461062c57600080fd5b6001811015801561063f5750600a548111155b61067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067590612c98565b60405180910390fd5b80600a8190555050565b60606040518060400160405280600581526020017f5a616d6f6c000000000000000000000000000000000000000000000000000000815250905090565b60006106d96106d26110f5565b84846110fd565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000683635c9adc5dea00000905090565b60006107278484846112c8565b6107e8846107336110f5565b6107e3856040518060600160405280602881526020016136b860289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107996110f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bd29092919063ffffffff16565b6110fd565b600190509392505050565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661083d6110f5565b73ffffffffffffffffffffffffffffffffffffffff161461085d57600080fd5b600181101580156108705750600c548111155b6108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a690612d58565b60405180910390fd5b80600c8190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e76110f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096b90612d98565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109d26110f5565b73ffffffffffffffffffffffffffffffffffffffff16146109f257600080fd5b6000479050610a0081611c36565b50565b6000610a4d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca2565b9050919050565b610a5c6110f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090612d98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be86110f5565b73ffffffffffffffffffffffffffffffffffffffff1614610c0857600080fd5b8060158190555050565b60155481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c596110f5565b73ffffffffffffffffffffffffffffffffffffffff1614610c7957600080fd5b610c8230610a03565b8111158015610c915750600081115b610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790612e38565b60405180910390fd5b610cd981611d10565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d0d6110f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190612d98565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600381526020017f5a4d4c0000000000000000000000000000000000000000000000000000000000815250905090565b6000610e0d610e066110f5565b84846112c8565b6001905092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f096110f5565b73ffffffffffffffffffffffffffffffffffffffff1614610f2957600080fd5b8060168190555050565b610f3b6110f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90612d98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612cf8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490612e18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490612d18565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112bb9190612e58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f90612dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90612c58565b60405180910390fd5b600081116113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612db8565b60405180910390fd5b6113f3610cdc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114615750611431610cdc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117d55760148054906101000a900460ff166114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90612c78565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561155e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611693573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156115ed5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116475750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561169257601554811115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890612cd8565b60405180910390fd5b5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561173f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117d4576016548161178984610a03565b6117939190612f3d565b106117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90612df8565b60405180910390fd5b5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061187c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061192f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561192e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561193d5760009050611bc0565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119e85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a445742600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600d81905550600a54600e819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611aef5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bbf576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414158015611b915750426202a300600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8e9190612f3d565b10155b15611bab57600a600d819055506014600e81905550611bbe565b600b54600d81905550600c54600e819055505b5b5b611bcc84848484611f98565b50505050565b6000838311158290611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c119190612c36565b60405180910390fd5b5060008385611c29919061301e565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c9e573d6000803e3d6000fd5b5050565b6000600754821115611ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce090612cb8565b60405180910390fd5b6000611cf3611fc5565b9050611d088184611ff090919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d4857611d476131af565b5b604051908082528060200260200182016040528015611d765781602001602082028036833780820191505090505b5090503081600081518110611d8e57611d8d613180565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e3057600080fd5b505afa158015611e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e689190612743565b81600181518110611e7c57611e7b613180565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ee330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110fd565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f47959493929190612e73565b600060405180830381600087803b158015611f6157600080fd5b505af1158015611f75573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b80611fa657611fa561203a565b5b611fb184848461207d565b80611fbf57611fbe612248565b5b50505050565b6000806000611fd261225c565b91509150611fe98183611ff090919063ffffffff16565b9250505090565b600061203283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122be565b905092915050565b6000600d5414801561204e57506000600e54145b156120585761207b565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061208f87612321565b9550955095509550955095506120ed86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461238990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061218285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121ce81612431565b6121d884836124ee565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122359190612e58565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000683635c9adc5dea000009050612292683635c9adc5dea00000600754611ff090919063ffffffff16565b8210156122b157600754683635c9adc5dea000009350935050506122ba565b81819350935050505b9091565b60008083118290612305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fc9190612c36565b60405180910390fd5b50600083856123149190612f93565b9050809150509392505050565b600080600080600080600080600061233e8a600d54600e54612528565b925092509250600061234e611fc5565b905060008060006123618e8787876125be565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006123cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bd2565b905092915050565b60008082846123e29190612f3d565b905083811015612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90612d38565b60405180910390fd5b8091505092915050565b600061243b611fc5565b90506000612452828461264790919063ffffffff16565b90506124a681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125038260075461238990919063ffffffff16565b60078190555061251e816008546123d390919063ffffffff16565b6008819055505050565b6000806000806125546064612546888a61264790919063ffffffff16565b611ff090919063ffffffff16565b9050600061257e6064612570888b61264790919063ffffffff16565b611ff090919063ffffffff16565b905060006125a782612599858c61238990919063ffffffff16565b61238990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806125d7858961264790919063ffffffff16565b905060006125ee868961264790919063ffffffff16565b90506000612605878961264790919063ffffffff16565b9050600061262e82612620858761238990919063ffffffff16565b61238990919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561265a57600090506126bc565b600082846126689190612fc4565b90508284826126779190612f93565b146126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90612d78565b60405180910390fd5b809150505b92915050565b6000813590506126d181613672565b92915050565b6000815190506126e681613672565b92915050565b6000813590506126fb81613689565b92915050565b600081359050612710816136a0565b92915050565b60006020828403121561272c5761272b6131de565b5b600061273a848285016126c2565b91505092915050565b600060208284031215612759576127586131de565b5b6000612767848285016126d7565b91505092915050565b60008060408385031215612787576127866131de565b5b6000612795858286016126c2565b92505060206127a6858286016126c2565b9150509250929050565b6000806000606084860312156127c9576127c86131de565b5b60006127d7868287016126c2565b93505060206127e8868287016126c2565b92505060406127f986828701612701565b9150509250925092565b6000806040838503121561281a576128196131de565b5b6000612828858286016126c2565b925050602061283985828601612701565b9150509250929050565b600060208284031215612859576128586131de565b5b6000612867848285016126ec565b91505092915050565b600060208284031215612886576128856131de565b5b600061289484828501612701565b91505092915050565b60006128a983836128b5565b60208301905092915050565b6128be81613052565b82525050565b6128cd81613052565b82525050565b60006128de82612ef8565b6128e88185612f1b565b93506128f383612ee8565b8060005b8381101561292457815161290b888261289d565b975061291683612f0e565b9250506001810190506128f7565b5085935050505092915050565b61293a81613064565b82525050565b612949816130a7565b82525050565b612958816130b9565b82525050565b600061296982612f03565b6129738185612f2c565b93506129838185602086016130ef565b61298c816131e3565b840191505092915050565b60006129a4602383612f2c565b91506129af826131f4565b604082019050919050565b60006129c7601883612f2c565b91506129d282613243565b602082019050919050565b60006129ea604783612f2c565b91506129f58261326c565b606082019050919050565b6000612a0d602a83612f2c565b9150612a18826132e1565b604082019050919050565b6000612a30601c83612f2c565b9150612a3b82613330565b602082019050919050565b6000612a53602683612f2c565b9150612a5e82613359565b604082019050919050565b6000612a76602283612f2c565b9150612a81826133a8565b604082019050919050565b6000612a99601b83612f2c565b9150612aa4826133f7565b602082019050919050565b6000612abc604883612f2c565b9150612ac782613420565b606082019050919050565b6000612adf602183612f2c565b9150612aea82613495565b604082019050919050565b6000612b02602083612f2c565b9150612b0d826134e4565b602082019050919050565b6000612b25602983612f2c565b9150612b308261350d565b604082019050919050565b6000612b48602583612f2c565b9150612b538261355c565b604082019050919050565b6000612b6b602383612f2c565b9150612b76826135ab565b604082019050919050565b6000612b8e602483612f2c565b9150612b99826135fa565b604082019050919050565b6000612bb1600c83612f2c565b9150612bbc82613649565b602082019050919050565b612bd081613090565b82525050565b612bdf8161309a565b82525050565b6000602082019050612bfa60008301846128c4565b92915050565b6000602082019050612c156000830184612931565b92915050565b6000602082019050612c306000830184612940565b92915050565b60006020820190508181036000830152612c50818461295e565b905092915050565b60006020820190508181036000830152612c7181612997565b9050919050565b60006020820190508181036000830152612c91816129ba565b9050919050565b60006020820190508181036000830152612cb1816129dd565b9050919050565b60006020820190508181036000830152612cd181612a00565b9050919050565b60006020820190508181036000830152612cf181612a23565b9050919050565b60006020820190508181036000830152612d1181612a46565b9050919050565b60006020820190508181036000830152612d3181612a69565b9050919050565b60006020820190508181036000830152612d5181612a8c565b9050919050565b60006020820190508181036000830152612d7181612aaf565b9050919050565b60006020820190508181036000830152612d9181612ad2565b9050919050565b60006020820190508181036000830152612db181612af5565b9050919050565b60006020820190508181036000830152612dd181612b18565b9050919050565b60006020820190508181036000830152612df181612b3b565b9050919050565b60006020820190508181036000830152612e1181612b5e565b9050919050565b60006020820190508181036000830152612e3181612b81565b9050919050565b60006020820190508181036000830152612e5181612ba4565b9050919050565b6000602082019050612e6d6000830184612bc7565b92915050565b600060a082019050612e886000830188612bc7565b612e95602083018761294f565b8181036040830152612ea781866128d3565b9050612eb660608301856128c4565b612ec36080830184612bc7565b9695505050505050565b6000602082019050612ee26000830184612bd6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612f4882613090565b9150612f5383613090565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f8857612f87613122565b5b828201905092915050565b6000612f9e82613090565b9150612fa983613090565b925082612fb957612fb8613151565b5b828204905092915050565b6000612fcf82613090565b9150612fda83613090565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561301357613012613122565b5b828202905092915050565b600061302982613090565b915061303483613090565b92508282101561304757613046613122565b5b828203905092915050565b600061305d82613070565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006130b2826130cb565b9050919050565b60006130c482613090565b9050919050565b60006130d6826130dd565b9050919050565b60006130e882613070565b9050919050565b60005b8381101561310d5780820151818401526020810190506130f2565b8381111561311c576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b7f54686520616d6f756e74206e6565647320746f2062652067726561746572207460008201527f68616e203120616e64206c657373207468616e207468652063757272656e742060208201527f6275792066656500000000000000000000000000000000000000000000000000604082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f54686520616d6f756e74206e6565647320746f2062652067726561746572207460008201527f68616e203120616e64206c657373207468616e207468652063757272656e742060208201527f73656c6c20666565000000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b61367b81613052565b811461368657600080fd5b50565b61369281613064565b811461369d57600080fd5b50565b6136a981613090565b81146136b457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee78bf561a1721120f5081503545c1d05fcb1e7b79f1f3d713807a6b603c6acf64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063715018a6116100d15780638f9a55c01161008a578063c04a541411610064578063c04a541414610511578063dd62ed3e1461053c578063ea1644d514610579578063f2fde38b146105a257610171565b80638f9a55c01461047e57806395d89b41146104a9578063a9059cbb146104d457610171565b8063715018a61461039657806374010ece146103ad5780637d1db4a5146103d6578063881dce60146104015780638da5cb5b1461042a5780638f70ccf71461045557610171565b8063313ce56711610123578063313ce5671461029a57806346001d8e146102c557806349bd5a5e146102ee5780636d8aa8f8146103195780636fc3eaec1461034257806370a082311461035957610171565b8063043a791d1461017657806306fdde031461019f578063095ea7b3146101ca5780631694505e1461020757806318160ddd1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d60048036038101906101989190612870565b6105cb565b005b3480156101ab57600080fd5b506101b4610688565b6040516101c19190612c36565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec9190612803565b6106c5565b6040516101fe9190612c00565b60405180910390f35b34801561021357600080fd5b5061021c6106e3565b6040516102299190612c1b565b60405180910390f35b34801561023e57600080fd5b50610247610709565b6040516102549190612e58565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f91906127b0565b61071a565b6040516102919190612c00565b60405180910390f35b3480156102a657600080fd5b506102af6107f3565b6040516102bc9190612ecd565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e79190612870565b6107fc565b005b3480156102fa57600080fd5b506103036108b9565b6040516103109190612be5565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612843565b6108df565b005b34801561034e57600080fd5b50610357610991565b005b34801561036557600080fd5b50610380600480360381019061037b9190612716565b610a03565b60405161038d9190612e58565b60405180910390f35b3480156103a257600080fd5b506103ab610a54565b005b3480156103b957600080fd5b506103d460048036038101906103cf9190612870565b610ba7565b005b3480156103e257600080fd5b506103eb610c12565b6040516103f89190612e58565b60405180910390f35b34801561040d57600080fd5b5061042860048036038101906104239190612870565b610c18565b005b34801561043657600080fd5b5061043f610cdc565b60405161044c9190612be5565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190612843565b610d05565b005b34801561048a57600080fd5b50610493610db6565b6040516104a09190612e58565b60405180910390f35b3480156104b557600080fd5b506104be610dbc565b6040516104cb9190612c36565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190612803565b610df9565b6040516105089190612c00565b60405180910390f35b34801561051d57600080fd5b50610526610e17565b6040516105339190612be5565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190612770565b610e41565b6040516105709190612e58565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190612870565b610ec8565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190612716565b610f33565b005b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661060c6110f5565b73ffffffffffffffffffffffffffffffffffffffff161461062c57600080fd5b6001811015801561063f5750600a548111155b61067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067590612c98565b60405180910390fd5b80600a8190555050565b60606040518060400160405280600581526020017f5a616d6f6c000000000000000000000000000000000000000000000000000000815250905090565b60006106d96106d26110f5565b84846110fd565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000683635c9adc5dea00000905090565b60006107278484846112c8565b6107e8846107336110f5565b6107e3856040518060600160405280602881526020016136b860289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107996110f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bd29092919063ffffffff16565b6110fd565b600190509392505050565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661083d6110f5565b73ffffffffffffffffffffffffffffffffffffffff161461085d57600080fd5b600181101580156108705750600c548111155b6108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a690612d58565b60405180910390fd5b80600c8190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e76110f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096b90612d98565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109d26110f5565b73ffffffffffffffffffffffffffffffffffffffff16146109f257600080fd5b6000479050610a0081611c36565b50565b6000610a4d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca2565b9050919050565b610a5c6110f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090612d98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be86110f5565b73ffffffffffffffffffffffffffffffffffffffff1614610c0857600080fd5b8060158190555050565b60155481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c596110f5565b73ffffffffffffffffffffffffffffffffffffffff1614610c7957600080fd5b610c8230610a03565b8111158015610c915750600081115b610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790612e38565b60405180910390fd5b610cd981611d10565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d0d6110f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190612d98565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600381526020017f5a4d4c0000000000000000000000000000000000000000000000000000000000815250905090565b6000610e0d610e066110f5565b84846112c8565b6001905092915050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f096110f5565b73ffffffffffffffffffffffffffffffffffffffff1614610f2957600080fd5b8060168190555050565b610f3b6110f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90612d98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612cf8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490612e18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490612d18565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112bb9190612e58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f90612dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90612c58565b60405180910390fd5b600081116113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612db8565b60405180910390fd5b6113f3610cdc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114615750611431610cdc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117d55760148054906101000a900460ff166114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90612c78565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561155e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611693573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156115ed5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116475750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561169257601554811115611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890612cd8565b60405180910390fd5b5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561173f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117d4576016548161178984610a03565b6117939190612f3d565b106117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90612df8565b60405180910390fd5b5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061187c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061192f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561192e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561193d5760009050611bc0565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119e85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a445742600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600d81905550600a54600e819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611aef5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bbf576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414158015611b915750426202a300600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8e9190612f3d565b10155b15611bab57600a600d819055506014600e81905550611bbe565b600b54600d81905550600c54600e819055505b5b5b611bcc84848484611f98565b50505050565b6000838311158290611c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c119190612c36565b60405180910390fd5b5060008385611c29919061301e565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c9e573d6000803e3d6000fd5b5050565b6000600754821115611ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce090612cb8565b60405180910390fd5b6000611cf3611fc5565b9050611d088184611ff090919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d4857611d476131af565b5b604051908082528060200260200182016040528015611d765781602001602082028036833780820191505090505b5090503081600081518110611d8e57611d8d613180565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e3057600080fd5b505afa158015611e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e689190612743565b81600181518110611e7c57611e7b613180565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ee330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110fd565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f47959493929190612e73565b600060405180830381600087803b158015611f6157600080fd5b505af1158015611f75573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b80611fa657611fa561203a565b5b611fb184848461207d565b80611fbf57611fbe612248565b5b50505050565b6000806000611fd261225c565b91509150611fe98183611ff090919063ffffffff16565b9250505090565b600061203283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122be565b905092915050565b6000600d5414801561204e57506000600e54145b156120585761207b565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061208f87612321565b9550955095509550955095506120ed86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461238990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061218285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121ce81612431565b6121d884836124ee565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122359190612e58565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000683635c9adc5dea000009050612292683635c9adc5dea00000600754611ff090919063ffffffff16565b8210156122b157600754683635c9adc5dea000009350935050506122ba565b81819350935050505b9091565b60008083118290612305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fc9190612c36565b60405180910390fd5b50600083856123149190612f93565b9050809150509392505050565b600080600080600080600080600061233e8a600d54600e54612528565b925092509250600061234e611fc5565b905060008060006123618e8787876125be565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006123cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bd2565b905092915050565b60008082846123e29190612f3d565b905083811015612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90612d38565b60405180910390fd5b8091505092915050565b600061243b611fc5565b90506000612452828461264790919063ffffffff16565b90506124a681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125038260075461238990919063ffffffff16565b60078190555061251e816008546123d390919063ffffffff16565b6008819055505050565b6000806000806125546064612546888a61264790919063ffffffff16565b611ff090919063ffffffff16565b9050600061257e6064612570888b61264790919063ffffffff16565b611ff090919063ffffffff16565b905060006125a782612599858c61238990919063ffffffff16565b61238990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806125d7858961264790919063ffffffff16565b905060006125ee868961264790919063ffffffff16565b90506000612605878961264790919063ffffffff16565b9050600061262e82612620858761238990919063ffffffff16565b61238990919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561265a57600090506126bc565b600082846126689190612fc4565b90508284826126779190612f93565b146126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90612d78565b60405180910390fd5b809150505b92915050565b6000813590506126d181613672565b92915050565b6000815190506126e681613672565b92915050565b6000813590506126fb81613689565b92915050565b600081359050612710816136a0565b92915050565b60006020828403121561272c5761272b6131de565b5b600061273a848285016126c2565b91505092915050565b600060208284031215612759576127586131de565b5b6000612767848285016126d7565b91505092915050565b60008060408385031215612787576127866131de565b5b6000612795858286016126c2565b92505060206127a6858286016126c2565b9150509250929050565b6000806000606084860312156127c9576127c86131de565b5b60006127d7868287016126c2565b93505060206127e8868287016126c2565b92505060406127f986828701612701565b9150509250925092565b6000806040838503121561281a576128196131de565b5b6000612828858286016126c2565b925050602061283985828601612701565b9150509250929050565b600060208284031215612859576128586131de565b5b6000612867848285016126ec565b91505092915050565b600060208284031215612886576128856131de565b5b600061289484828501612701565b91505092915050565b60006128a983836128b5565b60208301905092915050565b6128be81613052565b82525050565b6128cd81613052565b82525050565b60006128de82612ef8565b6128e88185612f1b565b93506128f383612ee8565b8060005b8381101561292457815161290b888261289d565b975061291683612f0e565b9250506001810190506128f7565b5085935050505092915050565b61293a81613064565b82525050565b612949816130a7565b82525050565b612958816130b9565b82525050565b600061296982612f03565b6129738185612f2c565b93506129838185602086016130ef565b61298c816131e3565b840191505092915050565b60006129a4602383612f2c565b91506129af826131f4565b604082019050919050565b60006129c7601883612f2c565b91506129d282613243565b602082019050919050565b60006129ea604783612f2c565b91506129f58261326c565b606082019050919050565b6000612a0d602a83612f2c565b9150612a18826132e1565b604082019050919050565b6000612a30601c83612f2c565b9150612a3b82613330565b602082019050919050565b6000612a53602683612f2c565b9150612a5e82613359565b604082019050919050565b6000612a76602283612f2c565b9150612a81826133a8565b604082019050919050565b6000612a99601b83612f2c565b9150612aa4826133f7565b602082019050919050565b6000612abc604883612f2c565b9150612ac782613420565b606082019050919050565b6000612adf602183612f2c565b9150612aea82613495565b604082019050919050565b6000612b02602083612f2c565b9150612b0d826134e4565b602082019050919050565b6000612b25602983612f2c565b9150612b308261350d565b604082019050919050565b6000612b48602583612f2c565b9150612b538261355c565b604082019050919050565b6000612b6b602383612f2c565b9150612b76826135ab565b604082019050919050565b6000612b8e602483612f2c565b9150612b99826135fa565b604082019050919050565b6000612bb1600c83612f2c565b9150612bbc82613649565b602082019050919050565b612bd081613090565b82525050565b612bdf8161309a565b82525050565b6000602082019050612bfa60008301846128c4565b92915050565b6000602082019050612c156000830184612931565b92915050565b6000602082019050612c306000830184612940565b92915050565b60006020820190508181036000830152612c50818461295e565b905092915050565b60006020820190508181036000830152612c7181612997565b9050919050565b60006020820190508181036000830152612c91816129ba565b9050919050565b60006020820190508181036000830152612cb1816129dd565b9050919050565b60006020820190508181036000830152612cd181612a00565b9050919050565b60006020820190508181036000830152612cf181612a23565b9050919050565b60006020820190508181036000830152612d1181612a46565b9050919050565b60006020820190508181036000830152612d3181612a69565b9050919050565b60006020820190508181036000830152612d5181612a8c565b9050919050565b60006020820190508181036000830152612d7181612aaf565b9050919050565b60006020820190508181036000830152612d9181612ad2565b9050919050565b60006020820190508181036000830152612db181612af5565b9050919050565b60006020820190508181036000830152612dd181612b18565b9050919050565b60006020820190508181036000830152612df181612b3b565b9050919050565b60006020820190508181036000830152612e1181612b5e565b9050919050565b60006020820190508181036000830152612e3181612b81565b9050919050565b60006020820190508181036000830152612e5181612ba4565b9050919050565b6000602082019050612e6d6000830184612bc7565b92915050565b600060a082019050612e886000830188612bc7565b612e95602083018761294f565b8181036040830152612ea781866128d3565b9050612eb660608301856128c4565b612ec36080830184612bc7565b9695505050505050565b6000602082019050612ee26000830184612bd6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612f4882613090565b9150612f5383613090565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f8857612f87613122565b5b828201905092915050565b6000612f9e82613090565b9150612fa983613090565b925082612fb957612fb8613151565b5b828204905092915050565b6000612fcf82613090565b9150612fda83613090565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561301357613012613122565b5b828202905092915050565b600061302982613090565b915061303483613090565b92508282101561304757613046613122565b5b828203905092915050565b600061305d82613070565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006130b2826130cb565b9050919050565b60006130c482613090565b9050919050565b60006130d6826130dd565b9050919050565b60006130e882613070565b9050919050565b60005b8381101561310d5780820151818401526020810190506130f2565b8381111561311c576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b7f54686520616d6f756e74206e6565647320746f2062652067726561746572207460008201527f68616e203120616e64206c657373207468616e207468652063757272656e742060208201527f6275792066656500000000000000000000000000000000000000000000000000604082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f54686520616d6f756e74206e6565647320746f2062652067726561746572207460008201527f68616e203120616e64206c657373207468616e207468652063757272656e742060208201527f73656c6c20666565000000000000000000000000000000000000000000000000604082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b61367b81613052565b811461368657600080fd5b50565b61369281613064565b811461369d57600080fd5b50565b6136a981613090565b81146136b457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ee78bf561a1721120f5081503545c1d05fcb1e7b79f1f3d713807a6b603c6acf64736f6c63430008070033

Deployed Bytecode Sourcemap

5068:13162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17640:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7504:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8541:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6378:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7781:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8742:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7690:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17946:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6426:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17117:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13466:198;;;;;;;;;;;;;:::i;:::-;;7884:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2547:148;;;;;;;;;;;;;:::i;:::-;;17258:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6576:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13231:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2333:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13122:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6644:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7595:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8142:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8030:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8349:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17448:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2707:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17640:277;17725:19;;;;;;;;;;;17709:35;;:12;:10;:12::i;:::-;:35;;;17701:44;;;;;;17774:1;17764:6;:11;;:37;;;;;17789:12;;17779:6;:22;;17764:37;17756:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;17903:6;17888:12;:21;;;;17640:277;:::o;7504:83::-;7541:13;7574:5;;;;;;;;;;;;;;;;;7567:12;;7504:83;:::o;8541:193::-;8643:4;8665:39;8674:12;:10;:12::i;:::-;8688:7;8697:6;8665:8;:39::i;:::-;8722:4;8715:11;;8541:193;;;;:::o;6378:41::-;;;;;;;;;;;;;:::o;7781:95::-;7834:7;5663:12;7854:14;;7781:95;:::o;8742:446::-;8874:4;8891:36;8901:6;8909:9;8920:6;8891:9;:36::i;:::-;8938:220;8961:6;8982:12;:10;:12::i;:::-;9009:138;9065:6;9009:138;;;;;;;;;;;;;;;;;:11;:19;9021:6;9009:19;;;;;;;;;;;;;;;:33;9029:12;:10;:12::i;:::-;9009:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8938:8;:220::i;:::-;9176:4;9169:11;;8742:446;;;;;:::o;7690:83::-;7731:5;5286:1;7749:16;;7690:83;:::o;17946:281::-;18032:19;;;;;;;;;;;18016:35;;:12;:10;:12::i;:::-;:35;;;18008:44;;;;;;18081:1;18071:6;:11;;:38;;;;;18096:13;;18086:6;:23;;18071:38;18063:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;18213:6;18197:13;:22;;;;17946:281;:::o;6426:28::-;;;;;;;;;;;;;:::o;17117:101::-;2470:12;:10;:12::i;:::-;2460:22;;:6;;;;;;;;;;:22;;;2452:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17198:12:::1;17184:11;;:26;;;;;;;;;;;;;;;;;;17117:101:::0;:::o;13466:198::-;13532:19;;;;;;;;;;;13516:35;;:12;:10;:12::i;:::-;:35;;;13508:44;;;;;;13563:26;13592:21;13563:50;;13624:32;13637:18;13624:12;:32::i;:::-;13497:167;13466:198::o;7884:138::-;7950:7;7977:37;7997:7;:16;8005:7;7997:16;;;;;;;;;;;;;;;;7977:19;:37::i;:::-;7970:44;;7884:138;;;:::o;2547:148::-;2470:12;:10;:12::i;:::-;2460:22;;:6;;;;;;;;;;:22;;;2452:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2654:1:::1;2617:40;;2638:6;::::0;::::1;;;;;;;;2617:40;;;;;;;;;;;;2685:1;2668:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2547:148::o:0;17258:155::-;17348:19;;;;;;;;;;;17332:35;;:12;:10;:12::i;:::-;:35;;;17324:44;;;;;;17394:11;17379:12;:26;;;;17258:155;:::o;6576:41::-;;;;:::o;13231:227::-;13311:19;;;;;;;;;;;13295:35;;:12;:10;:12::i;:::-;:35;;;13287:44;;;;;;13360:24;13378:4;13360:9;:24::i;:::-;13350:6;:34;;:48;;;;;13397:1;13388:6;:10;13350:48;13342:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13426:24;13443:6;13426:16;:24::i;:::-;13231:227;:::o;2333:79::-;2371:7;2398:6;;;;;;;;;;;2391:13;;2333:79;:::o;13122:101::-;2470:12;:10;:12::i;:::-;2460:22;;:6;;;;;;;;;;:22;;;2452:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13203:12:::1;13189:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;13122:101:::0;:::o;6644:44::-;;;;:::o;7595:87::-;7634:13;7667:7;;;;;;;;;;;;;;;;;7660:14;;7595:87;:::o;8142:199::-;8247:4;8269:42;8279:12;:10;:12::i;:::-;8293:9;8304:6;8269:9;:42::i;:::-;8329:4;8322:11;;8142:199;;;;:::o;8030:104::-;8080:7;8107:19;;;;;;;;;;;8100:26;;8030:104;:::o;8349:184::-;8466:7;8498:11;:18;8510:5;8498:18;;;;;;;;;;;;;;;:27;8517:7;8498:27;;;;;;;;;;;;;;;;8491:34;;8349:184;;;;:::o;17448:162::-;17541:19;;;;;;;;;;;17525:35;;:12;:10;:12::i;:::-;:35;;;17517:44;;;;;;17589:13;17572:14;:30;;;;17448:162;:::o;2707:244::-;2470:12;:10;:12::i;:::-;2460:22;;:6;;;;;;;;;;:22;;;2452:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2816:1:::1;2796:22;;:8;:22;;;;2788:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2906:8;2877:38;;2898:6;::::0;::::1;;;;;;;;2877:38;;;;;;;;;;;;2935:8;2926:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2707:244:::0;:::o;1092:98::-;1145:7;1172:10;1165:17;;1092:98;:::o;9891:369::-;10035:1;10018:19;;:5;:19;;;;10010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10116:1;10097:21;;:7;:21;;;;10089:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10198:6;10168:11;:18;10180:5;10168:18;;;;;;;;;;;;;;;:27;10187:7;10168:27;;;;;;;;;;;;;;;:36;;;;10236:7;10220:32;;10229:5;10220:32;;;10245:6;10220:32;;;;;;:::i;:::-;;;;;;;;9891:369;;;:::o;10268:2219::-;10406:1;10390:18;;:4;:18;;;;10382:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10483:1;10469:16;;:2;:16;;;;10461:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10553:1;10544:6;:10;10536:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10625:7;:5;:7::i;:::-;10617:15;;:4;:15;;;;:32;;;;;10642:7;:5;:7::i;:::-;10636:13;;:2;:13;;;;10617:32;10613:754;;;10719:11;;;;;;;;;;10714:99;;10751:34;;;;;;;;;;:::i;:::-;;;;;;;;10714:99;10851:13;;;;;;;;;;;10845:19;;:2;:19;;;:55;;;;;10884:15;;;;;;;;;;;10868:32;;:4;:32;;;;10845:55;10841:286;;;10939:4;10925:19;;:2;:19;;;;:48;;;;;10954:19;;;;;;;;;;;10948:25;;:2;:25;;;;10925:48;:79;;;;;10985:19;;;;;;;;;;;10977:27;;:4;:27;;;;10925:79;10921:191;;;11047:12;;11037:6;:22;;11029:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10921:191;10841:286;11153:13;;;;;;;;;;;11147:19;;:2;:19;;;;:48;;;;;11176:19;;;;;;;;;;;11170:25;;:2;:25;;;;11147:48;:71;;;;;11213:4;11199:19;;:2;:19;;;;11147:71;11143:199;;;11272:14;;11263:6;11247:13;11257:2;11247:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11239:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11143:199;10613:754;11387:12;11402:4;11387:19;;11452:18;:24;11471:4;11452:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11480:18;:22;11499:2;11480:22;;;;;;;;;;;;;;;;;;;;;;;;;11452:50;11451:102;;;;11516:13;;;;;;;;;;;11508:21;;:4;:21;;;;:44;;;;;11539:13;;;;;;;;;;;11533:19;;:2;:19;;;;11508:44;11451:102;11447:979;;;11580:5;11570:15;;11447:979;;;11662:13;;;;;;;;;;;11654:21;;:4;:21;;;:55;;;;;11693:15;;;;;;;;;;;11679:30;;:2;:30;;;;11654:55;11651:222;;;11748:15;11734:7;:11;11742:2;11734:11;;;;;;;;;;;;;;;:29;;;;11798:14;;11786:9;:26;;;;11845:12;;11835:7;:22;;;;11651:222;12041:13;;;;;;;;;;;12035:19;;:2;:19;;;:55;;;;;12074:15;;;;;;;;;;;12058:32;;:4;:32;;;;12035:55;12031:384;;;12132:1;12115:7;:13;12123:4;12115:13;;;;;;;;;;;;;;;;:18;;:69;;;;;12168:15;12155:8;12138:7;:13;12146:4;12138:13;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:45;;12115:69;12111:289;;;12221:2;12209:9;:14;;;;12256:2;12246:7;:12;;;;12111:289;;;12319:15;;12307:9;:27;;;;12367:13;;12357:7;:23;;;;12111:289;12031:384;11447:979;12438:41;12453:4;12459:2;12463:6;12471:7;12438:14;:41::i;:::-;10371:2116;10268:2219;;;:::o;3319:224::-;3439:7;3472:1;3467;:6;;3475:12;3459:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3499:9;3515:1;3511;:5;;;;:::i;:::-;3499:17;;3534:1;3527:8;;;3319:224;;;;;:::o;12986:101::-;13043:19;;;;;;;;;;;:28;;:36;13072:6;13043:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12986:101;:::o;9196:323::-;9291:7;9349;;9338;:18;;9316:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9437:19;9459:10;:8;:10::i;:::-;9437:32;;9487:24;9499:11;9487:7;:11;;:24;;;;:::i;:::-;9480:31;;;9196:323;;;:::o;12495:483::-;6838:4;6829:6;;:13;;;;;;;;;;;;;;;;;;12573:21:::1;12611:1;12597:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12573:40;;12642:4;12624;12629:1;12624:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12668:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12658:4;12663:1;12658:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12701:62;12718:4;12733:15;;;;;;;;;;;12751:11;12701:8;:62::i;:::-;12774:15;;;;;;;;;;;:66;;;12855:11;12881:1;12897:4;12924;12944:15;12774:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12562:416;6874:5:::0;6865:6;;:14;;;;;;;;;;;;;;;;;;12495:483;:::o;13672:282::-;13828:7;13823:28;;13837:14;:12;:14::i;:::-;13823:28;13862:44;13880:6;13888:9;13899:6;13862:17;:44::i;:::-;13922:7;13917:29;;13931:15;:13;:15::i;:::-;13917:29;13672:282;;;;:::o;16647:166::-;16689:7;16710:15;16727;16746:19;:17;:19::i;:::-;16709:56;;;;16785:20;16797:7;16785;:11;;:20;;;;:::i;:::-;16778:27;;;;16647:166;:::o;3805:132::-;3863:7;3890:39;3894:1;3897;3890:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3883:46;;3805:132;;;;:::o;9527:231::-;9587:1;9574:9;;:14;:30;;;;;9603:1;9592:7;;:12;9574:30;9570:43;;;9606:7;;9570:43;9649:9;;9629:17;:29;;;;9687:7;;9669:15;:25;;;;9727:1;9715:9;:13;;;;9749:1;9739:7;:11;;;;9527:231;:::o;13962:610::-;14109:15;14139:23;14177:12;14204:23;14242:12;14269:13;14296:19;14307:7;14296:10;:19::i;:::-;14094:221;;;;;;;;;;;;14344:28;14364:7;14344;:15;14352:6;14344:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14326:7;:15;14334:6;14326:15;;;;;;;;;;;;;;;:46;;;;14404:39;14427:15;14404:7;:18;14412:9;14404:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14383:7;:18;14391:9;14383:18;;;;;;;;;;;;;;;:60;;;;14454:16;14464:5;14454:9;:16::i;:::-;14481:23;14493:4;14499;14481:11;:23::i;:::-;14537:9;14520:44;;14529:6;14520:44;;;14548:15;14520:44;;;;;;:::i;:::-;;;;;;;;14083:489;;;;;;13962:610;;;:::o;9766:117::-;9822:17;;9810:9;:29;;;;9860:15;;9850:7;:25;;;;9766:117::o;16821:263::-;16872:7;16881;16901:15;16919:7;;16901:25;;16937:15;5663:12;16937:25;;16987:20;5663:12;16987:7;;:11;;:20;;;;:::i;:::-;16977:7;:30;16973:61;;;17017:7;;5663:12;17009:25;;;;;;;;16973:61;17059:7;17068;17051:25;;;;;;16821:263;;;:::o;3945:223::-;4065:7;4097:1;4093;:5;4100:12;4085:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4124:9;4140:1;4136;:5;;;;:::i;:::-;4124:17;;4159:1;4152:8;;;3945:223;;;;;:::o;14991:625::-;15091:7;15113;15135;15157;15179;15201;15237:23;15262:12;15276:13;15306:40;15318:7;15327:9;;15338:7;;15306:11;:40::i;:::-;15236:110;;;;;;15357:19;15379:10;:8;:10::i;:::-;15357:32;;15401:15;15418:23;15443:12;15472:46;15484:7;15493:4;15499:5;15506:11;15472;:46::i;:::-;15400:118;;;;;;15547:7;15556:15;15573:4;15579:15;15596:4;15602:5;15539:69;;;;;;;;;;;;;;;;;;;14991:625;;;;;;;:::o;3175:136::-;3233:7;3260:43;3264:1;3267;3260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3253:50;;3175:136;;;;:::o;2988:179::-;3046:7;3066:9;3082:1;3078;:5;;;;:::i;:::-;3066:17;;3107:1;3102;:6;;3094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3158:1;3151:8;;;2988:179;;;;:::o;14580:211::-;14633:19;14655:10;:8;:10::i;:::-;14633:32;;14676:13;14692:22;14702:11;14692:5;:9;;:22;;;;:::i;:::-;14676:38;;14750:33;14777:5;14750:7;:22;14766:4;14750:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14725:7;:22;14741:4;14725:22;;;;;;;;;;;;;;;:58;;;;14622:169;;14580:211;:::o;14799:147::-;14877:17;14889:4;14877:7;;:11;;:17;;;;:::i;:::-;14867:7;:27;;;;14918:20;14933:4;14918:10;;:14;;:20;;;;:::i;:::-;14905:10;:33;;;;14799:147;;:::o;15624:471::-;15793:7;15815;15837;15872:12;15887:30;15913:3;15887:21;15899:8;15887:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15872:45;;15928:13;15944:28;15968:3;15944:19;15956:6;15944:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15928:44;;15983:23;16009:28;16031:5;16009:17;16021:4;16009:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15983:54;;16058:15;16075:4;16081:5;16050:37;;;;;;;;;15624:471;;;;;;;:::o;16103:536::-;16297:7;16319;16341;16376:15;16394:24;16406:11;16394:7;:11;;:24;;;;:::i;:::-;16376:42;;16429:12;16444:21;16453:11;16444:4;:8;;:21;;;;:::i;:::-;16429:36;;16476:13;16492:22;16502:11;16492:5;:9;;:22;;;;:::i;:::-;16476:38;;16525:23;16551:28;16573:5;16551:17;16563:4;16551:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16525:54;;16600:7;16609:15;16626:4;16592:39;;;;;;;;;;16103:536;;;;;;;;:::o;3551:246::-;3609:7;3638:1;3633;:6;3629:47;;;3663:1;3656:8;;;;3629:47;3686:9;3702:1;3698;:5;;;;:::i;:::-;3686:17;;3731:1;3726;3722;:5;;;;:::i;:::-;:10;3714:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3788:1;3781:8;;;3551:246;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:329::-;644:6;693:2;681:9;672:7;668:23;664:32;661:119;;;699:79;;:::i;:::-;661:119;819:1;844:53;889:7;880:6;869:9;865:22;844:53;:::i;:::-;834:63;;790:117;585:329;;;;:::o;920:351::-;990:6;1039:2;1027:9;1018:7;1014:23;1010:32;1007:119;;;1045:79;;:::i;:::-;1007:119;1165:1;1190:64;1246:7;1237:6;1226:9;1222:22;1190:64;:::i;:::-;1180:74;;1136:128;920:351;;;;:::o;1277:474::-;1345:6;1353;1402:2;1390:9;1381:7;1377:23;1373:32;1370:119;;;1408:79;;:::i;:::-;1370:119;1528:1;1553:53;1598:7;1589:6;1578:9;1574:22;1553:53;:::i;:::-;1543:63;;1499:117;1655:2;1681:53;1726:7;1717:6;1706:9;1702:22;1681:53;:::i;:::-;1671:63;;1626:118;1277:474;;;;;:::o;1757:619::-;1834:6;1842;1850;1899:2;1887:9;1878:7;1874:23;1870:32;1867:119;;;1905:79;;:::i;:::-;1867:119;2025:1;2050:53;2095:7;2086:6;2075:9;2071:22;2050:53;:::i;:::-;2040:63;;1996:117;2152:2;2178:53;2223:7;2214:6;2203:9;2199:22;2178:53;:::i;:::-;2168:63;;2123:118;2280:2;2306:53;2351:7;2342:6;2331:9;2327:22;2306:53;:::i;:::-;2296:63;;2251:118;1757:619;;;;;:::o;2382:474::-;2450:6;2458;2507:2;2495:9;2486:7;2482:23;2478:32;2475:119;;;2513:79;;:::i;:::-;2475:119;2633:1;2658:53;2703:7;2694:6;2683:9;2679:22;2658:53;:::i;:::-;2648:63;;2604:117;2760:2;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2731:118;2382:474;;;;;:::o;2862:323::-;2918:6;2967:2;2955:9;2946:7;2942:23;2938:32;2935:119;;;2973:79;;:::i;:::-;2935:119;3093:1;3118:50;3160:7;3151:6;3140:9;3136:22;3118:50;:::i;:::-;3108:60;;3064:114;2862:323;;;;:::o;3191:329::-;3250:6;3299:2;3287:9;3278:7;3274:23;3270:32;3267:119;;;3305:79;;:::i;:::-;3267:119;3425:1;3450:53;3495:7;3486:6;3475:9;3471:22;3450:53;:::i;:::-;3440:63;;3396:117;3191:329;;;;:::o;3526:179::-;3595:10;3616:46;3658:3;3650:6;3616:46;:::i;:::-;3694:4;3689:3;3685:14;3671:28;;3526:179;;;;:::o;3711:108::-;3788:24;3806:5;3788:24;:::i;:::-;3783:3;3776:37;3711:108;;:::o;3825:118::-;3912:24;3930:5;3912:24;:::i;:::-;3907:3;3900:37;3825:118;;:::o;3979:732::-;4098:3;4127:54;4175:5;4127:54;:::i;:::-;4197:86;4276:6;4271:3;4197:86;:::i;:::-;4190:93;;4307:56;4357:5;4307:56;:::i;:::-;4386:7;4417:1;4402:284;4427:6;4424:1;4421:13;4402:284;;;4503:6;4497:13;4530:63;4589:3;4574:13;4530:63;:::i;:::-;4523:70;;4616:60;4669:6;4616:60;:::i;:::-;4606:70;;4462:224;4449:1;4446;4442:9;4437:14;;4402:284;;;4406:14;4702:3;4695:10;;4103:608;;;3979:732;;;;:::o;4717:109::-;4798:21;4813:5;4798:21;:::i;:::-;4793:3;4786:34;4717:109;;:::o;4832:183::-;4945:63;5002:5;4945:63;:::i;:::-;4940:3;4933:76;4832:183;;:::o;5021:147::-;5116:45;5155:5;5116:45;:::i;:::-;5111:3;5104:58;5021:147;;:::o;5174:364::-;5262:3;5290:39;5323:5;5290:39;:::i;:::-;5345:71;5409:6;5404:3;5345:71;:::i;:::-;5338:78;;5425:52;5470:6;5465:3;5458:4;5451:5;5447:16;5425:52;:::i;:::-;5502:29;5524:6;5502:29;:::i;:::-;5497:3;5493:39;5486:46;;5266:272;5174:364;;;;:::o;5544:366::-;5686:3;5707:67;5771:2;5766:3;5707:67;:::i;:::-;5700:74;;5783:93;5872:3;5783:93;:::i;:::-;5901:2;5896:3;5892:12;5885:19;;5544:366;;;:::o;5916:::-;6058:3;6079:67;6143:2;6138:3;6079:67;:::i;:::-;6072:74;;6155:93;6244:3;6155:93;:::i;:::-;6273:2;6268:3;6264:12;6257:19;;5916:366;;;:::o;6288:::-;6430:3;6451:67;6515:2;6510:3;6451:67;:::i;:::-;6444:74;;6527:93;6616:3;6527:93;:::i;:::-;6645:2;6640:3;6636:12;6629:19;;6288:366;;;:::o;6660:::-;6802:3;6823:67;6887:2;6882:3;6823:67;:::i;:::-;6816:74;;6899:93;6988:3;6899:93;:::i;:::-;7017:2;7012:3;7008:12;7001:19;;6660:366;;;:::o;7032:::-;7174:3;7195:67;7259:2;7254:3;7195:67;:::i;:::-;7188:74;;7271:93;7360:3;7271:93;:::i;:::-;7389:2;7384:3;7380:12;7373:19;;7032:366;;;:::o;7404:::-;7546:3;7567:67;7631:2;7626:3;7567:67;:::i;:::-;7560:74;;7643:93;7732:3;7643:93;:::i;:::-;7761:2;7756:3;7752:12;7745:19;;7404:366;;;:::o;7776:::-;7918:3;7939:67;8003:2;7998:3;7939:67;:::i;:::-;7932:74;;8015:93;8104:3;8015:93;:::i;:::-;8133:2;8128:3;8124:12;8117:19;;7776:366;;;:::o;8148:::-;8290:3;8311:67;8375:2;8370:3;8311:67;:::i;:::-;8304:74;;8387:93;8476:3;8387:93;:::i;:::-;8505:2;8500:3;8496:12;8489:19;;8148:366;;;:::o;8520:::-;8662:3;8683:67;8747:2;8742:3;8683:67;:::i;:::-;8676:74;;8759:93;8848:3;8759:93;:::i;:::-;8877:2;8872:3;8868:12;8861:19;;8520:366;;;:::o;8892:::-;9034:3;9055:67;9119:2;9114:3;9055:67;:::i;:::-;9048:74;;9131:93;9220:3;9131:93;:::i;:::-;9249:2;9244:3;9240:12;9233:19;;8892:366;;;:::o;9264:::-;9406:3;9427:67;9491:2;9486:3;9427:67;:::i;:::-;9420:74;;9503:93;9592:3;9503:93;:::i;:::-;9621:2;9616:3;9612:12;9605:19;;9264:366;;;:::o;9636:::-;9778:3;9799:67;9863:2;9858:3;9799:67;:::i;:::-;9792:74;;9875:93;9964:3;9875:93;:::i;:::-;9993:2;9988:3;9984:12;9977:19;;9636:366;;;:::o;10008:::-;10150:3;10171:67;10235:2;10230:3;10171:67;:::i;:::-;10164:74;;10247:93;10336:3;10247:93;:::i;:::-;10365:2;10360:3;10356:12;10349:19;;10008:366;;;:::o;10380:::-;10522:3;10543:67;10607:2;10602:3;10543:67;:::i;:::-;10536:74;;10619:93;10708:3;10619:93;:::i;:::-;10737:2;10732:3;10728:12;10721:19;;10380:366;;;:::o;10752:::-;10894:3;10915:67;10979:2;10974:3;10915:67;:::i;:::-;10908:74;;10991:93;11080:3;10991:93;:::i;:::-;11109:2;11104:3;11100:12;11093:19;;10752:366;;;:::o;11124:::-;11266:3;11287:67;11351:2;11346:3;11287:67;:::i;:::-;11280:74;;11363:93;11452:3;11363:93;:::i;:::-;11481:2;11476:3;11472:12;11465:19;;11124:366;;;:::o;11496:118::-;11583:24;11601:5;11583:24;:::i;:::-;11578:3;11571:37;11496:118;;:::o;11620:112::-;11703:22;11719:5;11703:22;:::i;:::-;11698:3;11691:35;11620:112;;:::o;11738:222::-;11831:4;11869:2;11858:9;11854:18;11846:26;;11882:71;11950:1;11939:9;11935:17;11926:6;11882:71;:::i;:::-;11738:222;;;;:::o;11966:210::-;12053:4;12091:2;12080:9;12076:18;12068:26;;12104:65;12166:1;12155:9;12151:17;12142:6;12104:65;:::i;:::-;11966:210;;;;:::o;12182:274::-;12301:4;12339:2;12328:9;12324:18;12316:26;;12352:97;12446:1;12435:9;12431:17;12422:6;12352:97;:::i;:::-;12182:274;;;;:::o;12462:313::-;12575:4;12613:2;12602:9;12598:18;12590:26;;12662:9;12656:4;12652:20;12648:1;12637:9;12633:17;12626:47;12690:78;12763:4;12754:6;12690:78;:::i;:::-;12682:86;;12462:313;;;;:::o;12781:419::-;12947:4;12985:2;12974:9;12970:18;12962:26;;13034:9;13028:4;13024:20;13020:1;13009:9;13005:17;12998:47;13062:131;13188:4;13062:131;:::i;:::-;13054:139;;12781:419;;;:::o;13206:::-;13372:4;13410:2;13399:9;13395:18;13387:26;;13459:9;13453:4;13449:20;13445:1;13434:9;13430:17;13423:47;13487:131;13613:4;13487:131;:::i;:::-;13479:139;;13206:419;;;:::o;13631:::-;13797:4;13835:2;13824:9;13820:18;13812:26;;13884:9;13878:4;13874:20;13870:1;13859:9;13855:17;13848:47;13912:131;14038:4;13912:131;:::i;:::-;13904:139;;13631:419;;;:::o;14056:::-;14222:4;14260:2;14249:9;14245:18;14237:26;;14309:9;14303:4;14299:20;14295:1;14284:9;14280:17;14273:47;14337:131;14463:4;14337:131;:::i;:::-;14329:139;;14056:419;;;:::o;14481:::-;14647:4;14685:2;14674:9;14670:18;14662:26;;14734:9;14728:4;14724:20;14720:1;14709:9;14705:17;14698:47;14762:131;14888:4;14762:131;:::i;:::-;14754:139;;14481:419;;;:::o;14906:::-;15072:4;15110:2;15099:9;15095:18;15087:26;;15159:9;15153:4;15149:20;15145:1;15134:9;15130:17;15123:47;15187:131;15313:4;15187:131;:::i;:::-;15179:139;;14906:419;;;:::o;15331:::-;15497:4;15535:2;15524:9;15520:18;15512:26;;15584:9;15578:4;15574:20;15570:1;15559:9;15555:17;15548:47;15612:131;15738:4;15612:131;:::i;:::-;15604:139;;15331:419;;;:::o;15756:::-;15922:4;15960:2;15949:9;15945:18;15937:26;;16009:9;16003:4;15999:20;15995:1;15984:9;15980:17;15973:47;16037:131;16163:4;16037:131;:::i;:::-;16029:139;;15756:419;;;:::o;16181:::-;16347:4;16385:2;16374:9;16370:18;16362:26;;16434:9;16428:4;16424:20;16420:1;16409:9;16405:17;16398:47;16462:131;16588:4;16462:131;:::i;:::-;16454:139;;16181:419;;;:::o;16606:::-;16772:4;16810:2;16799:9;16795:18;16787:26;;16859:9;16853:4;16849:20;16845:1;16834:9;16830:17;16823:47;16887:131;17013:4;16887:131;:::i;:::-;16879:139;;16606:419;;;:::o;17031:::-;17197:4;17235:2;17224:9;17220:18;17212:26;;17284:9;17278:4;17274:20;17270:1;17259:9;17255:17;17248:47;17312:131;17438:4;17312:131;:::i;:::-;17304:139;;17031:419;;;:::o;17456:::-;17622:4;17660:2;17649:9;17645:18;17637:26;;17709:9;17703:4;17699:20;17695:1;17684:9;17680:17;17673:47;17737:131;17863:4;17737:131;:::i;:::-;17729:139;;17456:419;;;:::o;17881:::-;18047:4;18085:2;18074:9;18070:18;18062:26;;18134:9;18128:4;18124:20;18120:1;18109:9;18105:17;18098:47;18162:131;18288:4;18162:131;:::i;:::-;18154:139;;17881:419;;;:::o;18306:::-;18472:4;18510:2;18499:9;18495:18;18487:26;;18559:9;18553:4;18549:20;18545:1;18534:9;18530:17;18523:47;18587:131;18713:4;18587:131;:::i;:::-;18579:139;;18306:419;;;:::o;18731:::-;18897:4;18935:2;18924:9;18920:18;18912:26;;18984:9;18978:4;18974:20;18970:1;18959:9;18955:17;18948:47;19012:131;19138:4;19012:131;:::i;:::-;19004:139;;18731:419;;;:::o;19156:::-;19322:4;19360:2;19349:9;19345:18;19337:26;;19409:9;19403:4;19399:20;19395:1;19384:9;19380:17;19373:47;19437:131;19563:4;19437:131;:::i;:::-;19429:139;;19156:419;;;:::o;19581:222::-;19674:4;19712:2;19701:9;19697:18;19689:26;;19725:71;19793:1;19782:9;19778:17;19769:6;19725:71;:::i;:::-;19581:222;;;;:::o;19809:831::-;20072:4;20110:3;20099:9;20095:19;20087:27;;20124:71;20192:1;20181:9;20177:17;20168:6;20124:71;:::i;:::-;20205:80;20281:2;20270:9;20266:18;20257:6;20205:80;:::i;:::-;20332:9;20326:4;20322:20;20317:2;20306:9;20302:18;20295:48;20360:108;20463:4;20454:6;20360:108;:::i;:::-;20352:116;;20478:72;20546:2;20535:9;20531:18;20522:6;20478:72;:::i;:::-;20560:73;20628:3;20617:9;20613:19;20604:6;20560:73;:::i;:::-;19809:831;;;;;;;;:::o;20646:214::-;20735:4;20773:2;20762:9;20758:18;20750:26;;20786:67;20850:1;20839:9;20835:17;20826:6;20786:67;:::i;:::-;20646:214;;;;:::o;20947:132::-;21014:4;21037:3;21029:11;;21067:4;21062:3;21058:14;21050:22;;20947:132;;;:::o;21085:114::-;21152:6;21186:5;21180:12;21170:22;;21085:114;;;:::o;21205:99::-;21257:6;21291:5;21285:12;21275:22;;21205:99;;;:::o;21310:113::-;21380:4;21412;21407:3;21403:14;21395:22;;21310:113;;;:::o;21429:184::-;21528:11;21562:6;21557:3;21550:19;21602:4;21597:3;21593:14;21578:29;;21429:184;;;;:::o;21619:169::-;21703:11;21737:6;21732:3;21725:19;21777:4;21772:3;21768:14;21753:29;;21619:169;;;;:::o;21794:305::-;21834:3;21853:20;21871:1;21853:20;:::i;:::-;21848:25;;21887:20;21905:1;21887:20;:::i;:::-;21882:25;;22041:1;21973:66;21969:74;21966:1;21963:81;21960:107;;;22047:18;;:::i;:::-;21960:107;22091:1;22088;22084:9;22077:16;;21794:305;;;;:::o;22105:185::-;22145:1;22162:20;22180:1;22162:20;:::i;:::-;22157:25;;22196:20;22214:1;22196:20;:::i;:::-;22191:25;;22235:1;22225:35;;22240:18;;:::i;:::-;22225:35;22282:1;22279;22275:9;22270:14;;22105:185;;;;:::o;22296:348::-;22336:7;22359:20;22377:1;22359:20;:::i;:::-;22354:25;;22393:20;22411:1;22393:20;:::i;:::-;22388:25;;22581:1;22513:66;22509:74;22506:1;22503:81;22498:1;22491:9;22484:17;22480:105;22477:131;;;22588:18;;:::i;:::-;22477:131;22636:1;22633;22629:9;22618:20;;22296:348;;;;:::o;22650:191::-;22690:4;22710:20;22728:1;22710:20;:::i;:::-;22705:25;;22744:20;22762:1;22744:20;:::i;:::-;22739:25;;22783:1;22780;22777:8;22774:34;;;22788:18;;:::i;:::-;22774:34;22833:1;22830;22826:9;22818:17;;22650:191;;;;:::o;22847:96::-;22884:7;22913:24;22931:5;22913:24;:::i;:::-;22902:35;;22847:96;;;:::o;22949:90::-;22983:7;23026:5;23019:13;23012:21;23001:32;;22949:90;;;:::o;23045:126::-;23082:7;23122:42;23115:5;23111:54;23100:65;;23045:126;;;:::o;23177:77::-;23214:7;23243:5;23232:16;;23177:77;;;:::o;23260:86::-;23295:7;23335:4;23328:5;23324:16;23313:27;;23260:86;;;:::o;23352:152::-;23428:9;23461:37;23492:5;23461:37;:::i;:::-;23448:50;;23352:152;;;:::o;23510:121::-;23568:9;23601:24;23619:5;23601:24;:::i;:::-;23588:37;;23510:121;;;:::o;23637:126::-;23687:9;23720:37;23751:5;23720:37;:::i;:::-;23707:50;;23637:126;;;:::o;23769:113::-;23819:9;23852:24;23870:5;23852:24;:::i;:::-;23839:37;;23769:113;;;:::o;23888:307::-;23956:1;23966:113;23980:6;23977:1;23974:13;23966:113;;;24065:1;24060:3;24056:11;24050:18;24046:1;24041:3;24037:11;24030:39;24002:2;23999:1;23995:10;23990:15;;23966:113;;;24097:6;24094:1;24091:13;24088:101;;;24177:1;24168:6;24163:3;24159:16;24152:27;24088:101;23937:258;23888:307;;;:::o;24201:180::-;24249:77;24246:1;24239:88;24346:4;24343:1;24336:15;24370:4;24367:1;24360:15;24387:180;24435:77;24432:1;24425:88;24532:4;24529:1;24522:15;24556:4;24553:1;24546:15;24573:180;24621:77;24618:1;24611:88;24718:4;24715:1;24708:15;24742:4;24739:1;24732:15;24759:180;24807:77;24804:1;24797:88;24904:4;24901:1;24894:15;24928:4;24925:1;24918:15;25068:117;25177:1;25174;25167:12;25191:102;25232:6;25283:2;25279:7;25274:2;25267:5;25263:14;25259:28;25249:38;;25191:102;;;:::o;25299:222::-;25439:34;25435:1;25427:6;25423:14;25416:58;25508:5;25503:2;25495:6;25491:15;25484:30;25299:222;:::o;25527:174::-;25667:26;25663:1;25655:6;25651:14;25644:50;25527:174;:::o;25707:295::-;25847:34;25843:1;25835:6;25831:14;25824:58;25916:34;25911:2;25903:6;25899:15;25892:59;25985:9;25980:2;25972:6;25968:15;25961:34;25707:295;:::o;26008:229::-;26148:34;26144:1;26136:6;26132:14;26125:58;26217:12;26212:2;26204:6;26200:15;26193:37;26008:229;:::o;26243:178::-;26383:30;26379:1;26371:6;26367:14;26360:54;26243:178;:::o;26427:225::-;26567:34;26563:1;26555:6;26551:14;26544:58;26636:8;26631:2;26623:6;26619:15;26612:33;26427:225;:::o;26658:221::-;26798:34;26794:1;26786:6;26782:14;26775:58;26867:4;26862:2;26854:6;26850:15;26843:29;26658:221;:::o;26885:177::-;27025:29;27021:1;27013:6;27009:14;27002:53;26885:177;:::o;27068:296::-;27208:34;27204:1;27196:6;27192:14;27185:58;27277:34;27272:2;27264:6;27260:15;27253:59;27346:10;27341:2;27333:6;27329:15;27322:35;27068:296;:::o;27370:220::-;27510:34;27506:1;27498:6;27494:14;27487:58;27579:3;27574:2;27566:6;27562:15;27555:28;27370:220;:::o;27596:182::-;27736:34;27732:1;27724:6;27720:14;27713:58;27596:182;:::o;27784:228::-;27924:34;27920:1;27912:6;27908:14;27901:58;27993:11;27988:2;27980:6;27976:15;27969:36;27784:228;:::o;28018:224::-;28158:34;28154:1;28146:6;28142:14;28135:58;28227:7;28222:2;28214:6;28210:15;28203:32;28018:224;:::o;28248:222::-;28388:34;28384:1;28376:6;28372:14;28365:58;28457:5;28452:2;28444:6;28440:15;28433:30;28248:222;:::o;28476:223::-;28616:34;28612:1;28604:6;28600:14;28593:58;28685:6;28680:2;28672:6;28668:15;28661:31;28476:223;:::o;28705:162::-;28845:14;28841:1;28833:6;28829:14;28822:38;28705:162;:::o;28873:122::-;28946:24;28964:5;28946:24;:::i;:::-;28939:5;28936:35;28926:63;;28985:1;28982;28975:12;28926:63;28873:122;:::o;29001:116::-;29071:21;29086:5;29071:21;:::i;:::-;29064:5;29061:32;29051:60;;29107:1;29104;29097:12;29051:60;29001:116;:::o;29123:122::-;29196:24;29214:5;29196:24;:::i;:::-;29189:5;29186:35;29176:63;;29235:1;29232;29225:12;29176:63;29123:122;:::o

Swarm Source

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