ETH Price: $3,438.22 (+1.16%)

Token

Projekt Diamond (DIAMND)
 

Overview

Max Total Supply

100,000,000,000,000 DIAMND

Holders

1,458

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
27,712,196,847.626200661 DIAMND

Value
$0.00
0x901baa18f0ef8071f9ac2c302243aa6fa56693a1
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:
ProjektDiamond

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-14
*/

/*
   Projekt Diamond V2, by Fair Token Project 
   Hold $DIAMND, Earn ETH
 * Withdraw at https://app.fairtokenproject.com
    - Recommended wallet is Metamask. Support for additional wallets coming soon!
 * Telegram: t.me/projektdiamond
 * Twitter: @token_project

 * Using FTPEthReflect
    - FTPEthReflect is a contract as a service (CaaS). Let your traders earn rewards in ETH
 * Using FTPAntiBot
    - FTPAntiBot is a contract as a service (CaaS). Ward off harmful bots automatically.
    - Learn more at https://antibot.fairtokenproject.com
 */
// SPDX-License-Identifier: MIT
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);
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
contract Ownable is Context {
    address private m_Owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        m_Owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return m_Owner;
    }
    function transferOwnership(address _address) public virtual onlyOwner {
        emit OwnershipTransferred(m_Owner, _address);
        m_Owner = _address;
    }
    modifier onlyOwner() {
        require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
        _;
    }                                                                                           
}
contract Taxable is Ownable {
    using SafeMath for uint256; 
    FTPExternal External;
    address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD);
    address payable private m_DevAddress;
    uint256 private m_DevAlloc = 2000;
    uint256[] m_TaxAlloc;
    address payable[] m_TaxAddresses;
    mapping (address => uint256) private m_TaxIdx;
    uint256 public m_TotalAlloc;

    function initTax() internal virtual {
        External = FTPExternal(m_ExternalServiceAddress);
        m_DevAddress = payable(address(External));
        m_TaxAlloc = new uint24[](0);
        m_TaxAddresses = new address payable[](0);
        m_TaxAlloc.push(0);
        m_TaxAddresses.push(payable(address(0)));
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
    function payTaxes(uint256 _eth, uint256 _d) internal virtual {
        for (uint i = 1; i < m_TaxAlloc.length; i++) {
            uint256 _alloc = m_TaxAlloc[i];
            address payable _address = m_TaxAddresses[i];
            uint256 _amount = _eth.mul(_alloc).div(_d);
            if (_amount > 1){
                _address.transfer(_amount);
                if(_address == m_DevAddress)
                    External.deposit(_amount);
            }
        }
    }
    function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() {
        uint _idx = m_TaxIdx[_address];
        if (_idx == 0) {
            require(m_TotalAlloc.add(_alloc) <= 10500);
            m_TaxAlloc.push(_alloc);
            m_TaxAddresses.push(_address);
            m_TaxIdx[_address] = m_TaxAlloc.length - 1;
            m_TotalAlloc = m_TotalAlloc.add(_alloc);
        } else { // update alloc for this address
            uint256 _priorAlloc =  m_TaxAlloc[_idx];
            require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500);  
            m_TaxAlloc[_idx] = _alloc;
            m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc);
        }
    }
    function totalTaxAlloc() internal virtual view returns (uint256) {
        return m_TotalAlloc;
    }
    function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) {
        uint _idx = m_TaxIdx[_address];
        return m_TaxAlloc[_idx];
    }
    function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() {
        setTaxAlloc(m_DevAddress, 0);
        m_DevAddress = _address;
        m_DevAlloc = _alloc;
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
}                                                                                    
interface IUniswapV2Factory {                                                         
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface FTPAntiBot {
    function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool);
    function registerBlock(address _recipient, address _sender, address _origin) external;
}
interface FTPEthReflect {
    function init(address _contract, uint256 _alloc, address _pair, address _pairCurrency, uint256 _liquidity, uint256 _supply) external;
    function getAlloc() external view returns (uint256);
    function trackSell(address _holder, uint256 _newEth) external;
    function trackPurchase(address _holder) external;
}
interface FTPExternal {
    function owner() external returns(address);
    function deposit(uint256 _amount) external;
}
contract ProjektDiamond is Context, IERC20, Taxable {
    using SafeMath for uint256;
    // TOKEN
    uint256 private constant TOTAL_SUPPLY = 100000000000000 * 10**9;
    string private m_Name = "Projekt Diamond";
    string private m_Symbol = "DIAMND";
    uint8 private m_Decimals = 9;
    // EXCHANGES
    address private m_UniswapV2Pair;
    IUniswapV2Router02 private m_UniswapV2Router;
    // TRANSACTIONS
    uint256 private m_TxLimit  = 500000000000 * 10**9;
    uint256 private m_WalletLimit = m_TxLimit.mul(3);
    bool private m_Liquidity = false;
    event SetTxLimit(uint TxLimit);
    // ETH REFLECT
    FTPEthReflect private EthReflect;
    address payable m_EthReflectSvcAddress = payable(0x574Fc478BC45cE144105Fa44D98B4B2e4BD442CB);
    uint256 m_EthReflectAlloc;
    uint256 m_EthReflectAmount;
    // ANTIBOT
    FTPAntiBot private AntiBot;
    address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3;
    uint256 private m_BanCount = 0;
    // MISC
    address private m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00;
    mapping (address => bool) private m_Blacklist;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    uint256 private m_LastEthBal = 0;
    bool private m_Launched = false;
    bool private m_IsSwap = false;
    uint256 private pMax = 100000; // max alloc percentage

    modifier lockTheSwap {
        m_IsSwap = true;
        _;
        m_IsSwap = false;
    }

    modifier onlyDev() {
        require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized");
        _;
    }
    
    receive() external payable {}

    constructor () {
        EthReflect = FTPEthReflect(m_EthReflectSvcAddress);
        AntiBot = FTPAntiBot(m_AntibotSvcAddress);
        initTax();

        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }
    function name() public view returns (string memory) {
        return m_Name;
    }
    function symbol() public view returns (string memory) {
        return m_Symbol;
    }
    function decimals() public view returns (uint8) {
        return m_Decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    function balanceOf(address _account) public view override returns (uint256) {
        return m_Balances[_account];
    }
    function transfer(address _recipient, uint256 _amount) public override returns (bool) {
        _transfer(_msgSender(), _recipient, _amount);
        return true;
    }
    function allowance(address _owner, address _spender) public view override returns (uint256) {
        return m_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(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function _readyToTax(address _sender) private view returns (bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair;
    }
    function _isBuy(address _sender) private view returns (bool) {
        return _sender == m_UniswapV2Pair;
    }
    function _trader(address _sender, address _recipient) private view returns (bool) {
        return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
    }
    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
    }
    function _txRestricted(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }
    function _walletCapped(address _recipient) private view returns (bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router);
    }
    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");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }
    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_recipient != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
        require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]);
        
        if(_isExchangeTransfer(_sender, _recipient) && m_Launched) {
            require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop");                                          
            require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin),  "Beep Beep Boop, You're a piece of poop");
            AntiBot.registerBlock(_sender, _recipient, tx.origin);
        }
         
        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);
            
        uint256 _taxes = 0;
        if (_trader(_sender, _recipient)) {
            require(m_Launched);
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= m_TxLimit);
            
            _taxes = _getTaxes(_sender, _recipient, _amount);
            _tax(_sender);
        }
        
        _updateBalances(_sender, _recipient, _amount, _taxes);
        _trackEthReflection(_sender, _recipient);
	}
    function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private {
        uint256 _netAmount = _amount.sub(_taxes);
        m_Balances[_sender] = m_Balances[_sender].sub(_amount);
        m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount);
        m_Balances[address(this)] = m_Balances[address(this)].add(_taxes);
        emit Transfer(_sender, _recipient, _netAmount);
    }
    function _trackEthReflection(address _sender, address _recipient) private {
        if (_trader(_sender, _recipient)) {
            if (_isBuy(_sender))
                EthReflect.trackPurchase(_recipient);
            else if (m_EthReflectAmount > 0) {
                EthReflect.trackSell(_sender, m_EthReflectAmount);
                m_EthReflectAmount = 0;
            }
        }
    }
	function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) {
        uint256 _ret = 0;
        if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) {
            return _ret;
        }
        _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc()));
        m_EthReflectAlloc = EthReflect.getAlloc();
        _ret = _ret.add(_amount.mul(m_EthReflectAlloc).div(pMax));
        return _ret;
    }
    function _tax(address _sender) private {
        if (_readyToTax(_sender)) {
            uint256 _tokenBalance = balanceOf(address(this));
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }
    function _swapTokensForETH(uint256 _amount) private lockTheSwap {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = m_UniswapV2Router.WETH();
        _approve(address(this), address(m_UniswapV2Router), _amount);
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    function _getTaxDenominator() private view returns (uint) {
        uint _ret = 0;
        _ret = _ret.add(totalTaxAlloc());
        _ret = _ret.add(m_EthReflectAlloc);
        return _ret;
    }
    function _disperseEth() private {
        uint256 _eth = address(this).balance;
        if (_eth <= m_LastEthBal)
            return;
            
        uint256 _newEth = _eth.sub(m_LastEthBal);
        uint _d = _getTaxDenominator();
        if (_d < 1)
            return;

        payTaxes(_newEth, _d);

        m_EthReflectAmount = _newEth.mul(m_EthReflectAlloc).div(_d);
        m_EthReflectSvcAddress.transfer(m_EthReflectAmount);

        m_LastEthBal = address(this).balance;
    }
    function addLiquidity() external onlyOwner() {
        require(!m_Liquidity,"Liquidity already added.");
        uint256 _ethBalance = address(this).balance;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
        EthReflect.init(address(this), 8000, m_UniswapV2Pair, _uniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY);
        m_Liquidity = true;
    }
    function launch() external onlyOwner() {
        m_Launched = true;
    }
    function setTxLimit(uint256 _amount) external onlyOwner() {                                            
        m_TxLimit = _amount.mul(10**9);
        emit SetTxLimit(m_TxLimit);
    }
    function checkIfBlacklist(address _address) external view returns (bool) {
        return m_Blacklist[_address];
    }
    function blacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = true;
    }
    function rmBlacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = false;
    }
    function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() {
        setTaxAlloc(_address, _alloc);
        if (_alloc > 0) {
            m_ExcludedAddresses[_address] = true;
        }
    }
    function setWebThree(address _address) external onlyDev() {
        m_WebThree = _address;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"TxLimit","type":"uint256"}],"name":"SetTxLimit","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":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052731fc90cba64722d5e70af16783a2dfacfd19f3bed600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506107d06004556040518060400160405280600f81526020017f50726f6a656b74204469616d6f6e64000000000000000000000000000000000081525060099080519060200190620000ac92919062000d6f565b506040518060400160405280600681526020017f4449414d4e440000000000000000000000000000000000000000000000000000815250600a9080519060200190620000fa92919062000d6f565b506009600b60006101000a81548160ff021916908360ff160217905550681b1ae4d6e2ef500000600d55620001416003600d54620005be60201b6200194b1790919060201c565b600e556000600f60006101000a81548160ff02191690831515021790555073574fc478bc45ce144105fa44d98b4b2e4bd442cb601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601555731011f61df0e2ad67e269f4108098c79e71868e00601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b556000601c60006101000a81548160ff0219169083151502179055506000601c60016101000a81548160ff021916908315150217905550620186a0601d55348015620002b257600080fd5b506000620002c56200064260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004396200064a60201b60201c565b69152d02c7e14af6800000601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601860006200049d620008ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620005b0919062001058565b60405180910390a362001377565b600080831415620005d357600090506200063c565b60008284620005e3919062001126565b9050828482620005f49190620010ee565b1462000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062001014565b60405180910390fd5b809150505b92915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff81111562000752577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620007815781602001602082028036833780820191505090505b50600590805190602001906200079992919062000e00565b50600067ffffffffffffffff811115620007dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156200080b5781602001602082028036833780820191505090505b50600690805190602001906200082392919062000e59565b50600560009080600181540180825580915050600190039060005260206000200160009091909190915055600660009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008e8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546200091360201b60201c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200095a6200064260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009aa9062001036565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000b375761290462000a208360085462000c5160201b620019c61790919060201c565b111562000a2c57600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905062000acc919062001187565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b2b8260085462000c5160201b620019c61790919060201c565b60088190555062000c4c565b60006005828154811062000b74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905061290462000bb98262000ba58660085462000c5160201b620019c61790919060201c565b62000cb460201b62001a241790919060201c565b111562000bc557600080fd5b826005838154811062000c01577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555062000c448162000c308560085462000c5160201b620019c61790919060201c565b62000cb460201b62001a241790919060201c565b600881905550505b505050565b600080828462000c62919062001091565b90508381101562000caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ca19062000ff2565b60405180910390fd5b8091505092915050565b600062000cfe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d0660201b60201c565b905092915050565b600083831115829062000d51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d48919062000fce565b60405180910390fd5b506000838562000d62919062001187565b9050809150509392505050565b82805462000d7d9062001202565b90600052602060002090601f01602090048101928262000da1576000855562000ded565b82601f1062000dbc57805160ff191683800117855562000ded565b8280016001018555821562000ded579182015b8281111562000dec57825182559160200191906001019062000dcf565b5b50905062000dfc919062000ee8565b5090565b82805482825590600052602060002090810192821562000e46579160200282015b8281111562000e45578251829062ffffff1690559160200191906001019062000e21565b5b50905062000e55919062000ee8565b5090565b82805482825590600052602060002090810192821562000ed5579160200282015b8281111562000ed45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000e7a565b5b50905062000ee4919062000ee8565b5090565b5b8082111562000f0357600081600090555060010162000ee9565b5090565b600062000f148262001075565b62000f20818562001080565b935062000f32818560208601620011cc565b62000f3d81620012c5565b840191505092915050565b600062000f57601b8362001080565b915062000f6482620012d6565b602082019050919050565b600062000f7e60218362001080565b915062000f8b82620012ff565b604082019050919050565b600062000fa560208362001080565b915062000fb2826200134e565b602082019050919050565b62000fc881620011c2565b82525050565b6000602082019050818103600083015262000fea818462000f07565b905092915050565b600060208201905081810360008301526200100d8162000f48565b9050919050565b600060208201905081810360008301526200102f8162000f6f565b9050919050565b60006020820190508181036000830152620010518162000f96565b9050919050565b60006020820190506200106f600083018462000fbd565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200109e82620011c2565b9150620010ab83620011c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010e357620010e262001238565b5b828201905092915050565b6000620010fb82620011c2565b91506200110883620011c2565b9250826200111b576200111a62001267565b5b828204905092915050565b60006200113382620011c2565b91506200114083620011c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200117c576200117b62001238565b5b828202905092915050565b60006200119482620011c2565b9150620011a183620011c2565b925082821015620011b757620011b662001238565b5b828203905092915050565b6000819050919050565b60005b83811015620011ec578082015181840152602081019050620011cf565b83811115620011fc576000848401525b50505050565b600060028204905060018216806200121b57607f821691505b6020821081141562001232576200123162001296565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6145d180620013876000396000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610433578063dd62ed3e14610470578063e8078d94146104ad578063f2fde38b146104c4578063f37c4bce146104ed578063f9f92be41461051657610140565b80638da5cb5b1461034e57806395d89b411461037957806398d5a5cb146103a4578063a9059cbb146103cd578063ab9562fe1461040a57610140565b806323b872dd116100fd57806323b872dd14610218578063313ce5671461025557806354486ac3146102805780635c85974f146102ab57806370a08231146102d45780638a13792e1461031157610140565b806301339c211461014557806306fdde031461015c578063095ea7b31461018757806318160ddd146101c45780631c815b49146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61053f565b005b34801561016857600080fd5b506101716105f1565b60405161017e9190613cf7565b60405180910390f35b34801561019357600080fd5b506101ae60048036038101906101a991906137d7565b610683565b6040516101bb9190613cdc565b60405180910390f35b3480156101d057600080fd5b506101d96106a1565b6040516101e69190613e79565b60405180910390f35b3480156101fb57600080fd5b5061021660048036038101906102119190613710565b6106b3565b005b34801561022457600080fd5b5061023f600480360381019061023a9190613788565b6107b8565b60405161024c9190613cdc565b60405180910390f35b34801561026157600080fd5b5061026a610891565b6040516102779190613eee565b60405180910390f35b34801561028c57600080fd5b506102956108a8565b6040516102a29190613e79565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061383c565b6108ae565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190613695565b61099c565b6040516103089190613e79565b60405180910390f35b34801561031d57600080fd5b50610338600480360381019061033391906136e7565b6109e5565b6040516103459190613e79565b60405180910390f35b34801561035a57600080fd5b50610363610b0e565b6040516103709190613b76565b60405180910390f35b34801561038557600080fd5b5061038e610b37565b60405161039b9190613cf7565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190613695565b610bc9565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906137d7565b610cb9565b6040516104019190613cdc565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613710565b610cd7565b005b34801561043f57600080fd5b5061045a60048036038101906104559190613695565b610e13565b6040516104679190613cdc565b60405180910390f35b34801561047c57600080fd5b506104976004803603810190610492919061374c565b610e69565b6040516104a49190613e79565b60405180910390f35b3480156104b957600080fd5b506104c2610ef0565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190613695565b611550565b005b3480156104f957600080fd5b50610514600480360381019061050f9190613695565b6116a2565b005b34801561052257600080fd5b5061053d60048036038101906105389190613695565b61185b565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661057e611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90613dd9565b60405180910390fd5b6001601c60006101000a81548160ff021916908315150217905550565b60606009805461060090614131565b80601f016020809104026020016040519081016040528092919081815260200182805461062c90614131565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b6000610697610690611a6e565b8484611a76565b6001905092915050565b600069152d02c7e14af6800000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f2611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f90613dd9565b60405180910390fd5b6107528282611c41565b60008111156107b4576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60006107c5848484611f42565b610886846107d1611a6e565b6108818560405180606001604052806028815260200161457460289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610837611a6e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e89092919063ffffffff16565b611a76565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ed611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613dd9565b60405180910390fd5b61095a633b9aca008261194b90919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516109919190613e79565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a27611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610afb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b4690614131565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7290614131565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c08611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613dd9565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ccd610cc6611a6e565b8484611f42565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d16611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6390613dd9565b60405180910390fd5b610d99600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c41565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e0f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c41565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2f611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613dd9565b60405180910390fd5b600f60009054906101000a900460ff1615610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90613d39565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061106b30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611a76565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e991906136be565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561114b57600080fd5b505afa15801561115f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118391906136be565b6040518363ffffffff1660e01b81526004016111a0929190613b91565b602060405180830381600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906136be565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061127b3061099c565b600080611286610b0e565b426040518863ffffffff1660e01b81526004016112a896959493929190613c7b565b6060604051808303818588803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112fa919061388e565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161139c929190613c52565b602060405180830381600087803b1580156113b657600080fd5b505af11580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee9190613813565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611f40600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561149a57600080fd5b505afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d291906136be565b8769152d02c7e14af68000006040518763ffffffff1660e01b81526004016114ff96959493929190613bf1565b600060405180830381600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661158f611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613dd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174491906136be565b73ffffffffffffffffffffffffffffffffffffffff16611762611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614806117d85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c0611a6e565b73ffffffffffffffffffffffffffffffffffffffff16145b611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613d59565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661189a611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613dd9565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561195e57600090506119c0565b6000828461196c9190613fe5565b905082848261197b9190613fb4565b146119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613db9565b60405180910390fd5b809150505b92915050565b60008082846119d59190613f5e565b905083811015611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190613d99565b60405180910390fd5b8091505092915050565b6000611a6683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124e8565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613e39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90613d79565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c349190613e79565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c80611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e4757612904611d3b836008546119c690919063ffffffff16565b1115611d4657600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611de4919061403f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e3c826008546119c690919063ffffffff16565b600881905550611f3d565b600060058281548110611e83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611eba82611eac866008546119c690919063ffffffff16565b611a2490919063ffffffff16565b1115611ec557600080fd5b8260058381548110611f00577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f3581611f27856008546119c690919063ffffffff16565b611a2490919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa990613e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990613d19565b60405180910390fd5b60008111612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90613df9565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121095750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561215f5750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61216857600080fd5b612172838361254c565b801561218a5750601c60009054906101000a900460ff165b1561244757601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161221093929190613bba565b602060405180830381600087803b15801561222a57600080fd5b505af115801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190613813565b156122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161232393929190613bba565b602060405180830381600087803b15801561233d57600080fd5b505af1158015612351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123759190613813565b156123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac90613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161241493929190613bba565b600060405180830381600087803b15801561242e57600080fd5b505af1158015612442573d6000803e3d6000fd5b505050505b612450826125ff565b1561246c57600e546124618361099c565b1061246b57600080fd5b5b600061247884846126b4565b156124cc57601c60009054906101000a900460ff1661249657600080fd5b6124a08484612760565b156124b557600d548211156124b457600080fd5b5b6124c084848461286b565b90506124cb84612a52565b5b6124d884848484612a83565b6124e28484612cc5565b50505050565b6000838311158290612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279190613cf7565b60405180910390fd5b506000838561253f919061403f565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806125f75750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126ad5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127575750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561280d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128635750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129135750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129215780915050612a4b565b61296161295261292f612e1f565b612944601d5487612e2990919063ffffffff16565b61194b90919063ffffffff16565b826119c690919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129cb57600080fd5b505afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a039190613865565b601181905550612a44612a35601d54612a276011548761194b90919063ffffffff16565b612e2990919063ffffffff16565b826119c690919063ffffffff16565b9050809150505b9392505050565b612a5b81612e73565b15612a80576000612a6b3061099c565b9050612a7681612ee7565b612a7e6131e1565b505b50565b6000612a988284611a2490919063ffffffff16565b9050612aec83601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2490919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b8181601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c1682601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb69190613e79565b60405180910390a35050505050565b612ccf82826126b4565b15612e1b57612cdd826132da565b15612d7457600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612d3d9190613b76565b600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050612e1a565b60006012541115612e1957600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612dde929190613c52565b600060405180830381600087803b158015612df857600080fd5b505af1158015612e0c573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000612e6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613334565b905092915050565b6000601c60019054906101000a900460ff16158015612ee05750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601c60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612f45577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f735781602001602082028036833780820191505090505b5090503081600081518110612fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b91906136be565b816001815181106130c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061312c30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a76565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613190959493929190613e94565b600060405180830381600087803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050506000601c60016101000a81548160ff02191690831515021790555050565b6000479050601b5481116131f557506132d8565b600061320c601b5483611a2490919063ffffffff16565b90506000613218613397565b9050600181101561322b575050506132d8565b61323582826133d8565b61325c8161324e6011548561194b90919063ffffffff16565b612e2990919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156132cc573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000808311829061337b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133729190613cf7565b60405180910390fd5b506000838561338a9190613fb4565b9050809150509392505050565b600080600090506133b86133a9612e1f565b826119c690919063ffffffff16565b90506133cf601154826119c690919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561361257600060058281548110613428577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060068381548110613471577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006134c5856134b7858961194b90919063ffffffff16565b612e2990919063ffffffff16565b905060018111156135fc578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613516573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135fb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016135c89190613e79565b600060405180830381600087803b1580156135e257600080fd5b505af11580156135f6573d6000803e3d6000fd5b505050505b5b505050808061360a90614163565b9150506133df565b505050565b60008135905061362681614517565b92915050565b60008151905061363b81614517565b92915050565b6000813590506136508161452e565b92915050565b60008151905061366581614545565b92915050565b60008135905061367a8161455c565b92915050565b60008151905061368f8161455c565b92915050565b6000602082840312156136a757600080fd5b60006136b584828501613617565b91505092915050565b6000602082840312156136d057600080fd5b60006136de8482850161362c565b91505092915050565b6000602082840312156136f957600080fd5b600061370784828501613641565b91505092915050565b6000806040838503121561372357600080fd5b600061373185828601613641565b92505060206137428582860161366b565b9150509250929050565b6000806040838503121561375f57600080fd5b600061376d85828601613617565b925050602061377e85828601613617565b9150509250929050565b60008060006060848603121561379d57600080fd5b60006137ab86828701613617565b93505060206137bc86828701613617565b92505060406137cd8682870161366b565b9150509250925092565b600080604083850312156137ea57600080fd5b60006137f885828601613617565b92505060206138098582860161366b565b9150509250929050565b60006020828403121561382557600080fd5b600061383384828501613656565b91505092915050565b60006020828403121561384e57600080fd5b600061385c8482850161366b565b91505092915050565b60006020828403121561387757600080fd5b600061388584828501613680565b91505092915050565b6000806000606084860312156138a357600080fd5b60006138b186828701613680565b93505060206138c286828701613680565b92505060406138d386828701613680565b9150509250925092565b60006138e983836138f5565b60208301905092915050565b6138fe81614073565b82525050565b61390d81614073565b82525050565b600061391e82613f19565b6139288185613f3c565b935061393383613f09565b8060005b8381101561396457815161394b88826138dd565b975061395683613f2f565b925050600181019050613937565b5085935050505092915050565b61397a81614097565b82525050565b613989816140da565b82525050565b613998816140ec565b82525050565b60006139a982613f24565b6139b38185613f4d565b93506139c38185602086016140fe565b6139cc81614239565b840191505092915050565b60006139e4602383613f4d565b91506139ef8261424a565b604082019050919050565b6000613a07601883613f4d565b9150613a1282614299565b602082019050919050565b6000613a2a600c83613f4d565b9150613a35826142c2565b602082019050919050565b6000613a4d602283613f4d565b9150613a58826142eb565b604082019050919050565b6000613a70601b83613f4d565b9150613a7b8261433a565b602082019050919050565b6000613a93602183613f4d565b9150613a9e82614363565b604082019050919050565b6000613ab6602083613f4d565b9150613ac1826143b2565b602082019050919050565b6000613ad9602983613f4d565b9150613ae4826143db565b604082019050919050565b6000613afc602583613f4d565b9150613b078261442a565b604082019050919050565b6000613b1f602483613f4d565b9150613b2a82614479565b604082019050919050565b6000613b42602683613f4d565b9150613b4d826144c8565b604082019050919050565b613b61816140c3565b82525050565b613b70816140cd565b82525050565b6000602082019050613b8b6000830184613904565b92915050565b6000604082019050613ba66000830185613904565b613bb36020830184613904565b9392505050565b6000606082019050613bcf6000830186613904565b613bdc6020830185613904565b613be96040830184613904565b949350505050565b600060c082019050613c066000830189613904565b613c13602083018861398f565b613c206040830187613904565b613c2d6060830186613904565b613c3a6080830185613b58565b613c4760a0830184613b58565b979650505050505050565b6000604082019050613c676000830185613904565b613c746020830184613b58565b9392505050565b600060c082019050613c906000830189613904565b613c9d6020830188613b58565b613caa6040830187613980565b613cb76060830186613980565b613cc46080830185613904565b613cd160a0830184613b58565b979650505050505050565b6000602082019050613cf16000830184613971565b92915050565b60006020820190508181036000830152613d11818461399e565b905092915050565b60006020820190508181036000830152613d32816139d7565b9050919050565b60006020820190508181036000830152613d52816139fa565b9050919050565b60006020820190508181036000830152613d7281613a1d565b9050919050565b60006020820190508181036000830152613d9281613a40565b9050919050565b60006020820190508181036000830152613db281613a63565b9050919050565b60006020820190508181036000830152613dd281613a86565b9050919050565b60006020820190508181036000830152613df281613aa9565b9050919050565b60006020820190508181036000830152613e1281613acc565b9050919050565b60006020820190508181036000830152613e3281613aef565b9050919050565b60006020820190508181036000830152613e5281613b12565b9050919050565b60006020820190508181036000830152613e7281613b35565b9050919050565b6000602082019050613e8e6000830184613b58565b92915050565b600060a082019050613ea96000830188613b58565b613eb66020830187613980565b8181036040830152613ec88186613913565b9050613ed76060830185613904565b613ee46080830184613b58565b9695505050505050565b6000602082019050613f036000830184613b67565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613f69826140c3565b9150613f74836140c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fa957613fa86141ac565b5b828201905092915050565b6000613fbf826140c3565b9150613fca836140c3565b925082613fda57613fd96141db565b5b828204905092915050565b6000613ff0826140c3565b9150613ffb836140c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614034576140336141ac565b5b828202905092915050565b600061404a826140c3565b9150614055836140c3565b925082821015614068576140676141ac565b5b828203905092915050565b600061407e826140a3565b9050919050565b6000614090826140a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140e5826140c3565b9050919050565b60006140f7826140c3565b9050919050565b60005b8381101561411c578082015181840152602081019050614101565b8381111561412b576000848401525b50505050565b6000600282049050600182168061414957607f821691505b6020821081141561415d5761415c61420a565b5b50919050565b600061416e826140c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141a1576141a06141ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61452081614073565b811461452b57600080fd5b50565b61453781614085565b811461454257600080fd5b50565b61454e81614097565b811461455957600080fd5b50565b614565816140c3565b811461457057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a482e20b9055f7fe421be6033f449337daef688fd4f5b40f53f33a025116929c64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610433578063dd62ed3e14610470578063e8078d94146104ad578063f2fde38b146104c4578063f37c4bce146104ed578063f9f92be41461051657610140565b80638da5cb5b1461034e57806395d89b411461037957806398d5a5cb146103a4578063a9059cbb146103cd578063ab9562fe1461040a57610140565b806323b872dd116100fd57806323b872dd14610218578063313ce5671461025557806354486ac3146102805780635c85974f146102ab57806370a08231146102d45780638a13792e1461031157610140565b806301339c211461014557806306fdde031461015c578063095ea7b31461018757806318160ddd146101c45780631c815b49146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61053f565b005b34801561016857600080fd5b506101716105f1565b60405161017e9190613cf7565b60405180910390f35b34801561019357600080fd5b506101ae60048036038101906101a991906137d7565b610683565b6040516101bb9190613cdc565b60405180910390f35b3480156101d057600080fd5b506101d96106a1565b6040516101e69190613e79565b60405180910390f35b3480156101fb57600080fd5b5061021660048036038101906102119190613710565b6106b3565b005b34801561022457600080fd5b5061023f600480360381019061023a9190613788565b6107b8565b60405161024c9190613cdc565b60405180910390f35b34801561026157600080fd5b5061026a610891565b6040516102779190613eee565b60405180910390f35b34801561028c57600080fd5b506102956108a8565b6040516102a29190613e79565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061383c565b6108ae565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190613695565b61099c565b6040516103089190613e79565b60405180910390f35b34801561031d57600080fd5b50610338600480360381019061033391906136e7565b6109e5565b6040516103459190613e79565b60405180910390f35b34801561035a57600080fd5b50610363610b0e565b6040516103709190613b76565b60405180910390f35b34801561038557600080fd5b5061038e610b37565b60405161039b9190613cf7565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190613695565b610bc9565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906137d7565b610cb9565b6040516104019190613cdc565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613710565b610cd7565b005b34801561043f57600080fd5b5061045a60048036038101906104559190613695565b610e13565b6040516104679190613cdc565b60405180910390f35b34801561047c57600080fd5b506104976004803603810190610492919061374c565b610e69565b6040516104a49190613e79565b60405180910390f35b3480156104b957600080fd5b506104c2610ef0565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190613695565b611550565b005b3480156104f957600080fd5b50610514600480360381019061050f9190613695565b6116a2565b005b34801561052257600080fd5b5061053d60048036038101906105389190613695565b61185b565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661057e611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90613dd9565b60405180910390fd5b6001601c60006101000a81548160ff021916908315150217905550565b60606009805461060090614131565b80601f016020809104026020016040519081016040528092919081815260200182805461062c90614131565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b6000610697610690611a6e565b8484611a76565b6001905092915050565b600069152d02c7e14af6800000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f2611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f90613dd9565b60405180910390fd5b6107528282611c41565b60008111156107b4576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60006107c5848484611f42565b610886846107d1611a6e565b6108818560405180606001604052806028815260200161457460289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610837611a6e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e89092919063ffffffff16565b611a76565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ed611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613dd9565b60405180910390fd5b61095a633b9aca008261194b90919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516109919190613e79565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a27611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610afb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b4690614131565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7290614131565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c08611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613dd9565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ccd610cc6611a6e565b8484611f42565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d16611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6390613dd9565b60405180910390fd5b610d99600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c41565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e0f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c41565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2f611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613dd9565b60405180910390fd5b600f60009054906101000a900460ff1615610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90613d39565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061106b30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611a76565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e991906136be565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561114b57600080fd5b505afa15801561115f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118391906136be565b6040518363ffffffff1660e01b81526004016111a0929190613b91565b602060405180830381600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906136be565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061127b3061099c565b600080611286610b0e565b426040518863ffffffff1660e01b81526004016112a896959493929190613c7b565b6060604051808303818588803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112fa919061388e565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161139c929190613c52565b602060405180830381600087803b1580156113b657600080fd5b505af11580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee9190613813565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611f40600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561149a57600080fd5b505afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d291906136be565b8769152d02c7e14af68000006040518763ffffffff1660e01b81526004016114ff96959493929190613bf1565b600060405180830381600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661158f611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613dd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174491906136be565b73ffffffffffffffffffffffffffffffffffffffff16611762611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614806117d85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c0611a6e565b73ffffffffffffffffffffffffffffffffffffffff16145b611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613d59565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661189a611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613dd9565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561195e57600090506119c0565b6000828461196c9190613fe5565b905082848261197b9190613fb4565b146119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613db9565b60405180910390fd5b809150505b92915050565b60008082846119d59190613f5e565b905083811015611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190613d99565b60405180910390fd5b8091505092915050565b6000611a6683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124e8565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613e39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90613d79565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c349190613e79565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c80611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e4757612904611d3b836008546119c690919063ffffffff16565b1115611d4657600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611de4919061403f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e3c826008546119c690919063ffffffff16565b600881905550611f3d565b600060058281548110611e83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611eba82611eac866008546119c690919063ffffffff16565b611a2490919063ffffffff16565b1115611ec557600080fd5b8260058381548110611f00577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f3581611f27856008546119c690919063ffffffff16565b611a2490919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa990613e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990613d19565b60405180910390fd5b60008111612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90613df9565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121095750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561215f5750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61216857600080fd5b612172838361254c565b801561218a5750601c60009054906101000a900460ff165b1561244757601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161221093929190613bba565b602060405180830381600087803b15801561222a57600080fd5b505af115801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190613813565b156122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161232393929190613bba565b602060405180830381600087803b15801561233d57600080fd5b505af1158015612351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123759190613813565b156123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac90613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161241493929190613bba565b600060405180830381600087803b15801561242e57600080fd5b505af1158015612442573d6000803e3d6000fd5b505050505b612450826125ff565b1561246c57600e546124618361099c565b1061246b57600080fd5b5b600061247884846126b4565b156124cc57601c60009054906101000a900460ff1661249657600080fd5b6124a08484612760565b156124b557600d548211156124b457600080fd5b5b6124c084848461286b565b90506124cb84612a52565b5b6124d884848484612a83565b6124e28484612cc5565b50505050565b6000838311158290612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279190613cf7565b60405180910390fd5b506000838561253f919061403f565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806125f75750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126ad5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127575750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561280d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128635750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129135750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129215780915050612a4b565b61296161295261292f612e1f565b612944601d5487612e2990919063ffffffff16565b61194b90919063ffffffff16565b826119c690919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129cb57600080fd5b505afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a039190613865565b601181905550612a44612a35601d54612a276011548761194b90919063ffffffff16565b612e2990919063ffffffff16565b826119c690919063ffffffff16565b9050809150505b9392505050565b612a5b81612e73565b15612a80576000612a6b3061099c565b9050612a7681612ee7565b612a7e6131e1565b505b50565b6000612a988284611a2490919063ffffffff16565b9050612aec83601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2490919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b8181601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c1682601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb69190613e79565b60405180910390a35050505050565b612ccf82826126b4565b15612e1b57612cdd826132da565b15612d7457600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612d3d9190613b76565b600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050612e1a565b60006012541115612e1957600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612dde929190613c52565b600060405180830381600087803b158015612df857600080fd5b505af1158015612e0c573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000612e6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613334565b905092915050565b6000601c60019054906101000a900460ff16158015612ee05750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601c60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612f45577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f735781602001602082028036833780820191505090505b5090503081600081518110612fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b91906136be565b816001815181106130c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061312c30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a76565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613190959493929190613e94565b600060405180830381600087803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050506000601c60016101000a81548160ff02191690831515021790555050565b6000479050601b5481116131f557506132d8565b600061320c601b5483611a2490919063ffffffff16565b90506000613218613397565b9050600181101561322b575050506132d8565b61323582826133d8565b61325c8161324e6011548561194b90919063ffffffff16565b612e2990919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156132cc573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000808311829061337b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133729190613cf7565b60405180910390fd5b506000838561338a9190613fb4565b9050809150509392505050565b600080600090506133b86133a9612e1f565b826119c690919063ffffffff16565b90506133cf601154826119c690919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561361257600060058281548110613428577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060068381548110613471577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006134c5856134b7858961194b90919063ffffffff16565b612e2990919063ffffffff16565b905060018111156135fc578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613516573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135fb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016135c89190613e79565b600060405180830381600087803b1580156135e257600080fd5b505af11580156135f6573d6000803e3d6000fd5b505050505b5b505050808061360a90614163565b9150506133df565b505050565b60008135905061362681614517565b92915050565b60008151905061363b81614517565b92915050565b6000813590506136508161452e565b92915050565b60008151905061366581614545565b92915050565b60008135905061367a8161455c565b92915050565b60008151905061368f8161455c565b92915050565b6000602082840312156136a757600080fd5b60006136b584828501613617565b91505092915050565b6000602082840312156136d057600080fd5b60006136de8482850161362c565b91505092915050565b6000602082840312156136f957600080fd5b600061370784828501613641565b91505092915050565b6000806040838503121561372357600080fd5b600061373185828601613641565b92505060206137428582860161366b565b9150509250929050565b6000806040838503121561375f57600080fd5b600061376d85828601613617565b925050602061377e85828601613617565b9150509250929050565b60008060006060848603121561379d57600080fd5b60006137ab86828701613617565b93505060206137bc86828701613617565b92505060406137cd8682870161366b565b9150509250925092565b600080604083850312156137ea57600080fd5b60006137f885828601613617565b92505060206138098582860161366b565b9150509250929050565b60006020828403121561382557600080fd5b600061383384828501613656565b91505092915050565b60006020828403121561384e57600080fd5b600061385c8482850161366b565b91505092915050565b60006020828403121561387757600080fd5b600061388584828501613680565b91505092915050565b6000806000606084860312156138a357600080fd5b60006138b186828701613680565b93505060206138c286828701613680565b92505060406138d386828701613680565b9150509250925092565b60006138e983836138f5565b60208301905092915050565b6138fe81614073565b82525050565b61390d81614073565b82525050565b600061391e82613f19565b6139288185613f3c565b935061393383613f09565b8060005b8381101561396457815161394b88826138dd565b975061395683613f2f565b925050600181019050613937565b5085935050505092915050565b61397a81614097565b82525050565b613989816140da565b82525050565b613998816140ec565b82525050565b60006139a982613f24565b6139b38185613f4d565b93506139c38185602086016140fe565b6139cc81614239565b840191505092915050565b60006139e4602383613f4d565b91506139ef8261424a565b604082019050919050565b6000613a07601883613f4d565b9150613a1282614299565b602082019050919050565b6000613a2a600c83613f4d565b9150613a35826142c2565b602082019050919050565b6000613a4d602283613f4d565b9150613a58826142eb565b604082019050919050565b6000613a70601b83613f4d565b9150613a7b8261433a565b602082019050919050565b6000613a93602183613f4d565b9150613a9e82614363565b604082019050919050565b6000613ab6602083613f4d565b9150613ac1826143b2565b602082019050919050565b6000613ad9602983613f4d565b9150613ae4826143db565b604082019050919050565b6000613afc602583613f4d565b9150613b078261442a565b604082019050919050565b6000613b1f602483613f4d565b9150613b2a82614479565b604082019050919050565b6000613b42602683613f4d565b9150613b4d826144c8565b604082019050919050565b613b61816140c3565b82525050565b613b70816140cd565b82525050565b6000602082019050613b8b6000830184613904565b92915050565b6000604082019050613ba66000830185613904565b613bb36020830184613904565b9392505050565b6000606082019050613bcf6000830186613904565b613bdc6020830185613904565b613be96040830184613904565b949350505050565b600060c082019050613c066000830189613904565b613c13602083018861398f565b613c206040830187613904565b613c2d6060830186613904565b613c3a6080830185613b58565b613c4760a0830184613b58565b979650505050505050565b6000604082019050613c676000830185613904565b613c746020830184613b58565b9392505050565b600060c082019050613c906000830189613904565b613c9d6020830188613b58565b613caa6040830187613980565b613cb76060830186613980565b613cc46080830185613904565b613cd160a0830184613b58565b979650505050505050565b6000602082019050613cf16000830184613971565b92915050565b60006020820190508181036000830152613d11818461399e565b905092915050565b60006020820190508181036000830152613d32816139d7565b9050919050565b60006020820190508181036000830152613d52816139fa565b9050919050565b60006020820190508181036000830152613d7281613a1d565b9050919050565b60006020820190508181036000830152613d9281613a40565b9050919050565b60006020820190508181036000830152613db281613a63565b9050919050565b60006020820190508181036000830152613dd281613a86565b9050919050565b60006020820190508181036000830152613df281613aa9565b9050919050565b60006020820190508181036000830152613e1281613acc565b9050919050565b60006020820190508181036000830152613e3281613aef565b9050919050565b60006020820190508181036000830152613e5281613b12565b9050919050565b60006020820190508181036000830152613e7281613b35565b9050919050565b6000602082019050613e8e6000830184613b58565b92915050565b600060a082019050613ea96000830188613b58565b613eb66020830187613980565b8181036040830152613ec88186613913565b9050613ed76060830185613904565b613ee46080830184613b58565b9695505050505050565b6000602082019050613f036000830184613b67565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613f69826140c3565b9150613f74836140c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fa957613fa86141ac565b5b828201905092915050565b6000613fbf826140c3565b9150613fca836140c3565b925082613fda57613fd96141db565b5b828204905092915050565b6000613ff0826140c3565b9150613ffb836140c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614034576140336141ac565b5b828202905092915050565b600061404a826140c3565b9150614055836140c3565b925082821015614068576140676141ac565b5b828203905092915050565b600061407e826140a3565b9050919050565b6000614090826140a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140e5826140c3565b9050919050565b60006140f7826140c3565b9050919050565b60005b8381101561411c578082015181840152602081019050614101565b8381111561412b576000848401525b50505050565b6000600282049050600182168061414957607f821691505b6020821081141561415d5761415c61420a565b5b50919050565b600061416e826140c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141a1576141a06141ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61452081614073565b811461452b57600080fd5b50565b61453781614085565b811461454257600080fd5b50565b61454e81614097565b811461455957600080fd5b50565b614565816140c3565b811461457057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a482e20b9055f7fe421be6033f449337daef688fd4f5b40f53f33a025116929c64736f6c63430008040033

