ETH Price: $3,451.61 (-1.02%)
Gas: 2 Gwei

Token

GIGACHAD NOOT (GCNOOT)
 

Overview

Max Total Supply

420,690,000 GCNOOT

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 GCNOOT

Value
$0.00
0x27ce434a3a25812eec6f78320054b6f2cd549198
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:
GCNOOT

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-18
*/

// SPDX-License-Identifier: MIT

/*

// Telegram 💥: https://t.me/gigachadnooteth
// Website 🐧: https://www.gigachadnoot.xyz/ 
// Twitter 💎: https://twitter.com/gigachadnooteth


*/

pragma solidity ^0.8.17;

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}
/// 
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
//// 
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);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    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);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract GCNOOT is Context, IERC20, Ownable {

    using Address for address payable;

    IRouter public router;
    address public pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;
    mapping (address => bool) public _isBlacklisted;
    mapping (address => uint256) public _dogSellTime;

    uint256 private _dogSellTimeOffset = 3;
    bool public watchdogMode = false;
    uint256 public _caughtDogs;
    bool public isTradingOpen = false;

    uint8 private constant _decimals = 9; 
    uint256 private _tTotal = 420_690_000 * (10**_decimals);
    uint256 public swapThreshold = 2_103_450 * (10**_decimals); 
    uint256 public maxTxAmount = 16_827_600 * (10**_decimals);
    uint256 public maxWallet =  16_827_600 * (10**_decimals);

    string private constant _name = "GIGACHAD NOOT"; 
    string private constant _symbol = "GCNOOT";

    struct Tax{
        uint8 marketingTax;
        uint8 lpTax;
    }

    struct TokensFromTax{
        uint marketingTokens;
        uint lpTokens;
    }
    TokensFromTax public totalTokensFromTax;

    Tax public buyTax = Tax(10,0);
    Tax public sellTax = Tax(35,0);
    
    address public marketingWallet = 0x90964766E5f6174af7bac1A74C41fb07006B54ac;
    
    bool private swapping;
    uint private _swapCooldown = 5; 
    uint private _lastSwap;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }
