ETH Price: $2,959.44 (-1.77%)
Gas: 4 Gwei

Token

CIFI (CIFI)
 

Overview

Max Total Supply

100,000,000 CIFI

Holders

274 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
212,256.040387359378515955 CIFI

Value
$0.00
0x310e0565b3d000ca4bb4c81cb548f132a35a053d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

CIFI is a web3 messaging platform for wallet to wallet messaging and community building.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CIFI

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/*
 *        $$$$$$\  $$$$$$\ $$$$$$$$\ $$$$$$\ 
 *       $$  __$$\ \_$$  _|$$  _____|\_$$  _|
 *       $$ /  \__|  $$ |  $$ |        $$ |  
 *       $$ |        $$ |  $$$$$\      $$ |  
 *       $$ |        $$ |  $$  __|     $$ |  
 *       $$ |  $$\   $$ |  $$ |        $$ |  
 *       \$$$$$$  |$$$$$$\ $$ |      $$$$$$\ 
 *        \______/ \______|\__|      \______|
                                         

    Website:    https://cifi.ai
    Twitter:    https://twitter.com//CIFi_ai
    App:        https://chat.cifi.ai                                  

    Build your community on our web3 messaging platform

    Talk to a friend, community or project
 */

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract CIFI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;


    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100000000 * 10**_decimals; // Total supply
    string private constant _name = unicode"CIFI";  // Name
    string private constant _symbol = unicode"CIFI"; // Symbol
    uint256 public _taxSwapThreshold= 10000 * 10**_decimals;
    uint256 public maxWalletLimit = 2100000 * 10 ** decimals();

    // Taxes on DEXs
    uint256 public _taxOnBuy = 5; 
    uint256 public _taxOnSell = 5; 

    //Tax fee Collector
    address payable public _taxFeeCollectorWallet = payable(0x1A067034a4863930D0570a98c2407C6b63ace202);

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private inSwap = false;
    bool private swapEnabled = true;

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

    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // mainnet router address
       // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); // mainnet router address

        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxFeeCollectorWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

        uint256 taxAmount=0;
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {

            if(to != uniswapV2Pair){
               require(balanceOf(to) + amount <= maxWalletLimit, "Higher than the AntiWhale Limit.");
            }

           if(_taxOnSell > 0){
            if(to == uniswapV2Pair){
                taxAmount = amount.mul(_taxOnSell).div(100);
            }
           }

            if(_taxOnBuy > 0){
             if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                taxAmount = amount.mul(_taxOnBuy).div(100);
              }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function sendETHToFee(uint256 amount) private {
        (bool callSuccess, ) = payable(_taxFeeCollectorWallet).call{value: amount}("");
        require(callSuccess, "Call failed");
    }


    receive() external payable {}

    function manualSwap() external onlyOwner {
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function changeAntiWhaleLimit(uint256 _limit) public onlyOwner{
        require(_limit > totalSupply().div(200),"Limit too low");
        maxWalletLimit = _limit;
    }

    function modifyTaxes(uint256 bFee, uint256 sFee) public onlyOwner {
        require(bFee <= 15, "Tax very high");
        require(sFee <= 15, "Tax very high");
        _taxOnBuy = bFee;
        _taxOnSell = sFee;
    }

    function whiteListFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    }

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":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeCollectorWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"changeAntiWhaleLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bFee","type":"uint256"},{"internalType":"uint256","name":"sFee","type":"uint256"}],"name":"modifyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"whiteListFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620007d2565b61271062000023919062000822565b600455620000366200054960201b60201c565b600a620000449190620007d2565b62200b2062000054919062000822565b60055560056006556005600755731a067034a4863930d0570a98c2407c6b63ace20260085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550348015620000f6575f80fd5b50620001176200010b6200055160201b60201c565b6200055860201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000179573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019f9190620008d1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000205573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022b9190620008d1565b6040518363ffffffff1660e01b81526004016200024a92919062000912565b6020604051808303815f875af115801562000267573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028d9190620008d1565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200031c9190620007d2565b6305f5e1006200032d919062000822565b60015f620003406200055160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620003926200061960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004bc6200055160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200051a9190620007d2565b6305f5e1006200052b919062000822565b6040516200053a91906200094e565b60405180910390a35062000969565b5f6012905090565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006ca57808604811115620006a257620006a162000640565b5b6001851615620006b25780820291505b8081029050620006c2856200066d565b945062000682565b94509492505050565b5f82620006e45760019050620007b6565b81620006f3575f9050620007b6565b81600181146200070c576002811462000717576200074d565b6001915050620007b6565b60ff8411156200072c576200072b62000640565b5b8360020a91508482111562000746576200074562000640565b5b50620007b6565b5060208310610133831016604e8410600b8410161715620007875782820a90508381111562000781576200078062000640565b5b620007b6565b62000796848484600162000679565b92509050818404811115620007b057620007af62000640565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620007de82620007bd565b9150620007eb83620007c6565b92506200081a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006d3565b905092915050565b5f6200082e82620007bd565b91506200083b83620007bd565b92508282026200084b81620007bd565b9150828204841483151762000865576200086462000640565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200089b8262000870565b9050919050565b620008ad816200088f565b8114620008b8575f80fd5b50565b5f81519050620008cb81620008a2565b92915050565b5f60208284031215620008e957620008e86200086c565b5b5f620008f884828501620008bb565b91505092915050565b6200090c816200088f565b82525050565b5f604082019050620009275f83018562000901565b62000936602083018462000901565b9392505050565b6200094881620007bd565b82525050565b5f602082019050620009635f8301846200093d565b92915050565b6129c080620009775f395ff3fe608060405260043610610143575f3560e01c8063768dc710116100b5578063a9059cbb1161006e578063a9059cbb14610432578063b56abed71461046e578063bf474bed14610498578063dd62ed3e146104c2578063ea2f0b37146104fe578063f2fde38b146105265761014a565b8063768dc710146103285780638da5cb5b1461036457806393114b1d1461038e57806395913d17146103b657806395d89b41146103de57806397be450e146104085761014a565b806341a9b9bc1161010757806341a9b9bc14610244578063508f6dfb1461026e57806351bc3c851461029657806366a88d96146102ac57806370a08231146102d6578063715018a6146103125761014a565b806306fdde031461014e578063095ea7b31461017857806318160ddd146101b457806323b872dd146101de578063313ce5671461021a5761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261054e565b60405161016f9190611b3a565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190611beb565b61058b565b6040516101ab9190611c43565b60405180910390f35b3480156101bf575f80fd5b506101c86105a8565b6040516101d59190611c6b565b60405180910390f35b3480156101e9575f80fd5b5061020460048036038101906101ff9190611c84565b6105cb565b6040516102119190611c43565b60405180910390f35b348015610225575f80fd5b5061022e61069f565b60405161023b9190611cef565b60405180910390f35b34801561024f575f80fd5b506102586106a7565b6040516102659190611d28565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f9190611d41565b6106cc565b005b3480156102a1575f80fd5b506102aa61072c565b005b3480156102b7575f80fd5b506102c061076c565b6040516102cd9190611c6b565b60405180910390f35b3480156102e1575f80fd5b506102fc60048036038101906102f79190611d41565b610772565b6040516103099190611c6b565b60405180910390f35b34801561031d575f80fd5b506103266107b8565b005b348015610333575f80fd5b5061034e60048036038101906103499190611d41565b6107cb565b60405161035b9190611c43565b60405180910390f35b34801561036f575f80fd5b506103786107e8565b6040516103859190611d7b565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af9190611d94565b61080f565b005b3480156103c1575f80fd5b506103dc60048036038101906103d79190611dbf565b61087d565b005b3480156103e9575f80fd5b506103f261091f565b6040516103ff9190611b3a565b60405180910390f35b348015610413575f80fd5b5061041c61095c565b6040516104299190611c6b565b60405180910390f35b34801561043d575f80fd5b5061045860048036038101906104539190611beb565b610962565b6040516104659190611c43565b60405180910390f35b348015610479575f80fd5b5061048261097f565b60405161048f9190611c6b565b60405180910390f35b3480156104a3575f80fd5b506104ac610985565b6040516104b99190611c6b565b60405180910390f35b3480156104cd575f80fd5b506104e860048036038101906104e39190611dfd565b61098b565b6040516104f59190611c6b565b60405180910390f35b348015610509575f80fd5b50610524600480360381019061051f9190611d41565b610a0d565b005b348015610531575f80fd5b5061054c60048036038101906105479190611d41565b610a6c565b005b60606040518060400160405280600481526020017f4349464900000000000000000000000000000000000000000000000000000000815250905090565b5f61059e610597610aee565b8484610af5565b6001905092915050565b5f6012600a6105b79190611f97565b6305f5e1006105c69190611fe1565b905090565b5f6105d7848484610cb8565b610694846105e3610aee565b61068f856040518060600160405280602881526020016129636028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610646610aee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114079092919063ffffffff16565b610af5565b600190509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106d4611469565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610734611469565b5f61073e30610772565b90505f81111561075257610751816114e7565b5b5f4790505f811115610768576107678161175b565b5b5050565b60055481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107c0611469565b6107c95f611828565b565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610817611469565b61083260c86108246105a8565b6118e990919063ffffffff16565b8111610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a9061206c565b60405180910390fd5b8060058190555050565b610885611469565b600f8211156108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c0906120d4565b60405180910390fd5b600f81111561090d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610904906120d4565b60405180910390fd5b81600681905550806007819055505050565b60606040518060400160405280600481526020017f4349464900000000000000000000000000000000000000000000000000000000815250905090565b60065481565b5f61097561096e610aee565b8484610cb8565b6001905092915050565b60075481565b60045481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a15611469565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a74611469565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad990612162565b60405180910390fd5b610aeb81611828565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a906121f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc89061227e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cab9190611c6b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d9061230c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b9061239a565b60405180910390fd5b5f8111610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612428565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610e75575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561115757600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610f275760055482610edb85610772565b610ee59190612446565b1115610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d906124c3565b60405180910390fd5b5b5f6007541115610fb157600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fb057610fad6064610f9f6007548561193290919063ffffffff16565b6118e990919063ffffffff16565b90505b5b5f600654111561109557600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611064575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156110945761109160646110836006548561193290919063ffffffff16565b6118e990919063ffffffff16565b90505b5b5f61109f30610772565b9050600a60149054906101000a900460ff1615801561110a5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156111225750600a60159054906101000a900460ff165b801561112f575060045481115b156111555761113d816114e7565b5f4790505f811115611153576111524761175b565b5b505b505b5f811115611256576111af8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119a990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161124d9190611c6b565b60405180910390a35b6112a68260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a0690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506113496112fd8284611a0690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119a990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113ec8486611a0690919063ffffffff16565b6040516113f99190611c6b565b60405180910390a350505050565b5f83831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114459190611b3a565b60405180910390fd5b505f838561145c91906124e1565b9050809150509392505050565b611471610aee565b73ffffffffffffffffffffffffffffffffffffffff1661148f6107e8565b73ffffffffffffffffffffffffffffffffffffffff16146114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc9061255e565b60405180910390fd5b565b6001600a60146101000a81548160ff0219169083151502179055505f81031561173e575f600267ffffffffffffffff8111156115265761152561257c565b5b6040519080825280602002602001820160405280156115545781602001602082028036833780820191505090505b50905030815f8151811061156b5761156a6125a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163391906125ea565b81600181518110611647576116466125a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506116ad3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610af5565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161170f95949392919061270e565b5f604051808303815f87803b158015611726575f80fd5b505af1158015611738573d5f803e3d5ffd5b50505050505b5f600a60146101000a81548160ff02191690831515021790555050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516117a190612793565b5f6040518083038185875af1925050503d805f81146117db576040519150601f19603f3d011682016040523d82523d5f602084013e6117e0565b606091505b5050905080611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b906127f1565b60405180910390fd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f61192a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a4f565b905092915050565b5f808303611942575f90506119a3565b5f828461194f9190611fe1565b905082848261195e919061283c565b1461199e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611995906128dc565b60405180910390fd5b809150505b92915050565b5f8082846119b79190612446565b9050838110156119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f390612944565b60405180910390fd5b8091505092915050565b5f611a4783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b905092915050565b5f8083118290611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c9190611b3a565b60405180910390fd5b505f8385611aa3919061283c565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611ae7578082015181840152602081019050611acc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611b0c82611ab0565b611b168185611aba565b9350611b26818560208601611aca565b611b2f81611af2565b840191505092915050565b5f6020820190508181035f830152611b528184611b02565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b8782611b5e565b9050919050565b611b9781611b7d565b8114611ba1575f80fd5b50565b5f81359050611bb281611b8e565b92915050565b5f819050919050565b611bca81611bb8565b8114611bd4575f80fd5b50565b5f81359050611be581611bc1565b92915050565b5f8060408385031215611c0157611c00611b5a565b5b5f611c0e85828601611ba4565b9250506020611c1f85828601611bd7565b9150509250929050565b5f8115159050919050565b611c3d81611c29565b82525050565b5f602082019050611c565f830184611c34565b92915050565b611c6581611bb8565b82525050565b5f602082019050611c7e5f830184611c5c565b92915050565b5f805f60608486031215611c9b57611c9a611b5a565b5b5f611ca886828701611ba4565b9350506020611cb986828701611ba4565b9250506040611cca86828701611bd7565b9150509250925092565b5f60ff82169050919050565b611ce981611cd4565b82525050565b5f602082019050611d025f830184611ce0565b92915050565b5f611d1282611b5e565b9050919050565b611d2281611d08565b82525050565b5f602082019050611d3b5f830184611d19565b92915050565b5f60208284031215611d5657611d55611b5a565b5b5f611d6384828501611ba4565b91505092915050565b611d7581611b7d565b82525050565b5f602082019050611d8e5f830184611d6c565b92915050565b5f60208284031215611da957611da8611b5a565b5b5f611db684828501611bd7565b91505092915050565b5f8060408385031215611dd557611dd4611b5a565b5b5f611de285828601611bd7565b9250506020611df385828601611bd7565b9150509250929050565b5f8060408385031215611e1357611e12611b5a565b5b5f611e2085828601611ba4565b9250506020611e3185828601611ba4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611ebd57808604811115611e9957611e98611e3b565b5b6001851615611ea85780820291505b8081029050611eb685611e68565b9450611e7d565b94509492505050565b5f82611ed55760019050611f90565b81611ee2575f9050611f90565b8160018114611ef85760028114611f0257611f31565b6001915050611f90565b60ff841115611f1457611f13611e3b565b5b8360020a915084821115611f2b57611f2a611e3b565b5b50611f90565b5060208310610133831016604e8410600b8410161715611f665782820a905083811115611f6157611f60611e3b565b5b611f90565b611f738484846001611e74565b92509050818404811115611f8a57611f89611e3b565b5b81810290505b9392505050565b5f611fa182611bb8565b9150611fac83611cd4565b9250611fd97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ec6565b905092915050565b5f611feb82611bb8565b9150611ff683611bb8565b925082820261200481611bb8565b9150828204841483151761201b5761201a611e3b565b5b5092915050565b7f4c696d697420746f6f206c6f77000000000000000000000000000000000000005f82015250565b5f612056600d83611aba565b915061206182612022565b602082019050919050565b5f6020820190508181035f8301526120838161204a565b9050919050565b7f54617820766572792068696768000000000000000000000000000000000000005f82015250565b5f6120be600d83611aba565b91506120c98261208a565b602082019050919050565b5f6020820190508181035f8301526120eb816120b2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61214c602683611aba565b9150612157826120f2565b604082019050919050565b5f6020820190508181035f83015261217981612140565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6121da602483611aba565b91506121e582612180565b604082019050919050565b5f6020820190508181035f830152612207816121ce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612268602283611aba565b91506122738261220e565b604082019050919050565b5f6020820190508181035f8301526122958161225c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6122f6602583611aba565b91506123018261229c565b604082019050919050565b5f6020820190508181035f830152612323816122ea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612384602383611aba565b915061238f8261232a565b604082019050919050565b5f6020820190508181035f8301526123b181612378565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612412602983611aba565b915061241d826123b8565b604082019050919050565b5f6020820190508181035f83015261243f81612406565b9050919050565b5f61245082611bb8565b915061245b83611bb8565b925082820190508082111561247357612472611e3b565b5b92915050565b7f486967686572207468616e2074686520416e74695768616c65204c696d69742e5f82015250565b5f6124ad602083611aba565b91506124b882612479565b602082019050919050565b5f6020820190508181035f8301526124da816124a1565b9050919050565b5f6124eb82611bb8565b91506124f683611bb8565b925082820390508181111561250e5761250d611e3b565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612548602083611aba565b915061255382612514565b602082019050919050565b5f6020820190508181035f8301526125758161253c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506125e481611b8e565b92915050565b5f602082840312156125ff576125fe611b5a565b5b5f61260c848285016125d6565b91505092915050565b5f819050919050565b5f819050919050565b5f61264161263c61263784612615565b61261e565b611bb8565b9050919050565b61265181612627565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61268981611b7d565b82525050565b5f61269a8383612680565b60208301905092915050565b5f602082019050919050565b5f6126bc82612657565b6126c68185612661565b93506126d183612671565b805f5b838110156127015781516126e8888261268f565b97506126f3836126a6565b9250506001810190506126d4565b5085935050505092915050565b5f60a0820190506127215f830188611c5c565b61272e6020830187612648565b818103604083015261274081866126b2565b905061274f6060830185611d6c565b61275c6080830184611c5c565b9695505050505050565b5f81905092915050565b50565b5f61277e5f83612766565b915061278982612770565b5f82019050919050565b5f61279d82612773565b9150819050919050565b7f43616c6c206661696c65640000000000000000000000000000000000000000005f82015250565b5f6127db600b83611aba565b91506127e6826127a7565b602082019050919050565b5f6020820190508181035f830152612808816127cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61284682611bb8565b915061285183611bb8565b9250826128615761286061280f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6128c6602183611aba565b91506128d18261286c565b604082019050919050565b5f6020820190508181035f8301526128f3816128ba565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61292e601b83611aba565b9150612939826128fa565b602082019050919050565b5f6020820190508181035f83015261295b81612922565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205de6b1c46a54dce85497c9d58e3ce2097d9389083b6337d2985bc03f16faef7364736f6c63430008180033

Deployed Bytecode

0x608060405260043610610143575f3560e01c8063768dc710116100b5578063a9059cbb1161006e578063a9059cbb14610432578063b56abed71461046e578063bf474bed14610498578063dd62ed3e146104c2578063ea2f0b37146104fe578063f2fde38b146105265761014a565b8063768dc710146103285780638da5cb5b1461036457806393114b1d1461038e57806395913d17146103b657806395d89b41146103de57806397be450e146104085761014a565b806341a9b9bc1161010757806341a9b9bc14610244578063508f6dfb1461026e57806351bc3c851461029657806366a88d96146102ac57806370a08231146102d6578063715018a6146103125761014a565b806306fdde031461014e578063095ea7b31461017857806318160ddd146101b457806323b872dd146101de578063313ce5671461021a5761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261054e565b60405161016f9190611b3a565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190611beb565b61058b565b6040516101ab9190611c43565b60405180910390f35b3480156101bf575f80fd5b506101c86105a8565b6040516101d59190611c6b565b60405180910390f35b3480156101e9575f80fd5b5061020460048036038101906101ff9190611c84565b6105cb565b6040516102119190611c43565b60405180910390f35b348015610225575f80fd5b5061022e61069f565b60405161023b9190611cef565b60405180910390f35b34801561024f575f80fd5b506102586106a7565b6040516102659190611d28565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f9190611d41565b6106cc565b005b3480156102a1575f80fd5b506102aa61072c565b005b3480156102b7575f80fd5b506102c061076c565b6040516102cd9190611c6b565b60405180910390f35b3480156102e1575f80fd5b506102fc60048036038101906102f79190611d41565b610772565b6040516103099190611c6b565b60405180910390f35b34801561031d575f80fd5b506103266107b8565b005b348015610333575f80fd5b5061034e60048036038101906103499190611d41565b6107cb565b60405161035b9190611c43565b60405180910390f35b34801561036f575f80fd5b506103786107e8565b6040516103859190611d7b565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af9190611d94565b61080f565b005b3480156103c1575f80fd5b506103dc60048036038101906103d79190611dbf565b61087d565b005b3480156103e9575f80fd5b506103f261091f565b6040516103ff9190611b3a565b60405180910390f35b348015610413575f80fd5b5061041c61095c565b6040516104299190611c6b565b60405180910390f35b34801561043d575f80fd5b5061045860048036038101906104539190611beb565b610962565b6040516104659190611c43565b60405180910390f35b348015610479575f80fd5b5061048261097f565b60405161048f9190611c6b565b60405180910390f35b3480156104a3575f80fd5b506104ac610985565b6040516104b99190611c6b565b60405180910390f35b3480156104cd575f80fd5b506104e860048036038101906104e39190611dfd565b61098b565b6040516104f59190611c6b565b60405180910390f35b348015610509575f80fd5b50610524600480360381019061051f9190611d41565b610a0d565b005b348015610531575f80fd5b5061054c60048036038101906105479190611d41565b610a6c565b005b60606040518060400160405280600481526020017f4349464900000000000000000000000000000000000000000000000000000000815250905090565b5f61059e610597610aee565b8484610af5565b6001905092915050565b5f6012600a6105b79190611f97565b6305f5e1006105c69190611fe1565b905090565b5f6105d7848484610cb8565b610694846105e3610aee565b61068f856040518060600160405280602881526020016129636028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610646610aee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114079092919063ffffffff16565b610af5565b600190509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106d4611469565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610734611469565b5f61073e30610772565b90505f81111561075257610751816114e7565b5b5f4790505f811115610768576107678161175b565b5b5050565b60055481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107c0611469565b6107c95f611828565b565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610817611469565b61083260c86108246105a8565b6118e990919063ffffffff16565b8111610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a9061206c565b60405180910390fd5b8060058190555050565b610885611469565b600f8211156108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c0906120d4565b60405180910390fd5b600f81111561090d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610904906120d4565b60405180910390fd5b81600681905550806007819055505050565b60606040518060400160405280600481526020017f4349464900000000000000000000000000000000000000000000000000000000815250905090565b60065481565b5f61097561096e610aee565b8484610cb8565b6001905092915050565b60075481565b60045481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a15611469565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a74611469565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad990612162565b60405180910390fd5b610aeb81611828565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a906121f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc89061227e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cab9190611c6b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d9061230c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b9061239a565b60405180910390fd5b5f8111610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612428565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610e75575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561115757600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610f275760055482610edb85610772565b610ee59190612446565b1115610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d906124c3565b60405180910390fd5b5b5f6007541115610fb157600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fb057610fad6064610f9f6007548561193290919063ffffffff16565b6118e990919063ffffffff16565b90505b5b5f600654111561109557600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611064575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156110945761109160646110836006548561193290919063ffffffff16565b6118e990919063ffffffff16565b90505b5b5f61109f30610772565b9050600a60149054906101000a900460ff1615801561110a5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156111225750600a60159054906101000a900460ff165b801561112f575060045481115b156111555761113d816114e7565b5f4790505f811115611153576111524761175b565b5b505b505b5f811115611256576111af8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119a990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161124d9190611c6b565b60405180910390a35b6112a68260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a0690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506113496112fd8284611a0690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119a990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113ec8486611a0690919063ffffffff16565b6040516113f99190611c6b565b60405180910390a350505050565b5f83831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114459190611b3a565b60405180910390fd5b505f838561145c91906124e1565b9050809150509392505050565b611471610aee565b73ffffffffffffffffffffffffffffffffffffffff1661148f6107e8565b73ffffffffffffffffffffffffffffffffffffffff16146114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc9061255e565b60405180910390fd5b565b6001600a60146101000a81548160ff0219169083151502179055505f81031561173e575f600267ffffffffffffffff8111156115265761152561257c565b5b6040519080825280602002602001820160405280156115545781602001602082028036833780820191505090505b50905030815f8151811061156b5761156a6125a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163391906125ea565b81600181518110611647576116466125a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506116ad3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610af5565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161170f95949392919061270e565b5f604051808303815f87803b158015611726575f80fd5b505af1158015611738573d5f803e3d5ffd5b50505050505b5f600a60146101000a81548160ff02191690831515021790555050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516117a190612793565b5f6040518083038185875af1925050503d805f81146117db576040519150601f19603f3d011682016040523d82523d5f602084013e6117e0565b606091505b5050905080611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b906127f1565b60405180910390fd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f61192a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a4f565b905092915050565b5f808303611942575f90506119a3565b5f828461194f9190611fe1565b905082848261195e919061283c565b1461199e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611995906128dc565b60405180910390fd5b809150505b92915050565b5f8082846119b79190612446565b9050838110156119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f390612944565b60405180910390fd5b8091505092915050565b5f611a4783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b905092915050565b5f8083118290611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c9190611b3a565b60405180910390fd5b505f8385611aa3919061283c565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611ae7578082015181840152602081019050611acc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611b0c82611ab0565b611b168185611aba565b9350611b26818560208601611aca565b611b2f81611af2565b840191505092915050565b5f6020820190508181035f830152611b528184611b02565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b8782611b5e565b9050919050565b611b9781611b7d565b8114611ba1575f80fd5b50565b5f81359050611bb281611b8e565b92915050565b5f819050919050565b611bca81611bb8565b8114611bd4575f80fd5b50565b5f81359050611be581611bc1565b92915050565b5f8060408385031215611c0157611c00611b5a565b5b5f611c0e85828601611ba4565b9250506020611c1f85828601611bd7565b9150509250929050565b5f8115159050919050565b611c3d81611c29565b82525050565b5f602082019050611c565f830184611c34565b92915050565b611c6581611bb8565b82525050565b5f602082019050611c7e5f830184611c5c565b92915050565b5f805f60608486031215611c9b57611c9a611b5a565b5b5f611ca886828701611ba4565b9350506020611cb986828701611ba4565b9250506040611cca86828701611bd7565b9150509250925092565b5f60ff82169050919050565b611ce981611cd4565b82525050565b5f602082019050611d025f830184611ce0565b92915050565b5f611d1282611b5e565b9050919050565b611d2281611d08565b82525050565b5f602082019050611d3b5f830184611d19565b92915050565b5f60208284031215611d5657611d55611b5a565b5b5f611d6384828501611ba4565b91505092915050565b611d7581611b7d565b82525050565b5f602082019050611d8e5f830184611d6c565b92915050565b5f60208284031215611da957611da8611b5a565b5b5f611db684828501611bd7565b91505092915050565b5f8060408385031215611dd557611dd4611b5a565b5b5f611de285828601611bd7565b9250506020611df385828601611bd7565b9150509250929050565b5f8060408385031215611e1357611e12611b5a565b5b5f611e2085828601611ba4565b9250506020611e3185828601611ba4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611ebd57808604811115611e9957611e98611e3b565b5b6001851615611ea85780820291505b8081029050611eb685611e68565b9450611e7d565b94509492505050565b5f82611ed55760019050611f90565b81611ee2575f9050611f90565b8160018114611ef85760028114611f0257611f31565b6001915050611f90565b60ff841115611f1457611f13611e3b565b5b8360020a915084821115611f2b57611f2a611e3b565b5b50611f90565b5060208310610133831016604e8410600b8410161715611f665782820a905083811115611f6157611f60611e3b565b5b611f90565b611f738484846001611e74565b92509050818404811115611f8a57611f89611e3b565b5b81810290505b9392505050565b5f611fa182611bb8565b9150611fac83611cd4565b9250611fd97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ec6565b905092915050565b5f611feb82611bb8565b9150611ff683611bb8565b925082820261200481611bb8565b9150828204841483151761201b5761201a611e3b565b5b5092915050565b7f4c696d697420746f6f206c6f77000000000000000000000000000000000000005f82015250565b5f612056600d83611aba565b915061206182612022565b602082019050919050565b5f6020820190508181035f8301526120838161204a565b9050919050565b7f54617820766572792068696768000000000000000000000000000000000000005f82015250565b5f6120be600d83611aba565b91506120c98261208a565b602082019050919050565b5f6020820190508181035f8301526120eb816120b2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61214c602683611aba565b9150612157826120f2565b604082019050919050565b5f6020820190508181035f83015261217981612140565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6121da602483611aba565b91506121e582612180565b604082019050919050565b5f6020820190508181035f830152612207816121ce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612268602283611aba565b91506122738261220e565b604082019050919050565b5f6020820190508181035f8301526122958161225c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6122f6602583611aba565b91506123018261229c565b604082019050919050565b5f6020820190508181035f830152612323816122ea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612384602383611aba565b915061238f8261232a565b604082019050919050565b5f6020820190508181035f8301526123b181612378565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612412602983611aba565b915061241d826123b8565b604082019050919050565b5f6020820190508181035f83015261243f81612406565b9050919050565b5f61245082611bb8565b915061245b83611bb8565b925082820190508082111561247357612472611e3b565b5b92915050565b7f486967686572207468616e2074686520416e74695768616c65204c696d69742e5f82015250565b5f6124ad602083611aba565b91506124b882612479565b602082019050919050565b5f6020820190508181035f8301526124da816124a1565b9050919050565b5f6124eb82611bb8565b91506124f683611bb8565b925082820390508181111561250e5761250d611e3b565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612548602083611aba565b915061255382612514565b602082019050919050565b5f6020820190508181035f8301526125758161253c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506125e481611b8e565b92915050565b5f602082840312156125ff576125fe611b5a565b5b5f61260c848285016125d6565b91505092915050565b5f819050919050565b5f819050919050565b5f61264161263c61263784612615565b61261e565b611bb8565b9050919050565b61265181612627565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61268981611b7d565b82525050565b5f61269a8383612680565b60208301905092915050565b5f602082019050919050565b5f6126bc82612657565b6126c68185612661565b93506126d183612671565b805f5b838110156127015781516126e8888261268f565b97506126f3836126a6565b9250506001810190506126d4565b5085935050505092915050565b5f60a0820190506127215f830188611c5c565b61272e6020830187612648565b818103604083015261274081866126b2565b905061274f6060830185611d6c565b61275c6080830184611c5c565b9695505050505050565b5f81905092915050565b50565b5f61277e5f83612766565b915061278982612770565b5f82019050919050565b5f61279d82612773565b9150819050919050565b7f43616c6c206661696c65640000000000000000000000000000000000000000005f82015250565b5f6127db600b83611aba565b91506127e6826127a7565b602082019050919050565b5f6020820190508181035f830152612808816127cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61284682611bb8565b915061285183611bb8565b9250826128615761286061280f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6128c6602183611aba565b91506128d18261286c565b604082019050919050565b5f6020820190508181035f8301526128f3816128ba565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61292e601b83611aba565b9150612939826128fa565b602082019050919050565b5f6020820190508181035f83015261295b81612922565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205de6b1c46a54dce85497c9d58e3ce2097d9389083b6337d2985bc03f16faef7364736f6c63430008180033

Deployed Bytecode Sourcemap

5498:7261:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7501:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8334:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7778:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8503:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7687:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6276:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12515:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11783:314;;;;;;;;;;;;;:::i;:::-;;6087:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7881:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3919:103;;;;;;;;;;;;;:::i;:::-;;5711:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3278:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12105:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12284:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7592:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6176:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8008:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6212:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6025:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8183:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12636:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4177:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7501:83;7538:13;7571:5;;;;;;;;;;;;;;;;;7564:12;;7501:83;:::o;8334:161::-;8409:4;8426:39;8435:12;:10;:12::i;:::-;8449:7;8458:6;8426:8;:39::i;:::-;8483:4;8476:11;;8334:161;;;;:::o;7778:95::-;7831:7;5808:2;5864;:13;;;;:::i;:::-;5852:9;:25;;;;:::i;:::-;7851:14;;7778:95;:::o;8503:313::-;8601:4;8618:36;8628:6;8636:9;8647:6;8618:9;:36::i;:::-;8665:121;8674:6;8682:12;:10;:12::i;:::-;8696:89;8734:6;8696:89;;;;;;;;;;;;;;;;;:11;:19;8708:6;8696:19;;;;;;;;;;;;;;;:33;8716:12;:10;:12::i;:::-;8696:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8665:8;:121::i;:::-;8804:4;8797:11;;8503:313;;;;;:::o;7687:83::-;7728:5;5808:2;7746:16;;7687:83;:::o;6276:99::-;;;;;;;;;;;;;:::o;12515:113::-;3164:13;:11;:13::i;:::-;12616:4:::1;12586:18;:27;12605:7;12586:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12515:113:::0;:::o;11783:314::-;3164:13;:11;:13::i;:::-;11835:20:::1;11856:24;11874:4;11856:9;:24::i;:::-;11835:45;;11907:1;11894:12;:14;11891:73;;;11922:30;11939:12;11922:16;:30::i;:::-;11891:73;11974:18;11993:21;11974:40;;12039:1;12028:10;:12;12025:65;;;12054:24;12067:10;12054:12;:24::i;:::-;12025:65;11824:273;;11783:314::o:0;6087:58::-;;;;:::o;7881:119::-;7947:7;7974:9;:18;7984:7;7974:18;;;;;;;;;;;;;;;;7967:25;;7881:119;;;:::o;3919:103::-;3164:13;:11;:13::i;:::-;3984:30:::1;4011:1;3984:18;:30::i;:::-;3919:103::o:0;5711:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;3278:87::-;3324:7;3351:6;;;;;;;;;;;3344:13;;3278:87;:::o;12105:171::-;3164:13;:11;:13::i;:::-;12195:22:::1;12213:3;12195:13;:11;:13::i;:::-;:17;;:22;;;;:::i;:::-;12186:6;:31;12178:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12262:6;12245:14;:23;;;;12105:171:::0;:::o;12284:223::-;3164:13;:11;:13::i;:::-;12377:2:::1;12369:4;:10;;12361:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;12424:2;12416:4;:10;;12408:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;12467:4;12455:9;:16;;;;12495:4;12482:10;:17;;;;12284:223:::0;;:::o;7592:87::-;7631:13;7664:7;;;;;;;;;;;;;;;;;7657:14;;7592:87;:::o;6176:28::-;;;;:::o;8008:167::-;8086:4;8103:42;8113:12;:10;:12::i;:::-;8127:9;8138:6;8103:9;:42::i;:::-;8163:4;8156:11;;8008:167;;;;:::o;6212:29::-;;;;:::o;6025:55::-;;;;:::o;8183:143::-;8264:7;8291:11;:18;8303:5;8291:18;;;;;;;;;;;;;;;:27;8310:7;8291:27;;;;;;;;;;;;;;;;8284:34;;8183:143;;;;:::o;12636:110::-;3164:13;:11;:13::i;:::-;12733:5:::1;12703:18;:27;12722:7;12703:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12636:110:::0;:::o;4177:201::-;3164:13;:11;:13::i;:::-;4286:1:::1;4266:22;;:8;:22;;::::0;4258:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4342:28;4361:8;4342:18;:28::i;:::-;4177:201:::0;:::o;781:98::-;834:7;861:10;854:17;;781:98;:::o;8824:335::-;8934:1;8917:19;;:5;:19;;;8909:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9015:1;8996:21;;:7;:21;;;8988:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9097:6;9067:11;:18;9079:5;9067:18;;;;;;;;;;;;;;;:27;9086:7;9067:27;;;;;;;;;;;;;;;:36;;;;9135:7;9119:32;;9128:5;9119:32;;;9144:6;9119:32;;;;;;:::i;:::-;;;;;;;;8824:335;;;:::o;9167:1736::-;9271:1;9255:18;;:4;:18;;;9247:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9348:1;9334:16;;:2;:16;;;9326:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9418:1;9409:6;:10;9401:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9478:17;9513:18;:24;9532:4;9513:24;;;;;;;;;;;;;;;;;;;;;;;;;9512:25;:52;;;;;9542:18;:22;9561:2;9542:22;;;;;;;;;;;;;;;;;;;;;;;;;9541:23;9512:52;9508:1039;;;9592:13;;;;;;;;;;;9586:19;;:2;:19;;;9583:142;;9658:14;;9648:6;9632:13;9642:2;9632:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9624:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9583:142;9756:1;9743:10;;:14;9740:148;;;9782:13;;;;;;;;;;;9776:19;;:2;:19;;;9773:101;;9827:31;9854:3;9827:22;9838:10;;9827:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;9815:43;;9773:101;9740:148;9919:1;9907:9;;:13;9904:188;;;9949:13;;;;;;;;;;;9941:21;;:4;:21;;;:55;;;;;9980:15;;;;;;;;;;;9966:30;;:2;:30;;;;9941:55;9937:140;;;10029:30;10055:3;10029:21;10040:9;;10029:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;10017:42;;9937:140;9904:188;10108:28;10139:24;10157:4;10139:9;:24::i;:::-;10108:55;;10183:6;;;;;;;;;;;10182:7;:30;;;;;10199:13;;;;;;;;;;;10193:19;;:2;:19;;;10182:30;:45;;;;;10216:11;;;;;;;;;;;10182:45;:87;;;;;10252:17;;10231:20;:38;10182:87;10178:358;;;10290:38;10307:20;10290:16;:38::i;:::-;10347:26;10376:21;10347:50;;10440:1;10419:18;:22;10416:105;;;10466:35;10479:21;10466:12;:35::i;:::-;10416:105;10271:265;10178:358;9566:981;9508:1039;10572:1;10562:9;:11;10559:161;;;10612:39;10641:9;10612;:24;10630:4;10612:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10587:9;:24;10605:4;10587:24;;;;;;;;;;;;;;;:64;;;;10692:4;10669:39;;10678:4;10669:39;;;10698:9;10669:39;;;;;;:::i;:::-;;;;;;;;10559:161;10746:27;10766:6;10746:9;:15;10756:4;10746:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10730:9;:15;10740:4;10730:15;;;;;;;;;;;;;;;:43;;;;10798:40;10816:21;10827:9;10816:6;:10;;:21;;;;:::i;:::-;10798:9;:13;10808:2;10798:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10784:9;:13;10794:2;10784:13;;;;;;;;;;;;;;;:54;;;;10869:2;10854:41;;10863:4;10854:41;;;10873:21;10884:9;10873:6;:10;;:21;;;;:::i;:::-;10854:41;;;;;;:::i;:::-;;;;;;;;9236:1667;9167:1736;;;:::o;1918:190::-;2004:7;2037:1;2032;:6;;2040:12;2024:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2064:9;2080:1;2076;:5;;;;:::i;:::-;2064:17;;2099:1;2092:8;;;1918:190;;;;;:::o;3443:132::-;3518:12;:10;:12::i;:::-;3507:23;;:7;:5;:7::i;:::-;:23;;;3499:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3443:132::o;11019:520::-;6584:4;6575:6;;:13;;;;;;;;;;;;;;;;;;11113:1:::1;11100:11;:14:::0;11097:27;11116:7:::1;11097:27;11134:21;11172:1;11158:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11134:40;;11203:4;11185;11190:1;11185:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11229:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11219:4;11224:1;11219:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11262:62;11279:4;11294:15;;;;;;;;;;;11312:11;11262:8;:62::i;:::-;11335:15;;;;;;;;;;;:66;;;11416:11;11442:1;11458:4;11485;11505:15;11335:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11086:453;6599:1;6620:5:::0;6611:6;;:14;;;;;;;;;;;;;;;;;;11019:520;:::o;11547:189::-;11605:16;11635:22;;;;;;;;;;;11627:36;;11671:6;11627:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11604:78;;;11701:11;11693:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;11593:143;11547:189;:::o;4538:191::-;4612:16;4631:6;;;;;;;;;;;4612:25;;4657:8;4648:6;;:17;;;;;;;;;;;;;;;;;;4712:8;4681:40;;4702:8;4681:40;;;;;;;;;;;;4601:128;4538:191;:::o;2370:132::-;2428:7;2455:39;2459:1;2462;2455:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2448:46;;2370:132;;;;:::o;2116:246::-;2174:7;2203:1;2198;:6;2194:47;;2228:1;2221:8;;;;2194:47;2251:9;2267:1;2263;:5;;;;:::i;:::-;2251:17;;2296:1;2291;2287;:5;;;;:::i;:::-;:10;2279:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2353:1;2346:8;;;2116:246;;;;;:::o;1587:179::-;1645:7;1665:9;1681:1;1677;:5;;;;:::i;:::-;1665:17;;1706:1;1701;:6;;1693:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1757:1;1750:8;;;1587:179;;;;:::o;1774:136::-;1832:7;1859:43;1863:1;1866;1859:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1852:50;;1774:136;;;;:::o;2510:189::-;2596:7;2628:1;2624;:5;2631:12;2616:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2655:9;2671:1;2667;:5;;;;:::i;:::-;2655:17;;2690:1;2683:8;;;2510:189;;;;;:::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;1430:117::-;1539:1;1536;1529: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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:104::-;4898:7;4927:24;4945:5;4927:24;:::i;:::-;4916:35;;4853:104;;;:::o;4963:142::-;5066:32;5092:5;5066:32;:::i;:::-;5061:3;5054:45;4963:142;;:::o;5111:254::-;5220:4;5258:2;5247:9;5243:18;5235:26;;5271:87;5355:1;5344:9;5340:17;5331:6;5271:87;:::i;:::-;5111:254;;;;:::o;5371:329::-;5430:6;5479:2;5467:9;5458:7;5454:23;5450:32;5447:119;;;5485:79;;:::i;:::-;5447:119;5605:1;5630:53;5675:7;5666:6;5655:9;5651:22;5630:53;:::i;:::-;5620:63;;5576:117;5371:329;;;;:::o;5706:118::-;5793:24;5811:5;5793:24;:::i;:::-;5788:3;5781:37;5706:118;;:::o;5830:222::-;5923:4;5961:2;5950:9;5946:18;5938:26;;5974:71;6042:1;6031:9;6027:17;6018:6;5974:71;:::i;:::-;5830:222;;;;:::o;6058:329::-;6117:6;6166:2;6154:9;6145:7;6141:23;6137:32;6134:119;;;6172:79;;:::i;:::-;6134:119;6292:1;6317:53;6362:7;6353:6;6342:9;6338:22;6317:53;:::i;:::-;6307:63;;6263:117;6058:329;;;;:::o;6393:474::-;6461:6;6469;6518:2;6506:9;6497:7;6493:23;6489:32;6486:119;;;6524:79;;:::i;:::-;6486:119;6644:1;6669:53;6714:7;6705:6;6694:9;6690:22;6669:53;:::i;:::-;6659:63;;6615:117;6771:2;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6742:118;6393:474;;;;;:::o;6873:::-;6941:6;6949;6998:2;6986:9;6977:7;6973:23;6969:32;6966:119;;;7004:79;;:::i;:::-;6966:119;7124:1;7149:53;7194:7;7185:6;7174:9;7170:22;7149:53;:::i;:::-;7139:63;;7095:117;7251:2;7277:53;7322:7;7313:6;7302:9;7298:22;7277:53;:::i;:::-;7267:63;;7222:118;6873:474;;;;;:::o;7353:180::-;7401:77;7398:1;7391:88;7498:4;7495:1;7488:15;7522:4;7519:1;7512:15;7539:102;7581:8;7628:5;7625:1;7621:13;7600:34;;7539:102;;;:::o;7647:848::-;7708:5;7715:4;7739:6;7730:15;;7763:5;7754:14;;7777:712;7798:1;7788:8;7785:15;7777:712;;;7893:4;7888:3;7884:14;7878:4;7875:24;7872:50;;;7902:18;;:::i;:::-;7872:50;7952:1;7942:8;7938:16;7935:451;;;8367:4;8360:5;8356:16;8347:25;;7935:451;8417:4;8411;8407:15;8399:23;;8447:32;8470:8;8447:32;:::i;:::-;8435:44;;7777:712;;;7647:848;;;;;;;:::o;8501:1073::-;8555:5;8746:8;8736:40;;8767:1;8758:10;;8769:5;;8736:40;8795:4;8785:36;;8812:1;8803:10;;8814:5;;8785:36;8881:4;8929:1;8924:27;;;;8965:1;8960:191;;;;8874:277;;8924:27;8942:1;8933:10;;8944:5;;;8960:191;9005:3;8995:8;8992:17;8989:43;;;9012:18;;:::i;:::-;8989:43;9061:8;9058:1;9054:16;9045:25;;9096:3;9089:5;9086:14;9083:40;;;9103:18;;:::i;:::-;9083:40;9136:5;;;8874:277;;9260:2;9250:8;9247:16;9241:3;9235:4;9232:13;9228:36;9210:2;9200:8;9197:16;9192:2;9186:4;9183:12;9179:35;9163:111;9160:246;;;9316:8;9310:4;9306:19;9297:28;;9351:3;9344:5;9341:14;9338:40;;;9358:18;;:::i;:::-;9338:40;9391:5;;9160:246;9431:42;9469:3;9459:8;9453:4;9450:1;9431:42;:::i;:::-;9416:57;;;;9505:4;9500:3;9496:14;9489:5;9486:25;9483:51;;;9514:18;;:::i;:::-;9483:51;9563:4;9556:5;9552:16;9543:25;;8501:1073;;;;;;:::o;9580:281::-;9638:5;9662:23;9680:4;9662:23;:::i;:::-;9654:31;;9706:25;9722:8;9706:25;:::i;:::-;9694:37;;9750:104;9787:66;9777:8;9771:4;9750:104;:::i;:::-;9741:113;;9580:281;;;;:::o;9867:410::-;9907:7;9930:20;9948:1;9930:20;:::i;:::-;9925:25;;9964:20;9982:1;9964:20;:::i;:::-;9959:25;;10019:1;10016;10012:9;10041:30;10059:11;10041:30;:::i;:::-;10030:41;;10220:1;10211:7;10207:15;10204:1;10201:22;10181:1;10174:9;10154:83;10131:139;;10250:18;;:::i;:::-;10131:139;9915:362;9867:410;;;;:::o;10283:163::-;10423:15;10419:1;10411:6;10407:14;10400:39;10283:163;:::o;10452:366::-;10594:3;10615:67;10679:2;10674:3;10615:67;:::i;:::-;10608:74;;10691:93;10780:3;10691:93;:::i;:::-;10809:2;10804:3;10800:12;10793:19;;10452:366;;;:::o;10824:419::-;10990:4;11028:2;11017:9;11013:18;11005:26;;11077:9;11071:4;11067:20;11063:1;11052:9;11048:17;11041:47;11105:131;11231:4;11105:131;:::i;:::-;11097:139;;10824:419;;;:::o;11249:163::-;11389:15;11385:1;11377:6;11373:14;11366:39;11249:163;:::o;11418:366::-;11560:3;11581:67;11645:2;11640:3;11581:67;:::i;:::-;11574:74;;11657:93;11746:3;11657:93;:::i;:::-;11775:2;11770:3;11766:12;11759:19;;11418:366;;;:::o;11790:419::-;11956:4;11994:2;11983:9;11979:18;11971:26;;12043:9;12037:4;12033:20;12029:1;12018:9;12014:17;12007:47;12071:131;12197:4;12071:131;:::i;:::-;12063:139;;11790:419;;;:::o;12215:225::-;12355:34;12351:1;12343:6;12339:14;12332:58;12424:8;12419:2;12411:6;12407:15;12400:33;12215:225;:::o;12446:366::-;12588:3;12609:67;12673:2;12668:3;12609:67;:::i;:::-;12602:74;;12685:93;12774:3;12685:93;:::i;:::-;12803:2;12798:3;12794:12;12787:19;;12446:366;;;:::o;12818:419::-;12984:4;13022:2;13011:9;13007:18;12999:26;;13071:9;13065:4;13061:20;13057:1;13046:9;13042:17;13035:47;13099:131;13225:4;13099:131;:::i;:::-;13091:139;;12818:419;;;:::o;13243:223::-;13383:34;13379:1;13371:6;13367:14;13360:58;13452:6;13447:2;13439:6;13435:15;13428:31;13243:223;:::o;13472:366::-;13614:3;13635:67;13699:2;13694:3;13635:67;:::i;:::-;13628:74;;13711:93;13800:3;13711:93;:::i;:::-;13829:2;13824:3;13820:12;13813:19;;13472:366;;;:::o;13844:419::-;14010:4;14048:2;14037:9;14033:18;14025:26;;14097:9;14091:4;14087:20;14083:1;14072:9;14068:17;14061:47;14125:131;14251:4;14125:131;:::i;:::-;14117:139;;13844:419;;;:::o;14269:221::-;14409:34;14405:1;14397:6;14393:14;14386:58;14478:4;14473:2;14465:6;14461:15;14454:29;14269:221;:::o;14496:366::-;14638:3;14659:67;14723:2;14718:3;14659:67;:::i;:::-;14652:74;;14735:93;14824:3;14735:93;:::i;:::-;14853:2;14848:3;14844:12;14837:19;;14496:366;;;:::o;14868:419::-;15034:4;15072:2;15061:9;15057:18;15049:26;;15121:9;15115:4;15111:20;15107:1;15096:9;15092:17;15085:47;15149:131;15275:4;15149:131;:::i;:::-;15141:139;;14868:419;;;:::o;15293:224::-;15433:34;15429:1;15421:6;15417:14;15410:58;15502:7;15497:2;15489:6;15485:15;15478:32;15293:224;:::o;15523:366::-;15665:3;15686:67;15750:2;15745:3;15686:67;:::i;:::-;15679:74;;15762:93;15851:3;15762:93;:::i;:::-;15880:2;15875:3;15871:12;15864:19;;15523:366;;;:::o;15895:419::-;16061:4;16099:2;16088:9;16084:18;16076:26;;16148:9;16142:4;16138:20;16134:1;16123:9;16119:17;16112:47;16176:131;16302:4;16176:131;:::i;:::-;16168:139;;15895:419;;;:::o;16320:222::-;16460:34;16456:1;16448:6;16444:14;16437:58;16529:5;16524:2;16516:6;16512:15;16505:30;16320:222;:::o;16548:366::-;16690:3;16711:67;16775:2;16770:3;16711:67;:::i;:::-;16704:74;;16787:93;16876:3;16787:93;:::i;:::-;16905:2;16900:3;16896:12;16889:19;;16548:366;;;:::o;16920:419::-;17086:4;17124:2;17113:9;17109:18;17101:26;;17173:9;17167:4;17163:20;17159:1;17148:9;17144:17;17137:47;17201:131;17327:4;17201:131;:::i;:::-;17193:139;;16920:419;;;:::o;17345:228::-;17485:34;17481:1;17473:6;17469:14;17462:58;17554:11;17549:2;17541:6;17537:15;17530:36;17345:228;:::o;17579:366::-;17721:3;17742:67;17806:2;17801:3;17742:67;:::i;:::-;17735:74;;17818:93;17907:3;17818:93;:::i;:::-;17936:2;17931:3;17927:12;17920:19;;17579:366;;;:::o;17951:419::-;18117:4;18155:2;18144:9;18140:18;18132:26;;18204:9;18198:4;18194:20;18190:1;18179:9;18175:17;18168:47;18232:131;18358:4;18232:131;:::i;:::-;18224:139;;17951:419;;;:::o;18376:191::-;18416:3;18435:20;18453:1;18435:20;:::i;:::-;18430:25;;18469:20;18487:1;18469:20;:::i;:::-;18464:25;;18512:1;18509;18505:9;18498:16;;18533:3;18530:1;18527:10;18524:36;;;18540:18;;:::i;:::-;18524:36;18376:191;;;;:::o;18573:182::-;18713:34;18709:1;18701:6;18697:14;18690:58;18573:182;:::o;18761:366::-;18903:3;18924:67;18988:2;18983:3;18924:67;:::i;:::-;18917:74;;19000:93;19089:3;19000:93;:::i;:::-;19118:2;19113:3;19109:12;19102:19;;18761:366;;;:::o;19133:419::-;19299:4;19337:2;19326:9;19322:18;19314:26;;19386:9;19380:4;19376:20;19372:1;19361:9;19357:17;19350:47;19414:131;19540:4;19414:131;:::i;:::-;19406:139;;19133:419;;;:::o;19558:194::-;19598:4;19618:20;19636:1;19618:20;:::i;:::-;19613:25;;19652:20;19670:1;19652:20;:::i;:::-;19647:25;;19696:1;19693;19689:9;19681:17;;19720:1;19714:4;19711:11;19708:37;;;19725:18;;:::i;:::-;19708:37;19558:194;;;;:::o;19758:182::-;19898:34;19894:1;19886:6;19882:14;19875:58;19758:182;:::o;19946:366::-;20088:3;20109:67;20173:2;20168:3;20109:67;:::i;:::-;20102:74;;20185:93;20274:3;20185:93;:::i;:::-;20303:2;20298:3;20294:12;20287:19;;19946:366;;;:::o;20318:419::-;20484:4;20522:2;20511:9;20507:18;20499:26;;20571:9;20565:4;20561:20;20557:1;20546:9;20542:17;20535:47;20599:131;20725:4;20599:131;:::i;:::-;20591:139;;20318:419;;;:::o;20743:180::-;20791:77;20788:1;20781:88;20888:4;20885:1;20878:15;20912:4;20909:1;20902:15;20929:180;20977:77;20974:1;20967:88;21074:4;21071:1;21064:15;21098:4;21095:1;21088:15;21115:143;21172:5;21203:6;21197:13;21188:22;;21219:33;21246:5;21219:33;:::i;:::-;21115:143;;;;:::o;21264:351::-;21334:6;21383:2;21371:9;21362:7;21358:23;21354:32;21351:119;;;21389:79;;:::i;:::-;21351:119;21509:1;21534:64;21590:7;21581:6;21570:9;21566:22;21534:64;:::i;:::-;21524:74;;21480:128;21264:351;;;;:::o;21621:85::-;21666:7;21695:5;21684:16;;21621:85;;;:::o;21712:60::-;21740:3;21761:5;21754:12;;21712:60;;;:::o;21778:158::-;21836:9;21869:61;21887:42;21896:32;21922:5;21896:32;:::i;:::-;21887:42;:::i;:::-;21869:61;:::i;:::-;21856:74;;21778:158;;;:::o;21942:147::-;22037:45;22076:5;22037:45;:::i;:::-;22032:3;22025:58;21942:147;;:::o;22095:114::-;22162:6;22196:5;22190:12;22180:22;;22095:114;;;:::o;22215:184::-;22314:11;22348:6;22343:3;22336:19;22388:4;22383:3;22379:14;22364:29;;22215:184;;;;:::o;22405:132::-;22472:4;22495:3;22487:11;;22525:4;22520:3;22516:14;22508:22;;22405:132;;;:::o;22543:108::-;22620:24;22638:5;22620:24;:::i;:::-;22615:3;22608:37;22543:108;;:::o;22657:179::-;22726:10;22747:46;22789:3;22781:6;22747:46;:::i;:::-;22825:4;22820:3;22816:14;22802:28;;22657:179;;;;:::o;22842:113::-;22912:4;22944;22939:3;22935:14;22927:22;;22842:113;;;:::o;22991:732::-;23110:3;23139:54;23187:5;23139:54;:::i;:::-;23209:86;23288:6;23283:3;23209:86;:::i;:::-;23202:93;;23319:56;23369:5;23319:56;:::i;:::-;23398:7;23429:1;23414:284;23439:6;23436:1;23433:13;23414:284;;;23515:6;23509:13;23542:63;23601:3;23586:13;23542:63;:::i;:::-;23535:70;;23628:60;23681:6;23628:60;:::i;:::-;23618:70;;23474:224;23461:1;23458;23454:9;23449:14;;23414:284;;;23418:14;23714:3;23707:10;;23115:608;;;22991:732;;;;:::o;23729:831::-;23992:4;24030:3;24019:9;24015:19;24007:27;;24044:71;24112:1;24101:9;24097:17;24088:6;24044:71;:::i;:::-;24125:80;24201:2;24190:9;24186:18;24177:6;24125:80;:::i;:::-;24252:9;24246:4;24242:20;24237:2;24226:9;24222:18;24215:48;24280:108;24383:4;24374:6;24280:108;:::i;:::-;24272:116;;24398:72;24466:2;24455:9;24451:18;24442:6;24398:72;:::i;:::-;24480:73;24548:3;24537:9;24533:19;24524:6;24480:73;:::i;:::-;23729:831;;;;;;;;:::o;24566:147::-;24667:11;24704:3;24689:18;;24566:147;;;;:::o;24719:114::-;;:::o;24839:398::-;24998:3;25019:83;25100:1;25095:3;25019:83;:::i;:::-;25012:90;;25111:93;25200:3;25111:93;:::i;:::-;25229:1;25224:3;25220:11;25213:18;;24839:398;;;:::o;25243:379::-;25427:3;25449:147;25592:3;25449:147;:::i;:::-;25442:154;;25613:3;25606:10;;25243:379;;;:::o;25628:161::-;25768:13;25764:1;25756:6;25752:14;25745:37;25628:161;:::o;25795:366::-;25937:3;25958:67;26022:2;26017:3;25958:67;:::i;:::-;25951:74;;26034:93;26123:3;26034:93;:::i;:::-;26152:2;26147:3;26143:12;26136:19;;25795:366;;;:::o;26167:419::-;26333:4;26371:2;26360:9;26356:18;26348:26;;26420:9;26414:4;26410:20;26406:1;26395:9;26391:17;26384:47;26448:131;26574:4;26448:131;:::i;:::-;26440:139;;26167:419;;;:::o;26592:180::-;26640:77;26637:1;26630:88;26737:4;26734:1;26727:15;26761:4;26758:1;26751:15;26778:185;26818:1;26835:20;26853:1;26835:20;:::i;:::-;26830:25;;26869:20;26887:1;26869:20;:::i;:::-;26864:25;;26908:1;26898:35;;26913:18;;:::i;:::-;26898:35;26955:1;26952;26948:9;26943:14;;26778:185;;;;:::o;26969:220::-;27109:34;27105:1;27097:6;27093:14;27086:58;27178:3;27173:2;27165:6;27161:15;27154:28;26969:220;:::o;27195:366::-;27337:3;27358:67;27422:2;27417:3;27358:67;:::i;:::-;27351:74;;27434:93;27523:3;27434:93;:::i;:::-;27552:2;27547:3;27543:12;27536:19;;27195:366;;;:::o;27567:419::-;27733:4;27771:2;27760:9;27756:18;27748:26;;27820:9;27814:4;27810:20;27806:1;27795:9;27791:17;27784:47;27848:131;27974:4;27848:131;:::i;:::-;27840:139;;27567:419;;;:::o;27992:177::-;28132:29;28128:1;28120:6;28116:14;28109:53;27992:177;:::o;28175:366::-;28317:3;28338:67;28402:2;28397:3;28338:67;:::i;:::-;28331:74;;28414:93;28503:3;28414:93;:::i;:::-;28532:2;28527:3;28523:12;28516:19;;28175:366;;;:::o;28547:419::-;28713:4;28751:2;28740:9;28736:18;28728:26;;28800:9;28794:4;28790:20;28786:1;28775:9;28771:17;28764:47;28828:131;28954:4;28828:131;:::i;:::-;28820:139;;28547:419;;;:::o

Swarm Source

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