Deployed Bytecode Sourcemap

7542:10947:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17559:75;;;;;;;;;;;;;:::i;:::-;;9729:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10568:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10003:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18161:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10739:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9913:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3757:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17640:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10109:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5496:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2881:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9819:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18059:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10237:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5682:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17834:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10414:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16655:898;;;;;;;;;;;;;:::i;:::-;;2967:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18388:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17960:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17559:75;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17622:4:::1;17609:10;;:17;;;;;;;;;;;;;;;;;;17559:75::o:0;9729:84::-;9766:13;9799:6;9792:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9729:84;:::o;10568:165::-;10645:4;10662:41;10671:12;:10;:12::i;:::-;10685:8;10695:7;10662:8;:41::i;:::-;10721:4;10714:11;;10568:165;;;;:::o;10003:100::-;10056:7;7688:23;10076:19;;10003:100;:::o;18161:221::-;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18256:29:::1;18268:8;18278:6;18256:11;:29::i;:::-;18309:1;18300:6;:10;18296:79;;;18359:4;18327:19;:29;18347:8;18327:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18296:79;18161:221:::0;;:::o;10739:323::-;10840:4;10857:39;10867:7;10876:10;10888:7;10857:9;:39::i;:::-;10907:125;10916:7;10925:12;:10;:12::i;:::-;10939:92;10979:7;10939:92;;;;;;;;;;;;;;;;;:12;:21;10952:7;10939:21;;;;;;;;;;;;;;;:35;10961:12;:10;:12::i;:::-;10939:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;10907:8;:125::i;:::-;11050:4;11043:11;;10739:323;;;;;:::o;9913:84::-;9954:5;9979:10;;;;;;;;;;;9972:17;;9913:84;:::o;3757:27::-;;;;:::o;17640:188::-;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17765:18:::1;17777:5;17765:7;:11;;:18;;;;:::i;:::-;17753:9;:30;;;;17799:21;17810:9;;17799:21;;;;;;:::i;:::-;;;;;;;;17640:188:::0;:::o;10109:122::-;10176:7;10203:10;:20;10214:8;10203:20;;;;;;;;;;;;;;;;10196:27;;10109:122;;;:::o;5496:180::-;5584:7;3191;;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5604:9:::1;5616:8;:18;5625:8;5616:18;;;;;;;;;;;;;;;;5604:30;;5652:10;5663:4;5652:16;;;;;;;;;;;;;;;;;;;;;;;;5645:23;;;5496:180:::0;;;:::o;2881:80::-;2919:7;2946;;;;;;;;;;;2939:14;;2881:80;:::o;9819:88::-;9858:13;9891:8;9884:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9819:88;:::o;18059:96::-;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18142:5:::1;18124:11;:15;18136:2;18124:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18059:96:::0;:::o;10237:171::-;10317:4;10334:44;10344:12;:10;:12::i;:::-;10358:10;10370:7;10334:9;:44::i;:::-;10396:4;10389:11;;10237:171;;;;:::o;5682:253::-;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5787:28:::1;5799:12;;;;;;;;;;;5813:1;5787:11;:28::i;:::-;5841:8;5826:12;;:23;;;;;;;;;;;;;;;;;;5873:6;5860:10;:19;;;;5890:37;5902:12;;;;;;;;;;;5916:10;;5890:11;:37::i;:::-;5682:253:::0;;:::o;17834:120::-;17901:4;17925:11;:21;17937:8;17925:21;;;;;;;;;;;;;;;;;;;;;;;;;17918:28;;17834:120;;;:::o;10414:148::-;10497:7;10524:12;:20;10537:6;10524:20;;;;;;;;;;;;;;;:30;10545:8;10524:30;;;;;;;;;;;;;;;;10517:37;;10414:148;;;;:::o;16655:898::-;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16720:11:::1;;;;;;;;;;;16719:12;16711:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16770:19;16792:21;16770:43;;16824:35;16881:42;16824:100;;16955:16;16935:17;;:36;;;;;;;;;;;;;;;;;;16982:65;16999:4;17014:17;;;;;;;;;;;7688:23;16982:8;:65::i;:::-;17094:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17076:56;;;17141:4;17148:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17076:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17058:15;;:114;;;;;;;;;;;;;;;;;;17183:17;;;;;;;;;;;:33;;;17224:21;17255:4;17261:24;17279:4;17261:9;:24::i;:::-;17286:1;17288::::0;17290:7:::1;:5;:7::i;:::-;17298:15;17183:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17332:15;;;;;;;;;;;17325:31;;;17365:17;;;;;;;;;;;17385:14;17325:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17411:10;;;;;;;;;;;:15;;;17435:4;17442;17448:15;;;;;;;;;;;17465:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17490:11;7688:23;17411:105;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17541:4;17527:11;;:18;;;;;;;;;;;;;;;;;;3246:1;;16655:898::o:0;2967:162::-;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3083:8:::1;3053:39;;3074:7;::::0;::::1;;;;;;;;3053:39;;;;;;;;;;;;3113:8;3103:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;2967:162:::0;:::o;18388:98::-;9219:8;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9203:32;;:12;:10;:12::i;:::-;:32;;;:62;;;;9255:10;;;;;;;;;;;9239:26;;:12;:10;:12::i;:::-;:26;;;9203:62;9194:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18470:8:::1;18457:10;;:21;;;;;;;;;;;;;;;;;;18388:98:::0;:::o;17960:93::-;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18041:4:::1;18023:11;:15;18035:2;18023:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17960:93:::0;:::o;1981:246::-;2039:7;2068:1;2063;:6;2059:47;;;2093:1;2086:8;;;;2059:47;2116:9;2132:1;2128;:5;;;;:::i;:::-;2116:17;;2161:1;2156;2152;:5;;;;:::i;:::-;:10;2144:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2218:1;2211:8;;;1981:246;;;;;:::o;1458:179::-;1516:7;1536:9;1552:1;1548;:5;;;;:::i;:::-;1536:17;;1577:1;1572;:6;;1564:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1628:1;1621:8;;;1458:179;;;;:::o;1643:136::-;1701:7;1728:43;1732:1;1735;1728:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1721:50;;1643:136;;;;:::o;656:98::-;709:7;736:10;729:17;;656:98;:::o;12091:347::-;12205:1;12187:20;;:6;:20;;;;12179:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12287:1;12267:22;;:8;:22;;;;12259:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12372:7;12339:12;:20;12352:6;12339:20;;;;;;;;;;;;;;;:30;12360:8;12339:30;;;;;;;;;;;;;;;:40;;;;12412:8;12395:35;;12404:6;12395:35;;;12422:7;12395:35;;;;;;:::i;:::-;;;;;;;;12091:347;;;:::o;4661:720::-;3191:7;;;;;;;;;;3175:23;;:12;:10;:12::i;:::-;:23;;;3167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4764:9:::1;4776:8;:18;4785:8;4776:18;;;;;;;;;;;;;;;;4764:30;;4817:1;4809:4;:9;4805:569;;;4871:5;4843:24;4860:6;4843:12;;:16;;:24;;;;:::i;:::-;:33;;4835:42;;;::::0;::::1;;4892:10;4908:6;4892:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4930:14;4950:8;4930:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5015:1;4995:10;:17;;;;:21;;;;:::i;:::-;4974:8;:18;4983:8;4974:18;;;;;;;;;;;;;;;:42;;;;5046:24;5063:6;5046:12;;:16;;:24;;;;:::i;:::-;5031:12;:39;;;;4805:569;;;5136:19;5159:10;5170:4;5159:16;;;;;;;;;;;;;;;;;;;;;;;;5136:39;;5243:5;5198:41;5227:11;5198:24;5215:6;5198:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:50;;5190:59;;;::::0;::::1;;5285:6;5266:10;5277:4;5266:16;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5321:41;5350:11;5321:24;5338:6;5321:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;5306:12;:56;;;;4805:569;;3246:1;4661:720:::0;;:::o;12444:1450::-;12563:1;12544:21;;:7;:21;;;;12536:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12648:1;12626:24;;:10;:24;;;;12618:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12719:1;12709:7;:11;12701:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12786:11;:20;12798:7;12786:20;;;;;;;;;;;;;;;;;;;;;;;;;12785:21;:49;;;;;12811:11;:23;12823:10;12811:23;;;;;;;;;;;;;;;;;;;;;;;;;12810:24;12785:49;:76;;;;;12839:11;:22;12851:9;12839:22;;;;;;;;;;;;;;;;;;;;;;;;;12838:23;12785:76;12777:85;;;;;;12886:40;12906:7;12915:10;12886:19;:40::i;:::-;:54;;;;;12930:10;;;;;;;;;;;12886:54;12883:431;;;12966:7;;;;;;;;;;;:19;;;12986:10;12998:15;;;;;;;;;;;13015:9;12966:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12965:60;12957:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13134:7;;;;;;;;;;;:19;;;13154:7;13163:15;;;;;;;;;;;13180:9;13134:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13133:57;13125:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13249:7;;;;;;;;;;;:21;;;13271:7;13280:10;13292:9;13249:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12883:431;13338:25;13352:10;13338:13;:25::i;:::-;13335:89;;;13410:13;;13386:21;13396:10;13386:9;:21::i;:::-;:37;13378:46;;;;;;13335:89;13449:14;13482:28;13490:7;13499:10;13482:7;:28::i;:::-;13478:287;;;13535:10;;;;;;;;;;;13527:19;;;;;;13565:34;13579:7;13588:10;13565:13;:34::i;:::-;13561:87;;;13638:9;;13627:7;:20;;13619:29;;;;;;13561:87;13686:39;13696:7;13705:10;13717:7;13686:9;:39::i;:::-;13677:48;;13740:13;13745:7;13740:4;:13::i;:::-;13478:287;13785:53;13801:7;13810:10;13822:7;13831:6;13785:15;:53::i;:::-;13849:40;13869:7;13878:10;13849:19;:40::i;:::-;12444:1450;;;;:::o;1785:190::-;1871:7;1904:1;1899;:6;;1907:12;1891:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1931:9;1947:1;1943;:5;;;;:::i;:::-;1931:17;;1966:1;1959:8;;;1785:190;;;;;:::o;11504:179::-;11592:4;11627:15;;;;;;;;;;;11616:26;;:7;:26;;;:59;;;;11660:15;;;;;;;;;;;11646:29;;:10;:29;;;11616:59;11609:66;;11504:179;;;;:::o;11915:170::-;11980:4;12018:15;;;;;;;;;;;12004:29;;:10;:29;;;;:73;;;;;12059:17;;;;;;;;;;;12037:40;;:10;:40;;;;12004:73;11997:80;;11915:170;;;:::o;11324:174::-;11400:4;11426:19;:28;11446:7;11426:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11458:19;:31;11478:10;11458:31;;;;;;;;;;;;;;;;;;;;;;;;;11426:63;11424:66;11417:73;;11324:174;;;;:::o;11689:220::-;11771:4;11806:15;;;;;;;;;;;11795:26;;:7;:26;;;:70;;;;;11847:17;;;;;;;;;;;11825:40;;:10;:40;;;;11795:70;:106;;;;;11870:19;:31;11890:10;11870:31;;;;;;;;;;;;;;;;;;;;;;;;;11869:32;11795:106;11788:113;;11689:220;;;;:::o;14742:459::-;14832:7;14852:12;14867:1;14852:16;;14883:19;:28;14903:7;14883:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;14915:19;:31;14935:10;14915:31;;;;;;;;;;;;;;;;;;;;;;;;;14883:63;14879:107;;;14970:4;14963:11;;;;;14879:107;15003:48;15012:38;15034:15;:13;:15::i;:::-;15012:17;15024:4;;15012:7;:11;;:17;;;;:::i;:::-;:21;;:38;;;;:::i;:::-;15003:4;:8;;:48;;;;:::i;:::-;14996:55;;15082:10;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15062:17;:41;;;;15121:50;15130:40;15165:4;;15130:30;15142:17;;15130:7;:11;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15121:4;:8;;:50;;;;:::i;:::-;15114:57;;15189:4;15182:11;;;14742:459;;;;;;:::o;15207:234::-;15261:20;15273:7;15261:11;:20::i;:::-;15257:177;;;15298:21;15322:24;15340:4;15322:9;:24::i;:::-;15298:48;;15361:32;15379:13;15361:17;:32::i;:::-;15408:14;:12;:14::i;:::-;15257:177;;15207:234;:::o;13900:434::-;14014:18;14035:19;14047:6;14035:7;:11;;:19;;;;:::i;:::-;14014:40;;14087:32;14111:7;14087:10;:19;14098:7;14087:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14065:10;:19;14076:7;14065:19;;;;;;;;;;;;;;;:54;;;;14155:38;14182:10;14155;:22;14166:10;14155:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14130:10;:22;14141:10;14130:22;;;;;;;;;;;;;;;:63;;;;14232:37;14262:6;14232:10;:25;14251:4;14232:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14204:10;:25;14223:4;14204:25;;;;;;;;;;;;;;;:65;;;;14303:10;14285:41;;14294:7;14285:41;;;14315:10;14285:41;;;;;;:::i;:::-;;;;;;;;13900:434;;;;;:::o;14340:399::-;14429:28;14437:7;14446:10;14429:7;:28::i;:::-;14425:307;;;14478:15;14485:7;14478:6;:15::i;:::-;14474:247;;;14512:10;;;;;;;;;;;:24;;;14537:10;14512:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14474:247;;;14593:1;14572:18;;:22;14568:153;;;14615:10;;;;;;;;;;;:20;;;14636:7;14645:18;;14615:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14704:1;14683:18;:22;;;;14568:153;14474:247;14425:307;14340:399;;:::o;5387:103::-;5443:7;5470:12;;5463:19;;5387:103;:::o;2233:132::-;2291:7;2318:39;2322:1;2325;2318:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2311:46;;2233:132;;;;:::o;11068:131::-;11128:4;11153:8;;;;;;;;;;;11152:9;:39;;;;;11176:15;;;;;;;;;;;11165:26;;:7;:26;;;;11152:39;11145:46;;11068:131;;;:::o;15447:482::-;9105:4;9094:8;;:15;;;;;;;;;;;;;;;;;;15522:22:::1;15561:1;15547:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15522:41;;15593:4;15574:5;15580:1;15574:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;15620:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15609:5;15615:1;15609:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;15655:60;15672:4;15687:17;;;;;;;;;;;15707:7;15655:8;:60::i;:::-;15726:17;;;;;;;;;;;:68;;;15809:7;15831:1;15847:5;15875:4;15895:15;15726:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9120:1;9143:5:::0;9132:8;;:16;;;;;;;;;;;;;;;;;;15447:482;:::o;16141:508::-;16184:12;16199:21;16184:36;;16243:12;;16235:4;:20;16231:46;;16270:7;;;16231:46;16301:15;16319:22;16328:12;;16319:4;:8;;:22;;;;:::i;:::-;16301:40;;16352:7;16362:20;:18;:20::i;:::-;16352:30;;16402:1;16397:2;:6;16393:32;;;16418:7;;;;;16393:32;16437:21;16446:7;16455:2;16437:8;:21::i;:::-;16492:38;16527:2;16492:30;16504:17;;16492:7;:11;;:30;;;;:::i;:::-;:34;;:38;;;;:::i;:::-;16471:18;:59;;;;16541:22;;;;;;;;;;;:31;;:51;16573:18;;16541:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16620:21;16605:12;:36;;;;16141:508;;;;:::o;11205:113::-;11260:4;11295:15;;;;;;;;;;;11284:26;;:7;:26;;;11277:33;;11205:113;;;:::o;2371:189::-;2457:7;2489:1;2485;:5;2492:12;2477:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2516:9;2532:1;2528;:5;;;;:::i;:::-;2516:17;;2551:1;2544:8;;;2371:189;;;;;:::o;15935:200::-;15987:4;16004:9;16016:1;16004:13;;16035:25;16044:15;:13;:15::i;:::-;16035:4;:8;;:25;;;;:::i;:::-;16028:32;;16078:27;16087:17;;16078:4;:8;;:27;;;;:::i;:::-;16071:34;;16123:4;16116:11;;;15935:200;:::o;4173:482::-;4250:6;4259:1;4250:10;;4245:403;4266:10;:17;;;;4262:1;:21;4245:403;;;4305:14;4322:10;4333:1;4322:13;;;;;;;;;;;;;;;;;;;;;;;;4305:30;;4350:24;4377:14;4392:1;4377:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4350:44;;4409:15;4427:24;4448:2;4427:16;4436:6;4427:4;:8;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;4409:42;;4480:1;4470:7;:11;4466:171;;;4501:8;:17;;:26;4519:7;4501:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4561:12;;;;;;;;;;;4549:24;;:8;:24;;;4546:75;;;4596:8;;;;;;;;;;;:16;;;4613:7;4596:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4546:75;4466:171;4245:403;;;4285:3;;;;;:::i;:::-;;;;4245:403;;;;4173:482;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:423::-;1817:6;1825;1874:2;1862:9;1853:7;1849:23;1845:32;1842:2;;;1890:1;1887;1880:12;1842:2;1933:1;1958:61;2011:7;2002:6;1991:9;1987:22;1958:61;:::i;:::-;1948:71;;1904:125;2068:2;2094:53;2139:7;2130:6;2119:9;2115:22;2094:53;:::i;:::-;2084:63;;2039:118;1832:332;;;;;:::o;2170:407::-;2238:6;2246;2295:2;2283:9;2274:7;2270:23;2266:32;2263:2;;;2311:1;2308;2301:12;2263:2;2354:1;2379:53;2424:7;2415:6;2404:9;2400:22;2379:53;:::i;:::-;2369:63;;2325:117;2481:2;2507:53;2552:7;2543:6;2532:9;2528:22;2507:53;:::i;:::-;2497:63;;2452:118;2253:324;;;;;:::o;2583:552::-;2660:6;2668;2676;2725:2;2713:9;2704:7;2700:23;2696:32;2693:2;;;2741:1;2738;2731:12;2693:2;2784:1;2809:53;2854:7;2845:6;2834:9;2830:22;2809:53;:::i;:::-;2799:63;;2755:117;2911:2;2937:53;2982:7;2973:6;2962:9;2958:22;2937:53;:::i;:::-;2927:63;;2882:118;3039:2;3065:53;3110:7;3101:6;3090:9;3086:22;3065:53;:::i;:::-;3055:63;;3010:118;2683:452;;;;;:::o;3141:407::-;3209:6;3217;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;3282:1;3279;3272:12;3234:2;3325:1;3350:53;3395:7;3386:6;3375:9;3371:22;3350:53;:::i;:::-;3340:63;;3296:117;3452:2;3478:53;3523:7;3514:6;3503:9;3499:22;3478:53;:::i;:::-;3468:63;;3423:118;3224:324;;;;;:::o;3554:278::-;3621:6;3670:2;3658:9;3649:7;3645:23;3641:32;3638:2;;;3686:1;3683;3676:12;3638:2;3729:1;3754:61;3807:7;3798:6;3787:9;3783:22;3754:61;:::i;:::-;3744:71;;3700:125;3628:204;;;;:::o;3838:262::-;3897:6;3946:2;3934:9;3925:7;3921:23;3917:32;3914:2;;;3962:1;3959;3952:12;3914:2;4005:1;4030:53;4075:7;4066:6;4055:9;4051:22;4030:53;:::i;:::-;4020:63;;3976:117;3904:196;;;;:::o;4106:284::-;4176:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:2;;;4241:1;4238;4231:12;4193:2;4284:1;4309:64;4365:7;4356:6;4345:9;4341:22;4309:64;:::i;:::-;4299:74;;4255:128;4183:207;;;;:::o;4396:596::-;4484:6;4492;4500;4549:2;4537:9;4528:7;4524:23;4520:32;4517:2;;;4565:1;4562;4555:12;4517:2;4608:1;4633:64;4689:7;4680:6;4669:9;4665:22;4633:64;:::i;:::-;4623:74;;4579:128;4746:2;4772:64;4828:7;4819:6;4808:9;4804:22;4772:64;:::i;:::-;4762:74;;4717:129;4885:2;4911:64;4967:7;4958:6;4947:9;4943:22;4911:64;:::i;:::-;4901:74;;4856:129;4507:485;;;;;:::o;4998:179::-;5067:10;5088:46;5130:3;5122:6;5088:46;:::i;:::-;5166:4;5161:3;5157:14;5143:28;;5078:99;;;;:::o;5183:108::-;5260:24;5278:5;5260:24;:::i;:::-;5255:3;5248:37;5238:53;;:::o;5297:118::-;5384:24;5402:5;5384:24;:::i;:::-;5379:3;5372:37;5362:53;;:::o;5451:732::-;5570:3;5599:54;5647:5;5599:54;:::i;:::-;5669:86;5748:6;5743:3;5669:86;:::i;:::-;5662:93;;5779:56;5829:5;5779:56;:::i;:::-;5858:7;5889:1;5874:284;5899:6;5896:1;5893:13;5874:284;;;5975:6;5969:13;6002:63;6061:3;6046:13;6002:63;:::i;:::-;5995:70;;6088:60;6141:6;6088:60;:::i;:::-;6078:70;;5934:224;5921:1;5918;5914:9;5909:14;;5874:284;;;5878:14;6174:3;6167:10;;5575:608;;;;;;;:::o;6189:109::-;6270:21;6285:5;6270:21;:::i;:::-;6265:3;6258:34;6248:50;;:::o;6304:147::-;6399:45;6438:5;6399:45;:::i;:::-;6394:3;6387:58;6377:74;;:::o;6457:153::-;6555:48;6597:5;6555:48;:::i;:::-;6550:3;6543:61;6533:77;;:::o;6616:364::-;6704:3;6732:39;6765:5;6732:39;:::i;:::-;6787:71;6851:6;6846:3;6787:71;:::i;:::-;6780:78;;6867:52;6912:6;6907:3;6900:4;6893:5;6889:16;6867:52;:::i;:::-;6944:29;6966:6;6944:29;:::i;:::-;6939:3;6935:39;6928:46;;6708:272;;;;;:::o;6986:366::-;7128:3;7149:67;7213:2;7208:3;7149:67;:::i;:::-;7142:74;;7225:93;7314:3;7225:93;:::i;:::-;7343:2;7338:3;7334:12;7327:19;;7132:220;;;:::o;7358:366::-;7500:3;7521:67;7585:2;7580:3;7521:67;:::i;:::-;7514:74;;7597:93;7686:3;7597:93;:::i;:::-;7715:2;7710:3;7706:12;7699:19;;7504:220;;;:::o;7730:366::-;7872:3;7893:67;7957:2;7952:3;7893:67;:::i;:::-;7886:74;;7969:93;8058:3;7969:93;:::i;:::-;8087:2;8082:3;8078:12;8071:19;;7876:220;;;:::o;8102:366::-;8244:3;8265:67;8329:2;8324:3;8265:67;:::i;:::-;8258:74;;8341:93;8430:3;8341:93;:::i;:::-;8459:2;8454:3;8450:12;8443:19;;8248:220;;;:::o;8474:366::-;8616:3;8637:67;8701:2;8696:3;8637:67;:::i;:::-;8630:74;;8713:93;8802:3;8713:93;:::i;:::-;8831:2;8826:3;8822:12;8815:19;;8620:220;;;:::o;8846:366::-;8988:3;9009:67;9073:2;9068:3;9009:67;:::i;:::-;9002:74;;9085:93;9174:3;9085:93;:::i;:::-;9203:2;9198:3;9194:12;9187:19;;8992:220;;;:::o;9218:366::-;9360:3;9381:67;9445:2;9440:3;9381:67;:::i;:::-;9374:74;;9457:93;9546:3;9457:93;:::i;:::-;9575:2;9570:3;9566:12;9559:19;;9364:220;;;:::o;9590:366::-;9732:3;9753:67;9817:2;9812:3;9753:67;:::i;:::-;9746:74;;9829:93;9918:3;9829:93;:::i;:::-;9947:2;9942:3;9938:12;9931:19;;9736:220;;;:::o;9962:366::-;10104:3;10125:67;10189:2;10184:3;10125:67;:::i;:::-;10118:74;;10201:93;10290:3;10201:93;:::i;:::-;10319:2;10314:3;10310:12;10303:19;;10108:220;;;:::o;10334:366::-;10476:3;10497:67;10561:2;10556:3;10497:67;:::i;:::-;10490:74;;10573:93;10662:3;10573:93;:::i;:::-;10691:2;10686:3;10682:12;10675:19;;10480:220;;;:::o;10706:366::-;10848:3;10869:67;10933:2;10928:3;10869:67;:::i;:::-;10862:74;;10945:93;11034:3;10945:93;:::i;:::-;11063:2;11058:3;11054:12;11047:19;;10852:220;;;:::o;11078:118::-;11165:24;11183:5;11165:24;:::i;:::-;11160:3;11153:37;11143:53;;:::o;11202:112::-;11285:22;11301:5;11285:22;:::i;:::-;11280:3;11273:35;11263:51;;:::o;11320:222::-;11413:4;11451:2;11440:9;11436:18;11428:26;;11464:71;11532:1;11521:9;11517:17;11508:6;11464:71;:::i;:::-;11418:124;;;;:::o;11548:332::-;11669:4;11707:2;11696:9;11692:18;11684:26;;11720:71;11788:1;11777:9;11773:17;11764:6;11720:71;:::i;:::-;11801:72;11869:2;11858:9;11854:18;11845:6;11801:72;:::i;:::-;11674:206;;;;;:::o;11886:442::-;12035:4;12073:2;12062:9;12058:18;12050:26;;12086:71;12154:1;12143:9;12139:17;12130:6;12086:71;:::i;:::-;12167:72;12235:2;12224:9;12220:18;12211:6;12167:72;:::i;:::-;12249;12317:2;12306:9;12302:18;12293:6;12249:72;:::i;:::-;12040:288;;;;;;:::o;12334:797::-;12578:4;12616:3;12605:9;12601:19;12593:27;;12630:71;12698:1;12687:9;12683:17;12674:6;12630:71;:::i;:::-;12711:83;12790:2;12779:9;12775:18;12766:6;12711:83;:::i;:::-;12804:72;12872:2;12861:9;12857:18;12848:6;12804:72;:::i;:::-;12886;12954:2;12943:9;12939:18;12930:6;12886:72;:::i;:::-;12968:73;13036:3;13025:9;13021:19;13012:6;12968:73;:::i;:::-;13051;13119:3;13108:9;13104:19;13095:6;13051:73;:::i;:::-;12583:548;;;;;;;;;:::o;13137:332::-;13258:4;13296:2;13285:9;13281:18;13273:26;;13309:71;13377:1;13366:9;13362:17;13353:6;13309:71;:::i;:::-;13390:72;13458:2;13447:9;13443:18;13434:6;13390:72;:::i;:::-;13263:206;;;;;:::o;13475:807::-;13724:4;13762:3;13751:9;13747:19;13739:27;;13776:71;13844:1;13833:9;13829:17;13820:6;13776:71;:::i;:::-;13857:72;13925:2;13914:9;13910:18;13901:6;13857:72;:::i;:::-;13939:80;14015:2;14004:9;14000:18;13991:6;13939:80;:::i;:::-;14029;14105:2;14094:9;14090:18;14081:6;14029:80;:::i;:::-;14119:73;14187:3;14176:9;14172:19;14163:6;14119:73;:::i;:::-;14202;14270:3;14259:9;14255:19;14246:6;14202:73;:::i;:::-;13729:553;;;;;;;;;:::o;14288:210::-;14375:4;14413:2;14402:9;14398:18;14390:26;;14426:65;14488:1;14477:9;14473:17;14464:6;14426:65;:::i;:::-;14380:118;;;;:::o;14504:313::-;14617:4;14655:2;14644:9;14640:18;14632:26;;14704:9;14698:4;14694:20;14690:1;14679:9;14675:17;14668:47;14732:78;14805:4;14796:6;14732:78;:::i;:::-;14724:86;;14622:195;;;;:::o;14823:419::-;14989:4;15027:2;15016:9;15012:18;15004:26;;15076:9;15070:4;15066:20;15062:1;15051:9;15047:17;15040:47;15104:131;15230:4;15104:131;:::i;:::-;15096:139;;14994:248;;;:::o;15248:419::-;15414:4;15452:2;15441:9;15437:18;15429:26;;15501:9;15495:4;15491:20;15487:1;15476:9;15472:17;15465:47;15529:131;15655:4;15529:131;:::i;:::-;15521:139;;15419:248;;;:::o;15673:419::-;15839:4;15877:2;15866:9;15862:18;15854:26;;15926:9;15920:4;15916:20;15912:1;15901:9;15897:17;15890:47;15954:131;16080:4;15954:131;:::i;:::-;15946:139;;15844:248;;;:::o;16098:419::-;16264:4;16302:2;16291:9;16287:18;16279:26;;16351:9;16345:4;16341:20;16337:1;16326:9;16322:17;16315:47;16379:131;16505:4;16379:131;:::i;:::-;16371:139;;16269:248;;;:::o;16523:419::-;16689:4;16727:2;16716:9;16712:18;16704:26;;16776:9;16770:4;16766:20;16762:1;16751:9;16747:17;16740:47;16804:131;16930:4;16804:131;:::i;:::-;16796:139;;16694:248;;;:::o;16948:419::-;17114:4;17152:2;17141:9;17137:18;17129:26;;17201:9;17195:4;17191:20;17187:1;17176:9;17172:17;17165:47;17229:131;17355:4;17229:131;:::i;:::-;17221:139;;17119:248;;;:::o;17373:419::-;17539:4;17577:2;17566:9;17562:18;17554:26;;17626:9;17620:4;17616:20;17612:1;17601:9;17597:17;17590:47;17654:131;17780:4;17654:131;:::i;:::-;17646:139;;17544:248;;;:::o;17798:419::-;17964:4;18002:2;17991:9;17987:18;17979:26;;18051:9;18045:4;18041:20;18037:1;18026:9;18022:17;18015:47;18079:131;18205:4;18079:131;:::i;:::-;18071:139;;17969:248;;;:::o;18223:419::-;18389:4;18427:2;18416:9;18412:18;18404:26;;18476:9;18470:4;18466:20;18462:1;18451:9;18447:17;18440:47;18504:131;18630:4;18504:131;:::i;:::-;18496:139;;18394:248;;;:::o;18648:419::-;18814:4;18852:2;18841:9;18837:18;18829:26;;18901:9;18895:4;18891:20;18887:1;18876:9;18872:17;18865:47;18929:131;19055:4;18929:131;:::i;:::-;18921:139;;18819:248;;;:::o;19073:419::-;19239:4;19277:2;19266:9;19262:18;19254:26;;19326:9;19320:4;19316:20;19312:1;19301:9;19297:17;19290:47;19354:131;19480:4;19354:131;:::i;:::-;19346:139;;19244:248;;;:::o;19498:222::-;19591:4;19629:2;19618:9;19614:18;19606:26;;19642:71;19710:1;19699:9;19695:17;19686:6;19642:71;:::i;:::-;19596:124;;;;:::o;19726:831::-;19989:4;20027:3;20016:9;20012:19;20004:27;;20041:71;20109:1;20098:9;20094:17;20085:6;20041:71;:::i;:::-;20122:80;20198:2;20187:9;20183:18;20174:6;20122:80;:::i;:::-;20249:9;20243:4;20239:20;20234:2;20223:9;20219:18;20212:48;20277:108;20380:4;20371:6;20277:108;:::i;:::-;20269:116;;20395:72;20463:2;20452:9;20448:18;20439:6;20395:72;:::i;:::-;20477:73;20545:3;20534:9;20530:19;20521:6;20477:73;:::i;:::-;19994:563;;;;;;;;:::o;20563:214::-;20652:4;20690:2;20679:9;20675:18;20667:26;;20703:67;20767:1;20756:9;20752:17;20743:6;20703:67;:::i;:::-;20657:120;;;;:::o;20783:132::-;20850:4;20873:3;20865:11;;20903:4;20898:3;20894:14;20886:22;;20855:60;;;:::o;20921:114::-;20988:6;21022:5;21016:12;21006:22;;20995:40;;;:::o;21041:99::-;21093:6;21127:5;21121:12;21111:22;;21100:40;;;:::o;21146:113::-;21216:4;21248;21243:3;21239:14;21231:22;;21221:38;;;:::o;21265:184::-;21364:11;21398:6;21393:3;21386:19;21438:4;21433:3;21429:14;21414:29;;21376:73;;;;:::o;21455:169::-;21539:11;21573:6;21568:3;21561:19;21613:4;21608:3;21604:14;21589:29;;21551:73;;;;:::o;21630:305::-;21670:3;21689:20;21707:1;21689:20;:::i;:::-;21684:25;;21723:20;21741:1;21723:20;:::i;:::-;21718:25;;21877:1;21809:66;21805:74;21802:1;21799:81;21796:2;;;21883:18;;:::i;:::-;21796:2;21927:1;21924;21920:9;21913:16;;21674:261;;;;:::o;21941:185::-;21981:1;21998:20;22016:1;21998:20;:::i;:::-;21993:25;;22032:20;22050:1;22032:20;:::i;:::-;22027:25;;22071:1;22061:2;;22076:18;;:::i;:::-;22061:2;22118:1;22115;22111:9;22106:14;;21983:143;;;;:::o;22132:348::-;22172:7;22195:20;22213:1;22195:20;:::i;:::-;22190:25;;22229:20;22247:1;22229:20;:::i;:::-;22224:25;;22417:1;22349:66;22345:74;22342:1;22339:81;22334:1;22327:9;22320:17;22316:105;22313:2;;;22424:18;;:::i;:::-;22313:2;22472:1;22469;22465:9;22454:20;;22180:300;;;;:::o;22486:191::-;22526:4;22546:20;22564:1;22546:20;:::i;:::-;22541:25;;22580:20;22598:1;22580:20;:::i;:::-;22575:25;;22619:1;22616;22613:8;22610:2;;;22624:18;;:::i;:::-;22610:2;22669:1;22666;22662:9;22654:17;;22531:146;;;;:::o;22683:96::-;22720:7;22749:24;22767:5;22749:24;:::i;:::-;22738:35;;22728:51;;;:::o;22785:104::-;22830:7;22859:24;22877:5;22859:24;:::i;:::-;22848:35;;22838:51;;;:::o;22895:90::-;22929:7;22972:5;22965:13;22958:21;22947:32;;22937:48;;;:::o;22991:126::-;23028:7;23068:42;23061:5;23057:54;23046:65;;23036:81;;;:::o;23123:77::-;23160:7;23189:5;23178:16;;23168:32;;;:::o;23206:86::-;23241:7;23281:4;23274:5;23270:16;23259:27;;23249:43;;;:::o;23298:121::-;23356:9;23389:24;23407:5;23389:24;:::i;:::-;23376:37;;23366:53;;;:::o;23425:124::-;23486:9;23519:24;23537:5;23519:24;:::i;:::-;23506:37;;23496:53;;;:::o;23555:307::-;23623:1;23633:113;23647:6;23644:1;23641:13;23633:113;;;23732:1;23727:3;23723:11;23717:18;23713:1;23708:3;23704:11;23697:39;23669:2;23666:1;23662:10;23657:15;;23633:113;;;23764:6;23761:1;23758:13;23755:2;;;23844:1;23835:6;23830:3;23826:16;23819:27;23755:2;23604:258;;;;:::o;23868:320::-;23912:6;23949:1;23943:4;23939:12;23929:22;;23996:1;23990:4;23986:12;24017:18;24007:2;;24073:4;24065:6;24061:17;24051:27;;24007:2;24135;24127:6;24124:14;24104:18;24101:38;24098:2;;;24154:18;;:::i;:::-;24098:2;23919:269;;;;:::o;24194:233::-;24233:3;24256:24;24274:5;24256:24;:::i;:::-;24247:33;;24302:66;24295:5;24292:77;24289:2;;;24372:18;;:::i;:::-;24289:2;24419:1;24412:5;24408:13;24401:20;;24237:190;;;:::o;24433:180::-;24481:77;24478:1;24471:88;24578:4;24575:1;24568:15;24602:4;24599:1;24592:15;24619:180;24667:77;24664:1;24657:88;24764:4;24761:1;24754:15;24788:4;24785:1;24778:15;24805:180;24853:77;24850:1;24843:88;24950:4;24947:1;24940:15;24974:4;24971:1;24964:15;24991:102;25032:6;25083:2;25079:7;25074:2;25067:5;25063:14;25059:28;25049:38;;25039:54;;;:::o;25099:222::-;25239:34;25235:1;25227:6;25223:14;25216:58;25308:5;25303:2;25295:6;25291:15;25284:30;25205:116;:::o;25327:174::-;25467:26;25463:1;25455:6;25451:14;25444:50;25433:68;:::o;25507:162::-;25647:14;25643:1;25635:6;25631:14;25624:38;25613:56;:::o;25675:221::-;25815:34;25811:1;25803:6;25799:14;25792:58;25884:4;25879:2;25871:6;25867:15;25860:29;25781:115;:::o;25902:177::-;26042:29;26038:1;26030:6;26026:14;26019:53;26008:71;:::o;26085:220::-;26225:34;26221:1;26213:6;26209:14;26202:58;26294:3;26289:2;26281:6;26277:15;26270:28;26191:114;:::o;26311:182::-;26451:34;26447:1;26439:6;26435:14;26428:58;26417:76;:::o;26499:228::-;26639:34;26635:1;26627:6;26623:14;26616:58;26708:11;26703:2;26695:6;26691:15;26684:36;26605:122;:::o;26733:224::-;26873:34;26869:1;26861:6;26857:14;26850:58;26942:7;26937:2;26929:6;26925:15;26918:32;26839:118;:::o;26963:223::-;27103:34;27099:1;27091:6;27087:14;27080:58;27172:6;27167:2;27159:6;27155:15;27148:31;27069:117;:::o;27192:225::-;27332:34;27328:1;27320:6;27316:14;27309:58;27401:8;27396:2;27388:6;27384:15;27377:33;27298:119;:::o;27423:122::-;27496:24;27514:5;27496:24;:::i;:::-;27489:5;27486:35;27476:2;;27535:1;27532;27525:12;27476:2;27466:79;:::o;27551:138::-;27632:32;27658:5;27632:32;:::i;:::-;27625:5;27622:43;27612:2;;27679:1;27676;27669:12;27612:2;27602:87;:::o;27695:116::-;27765:21;27780:5;27765:21;:::i;:::-;27758:5;27755:32;27745:2;;27801:1;27798;27791:12;27745:2;27735:76;:::o;27817:122::-;27890:24;27908:5;27890:24;:::i;:::-;27883:5;27880:35;27870:2;;27929:1;27926;27919:12;27870:2;27860:79;:::o

Swarm Source

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