//// 
    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        _approve(owner(), address(router), ~uint256(0));
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;

        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[pair] = true;
        _isExcludedFromMaxBalance[marketingWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    receive() external payable {}
// ========================================== //
// 
//============== Owner Functions ===========//
   
    function owner_setBlacklisted(address account, bool isBlacklisted) public onlyOwner{
        _isBlacklisted[account] = isBlacklisted;
    }
    
    function setTradingOpen(bool _isTradingOpen) external onlyOwner {
        isTradingOpen = _isTradingOpen;

    }
    
    function owner_setBulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;
        }
    }

    function owner_setBuyTaxes(uint8 marketingTax, uint8 lpTax) external onlyOwner{
        uint tTax =  marketingTax + lpTax;
        require(tTax <= 30, "Can't set tax too high");
        buyTax = Tax(marketingTax,lpTax);
        emit TaxesChanged();
    }

    function owner_setSellTaxes(uint8 marketingTax, uint8 lpTax) external onlyOwner{
        uint tTax = marketingTax + lpTax;
        require(tTax <= 80, "Can't set tax too high");
        sellTax = Tax(marketingTax,lpTax);
        emit TaxesChanged();
    }
    
    function owner_setTransferMaxes(uint maxTX_EXACT, uint maxWallet_EXACT) public onlyOwner{
        uint pointFiveSupply = (_tTotal * 5 / 1000) / (10**_decimals);
        require(maxTX_EXACT >= pointFiveSupply && maxWallet_EXACT >= pointFiveSupply, "Invalid Settings");
        maxTxAmount = maxTX_EXACT * (10**_decimals);
        maxWallet = maxWallet_EXACT * (10**_decimals);
    }

    function owner_rescueETH(uint256 weiAmount) public onlyOwner{
        require(address(this).balance >= weiAmount, "Insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function owner_rescueExcessTokens() public{
        // Make sure ca doesn't withdraw the pending taxes to be swapped.    
        // Sends excess tokens / accidentally sent tokens back to marketing wallet.
        uint pendingTaxTokens = totalTokensFromTax.lpTokens + totalTokensFromTax.marketingTokens;
        require(balanceOf(address(this)) >  pendingTaxTokens);
        uint excessTokens = balanceOf(address(this)) - pendingTaxTokens;
        _transfer(address(this), marketingWallet, excessTokens);
    }
    
    function owner_setWatchDogMode(bool status_) external onlyOwner{
        watchdogMode = status_;
    }

    function owner_setDogSellTimeForAddress(address holder, uint dTime) external onlyOwner{
        _dogSellTime[holder] = block.timestamp + dTime;
    }

// ========================================//. 
    
    function _getTaxValues(uint amount, address from, bool isSell) private returns(uint256){
        Tax memory tmpTaxes = buyTax;
        if (isSell){
            tmpTaxes = sellTax;
        }

        uint tokensForMarketing = amount * tmpTaxes.marketingTax / 100;
        uint tokensForLP = amount * tmpTaxes.lpTax / 100;

        if(tokensForMarketing > 0)
            totalTokensFromTax.marketingTokens += tokensForMarketing;

        if(tokensForLP > 0)
            totalTokensFromTax.lpTokens += tokensForLP;

        uint totalTaxedTokens = tokensForMarketing + tokensForLP;

        _tOwned[address(this)] += totalTaxedTokens;
        if(totalTaxedTokens > 0)
            emit Transfer (from, address(this), totalTaxedTokens);
            
        return (amount - totalTaxedTokens);
    }

    function _transfer(address from,address to,uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(isTradingOpen || from == owner() || to == owner(), "Trading is not enabled yet");
        require(amount <= maxTxAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the _maxTxAmount.");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "Blacklisted, can't trade");

        if(!_isExcludedFromMaxBalance[to])
            require(balanceOf(to) + amount <= maxWallet, "Transfer amount exceeds the maxWallet.");
        
        if (balanceOf(address(this)) >= swapThreshold && block.timestamp >= (_lastSwap + _swapCooldown) && !swapping && from != pair && from != owner() && to != owner())
            swapAndLiquify();
          
        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getTaxValues(amount, from, to == pair);
            if (from == pair){
                if(watchdogMode){
                    _caughtDogs++;
                    _dogSellTime[to] = block.timestamp + _dogSellTimeOffset;
                }
            }else{
                if (_dogSellTime[from] != 0)
                    require(block.timestamp < _dogSellTime[from]); 
            }
        }

        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function swapAndLiquify() private lockTheSwap{
        
        if(totalTokensFromTax.marketingTokens > 0){
            uint256 ethSwapped = swapTokensForETH(totalTokensFromTax.marketingTokens);
            if(ethSwapped > 0){
                payable(marketingWallet).transfer(ethSwapped);
                totalTokensFromTax.marketingTokens = 0;
            }
        }   

        if(totalTokensFromTax.lpTokens > 0){
            uint half = totalTokensFromTax.lpTokens / 2;
            uint otherHalf = totalTokensFromTax.lpTokens - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
            totalTokensFromTax.lpTokens = 0;
        }

        emit SwapAndLiquify();

        _lastSwap = block.timestamp;
    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return (address(this).balance - initialBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(marketingWallet).sendValue (ethAmount - ethFromLiquidity);
    }

    event SwapAndLiquify();
    event TaxesChanged();
///      
}

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":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","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":"_caughtDogs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dogSellTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"owner_rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner_rescueExcessTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"owner_setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"owner_setBulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"name":"owner_setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"dTime","type":"uint256"}],"name":"owner_setDogSellTimeForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"name":"owner_setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTX_EXACT","type":"uint256"},{"internalType":"uint256","name":"maxWallet_EXACT","type":"uint256"}],"name":"owner_setTransferMaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status_","type":"bool"}],"name":"owner_setWatchDogMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_isTradingOpen","type":"bool"}],"name":"setTradingOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensFromTax","outputs":[{"internalType":"uint256","name":"marketingTokens","type":"uint256"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"watchdogMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260036009556000600a60006101000a81548160ff0219169083151502179055506000600c60006101000a81548160ff0219169083151502179055506009600a6200004f919062000c88565b631913385062000060919062000cd9565b600d556009600a62000073919062000c88565b6220189a62000083919062000cd9565b600e556009600a62000096919062000c88565b630100c4d0620000a7919062000cd9565b600f556009600a620000ba919062000c88565b630100c4d0620000cb919062000cd9565b6010556040518060400160405280600a60ff168152602001600060ff16815250601360008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555050506040518060400160405280602360ff168152602001600060ff16815250601460008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555050507390964766e5f6174af7bac1a74c41fb07006b54ac601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005601655348015620001fb57600080fd5b506200021c620002106200082860201b60201c565b6200083060201b60201c565b600d5460036000620002336200082860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe919062000d8e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c919062000d8e565b6040518363ffffffff1660e01b8152600401620003ab92919062000dd1565b6020604051808303816000875af1158015620003cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f1919062000d8e565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004bb62000489620008f460201b60201c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196200091d60201b60201c565b600160056000620004d1620008f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660006200060a620008f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007b76200082860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405162000818919062000e0f565b60405180910390a3505062000f6d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200098f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009869062000eb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f89062000f4b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000ae1919062000e0f565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b7c5780860481111562000b545762000b5362000aee565b5b600185161562000b645780820291505b808102905062000b748562000b1d565b945062000b34565b94509492505050565b60008262000b97576001905062000c6a565b8162000ba7576000905062000c6a565b816001811462000bc0576002811462000bcb5762000c01565b600191505062000c6a565b60ff84111562000be05762000bdf62000aee565b5b8360020a91508482111562000bfa5762000bf962000aee565b5b5062000c6a565b5060208310610133831016604e8410600b841016171562000c3b5782820a90508381111562000c355762000c3462000aee565b5b62000c6a565b62000c4a848484600162000b2a565b9250905081840481111562000c645762000c6362000aee565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c958262000c71565b915062000ca28362000c7b565b925062000cd17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b85565b905092915050565b600062000ce68262000c71565b915062000cf38362000c71565b925082820262000d038162000c71565b9150828204841483151762000d1d5762000d1c62000aee565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d568262000d29565b9050919050565b62000d688162000d49565b811462000d7457600080fd5b50565b60008151905062000d888162000d5d565b92915050565b60006020828403121562000da75762000da662000d24565b5b600062000db78482850162000d77565b91505092915050565b62000dcb8162000d49565b82525050565b600060408201905062000de8600083018562000dc0565b62000df7602083018462000dc0565b9392505050565b62000e098162000c71565b82525050565b600060208201905062000e26600083018462000dfe565b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000e9b60248362000e2c565b915062000ea88262000e3d565b604082019050919050565b6000602082019050818103600083015262000ece8162000e8c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000f3360228362000e2c565b915062000f408262000ed5565b604082019050919050565b6000602082019050818103600083015262000f668162000f24565b9050919050565b6142cd8062000f7d6000396000f3fe60806040526004361061023f5760003560e01c806375f0a8741161012e578063cfe9dde0116100ab578063f2fde38b1161006f578063f2fde38b146108bc578063f837ae07146108e5578063f887ea401461090e578063f8b45b0514610939578063f9d0ee941461096457610246565b8063cfe9dde0146107c3578063dd62ed3e146107ec578063e0a877c814610829578063ee9a5d8214610854578063ef07a1821461089157610246565b8063a457c2d7116100f2578063a457c2d7146106c9578063a8aa1b3114610706578063a9059cbb14610731578063cb0e6f7b1461076e578063cc1776d31461079757610246565b806375f0a874146105e0578063768dc7101461060b5780638c0b5e22146106485780638da5cb5b1461067357806395d89b411461069e57610246565b8063313ce567116101bc5780634f7041a5116101805780634f7041a51461050c57806356a060a2146105385780635966c81e1461056357806370a082311461058c578063715018a6146105c957610246565b8063313ce5671461043b57806339509351146104665780633c576a97146104a35780634ba422bc146104ba5780634cf27997146104e357610246565b80631b0f9381116102035780631b0f9381146103325780631cdd3be31461035b57806321c03a971461039857806323b872dd146103c157806328c61f41146103fe57610246565b80630445b6671461024b57806306fdde0314610276578063095ea7b3146102a15780630f81e11a146102de57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610990565b60405161026d9190612d96565b60405180910390f35b34801561028257600080fd5b5061028b610996565b6040516102989190612e41565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c39190612f01565b6109d3565b6040516102d59190612f5c565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190612fa3565b6109f1565b005b34801561031357600080fd5b5061031c610a8a565b6040516103299190612d96565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190613009565b610a94565b005b34801561036757600080fd5b50610382600480360381019061037d9190613049565b610bfa565b60405161038f9190612f5c565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612fa3565b610c1a565b005b3480156103cd57600080fd5b506103e860048036038101906103e39190613076565b610cb3565b6040516103f59190612f5c565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613049565b610d6b565b6040516104329190612f5c565b60405180910390f35b34801561044757600080fd5b50610450610d8b565b60405161045d91906130d8565b60405180910390f35b34801561047257600080fd5b5061048d60048036038101906104889190612f01565b610d94565b60405161049a9190612f5c565b60405180910390f35b3480156104af57600080fd5b506104b8610e40565b005b3480156104c657600080fd5b506104e160048036038101906104dc91906130f3565b610eb7565b005b3480156104ef57600080fd5b5061050a60048036038101906105059190612f01565b610ffd565b005b34801561051857600080fd5b506105216110cc565b60405161052f929190613133565b60405180910390f35b34801561054457600080fd5b5061054d6110f8565b60405161055a9190612f5c565b60405180910390f35b34801561056f57600080fd5b5061058a6004803603810190610585919061315c565b61110b565b005b34801561059857600080fd5b506105b360048036038101906105ae9190613049565b611214565b6040516105c09190612d96565b60405180910390f35b3480156105d557600080fd5b506105de61125d565b005b3480156105ec57600080fd5b506105f56112e5565b6040516106029190613198565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d9190613049565b61130b565b60405161063f9190612f5c565b60405180910390f35b34801561065457600080fd5b5061065d61132b565b60405161066a9190612d96565b60405180910390f35b34801561067f57600080fd5b50610688611331565b6040516106959190613198565b60405180910390f35b3480156106aa57600080fd5b506106b361135a565b6040516106c09190612e41565b60405180910390f35b3480156106d557600080fd5b506106f060048036038101906106eb9190612f01565b611397565b6040516106fd9190612f5c565b60405180910390f35b34801561071257600080fd5b5061071b611443565b6040516107289190613198565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f01565b611469565b6040516107659190612f5c565b60405180910390f35b34801561077a57600080fd5b5061079560048036038101906107909190613009565b611487565b005b3480156107a357600080fd5b506107ac6115ed565b6040516107ba929190613133565b60405180910390f35b3480156107cf57600080fd5b506107ea60048036038101906107e591906132fb565b611619565b005b3480156107f857600080fd5b50610813600480360381019061080e9190613357565b61172a565b6040516108209190612d96565b60405180910390f35b34801561083557600080fd5b5061083e6117b1565b60405161084b9190612f5c565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190613049565b6117c4565b6040516108889190612d96565b60405180910390f35b34801561089d57600080fd5b506108a66117dc565b6040516108b39190612d96565b60405180910390f35b3480156108c857600080fd5b506108e360048036038101906108de9190613049565b6117e2565b005b3480156108f157600080fd5b5061090c60048036038101906109079190613397565b6118d9565b005b34801561091a57600080fd5b506109236119b0565b6040516109309190613436565b60405180910390f35b34801561094557600080fd5b5061094e6119d6565b60405161095b9190612d96565b60405180910390f35b34801561097057600080fd5b506109796119dc565b604051610987929190613451565b60405180910390f35b600e5481565b60606040518060400160405280600d81526020017f4749474143484144204e4f4f5400000000000000000000000000000000000000815250905090565b60006109e76109e06119ee565b84846119f6565b6001905092915050565b6109f96119ee565b73ffffffffffffffffffffffffffffffffffffffff16610a17611331565b73ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a64906134c6565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6000600d54905090565b610a9c6119ee565b73ffffffffffffffffffffffffffffffffffffffff16610aba611331565b73ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b07906134c6565b60405180910390fd5b60008183610b1e9190613515565b60ff169050601e811115610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90613596565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601360008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610c226119ee565b73ffffffffffffffffffffffffffffffffffffffff16610c40611331565b73ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d906134c6565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b6000610cc0848484611bbf565b610d6084610ccc6119ee565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d166119ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5b91906135b6565b6119f6565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009905090565b6000610e36610da16119ee565b848460046000610daf6119ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e3191906135ea565b6119f6565b6001905092915050565b6000601160000154601160010154610e5891906135ea565b905080610e6430611214565b11610e6e57600080fd5b600081610e7a30611214565b610e8491906135b6565b9050610eb330601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611bbf565b5050565b610ebf6119ee565b73ffffffffffffffffffffffffffffffffffffffff16610edd611331565b73ffffffffffffffffffffffffffffffffffffffff1614610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a906134c6565b60405180910390fd5b60006009600a610f439190613751565b6103e86005600d54610f55919061379c565b610f5f919061380d565b610f69919061380d565b9050808310158015610f7b5750808210155b610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb19061388a565b60405180910390fd5b6009600a610fc89190613751565b83610fd3919061379c565b600f819055506009600a610fe79190613751565b82610ff2919061379c565b601081905550505050565b6110056119ee565b73ffffffffffffffffffffffffffffffffffffffff16611023611331565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611070906134c6565b60405180910390fd5b804261108591906135ea565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60138060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b600c60009054906101000a900460ff1681565b6111136119ee565b73ffffffffffffffffffffffffffffffffffffffff16611131611331565b73ffffffffffffffffffffffffffffffffffffffff1614611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906134c6565b60405180910390fd5b804710156111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c1906138f6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611210573d6000803e3d6000fd5b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112656119ee565b73ffffffffffffffffffffffffffffffffffffffff16611283611331565b73ffffffffffffffffffffffffffffffffffffffff16146112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d0906134c6565b60405180910390fd5b6112e36000612487565b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f47434e4f4f540000000000000000000000000000000000000000000000000000815250905090565b60006114396113a46119ee565b8484600460006113b26119ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143491906135b6565b6119f6565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061147d6114766119ee565b8484611bbf565b6001905092915050565b61148f6119ee565b73ffffffffffffffffffffffffffffffffffffffff166114ad611331565b73ffffffffffffffffffffffffffffffffffffffff1614611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa906134c6565b60405180910390fd5b600081836115119190613515565b60ff169050605081111561155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190613596565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601460008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60148060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b6116216119ee565b73ffffffffffffffffffffffffffffffffffffffff1661163f611331565b73ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c906134c6565b60405180910390fd5b60005b82518110156117255781600760008584815181106116b9576116b8613916565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061171d90613945565b915050611698565b505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900460ff1681565b60086020528060005260406000206000915090505481565b600b5481565b6117ea6119ee565b73ffffffffffffffffffffffffffffffffffffffff16611808611331565b73ffffffffffffffffffffffffffffffffffffffff161461185e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611855906134c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c4906139ff565b60405180910390fd5b6118d681612487565b50565b6118e16119ee565b73ffffffffffffffffffffffffffffffffffffffff166118ff611331565b73ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906134c6565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60118060000154908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90613a91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90613b23565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bb29190612d96565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590613bb5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490613c47565b60405180910390fd5b60008111611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790613cd9565b60405180910390fd5b600c60009054906101000a900460ff1680611d2d5750611cfe611331565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611d6a5750611d3b611331565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da090613d45565b60405180910390fd5b600f5481111580611e035750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3990613dd7565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ee65750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c90613e43565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fcf5760105481611f8384611214565b611f8d91906135ea565b1115611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590613ed5565b60405180910390fd5b5b600e54611fdb30611214565b10158015611ff85750601654601754611ff491906135ea565b4210155b80156120115750601560149054906101000a900460ff16155b801561206b5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120aa575061207a611331565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e957506120b9611331565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120f7576120f661254b565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461214691906135b6565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121f65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123c6576122568285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146126bf565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361233157600a60009054906101000a900460ff161561232c57600b60008154809291906122d590613945565b9190505550600954426122e891906135ea565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6123c5565b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146123c457600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442106123c357600080fd5b5b5b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461241591906135ea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124799190612d96565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601560146101000a81548160ff021916908315150217905550600060116000015411156126065760006125846011600001546128db565b9050600081111561260457601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125f7573d6000803e3d6000fd5b5060006011600001819055505b505b6000601160010154111561266f5760006002601160010154612628919061380d565b905060008160116001015461263d91906135b6565b9050600061264a836128db565b905060008111156126605761265f8282612b35565b5b60006011600101819055505050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a1426017819055506000601560146101000a81548160ff021916908315150217905550565b60008060136040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff16815250509050821561275b5760146040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090505b60006064826000015160ff1687612772919061379c565b61277c919061380d565b905060006064836020015160ff1688612795919061379c565b61279f919061380d565b905060008211156127c75781601160000160008282546127bf91906135ea565b925050819055505b60008111156127ed5780601160010160008282546127e591906135ea565b925050819055505b600081836127fb91906135ea565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461284c91906135ea565b9250508190555060008111156128c2573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128b99190612d96565b60405180910390a35b80886128ce91906135b6565b9450505050509392505050565b6000804790506000600267ffffffffffffffff8111156128fe576128fd6131b8565b5b60405190808252806020026020018201604052801561292c5781602001602082028036833780820191505090505b509050308160008151811061294457612943613916565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0f9190613f0a565b81600181518110612a2357612a22613916565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a8a30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866119f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612aee959493929190614030565b600060405180830381600087803b158015612b0857600080fd5b505af1158015612b1c573d6000803e3d6000fd5b505050508147612b2c91906135b6565b92505050919050565b612b6230600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119f6565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833086600080612bb0611331565b426040518863ffffffff1660e01b8152600401612bd29695949392919061408a565b60606040518083038185885af1158015612bf0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c159190614100565b5091505060008183612c2791906135b6565b1115612c8457612c838183612c3c91906135b6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8990919063ffffffff16565b5b505050565b80471015612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc39061419f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612cf2906141f0565b60006040518083038185875af1925050503d8060008114612d2f576040519150601f19603f3d011682016040523d82523d6000602084013e612d34565b606091505b5050905080612d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6f90614277565b60405180910390fd5b505050565b6000819050919050565b612d9081612d7d565b82525050565b6000602082019050612dab6000830184612d87565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612deb578082015181840152602081019050612dd0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e1382612db1565b612e1d8185612dbc565b9350612e2d818560208601612dcd565b612e3681612df7565b840191505092915050565b60006020820190508181036000830152612e5b8184612e08565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ea282612e77565b9050919050565b612eb281612e97565b8114612ebd57600080fd5b50565b600081359050612ecf81612ea9565b92915050565b612ede81612d7d565b8114612ee957600080fd5b50565b600081359050612efb81612ed5565b92915050565b60008060408385031215612f1857612f17612e6d565b5b6000612f2685828601612ec0565b9250506020612f3785828601612eec565b9150509250929050565b60008115159050919050565b612f5681612f41565b82525050565b6000602082019050612f716000830184612f4d565b92915050565b612f8081612f41565b8114612f8b57600080fd5b50565b600081359050612f9d81612f77565b92915050565b600060208284031215612fb957612fb8612e6d565b5b6000612fc784828501612f8e565b91505092915050565b600060ff82169050919050565b612fe681612fd0565b8114612ff157600080fd5b50565b60008135905061300381612fdd565b92915050565b600080604083850312156130205761301f612e6d565b5b600061302e85828601612ff4565b925050602061303f85828601612ff4565b9150509250929050565b60006020828403121561305f5761305e612e6d565b5b600061306d84828501612ec0565b91505092915050565b60008060006060848603121561308f5761308e612e6d565b5b600061309d86828701612ec0565b93505060206130ae86828701612ec0565b92505060406130bf86828701612eec565b9150509250925092565b6130d281612fd0565b82525050565b60006020820190506130ed60008301846130c9565b92915050565b6000806040838503121561310a57613109612e6d565b5b600061311885828601612eec565b925050602061312985828601612eec565b9150509250929050565b600060408201905061314860008301856130c9565b61315560208301846130c9565b9392505050565b60006020828403121561317257613171612e6d565b5b600061318084828501612eec565b91505092915050565b61319281612e97565b82525050565b60006020820190506131ad6000830184613189565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131f082612df7565b810181811067ffffffffffffffff8211171561320f5761320e6131b8565b5b80604052505050565b6000613222612e63565b905061322e82826131e7565b919050565b600067ffffffffffffffff82111561324e5761324d6131b8565b5b602082029050602081019050919050565b600080fd5b600061327761327284613233565b613218565b9050808382526020820190506020840283018581111561329a5761329961325f565b5b835b818110156132c357806132af8882612ec0565b84526020840193505060208101905061329c565b5050509392505050565b600082601f8301126132e2576132e16131b3565b5b81356132f2848260208601613264565b91505092915050565b6000806040838503121561331257613311612e6d565b5b600083013567ffffffffffffffff8111156133305761332f612e72565b5b61333c858286016132cd565b925050602061334d85828601612f8e565b9150509250929050565b6000806040838503121561336e5761336d612e6d565b5b600061337c85828601612ec0565b925050602061338d85828601612ec0565b9150509250929050565b600080604083850312156133ae576133ad612e6d565b5b60006133bc85828601612ec0565b92505060206133cd85828601612f8e565b9150509250929050565b6000819050919050565b60006133fc6133f76133f284612e77565b6133d7565b612e77565b9050919050565b600061340e826133e1565b9050919050565b600061342082613403565b9050919050565b61343081613415565b82525050565b600060208201905061344b6000830184613427565b92915050565b60006040820190506134666000830185612d87565b6134736020830184612d87565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134b0602083612dbc565b91506134bb8261347a565b602082019050919050565b600060208201905081810360008301526134df816134a3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352082612fd0565b915061352b83612fd0565b9250828201905060ff811115613544576135436134e6565b5b92915050565b7f43616e2774207365742074617820746f6f206869676800000000000000000000600082015250565b6000613580601683612dbc565b915061358b8261354a565b602082019050919050565b600060208201905081810360008301526135af81613573565b9050919050565b60006135c182612d7d565b91506135cc83612d7d565b92508282039050818111156135e4576135e36134e6565b5b92915050565b60006135f582612d7d565b915061360083612d7d565b9250828201905080821115613618576136176134e6565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561367557808604811115613651576136506134e6565b5b60018516156136605780820291505b808102905061366e8561361e565b9450613635565b94509492505050565b60008261368e576001905061374a565b8161369c576000905061374a565b81600181146136b257600281146136bc576136eb565b600191505061374a565b60ff8411156136ce576136cd6134e6565b5b8360020a9150848211156136e5576136e46134e6565b5b5061374a565b5060208310610133831016604e8410600b84101617156137205782820a90508381111561371b5761371a6134e6565b5b61374a565b61372d848484600161362b565b92509050818404811115613744576137436134e6565b5b81810290505b9392505050565b600061375c82612d7d565b915061376783612fd0565b92506137947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461367e565b905092915050565b60006137a782612d7d565b91506137b283612d7d565b92508282026137c081612d7d565b915082820484148315176137d7576137d66134e6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061381882612d7d565b915061382383612d7d565b925082613833576138326137de565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b6000613874601083612dbc565b915061387f8261383e565b602082019050919050565b600060208201905081810360008301526138a381613867565b9050919050565b7f496e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b60006138e0601883612dbc565b91506138eb826138aa565b602082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061395082612d7d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613982576139816134e6565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139e9602683612dbc565b91506139f48261398d565b604082019050919050565b60006020820190508181036000830152613a18816139dc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a7b602483612dbc565b9150613a8682613a1f565b604082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b0d602283612dbc565b9150613b1882613ab1565b604082019050919050565b60006020820190508181036000830152613b3c81613b00565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b9f602583612dbc565b9150613baa82613b43565b604082019050919050565b60006020820190508181036000830152613bce81613b92565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c31602383612dbc565b9150613c3c82613bd5565b604082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613cc3602983612dbc565b9150613cce82613c67565b604082019050919050565b60006020820190508181036000830152613cf281613cb6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000613d2f601a83612dbc565b9150613d3a82613cf9565b602082019050919050565b60006020820190508181036000830152613d5e81613d22565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b6000613dc1602983612dbc565b9150613dcc82613d65565b604082019050919050565b60006020820190508181036000830152613df081613db4565b9050919050565b7f426c61636b6c69737465642c2063616e27742074726164650000000000000000600082015250565b6000613e2d601883612dbc565b9150613e3882613df7565b602082019050919050565b60006020820190508181036000830152613e5c81613e20565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b6000613ebf602683612dbc565b9150613eca82613e63565b604082019050919050565b60006020820190508181036000830152613eee81613eb2565b9050919050565b600081519050613f0481612ea9565b92915050565b600060208284031215613f2057613f1f612e6d565b5b6000613f2e84828501613ef5565b91505092915050565b6000819050919050565b6000613f5c613f57613f5284613f37565b6133d7565b612d7d565b9050919050565b613f6c81613f41565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fa781612e97565b82525050565b6000613fb98383613f9e565b60208301905092915050565b6000602082019050919050565b6000613fdd82613f72565b613fe78185613f7d565b9350613ff283613f8e565b8060005b8381101561402357815161400a8882613fad565b975061401583613fc5565b925050600181019050613ff6565b5085935050505092915050565b600060a0820190506140456000830188612d87565b6140526020830187613f63565b81810360408301526140648186613fd2565b90506140736060830185613189565b6140806080830184612d87565b9695505050505050565b600060c08201905061409f6000830189613189565b6140ac6020830188612d87565b6140b96040830187613f63565b6140c66060830186613f63565b6140d36080830185613189565b6140e060a0830184612d87565b979650505050505050565b6000815190506140fa81612ed5565b92915050565b60008060006060848603121561411957614118612e6d565b5b6000614127868287016140eb565b9350506020614138868287016140eb565b9250506040614149868287016140eb565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614189601d83612dbc565b915061419482614153565b602082019050919050565b600060208201905081810360008301526141b88161417c565b9050919050565b600081905092915050565b50565b60006141da6000836141bf565b91506141e5826141ca565b600082019050919050565b60006141fb826141cd565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614261603a83612dbc565b915061426c82614205565b604082019050919050565b6000602082019050818103600083015261429081614254565b905091905056fea2646970667358221220e56953e76104a1b39030f2ac996a6a22254da81457a244ff9c0e730d4745bae964736f6c63430008110033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c806375f0a8741161012e578063cfe9dde0116100ab578063f2fde38b1161006f578063f2fde38b146108bc578063f837ae07146108e5578063f887ea401461090e578063f8b45b0514610939578063f9d0ee941461096457610246565b8063cfe9dde0146107c3578063dd62ed3e146107ec578063e0a877c814610829578063ee9a5d8214610854578063ef07a1821461089157610246565b8063a457c2d7116100f2578063a457c2d7146106c9578063a8aa1b3114610706578063a9059cbb14610731578063cb0e6f7b1461076e578063cc1776d31461079757610246565b806375f0a874146105e0578063768dc7101461060b5780638c0b5e22146106485780638da5cb5b1461067357806395d89b411461069e57610246565b8063313ce567116101bc5780634f7041a5116101805780634f7041a51461050c57806356a060a2146105385780635966c81e1461056357806370a082311461058c578063715018a6146105c957610246565b8063313ce5671461043b57806339509351146104665780633c576a97146104a35780634ba422bc146104ba5780634cf27997146104e357610246565b80631b0f9381116102035780631b0f9381146103325780631cdd3be31461035b57806321c03a971461039857806323b872dd146103c157806328c61f41146103fe57610246565b80630445b6671461024b57806306fdde0314610276578063095ea7b3146102a15780630f81e11a146102de57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610990565b60405161026d9190612d96565b60405180910390f35b34801561028257600080fd5b5061028b610996565b6040516102989190612e41565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c39190612f01565b6109d3565b6040516102d59190612f5c565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190612fa3565b6109f1565b005b34801561031357600080fd5b5061031c610a8a565b6040516103299190612d96565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190613009565b610a94565b005b34801561036757600080fd5b50610382600480360381019061037d9190613049565b610bfa565b60405161038f9190612f5c565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612fa3565b610c1a565b005b3480156103cd57600080fd5b506103e860048036038101906103e39190613076565b610cb3565b6040516103f59190612f5c565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613049565b610d6b565b6040516104329190612f5c565b60405180910390f35b34801561044757600080fd5b50610450610d8b565b60405161045d91906130d8565b60405180910390f35b34801561047257600080fd5b5061048d60048036038101906104889190612f01565b610d94565b60405161049a9190612f5c565b60405180910390f35b3480156104af57600080fd5b506104b8610e40565b005b3480156104c657600080fd5b506104e160048036038101906104dc91906130f3565b610eb7565b005b3480156104ef57600080fd5b5061050a60048036038101906105059190612f01565b610ffd565b005b34801561051857600080fd5b506105216110cc565b60405161052f929190613133565b60405180910390f35b34801561054457600080fd5b5061054d6110f8565b60405161055a9190612f5c565b60405180910390f35b34801561056f57600080fd5b5061058a6004803603810190610585919061315c565b61110b565b005b34801561059857600080fd5b506105b360048036038101906105ae9190613049565b611214565b6040516105c09190612d96565b60405180910390f35b3480156105d557600080fd5b506105de61125d565b005b3480156105ec57600080fd5b506105f56112e5565b6040516106029190613198565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d9190613049565b61130b565b60405161063f9190612f5c565b60405180910390f35b34801561065457600080fd5b5061065d61132b565b60405161066a9190612d96565b60405180910390f35b34801561067f57600080fd5b50610688611331565b6040516106959190613198565b60405180910390f35b3480156106aa57600080fd5b506106b361135a565b6040516106c09190612e41565b60405180910390f35b3480156106d557600080fd5b506106f060048036038101906106eb9190612f01565b611397565b6040516106fd9190612f5c565b60405180910390f35b34801561071257600080fd5b5061071b611443565b6040516107289190613198565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f01565b611469565b6040516107659190612f5c565b60405180910390f35b34801561077a57600080fd5b5061079560048036038101906107909190613009565b611487565b005b3480156107a357600080fd5b506107ac6115ed565b6040516107ba929190613133565b60405180910390f35b3480156107cf57600080fd5b506107ea60048036038101906107e591906132fb565b611619565b005b3480156107f857600080fd5b50610813600480360381019061080e9190613357565b61172a565b6040516108209190612d96565b60405180910390f35b34801561083557600080fd5b5061083e6117b1565b60405161084b9190612f5c565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190613049565b6117c4565b6040516108889190612d96565b60405180910390f35b34801561089d57600080fd5b506108a66117dc565b6040516108b39190612d96565b60405180910390f35b3480156108c857600080fd5b506108e360048036038101906108de9190613049565b6117e2565b005b3480156108f157600080fd5b5061090c60048036038101906109079190613397565b6118d9565b005b34801561091a57600080fd5b506109236119b0565b6040516109309190613436565b60405180910390f35b34801561094557600080fd5b5061094e6119d6565b60405161095b9190612d96565b60405180910390f35b34801561097057600080fd5b506109796119dc565b604051610987929190613451565b60405180910390f35b600e5481565b60606040518060400160405280600d81526020017f4749474143484144204e4f4f5400000000000000000000000000000000000000815250905090565b60006109e76109e06119ee565b84846119f6565b6001905092915050565b6109f96119ee565b73ffffffffffffffffffffffffffffffffffffffff16610a17611331565b73ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a64906134c6565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6000600d54905090565b610a9c6119ee565b73ffffffffffffffffffffffffffffffffffffffff16610aba611331565b73ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b07906134c6565b60405180910390fd5b60008183610b1e9190613515565b60ff169050601e811115610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90613596565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601360008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610c226119ee565b73ffffffffffffffffffffffffffffffffffffffff16610c40611331565b73ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d906134c6565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b6000610cc0848484611bbf565b610d6084610ccc6119ee565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d166119ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d5b91906135b6565b6119f6565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009905090565b6000610e36610da16119ee565b848460046000610daf6119ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e3191906135ea565b6119f6565b6001905092915050565b6000601160000154601160010154610e5891906135ea565b905080610e6430611214565b11610e6e57600080fd5b600081610e7a30611214565b610e8491906135b6565b9050610eb330601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611bbf565b5050565b610ebf6119ee565b73ffffffffffffffffffffffffffffffffffffffff16610edd611331565b73ffffffffffffffffffffffffffffffffffffffff1614610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a906134c6565b60405180910390fd5b60006009600a610f439190613751565b6103e86005600d54610f55919061379c565b610f5f919061380d565b610f69919061380d565b9050808310158015610f7b5750808210155b610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb19061388a565b60405180910390fd5b6009600a610fc89190613751565b83610fd3919061379c565b600f819055506009600a610fe79190613751565b82610ff2919061379c565b601081905550505050565b6110056119ee565b73ffffffffffffffffffffffffffffffffffffffff16611023611331565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611070906134c6565b60405180910390fd5b804261108591906135ea565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60138060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b600c60009054906101000a900460ff1681565b6111136119ee565b73ffffffffffffffffffffffffffffffffffffffff16611131611331565b73ffffffffffffffffffffffffffffffffffffffff1614611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906134c6565b60405180910390fd5b804710156111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c1906138f6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611210573d6000803e3d6000fd5b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112656119ee565b73ffffffffffffffffffffffffffffffffffffffff16611283611331565b73ffffffffffffffffffffffffffffffffffffffff16146112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d0906134c6565b60405180910390fd5b6112e36000612487565b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f47434e4f4f540000000000000000000000000000000000000000000000000000815250905090565b60006114396113a46119ee565b8484600460006113b26119ee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143491906135b6565b6119f6565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061147d6114766119ee565b8484611bbf565b6001905092915050565b61148f6119ee565b73ffffffffffffffffffffffffffffffffffffffff166114ad611331565b73ffffffffffffffffffffffffffffffffffffffff1614611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa906134c6565b60405180910390fd5b600081836115119190613515565b60ff169050605081111561155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190613596565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250601460008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b60148060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b6116216119ee565b73ffffffffffffffffffffffffffffffffffffffff1661163f611331565b73ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c906134c6565b60405180910390fd5b60005b82518110156117255781600760008584815181106116b9576116b8613916565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061171d90613945565b915050611698565b505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900460ff1681565b60086020528060005260406000206000915090505481565b600b5481565b6117ea6119ee565b73ffffffffffffffffffffffffffffffffffffffff16611808611331565b73ffffffffffffffffffffffffffffffffffffffff161461185e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611855906134c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c4906139ff565b60405180910390fd5b6118d681612487565b50565b6118e16119ee565b73ffffffffffffffffffffffffffffffffffffffff166118ff611331565b73ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906134c6565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60118060000154908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90613a91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90613b23565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bb29190612d96565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590613bb5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490613c47565b60405180910390fd5b60008111611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd790613cd9565b60405180910390fd5b600c60009054906101000a900460ff1680611d2d5750611cfe611331565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611d6a5750611d3b611331565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da090613d45565b60405180910390fd5b600f5481111580611e035750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3990613dd7565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ee65750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c90613e43565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fcf5760105481611f8384611214565b611f8d91906135ea565b1115611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590613ed5565b60405180910390fd5b5b600e54611fdb30611214565b10158015611ff85750601654601754611ff491906135ea565b4210155b80156120115750601560149054906101000a900460ff16155b801561206b5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120aa575061207a611331565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e957506120b9611331565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120f7576120f661254b565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461214691906135b6565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121f65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123c6576122568285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146126bf565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361233157600a60009054906101000a900460ff161561232c57600b60008154809291906122d590613945565b9190505550600954426122e891906135ea565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6123c5565b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146123c457600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442106123c357600080fd5b5b5b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461241591906135ea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124799190612d96565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601560146101000a81548160ff021916908315150217905550600060116000015411156126065760006125846011600001546128db565b9050600081111561260457601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125f7573d6000803e3d6000fd5b5060006011600001819055505b505b6000601160010154111561266f5760006002601160010154612628919061380d565b905060008160116001015461263d91906135b6565b9050600061264a836128db565b905060008111156126605761265f8282612b35565b5b60006011600101819055505050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a1426017819055506000601560146101000a81548160ff021916908315150217905550565b60008060136040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff16815250509050821561275b5760146040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090505b60006064826000015160ff1687612772919061379c565b61277c919061380d565b905060006064836020015160ff1688612795919061379c565b61279f919061380d565b905060008211156127c75781601160000160008282546127bf91906135ea565b925050819055505b60008111156127ed5780601160010160008282546127e591906135ea565b925050819055505b600081836127fb91906135ea565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461284c91906135ea565b9250508190555060008111156128c2573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128b99190612d96565b60405180910390a35b80886128ce91906135b6565b9450505050509392505050565b6000804790506000600267ffffffffffffffff8111156128fe576128fd6131b8565b5b60405190808252806020026020018201604052801561292c5781602001602082028036833780820191505090505b509050308160008151811061294457612943613916565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0f9190613f0a565b81600181518110612a2357612a22613916565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a8a30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866119f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612aee959493929190614030565b600060405180830381600087803b158015612b0857600080fd5b505af1158015612b1c573d6000803e3d6000fd5b505050508147612b2c91906135b6565b92505050919050565b612b6230600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119f6565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833086600080612bb0611331565b426040518863ffffffff1660e01b8152600401612bd29695949392919061408a565b60606040518083038185885af1158015612bf0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c159190614100565b5091505060008183612c2791906135b6565b1115612c8457612c838183612c3c91906135b6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c8990919063ffffffff16565b5b505050565b80471015612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc39061419f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612cf2906141f0565b60006040518083038185875af1925050503d8060008114612d2f576040519150601f19603f3d011682016040523d82523d6000602084013e612d34565b606091505b5050905080612d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6f90614277565b60405180910390fd5b505050565b6000819050919050565b612d9081612d7d565b82525050565b6000602082019050612dab6000830184612d87565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612deb578082015181840152602081019050612dd0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e1382612db1565b612e1d8185612dbc565b9350612e2d818560208601612dcd565b612e3681612df7565b840191505092915050565b60006020820190508181036000830152612e5b8184612e08565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ea282612e77565b9050919050565b612eb281612e97565b8114612ebd57600080fd5b50565b600081359050612ecf81612ea9565b92915050565b612ede81612d7d565b8114612ee957600080fd5b50565b600081359050612efb81612ed5565b92915050565b60008060408385031215612f1857612f17612e6d565b5b6000612f2685828601612ec0565b9250506020612f3785828601612eec565b9150509250929050565b60008115159050919050565b612f5681612f41565b82525050565b6000602082019050612f716000830184612f4d565b92915050565b612f8081612f41565b8114612f8b57600080fd5b50565b600081359050612f9d81612f77565b92915050565b600060208284031215612fb957612fb8612e6d565b5b6000612fc784828501612f8e565b91505092915050565b600060ff82169050919050565b612fe681612fd0565b8114612ff157600080fd5b50565b60008135905061300381612fdd565b92915050565b600080604083850312156130205761301f612e6d565b5b600061302e85828601612ff4565b925050602061303f85828601612ff4565b9150509250929050565b60006020828403121561305f5761305e612e6d565b5b600061306d84828501612ec0565b91505092915050565b60008060006060848603121561308f5761308e612e6d565b5b600061309d86828701612ec0565b93505060206130ae86828701612ec0565b92505060406130bf86828701612eec565b9150509250925092565b6130d281612fd0565b82525050565b60006020820190506130ed60008301846130c9565b92915050565b6000806040838503121561310a57613109612e6d565b5b600061311885828601612eec565b925050602061312985828601612eec565b9150509250929050565b600060408201905061314860008301856130c9565b61315560208301846130c9565b9392505050565b60006020828403121561317257613171612e6d565b5b600061318084828501612eec565b91505092915050565b61319281612e97565b82525050565b60006020820190506131ad6000830184613189565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131f082612df7565b810181811067ffffffffffffffff8211171561320f5761320e6131b8565b5b80604052505050565b6000613222612e63565b905061322e82826131e7565b919050565b600067ffffffffffffffff82111561324e5761324d6131b8565b5b602082029050602081019050919050565b600080fd5b600061327761327284613233565b613218565b9050808382526020820190506020840283018581111561329a5761329961325f565b5b835b818110156132c357806132af8882612ec0565b84526020840193505060208101905061329c565b5050509392505050565b600082601f8301126132e2576132e16131b3565b5b81356132f2848260208601613264565b91505092915050565b6000806040838503121561331257613311612e6d565b5b600083013567ffffffffffffffff8111156133305761332f612e72565b5b61333c858286016132cd565b925050602061334d85828601612f8e565b9150509250929050565b6000806040838503121561336e5761336d612e6d565b5b600061337c85828601612ec0565b925050602061338d85828601612ec0565b9150509250929050565b600080604083850312156133ae576133ad612e6d565b5b60006133bc85828601612ec0565b92505060206133cd85828601612f8e565b9150509250929050565b6000819050919050565b60006133fc6133f76133f284612e77565b6133d7565b612e77565b9050919050565b600061340e826133e1565b9050919050565b600061342082613403565b9050919050565b61343081613415565b82525050565b600060208201905061344b6000830184613427565b92915050565b60006040820190506134666000830185612d87565b6134736020830184612d87565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134b0602083612dbc565b91506134bb8261347a565b602082019050919050565b600060208201905081810360008301526134df816134a3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352082612fd0565b915061352b83612fd0565b9250828201905060ff811115613544576135436134e6565b5b92915050565b7f43616e2774207365742074617820746f6f206869676800000000000000000000600082015250565b6000613580601683612dbc565b915061358b8261354a565b602082019050919050565b600060208201905081810360008301526135af81613573565b9050919050565b60006135c182612d7d565b91506135cc83612d7d565b92508282039050818111156135e4576135e36134e6565b5b92915050565b60006135f582612d7d565b915061360083612d7d565b9250828201905080821115613618576136176134e6565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561367557808604811115613651576136506134e6565b5b60018516156136605780820291505b808102905061366e8561361e565b9450613635565b94509492505050565b60008261368e576001905061374a565b8161369c576000905061374a565b81600181146136b257600281146136bc576136eb565b600191505061374a565b60ff8411156136ce576136cd6134e6565b5b8360020a9150848211156136e5576136e46134e6565b5b5061374a565b5060208310610133831016604e8410600b84101617156137205782820a90508381111561371b5761371a6134e6565b5b61374a565b61372d848484600161362b565b92509050818404811115613744576137436134e6565b5b81810290505b9392505050565b600061375c82612d7d565b915061376783612fd0565b92506137947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461367e565b905092915050565b60006137a782612d7d565b91506137b283612d7d565b92508282026137c081612d7d565b915082820484148315176137d7576137d66134e6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061381882612d7d565b915061382383612d7d565b925082613833576138326137de565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b6000613874601083612dbc565b915061387f8261383e565b602082019050919050565b600060208201905081810360008301526138a381613867565b9050919050565b7f496e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b60006138e0601883612dbc565b91506138eb826138aa565b602082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061395082612d7d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613982576139816134e6565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139e9602683612dbc565b91506139f48261398d565b604082019050919050565b60006020820190508181036000830152613a18816139dc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a7b602483612dbc565b9150613a8682613a1f565b604082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b0d602283612dbc565b9150613b1882613ab1565b604082019050919050565b60006020820190508181036000830152613b3c81613b00565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b9f602583612dbc565b9150613baa82613b43565b604082019050919050565b60006020820190508181036000830152613bce81613b92565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c31602383612dbc565b9150613c3c82613bd5565b604082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613cc3602983612dbc565b9150613cce82613c67565b604082019050919050565b60006020820190508181036000830152613cf281613cb6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000613d2f601a83612dbc565b9150613d3a82613cf9565b602082019050919050565b60006020820190508181036000830152613d5e81613d22565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b6000613dc1602983612dbc565b9150613dcc82613d65565b604082019050919050565b60006020820190508181036000830152613df081613db4565b9050919050565b7f426c61636b6c69737465642c2063616e27742074726164650000000000000000600082015250565b6000613e2d601883612dbc565b9150613e3882613df7565b602082019050919050565b60006020820190508181036000830152613e5c81613e20565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b6000613ebf602683612dbc565b9150613eca82613e63565b604082019050919050565b60006020820190508181036000830152613eee81613eb2565b9050919050565b600081519050613f0481612ea9565b92915050565b600060208284031215613f2057613f1f612e6d565b5b6000613f2e84828501613ef5565b91505092915050565b6000819050919050565b6000613f5c613f57613f5284613f37565b6133d7565b612d7d565b9050919050565b613f6c81613f41565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fa781612e97565b82525050565b6000613fb98383613f9e565b60208301905092915050565b6000602082019050919050565b6000613fdd82613f72565b613fe78185613f7d565b9350613ff283613f8e565b8060005b8381101561402357815161400a8882613fad565b975061401583613fc5565b925050600181019050613ff6565b5085935050505092915050565b600060a0820190506140456000830188612d87565b6140526020830187613f63565b81810360408301526140648186613fd2565b90506140736060830185613189565b6140806080830184612d87565b9695505050505050565b600060c08201905061409f6000830189613189565b6140ac6020830188612d87565b6140b96040830187613f63565b6140c66060830186613f63565b6140d36080830185613189565b6140e060a0830184612d87565b979650505050505050565b6000815190506140fa81612ed5565b92915050565b60008060006060848603121561411957614118612e6d565b5b6000614127868287016140eb565b9350506020614138868287016140eb565b9250506040614149868287016140eb565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614189601d83612dbc565b915061419482614153565b602082019050919050565b600060208201905081810360008301526141b88161417c565b9050919050565b600081905092915050565b50565b60006141da6000836141bf565b91506141e5826141ca565b600082019050919050565b60006141fb826141cd565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614261603a83612dbc565b915061426c82614205565b604082019050919050565b6000602082019050818103600083015261429081614254565b905091905056fea2646970667358221220e56953e76104a1b39030f2ac996a6a22254da81457a244ff9c0e730d4745bae964736f6c63430008110033

Deployed Bytecode Sourcemap

3329:11751:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4112:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5852:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6683:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10246:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6129:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8576:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3736:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8225:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6852:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3671:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6038:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7126:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9717:517;;;;;;;;;;;;;:::i;:::-;;9115:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10358:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4627:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3964:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9509:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6232:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1311:94;;;;;;;;;;;;;:::i;:::-;;4706:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3613:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4178:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1088:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5943;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7349:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3452:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6357:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8843:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4663:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8352:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6532:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3892:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3790:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3931:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1413:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8072:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3424:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4242:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4579:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4112:58;;;;:::o;5852:83::-;5889:13;5922:5;;;;;;;;;;;;;;;;;5915:12;;5852:83;:::o;6683:161::-;6758:4;6775:39;6784:12;:10;:12::i;:::-;6798:7;6807:6;6775:8;:39::i;:::-;6832:4;6825:11;;6683:161;;;;:::o;10246:104::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10335:7:::1;10320:12;;:22;;;;;;;;;;;;;;;;;;10246:104:::0;:::o;6129:95::-;6182:7;6209;;6202:14;;6129:95;:::o;8576:259::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8665:9:::1;8693:5;8678:12;:20;;;;:::i;:::-;8665:33;;;;8725:2;8717:4;:10;;8709:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8774:23;;;;;;;;8778:12;8774:23;;;;;;8791:5;8774:23;;;;::::0;8765:6:::1;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8813:14;;;;;;;;;;8654:181;8576:259:::0;;:::o;3736:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;8225:115::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8316:14:::1;8300:13;;:30;;;;;;;;;;;;;;;;;;8225:115:::0;:::o;6852:266::-;6950:4;6967:36;6977:6;6985:9;6996:6;6967:9;:36::i;:::-;7014:74;7023:6;7031:12;:10;:12::i;:::-;7081:6;7045:11;:19;7057:6;7045:19;;;;;;;;;;;;;;;:33;7065:12;:10;:12::i;:::-;7045:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;7014:8;:74::i;:::-;7106:4;7099:11;;6852:266;;;;;:::o;3671:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;6038:83::-;6079:5;4041:1;6097:16;;6038:83;:::o;7126:215::-;7214:4;7231:80;7240:12;:10;:12::i;:::-;7254:7;7300:10;7263:11;:25;7275:12;:10;:12::i;:::-;7263:25;;;;;;;;;;;;;;;:34;7289:7;7263:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7231:8;:80::i;:::-;7329:4;7322:11;;7126:215;;;;:::o;9717:517::-;9934:21;9988:18;:34;;;9958:18;:27;;;:64;;;;:::i;:::-;9934:88;;10069:16;10041:24;10059:4;10041:9;:24::i;:::-;:44;10033:53;;;;;;10097:17;10144:16;10117:24;10135:4;10117:9;:24::i;:::-;:43;;;;:::i;:::-;10097:63;;10171:55;10189:4;10196:15;;;;;;;;;;;10213:12;10171:9;:55::i;:::-;9759:475;;9717:517::o;9115:386::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9214:20:::1;4041:1;9261:2;:13;;;;:::i;:::-;9252:4;9248:1;9238:7;;:11;;;;:::i;:::-;:18;;;;:::i;:::-;9237:38;;;;:::i;:::-;9214:61;;9309:15;9294:11;:30;;:68;;;;;9347:15;9328;:34;;9294:68;9286:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;4041:1;9423:2;:13;;;;:::i;:::-;9408:11;:29;;;;:::i;:::-;9394:11;:43;;;;4041:1;9479:2;:13;;;;:::i;:::-;9460:15;:33;;;;:::i;:::-;9448:9;:45;;;;9203:298;9115:386:::0;;:::o;10358:151::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10496:5:::1;10478:15;:23;;;;:::i;:::-;10455:12;:20;10468:6;10455:20;;;;;;;;;;;;;;;:46;;;;10358:151:::0;;:::o;4627:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3964:33::-;;;;;;;;;;;;;:::o;9509:200::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9613:9:::1;9588:21;:34;;9580:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9670:10;9662:28;;:39;9691:9;9662:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9509:200:::0;:::o;6232:117::-;6298:7;6325;:16;6333:7;6325:16;;;;;;;;;;;;;;;;6318:23;;6232:117;;;:::o;1311:94::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1376:21:::1;1394:1;1376:9;:21::i;:::-;1311:94::o:0;4706:75::-;;;;;;;;;;;;;:::o;3613:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;4178:57::-;;;;:::o;1088:87::-;1134:7;1161:6;;;;;;;;;;;1154:13;;1088:87;:::o;5943:::-;5982:13;6015:7;;;;;;;;;;;;;;;;;6008:14;;5943:87;:::o;7349:225::-;7442:4;7459:85;7468:12;:10;:12::i;:::-;7482:7;7528:15;7491:11;:25;7503:12;:10;:12::i;:::-;7491:25;;;;;;;;;;;;;;;:34;7517:7;7491:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;7459:8;:85::i;:::-;7562:4;7555:11;;7349:225;;;;:::o;3452:19::-;;;;;;;;;;;;;:::o;6357:167::-;6435:4;6452:42;6462:12;:10;:12::i;:::-;6476:9;6487:6;6452:9;:42::i;:::-;6512:4;6505:11;;6357:167;;;;:::o;8843:260::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8933:9:::1;8960:5;8945:12;:20;;;;:::i;:::-;8933:32;;;;8992:2;8984:4;:10;;8976:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;9042:23;;;;;;;;9046:12;9042:23;;;;;;9059:5;9042:23;;;;::::0;9032:7:::1;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9081:14;;;;;;;;;;8922:181;8843:260:::0;;:::o;4663:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8352:216::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8460:9:::1;8456:105;8478:8;:15;8474:1;:19;8456:105;;;8544:5;8514:14;:27;8529:8;8538:1;8529:11;;;;;;;;:::i;:::-;;;;;;;;8514:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;8495:3;;;;;:::i;:::-;;;;8456:105;;;;8352:216:::0;;:::o;6532:143::-;6613:7;6640:11;:18;6652:5;6640:18;;;;;;;;;;;;;;;:27;6659:7;6640:27;;;;;;;;;;;;;;;;6633:34;;6532:143;;;;:::o;3892:32::-;;;;;;;;;;;;;:::o;3790:48::-;;;;;;;;;;;;;;;;;:::o;3931:26::-;;;;:::o;1413:192::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1522:1:::1;1502:22;;:8;:22;;::::0;1494:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1578:19;1588:8;1578:9;:19::i;:::-;1413:192:::0;:::o;8072:141::-;1234:12;:10;:12::i;:::-;1223:23;;:7;:5;:7::i;:::-;:23;;;1215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8192:13:::1;8166:14;:23;8181:7;8166:23;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8072:141:::0;;:::o;3424:21::-;;;;;;;;;;;;;:::o;4242:56::-;;;;:::o;4579:39::-;;;;;;;;;;;;;;:::o;609:115::-;662:15;705:10;690:26;;609:115;:::o;7582:335::-;7692:1;7675:19;;:5;:19;;;7667:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7773:1;7754:21;;:7;:21;;;7746:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7855:6;7825:11;:18;7837:5;7825:18;;;;;;;;;;;;;;;:27;7844:7;7825:27;;;;;;;;;;;;;;;:36;;;;7893:7;7877:32;;7886:5;7877:32;;;7902:6;7877:32;;;;;;:::i;:::-;;;;;;;;7582:335;;;:::o;11396:1664::-;11498:1;11482:18;;:4;:18;;;11474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11575:1;11561:16;;:2;:16;;;11553:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11645:1;11636:6;:10;11628:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11711:13;;;;;;;;;;;:32;;;;11736:7;:5;:7::i;:::-;11728:15;;:4;:15;;;11711:32;:49;;;;11753:7;:5;:7::i;:::-;11747:13;;:2;:13;;;11711:49;11703:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;11820:11;;11810:6;:21;;:56;;;;11835:25;:31;11861:4;11835:31;;;;;;;;;;;;;;;;;;;;;;;;;11810:56;11802:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;11932:14;:20;11947:4;11932:20;;;;;;;;;;;;;;;;;;;;;;;;;11931:21;:44;;;;;11957:14;:18;11972:2;11957:18;;;;;;;;;;;;;;;;;;;;;;;;;11956:19;11931:44;11923:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12021:25;:29;12047:2;12021:29;;;;;;;;;;;;;;;;;;;;;;;;;12017:134;;12099:9;;12089:6;12073:13;12083:2;12073:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;12065:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;12017:134;12204:13;;12176:24;12194:4;12176:9;:24::i;:::-;:41;;:91;;;;;12253:13;;12241:9;;:25;;;;:::i;:::-;12221:15;:46;;12176:91;:104;;;;;12272:8;;;;;;;;;;;12271:9;12176:104;:120;;;;;12292:4;;;;;;;;;;;12284:12;;:4;:12;;;;12176:120;:139;;;;;12308:7;:5;:7::i;:::-;12300:15;;:4;:15;;;;12176:139;:156;;;;;12325:7;:5;:7::i;:::-;12319:13;;:2;:13;;;;12176:156;12172:191;;;12347:16;:14;:16::i;:::-;12172:191;12403:6;12386:7;:13;12394:4;12386:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;12420:22;12445:6;12420:31;;12476:18;:24;12495:4;12476:24;;;;;;;;;;;;;;;;;;;;;;;;;12475:25;:52;;;;;12505:18;:22;12524:2;12505:22;;;;;;;;;;;;;;;;;;;;;;;;;12504:23;12475:52;12472:489;;;12560:39;12574:6;12582:4;12594;;;;;;;;;;;12588:10;;:2;:10;;;12560:13;:39::i;:::-;12543:56;;12626:4;;;;;;;;;;;12618:12;;:4;:12;;;12614:336;;12653:12;;;;;;;;;;;12650:150;;;12689:11;;:13;;;;;;;;;:::i;:::-;;;;;;12762:18;;12744:15;:36;;;;:::i;:::-;12725:12;:16;12738:2;12725:16;;;;;;;;;;;;;;;:55;;;;12650:150;12614:336;;;12864:1;12842:12;:18;12855:4;12842:18;;;;;;;;;;;;;;;;:23;12838:95;;12914:12;:18;12927:4;12914:18;;;;;;;;;;;;;;;;12896:15;:36;12888:45;;;;;;12838:95;12614:336;12472:489;12988:14;12973:7;:11;12981:2;12973:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;13033:2;13018:34;;13027:4;13018:34;;;13037:14;13018:34;;;;;;:::i;:::-;;;;;;;;11463:1597;11396:1664;;;:::o;1613:173::-;1669:16;1688:6;;;;;;;;;;;1669:25;;1714:8;1705:6;;:17;;;;;;;;;;;;;;;;;;1769:8;1738:40;;1759:8;1738:40;;;;;;;;;;;;1658:128;1613:173;:::o;13068:829::-;4932:4;4921:8;;:15;;;;;;;;;;;;;;;;;;13174:1:::1;13137:18;:34;;;:38;13134:311;;;13191:18;13212:52;13229:18;:34;;;13212:16;:52::i;:::-;13191:73;;13295:1;13282:10;:14;13279:155;;;13324:15;;;;;;;;;;;13316:33;;:45;13350:10;13316:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13417:1;13380:18;:34;;:38;;;;13279:155;13176:269;13134:311;13493:1;13463:18;:27;;;:31;13460:356;;;13510:9;13552:1;13522:18;:27;;;:31;;;;:::i;:::-;13510:43;;13568:14;13615:4;13585:18;:27;;;:34;;;;:::i;:::-;13568:51;;13634:14;13651:22;13668:4;13651:16;:22::i;:::-;13634:39;;13704:1;13692:9;:13;13688:70;;;13724:34;13737:9;13748;13724:12;:34::i;:::-;13688:70;13803:1;13773:18;:27;;:31;;;;13495:321;;;13460:356;13833:16;;;;;;;;;;13874:15;13862:9;:27;;;;4970:5:::0;4959:8;;:16;;;;;;;;;;;;;;;;;;13068:829::o;10572:816::-;10651:7;10670:19;10692:6;10670:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10713:6;10709:56;;;10746:7;10735:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10709:56;10777:23;10836:3;10812:8;:21;;;10803:30;;:6;:30;;;;:::i;:::-;:36;;;;:::i;:::-;10777:62;;10850:16;10895:3;10878:8;:14;;;10869:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;10850:48;;10935:1;10914:18;:22;10911:96;;;10989:18;10951;:34;;;:56;;;;;;;:::i;:::-;;;;;;;;10911:96;11037:1;11023:11;:15;11020:75;;;11084:11;11053:18;:27;;;:42;;;;;;;:::i;:::-;;;;;;;;11020:75;11108:21;11153:11;11132:18;:32;;;;:::i;:::-;11108:56;;11203:16;11177:7;:22;11193:4;11177:22;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;11252:1;11233:16;:20;11230:91;;;11297:4;11273:48;;11283:4;11273:48;;;11304:16;11273:48;;;;;;:::i;:::-;;;;;;;;11230:91;11363:16;11354:6;:25;;;;:::i;:::-;11346:34;;;;;;10572:816;;;;;:::o;13905:581::-;13969:7;13989:22;14014:21;13989:46;;14046:21;14084:1;14070:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14046:40;;14115:4;14097;14102:1;14097:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14141:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14131:4;14136:1;14131:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14167:53;14184:4;14199:6;;;;;;;;;;;14208:11;14167:8;:53::i;:::-;14233:6;;;;;;;;;;;:57;;;14305:11;14331:1;14347:4;14374;14394:15;14233:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14463:14;14439:21;:38;;;;:::i;:::-;14431:47;;;;13905:581;;;:::o;14494:514::-;14575:53;14592:4;14607:6;;;;;;;;;;;14616:11;14575:8;:53::i;:::-;14643:24;14672:6;;;;;;;;;;;:22;;;14703:9;14737:4;14757:11;14783:1;14799;14815:7;:5;:7::i;:::-;14837:15;14672:191;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14641:222;;;;14919:1;14900:16;14888:9;:28;;;;:::i;:::-;:32;14884:116;;;14935:65;14983:16;14971:9;:28;;;;:::i;:::-;14943:15;;;;;;;;;;;14935:34;;;;:65;;;;:::i;:::-;14884:116;14564:444;14494:514;;:::o;252:317::-;367:6;342:21;:31;;334:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;421:12;439:9;:14;;461:6;439:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;420:52;;;491:7;483:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;323:246;252:317;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:323::-;4115:6;4164:2;4152:9;4143:7;4139:23;4135:32;4132:119;;;4170:79;;:::i;:::-;4132:119;4290:1;4315:50;4357:7;4348:6;4337:9;4333:22;4315:50;:::i;:::-;4305:60;;4261:114;4059:323;;;;:::o;4388:86::-;4423:7;4463:4;4456:5;4452:16;4441:27;;4388:86;;;:::o;4480:118::-;4551:22;4567:5;4551:22;:::i;:::-;4544:5;4541:33;4531:61;;4588:1;4585;4578:12;4531:61;4480:118;:::o;4604:135::-;4648:5;4686:6;4673:20;4664:29;;4702:31;4727:5;4702:31;:::i;:::-;4604:135;;;;:::o;4745:466::-;4809:6;4817;4866:2;4854:9;4845:7;4841:23;4837:32;4834:119;;;4872:79;;:::i;:::-;4834:119;4992:1;5017:51;5060:7;5051:6;5040:9;5036:22;5017:51;:::i;:::-;5007:61;;4963:115;5117:2;5143:51;5186:7;5177:6;5166:9;5162:22;5143:51;:::i;:::-;5133:61;;5088:116;4745:466;;;;;:::o;5217:329::-;5276:6;5325:2;5313:9;5304:7;5300:23;5296:32;5293:119;;;5331:79;;:::i;:::-;5293:119;5451:1;5476:53;5521:7;5512:6;5501:9;5497:22;5476:53;:::i;:::-;5466:63;;5422:117;5217:329;;;;:::o;5552:619::-;5629:6;5637;5645;5694:2;5682:9;5673:7;5669:23;5665:32;5662:119;;;5700:79;;:::i;:::-;5662:119;5820:1;5845:53;5890:7;5881:6;5870:9;5866:22;5845:53;:::i;:::-;5835:63;;5791:117;5947:2;5973:53;6018:7;6009:6;5998:9;5994:22;5973:53;:::i;:::-;5963:63;;5918:118;6075:2;6101:53;6146:7;6137:6;6126:9;6122:22;6101:53;:::i;:::-;6091:63;;6046:118;5552:619;;;;;:::o;6177:112::-;6260:22;6276:5;6260:22;:::i;:::-;6255:3;6248:35;6177:112;;:::o;6295:214::-;6384:4;6422:2;6411:9;6407:18;6399:26;;6435:67;6499:1;6488:9;6484:17;6475:6;6435:67;:::i;:::-;6295:214;;;;:::o;6515:474::-;6583:6;6591;6640:2;6628:9;6619:7;6615:23;6611:32;6608:119;;;6646:79;;:::i;:::-;6608:119;6766:1;6791:53;6836:7;6827:6;6816:9;6812:22;6791:53;:::i;:::-;6781:63;;6737:117;6893:2;6919:53;6964:7;6955:6;6944:9;6940:22;6919:53;:::i;:::-;6909:63;;6864:118;6515:474;;;;;:::o;6995:316::-;7108:4;7146:2;7135:9;7131:18;7123:26;;7159:67;7223:1;7212:9;7208:17;7199:6;7159:67;:::i;:::-;7236:68;7300:2;7289:9;7285:18;7276:6;7236:68;:::i;:::-;6995:316;;;;;:::o;7317:329::-;7376:6;7425:2;7413:9;7404:7;7400:23;7396:32;7393:119;;;7431:79;;:::i;:::-;7393:119;7551:1;7576:53;7621:7;7612:6;7601:9;7597:22;7576:53;:::i;:::-;7566:63;;7522:117;7317:329;;;;:::o;7652:118::-;7739:24;7757:5;7739:24;:::i;:::-;7734:3;7727:37;7652:118;;:::o;7776:222::-;7869:4;7907:2;7896:9;7892:18;7884:26;;7920:71;7988:1;7977:9;7973:17;7964:6;7920:71;:::i;:::-;7776:222;;;;:::o;8004:117::-;8113:1;8110;8103:12;8127:180;8175:77;8172:1;8165:88;8272:4;8269:1;8262:15;8296:4;8293:1;8286:15;8313:281;8396:27;8418:4;8396:27;:::i;:::-;8388:6;8384:40;8526:6;8514:10;8511:22;8490:18;8478:10;8475:34;8472:62;8469:88;;;8537:18;;:::i;:::-;8469:88;8577:10;8573:2;8566:22;8356:238;8313:281;;:::o;8600:129::-;8634:6;8661:20;;:::i;:::-;8651:30;;8690:33;8718:4;8710:6;8690:33;:::i;:::-;8600:129;;;:::o;8735:311::-;8812:4;8902:18;8894:6;8891:30;8888:56;;;8924:18;;:::i;:::-;8888:56;8974:4;8966:6;8962:17;8954:25;;9034:4;9028;9024:15;9016:23;;8735:311;;;:::o;9052:117::-;9161:1;9158;9151:12;9192:710;9288:5;9313:81;9329:64;9386:6;9329:64;:::i;:::-;9313:81;:::i;:::-;9304:90;;9414:5;9443:6;9436:5;9429:21;9477:4;9470:5;9466:16;9459:23;;9530:4;9522:6;9518:17;9510:6;9506:30;9559:3;9551:6;9548:15;9545:122;;;9578:79;;:::i;:::-;9545:122;9693:6;9676:220;9710:6;9705:3;9702:15;9676:220;;;9785:3;9814:37;9847:3;9835:10;9814:37;:::i;:::-;9809:3;9802:50;9881:4;9876:3;9872:14;9865:21;;9752:144;9736:4;9731:3;9727:14;9720:21;;9676:220;;;9680:21;9294:608;;9192:710;;;;;:::o;9925:370::-;9996:5;10045:3;10038:4;10030:6;10026:17;10022:27;10012:122;;10053:79;;:::i;:::-;10012:122;10170:6;10157:20;10195:94;10285:3;10277:6;10270:4;10262:6;10258:17;10195:94;:::i;:::-;10186:103;;10002:293;9925:370;;;;:::o;10301:678::-;10391:6;10399;10448:2;10436:9;10427:7;10423:23;10419:32;10416:119;;;10454:79;;:::i;:::-;10416:119;10602:1;10591:9;10587:17;10574:31;10632:18;10624:6;10621:30;10618:117;;;10654:79;;:::i;:::-;10618:117;10759:78;10829:7;10820:6;10809:9;10805:22;10759:78;:::i;:::-;10749:88;;10545:302;10886:2;10912:50;10954:7;10945:6;10934:9;10930:22;10912:50;:::i;:::-;10902:60;;10857:115;10301:678;;;;;:::o;10985:474::-;11053:6;11061;11110:2;11098:9;11089:7;11085:23;11081:32;11078:119;;;11116:79;;:::i;:::-;11078:119;11236:1;11261:53;11306:7;11297:6;11286:9;11282:22;11261:53;:::i;:::-;11251:63;;11207:117;11363:2;11389:53;11434:7;11425:6;11414:9;11410:22;11389:53;:::i;:::-;11379:63;;11334:118;10985:474;;;;;:::o;11465:468::-;11530:6;11538;11587:2;11575:9;11566:7;11562:23;11558:32;11555:119;;;11593:79;;:::i;:::-;11555:119;11713:1;11738:53;11783:7;11774:6;11763:9;11759:22;11738:53;:::i;:::-;11728:63;;11684:117;11840:2;11866:50;11908:7;11899:6;11888:9;11884:22;11866:50;:::i;:::-;11856:60;;11811:115;11465:468;;;;;:::o;11939:60::-;11967:3;11988:5;11981:12;;11939:60;;;:::o;12005:142::-;12055:9;12088:53;12106:34;12115:24;12133:5;12115:24;:::i;:::-;12106:34;:::i;:::-;12088:53;:::i;:::-;12075:66;;12005:142;;;:::o;12153:126::-;12203:9;12236:37;12267:5;12236:37;:::i;:::-;12223:50;;12153:126;;;:::o;12285:141::-;12350:9;12383:37;12414:5;12383:37;:::i;:::-;12370:50;;12285:141;;;:::o;12432:161::-;12534:52;12580:5;12534:52;:::i;:::-;12529:3;12522:65;12432:161;;:::o;12599:252::-;12707:4;12745:2;12734:9;12730:18;12722:26;;12758:86;12841:1;12830:9;12826:17;12817:6;12758:86;:::i;:::-;12599:252;;;;:::o;12857:332::-;12978:4;13016:2;13005:9;13001:18;12993:26;;13029:71;13097:1;13086:9;13082:17;13073:6;13029:71;:::i;:::-;13110:72;13178:2;13167:9;13163:18;13154:6;13110:72;:::i;:::-;12857:332;;;;;:::o;13195:182::-;13335:34;13331:1;13323:6;13319:14;13312:58;13195:182;:::o;13383:366::-;13525:3;13546:67;13610:2;13605:3;13546:67;:::i;:::-;13539:74;;13622:93;13711:3;13622:93;:::i;:::-;13740:2;13735:3;13731:12;13724:19;;13383:366;;;:::o;13755:419::-;13921:4;13959:2;13948:9;13944:18;13936:26;;14008:9;14002:4;13998:20;13994:1;13983:9;13979:17;13972:47;14036:131;14162:4;14036:131;:::i;:::-;14028:139;;13755:419;;;:::o;14180:180::-;14228:77;14225:1;14218:88;14325:4;14322:1;14315:15;14349:4;14346:1;14339:15;14366:188;14404:3;14423:18;14439:1;14423:18;:::i;:::-;14418:23;;14455:18;14471:1;14455:18;:::i;:::-;14450:23;;14496:1;14493;14489:9;14482:16;;14519:4;14514:3;14511:13;14508:39;;;14527:18;;:::i;:::-;14508:39;14366:188;;;;:::o;14560:172::-;14700:24;14696:1;14688:6;14684:14;14677:48;14560:172;:::o;14738:366::-;14880:3;14901:67;14965:2;14960:3;14901:67;:::i;:::-;14894:74;;14977:93;15066:3;14977:93;:::i;:::-;15095:2;15090:3;15086:12;15079:19;;14738:366;;;:::o;15110:419::-;15276:4;15314:2;15303:9;15299:18;15291:26;;15363:9;15357:4;15353:20;15349:1;15338:9;15334:17;15327:47;15391:131;15517:4;15391:131;:::i;:::-;15383:139;;15110:419;;;:::o;15535:194::-;15575:4;15595:20;15613:1;15595:20;:::i;:::-;15590:25;;15629:20;15647:1;15629:20;:::i;:::-;15624:25;;15673:1;15670;15666:9;15658:17;;15697:1;15691:4;15688:11;15685:37;;;15702:18;;:::i;:::-;15685:37;15535:194;;;;:::o;15735:191::-;15775:3;15794:20;15812:1;15794:20;:::i;:::-;15789:25;;15828:20;15846:1;15828:20;:::i;:::-;15823:25;;15871:1;15868;15864:9;15857:16;;15892:3;15889:1;15886:10;15883:36;;;15899:18;;:::i;:::-;15883:36;15735:191;;;;:::o;15932:102::-;15974:8;16021:5;16018:1;16014:13;15993:34;;15932:102;;;:::o;16040:848::-;16101:5;16108:4;16132:6;16123:15;;16156:5;16147:14;;16170:712;16191:1;16181:8;16178:15;16170:712;;;16286:4;16281:3;16277:14;16271:4;16268:24;16265:50;;;16295:18;;:::i;:::-;16265:50;16345:1;16335:8;16331:16;16328:451;;;16760:4;16753:5;16749:16;16740:25;;16328:451;16810:4;16804;16800:15;16792:23;;16840:32;16863:8;16840:32;:::i;:::-;16828:44;;16170:712;;;16040:848;;;;;;;:::o;16894:1073::-;16948:5;17139:8;17129:40;;17160:1;17151:10;;17162:5;;17129:40;17188:4;17178:36;;17205:1;17196:10;;17207:5;;17178:36;17274:4;17322:1;17317:27;;;;17358:1;17353:191;;;;17267:277;;17317:27;17335:1;17326:10;;17337:5;;;17353:191;17398:3;17388:8;17385:17;17382:43;;;17405:18;;:::i;:::-;17382:43;17454:8;17451:1;17447:16;17438:25;;17489:3;17482:5;17479:14;17476:40;;;17496:18;;:::i;:::-;17476:40;17529:5;;;17267:277;;17653:2;17643:8;17640:16;17634:3;17628:4;17625:13;17621:36;17603:2;17593:8;17590:16;17585:2;17579:4;17576:12;17572:35;17556:111;17553:246;;;17709:8;17703:4;17699:19;17690:28;;17744:3;17737:5;17734:14;17731:40;;;17751:18;;:::i;:::-;17731:40;17784:5;;17553:246;17824:42;17862:3;17852:8;17846:4;17843:1;17824:42;:::i;:::-;17809:57;;;;17898:4;17893:3;17889:14;17882:5;17879:25;17876:51;;;17907:18;;:::i;:::-;17876:51;17956:4;17949:5;17945:16;17936:25;;16894:1073;;;;;;:::o;17973:281::-;18031:5;18055:23;18073:4;18055:23;:::i;:::-;18047:31;;18099:25;18115:8;18099:25;:::i;:::-;18087:37;;18143:104;18180:66;18170:8;18164:4;18143:104;:::i;:::-;18134:113;;17973:281;;;;:::o;18260:410::-;18300:7;18323:20;18341:1;18323:20;:::i;:::-;18318:25;;18357:20;18375:1;18357:20;:::i;:::-;18352:25;;18412:1;18409;18405:9;18434:30;18452:11;18434:30;:::i;:::-;18423:41;;18613:1;18604:7;18600:15;18597:1;18594:22;18574:1;18567:9;18547:83;18524:139;;18643:18;;:::i;:::-;18524:139;18308:362;18260:410;;;;:::o;18676:180::-;18724:77;18721:1;18714:88;18821:4;18818:1;18811:15;18845:4;18842:1;18835:15;18862:185;18902:1;18919:20;18937:1;18919:20;:::i;:::-;18914:25;;18953:20;18971:1;18953:20;:::i;:::-;18948:25;;18992:1;18982:35;;18997:18;;:::i;:::-;18982:35;19039:1;19036;19032:9;19027:14;;18862:185;;;;:::o;19053:166::-;19193:18;19189:1;19181:6;19177:14;19170:42;19053:166;:::o;19225:366::-;19367:3;19388:67;19452:2;19447:3;19388:67;:::i;:::-;19381:74;;19464:93;19553:3;19464:93;:::i;:::-;19582:2;19577:3;19573:12;19566:19;;19225:366;;;:::o;19597:419::-;19763:4;19801:2;19790:9;19786:18;19778:26;;19850:9;19844:4;19840:20;19836:1;19825:9;19821:17;19814:47;19878:131;20004:4;19878:131;:::i;:::-;19870:139;;19597:419;;;:::o;20022:174::-;20162:26;20158:1;20150:6;20146:14;20139:50;20022:174;:::o;20202:366::-;20344:3;20365:67;20429:2;20424:3;20365:67;:::i;:::-;20358:74;;20441:93;20530:3;20441:93;:::i;:::-;20559:2;20554:3;20550:12;20543:19;;20202:366;;;:::o;20574:419::-;20740:4;20778:2;20767:9;20763:18;20755:26;;20827:9;20821:4;20817:20;20813:1;20802:9;20798:17;20791:47;20855:131;20981:4;20855:131;:::i;:::-;20847:139;;20574:419;;;:::o;20999:180::-;21047:77;21044:1;21037:88;21144:4;21141:1;21134:15;21168:4;21165:1;21158:15;21185:233;21224:3;21247:24;21265:5;21247:24;:::i;:::-;21238:33;;21293:66;21286:5;21283:77;21280:103;;21363:18;;:::i;:::-;21280:103;21410:1;21403:5;21399:13;21392:20;;21185:233;;;:::o;21424:225::-;21564:34;21560:1;21552:6;21548:14;21541:58;21633:8;21628:2;21620:6;21616:15;21609:33;21424:225;:::o;21655:366::-;21797:3;21818:67;21882:2;21877:3;21818:67;:::i;:::-;21811:74;;21894:93;21983:3;21894:93;:::i;:::-;22012:2;22007:3;22003:12;21996:19;;21655:366;;;:::o;22027:419::-;22193:4;22231:2;22220:9;22216:18;22208:26;;22280:9;22274:4;22270:20;22266:1;22255:9;22251:17;22244:47;22308:131;22434:4;22308:131;:::i;:::-;22300:139;;22027:419;;;:::o;22452:223::-;22592:34;22588:1;22580:6;22576:14;22569:58;22661:6;22656:2;22648:6;22644:15;22637:31;22452:223;:::o;22681:366::-;22823:3;22844:67;22908:2;22903:3;22844:67;:::i;:::-;22837:74;;22920:93;23009:3;22920:93;:::i;:::-;23038:2;23033:3;23029:12;23022:19;;22681:366;;;:::o;23053:419::-;23219:4;23257:2;23246:9;23242:18;23234:26;;23306:9;23300:4;23296:20;23292:1;23281:9;23277:17;23270:47;23334:131;23460:4;23334:131;:::i;:::-;23326:139;;23053:419;;;:::o;23478:221::-;23618:34;23614:1;23606:6;23602:14;23595:58;23687:4;23682:2;23674:6;23670:15;23663:29;23478:221;:::o;23705:366::-;23847:3;23868:67;23932:2;23927:3;23868:67;:::i;:::-;23861:74;;23944:93;24033:3;23944:93;:::i;:::-;24062:2;24057:3;24053:12;24046:19;;23705:366;;;:::o;24077:419::-;24243:4;24281:2;24270:9;24266:18;24258:26;;24330:9;24324:4;24320:20;24316:1;24305:9;24301:17;24294:47;24358:131;24484:4;24358:131;:::i;:::-;24350:139;;24077:419;;;:::o;24502:224::-;24642:34;24638:1;24630:6;24626:14;24619:58;24711:7;24706:2;24698:6;24694:15;24687:32;24502:224;:::o;24732:366::-;24874:3;24895:67;24959:2;24954:3;24895:67;:::i;:::-;24888:74;;24971:93;25060:3;24971:93;:::i;:::-;25089:2;25084:3;25080:12;25073:19;;24732:366;;;:::o;25104:419::-;25270:4;25308:2;25297:9;25293:18;25285:26;;25357:9;25351:4;25347:20;25343:1;25332:9;25328:17;25321:47;25385:131;25511:4;25385:131;:::i;:::-;25377:139;;25104:419;;;:::o;25529:222::-;25669:34;25665:1;25657:6;25653:14;25646:58;25738:5;25733:2;25725:6;25721:15;25714:30;25529:222;:::o;25757:366::-;25899:3;25920:67;25984:2;25979:3;25920:67;:::i;:::-;25913:74;;25996:93;26085:3;25996:93;:::i;:::-;26114:2;26109:3;26105:12;26098:19;;25757:366;;;:::o;26129:419::-;26295:4;26333:2;26322:9;26318:18;26310:26;;26382:9;26376:4;26372:20;26368:1;26357:9;26353:17;26346:47;26410:131;26536:4;26410:131;:::i;:::-;26402:139;;26129:419;;;:::o;26554:228::-;26694:34;26690:1;26682:6;26678:14;26671:58;26763:11;26758:2;26750:6;26746:15;26739:36;26554:228;:::o;26788:366::-;26930:3;26951:67;27015:2;27010:3;26951:67;:::i;:::-;26944:74;;27027:93;27116:3;27027:93;:::i;:::-;27145:2;27140:3;27136:12;27129:19;;26788:366;;;:::o;27160:419::-;27326:4;27364:2;27353:9;27349:18;27341:26;;27413:9;27407:4;27403:20;27399:1;27388:9;27384:17;27377:47;27441:131;27567:4;27441:131;:::i;:::-;27433:139;;27160:419;;;:::o;27585:176::-;27725:28;27721:1;27713:6;27709:14;27702:52;27585:176;:::o;27767:366::-;27909:3;27930:67;27994:2;27989:3;27930:67;:::i;:::-;27923:74;;28006:93;28095:3;28006:93;:::i;:::-;28124:2;28119:3;28115:12;28108:19;;27767:366;;;:::o;28139:419::-;28305:4;28343:2;28332:9;28328:18;28320:26;;28392:9;28386:4;28382:20;28378:1;28367:9;28363:17;28356:47;28420:131;28546:4;28420:131;:::i;:::-;28412:139;;28139:419;;;:::o;28564:228::-;28704:34;28700:1;28692:6;28688:14;28681:58;28773:11;28768:2;28760:6;28756:15;28749:36;28564:228;:::o;28798:366::-;28940:3;28961:67;29025:2;29020:3;28961:67;:::i;:::-;28954:74;;29037:93;29126:3;29037:93;:::i;:::-;29155:2;29150:3;29146:12;29139:19;;28798:366;;;:::o;29170:419::-;29336:4;29374:2;29363:9;29359:18;29351:26;;29423:9;29417:4;29413:20;29409:1;29398:9;29394:17;29387:47;29451:131;29577:4;29451:131;:::i;:::-;29443:139;;29170:419;;;:::o;29595:174::-;29735:26;29731:1;29723:6;29719:14;29712:50;29595:174;:::o;29775:366::-;29917:3;29938:67;30002:2;29997:3;29938:67;:::i;:::-;29931:74;;30014:93;30103:3;30014:93;:::i;:::-;30132:2;30127:3;30123:12;30116:19;;29775:366;;;:::o;30147:419::-;30313:4;30351:2;30340:9;30336:18;30328:26;;30400:9;30394:4;30390:20;30386:1;30375:9;30371:17;30364:47;30428:131;30554:4;30428:131;:::i;:::-;30420:139;;30147:419;;;:::o;30572:225::-;30712:34;30708:1;30700:6;30696:14;30689:58;30781:8;30776:2;30768:6;30764:15;30757:33;30572:225;:::o;30803:366::-;30945:3;30966:67;31030:2;31025:3;30966:67;:::i;:::-;30959:74;;31042:93;31131:3;31042:93;:::i;:::-;31160:2;31155:3;31151:12;31144:19;;30803:366;;;:::o;31175:419::-;31341:4;31379:2;31368:9;31364:18;31356:26;;31428:9;31422:4;31418:20;31414:1;31403:9;31399:17;31392:47;31456:131;31582:4;31456:131;:::i;:::-;31448:139;;31175:419;;;:::o;31600:143::-;31657:5;31688:6;31682:13;31673:22;;31704:33;31731:5;31704:33;:::i;:::-;31600:143;;;;:::o;31749:351::-;31819:6;31868:2;31856:9;31847:7;31843:23;31839:32;31836:119;;;31874:79;;:::i;:::-;31836:119;31994:1;32019:64;32075:7;32066:6;32055:9;32051:22;32019:64;:::i;:::-;32009:74;;31965:128;31749:351;;;;:::o;32106:85::-;32151:7;32180:5;32169:16;;32106:85;;;:::o;32197:158::-;32255:9;32288:61;32306:42;32315:32;32341:5;32315:32;:::i;:::-;32306:42;:::i;:::-;32288:61;:::i;:::-;32275:74;;32197:158;;;:::o;32361:147::-;32456:45;32495:5;32456:45;:::i;:::-;32451:3;32444:58;32361:147;;:::o;32514:114::-;32581:6;32615:5;32609:12;32599:22;;32514:114;;;:::o;32634:184::-;32733:11;32767:6;32762:3;32755:19;32807:4;32802:3;32798:14;32783:29;;32634:184;;;;:::o;32824:132::-;32891:4;32914:3;32906:11;;32944:4;32939:3;32935:14;32927:22;;32824:132;;;:::o;32962:108::-;33039:24;33057:5;33039:24;:::i;:::-;33034:3;33027:37;32962:108;;:::o;33076:179::-;33145:10;33166:46;33208:3;33200:6;33166:46;:::i;:::-;33244:4;33239:3;33235:14;33221:28;;33076:179;;;;:::o;33261:113::-;33331:4;33363;33358:3;33354:14;33346:22;;33261:113;;;:::o;33410:732::-;33529:3;33558:54;33606:5;33558:54;:::i;:::-;33628:86;33707:6;33702:3;33628:86;:::i;:::-;33621:93;;33738:56;33788:5;33738:56;:::i;:::-;33817:7;33848:1;33833:284;33858:6;33855:1;33852:13;33833:284;;;33934:6;33928:13;33961:63;34020:3;34005:13;33961:63;:::i;:::-;33954:70;;34047:60;34100:6;34047:60;:::i;:::-;34037:70;;33893:224;33880:1;33877;33873:9;33868:14;;33833:284;;;33837:14;34133:3;34126:10;;33534:608;;;33410:732;;;;:::o;34148:831::-;34411:4;34449:3;34438:9;34434:19;34426:27;;34463:71;34531:1;34520:9;34516:17;34507:6;34463:71;:::i;:::-;34544:80;34620:2;34609:9;34605:18;34596:6;34544:80;:::i;:::-;34671:9;34665:4;34661:20;34656:2;34645:9;34641:18;34634:48;34699:108;34802:4;34793:6;34699:108;:::i;:::-;34691:116;;34817:72;34885:2;34874:9;34870:18;34861:6;34817:72;:::i;:::-;34899:73;34967:3;34956:9;34952:19;34943:6;34899:73;:::i;:::-;34148:831;;;;;;;;:::o;34985:807::-;35234:4;35272:3;35261:9;35257:19;35249:27;;35286:71;35354:1;35343:9;35339:17;35330:6;35286:71;:::i;:::-;35367:72;35435:2;35424:9;35420:18;35411:6;35367:72;:::i;:::-;35449:80;35525:2;35514:9;35510:18;35501:6;35449:80;:::i;:::-;35539;35615:2;35604:9;35600:18;35591:6;35539:80;:::i;:::-;35629:73;35697:3;35686:9;35682:19;35673:6;35629:73;:::i;:::-;35712;35780:3;35769:9;35765:19;35756:6;35712:73;:::i;:::-;34985:807;;;;;;;;;:::o;35798:143::-;35855:5;35886:6;35880:13;35871:22;;35902:33;35929:5;35902:33;:::i;:::-;35798:143;;;;:::o;35947:663::-;36035:6;36043;36051;36100:2;36088:9;36079:7;36075:23;36071:32;36068:119;;;36106:79;;:::i;:::-;36068:119;36226:1;36251:64;36307:7;36298:6;36287:9;36283:22;36251:64;:::i;:::-;36241:74;;36197:128;36364:2;36390:64;36446:7;36437:6;36426:9;36422:22;36390:64;:::i;:::-;36380:74;;36335:129;36503:2;36529:64;36585:7;36576:6;36565:9;36561:22;36529:64;:::i;:::-;36519:74;;36474:129;35947:663;;;;;:::o;36616:179::-;36756:31;36752:1;36744:6;36740:14;36733:55;36616:179;:::o;36801:366::-;36943:3;36964:67;37028:2;37023:3;36964:67;:::i;:::-;36957:74;;37040:93;37129:3;37040:93;:::i;:::-;37158:2;37153:3;37149:12;37142:19;;36801:366;;;:::o;37173:419::-;37339:4;37377:2;37366:9;37362:18;37354:26;;37426:9;37420:4;37416:20;37412:1;37401:9;37397:17;37390:47;37454:131;37580:4;37454:131;:::i;:::-;37446:139;;37173:419;;;:::o;37598:147::-;37699:11;37736:3;37721:18;;37598:147;;;;:::o;37751:114::-;;:::o;37871:398::-;38030:3;38051:83;38132:1;38127:3;38051:83;:::i;:::-;38044:90;;38143:93;38232:3;38143:93;:::i;:::-;38261:1;38256:3;38252:11;38245:18;;37871:398;;;:::o;38275:379::-;38459:3;38481:147;38624:3;38481:147;:::i;:::-;38474:154;;38645:3;38638:10;;38275:379;;;:::o;38660:245::-;38800:34;38796:1;38788:6;38784:14;38777:58;38869:28;38864:2;38856:6;38852:15;38845:53;38660:245;:::o;38911:366::-;39053:3;39074:67;39138:2;39133:3;39074:67;:::i;:::-;39067:74;;39150:93;39239:3;39150:93;:::i;:::-;39268:2;39263:3;39259:12;39252:19;;38911:366;;;:::o;39283:419::-;39449:4;39487:2;39476:9;39472:18;39464:26;;39536:9;39530:4;39526:20;39522:1;39511:9;39507:17;39500:47;39564:131;39690:4;39564:131;:::i;:::-;39556:139;;39283:419;;;:::o

Swarm Source

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