ETH Price: $3,648.77 (-6.05%)

Token

ERC-20: Solaxy (SOLX)
 

Overview

Max Total Supply

138,046,000,000 SOLX

Holders

6

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
842,418,180 SOLX

Value
$0.00
0x66b0fa76a0f54a04ffb7bf1bed1e1b009af9c908
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:
Token

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-06
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);

  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `to`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address to, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `from` to `to` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
  /**
   * @dev Returns the name of the token.
   */
  function name() external view returns (string memory);

  /**
   * @dev Returns the symbol of the token.
   */
  function symbol() external view returns (string memory);

  /**
   * @dev Returns the decimals places of the token.
   */
  function decimals() external view returns (uint8);
}

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
  function _msgSender() internal view virtual returns (address) {
    return msg.sender;
  }

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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);
  }
}

contract Token is Context, IERC20Metadata, Ownable {
  mapping(address => uint256) private _balances;

  mapping(address => mapping(address => uint256)) private _allowances;

  uint256 private _totalSupply;

  string private _name;
  string private _symbol;
  uint8 private constant _decimals = 18;
  uint256 public constant treasuryReserve = 27_609_200_000 * (10 ** _decimals);
  uint256 public constant marketingReserve = 20_706_900_000 * (10 ** _decimals);
  uint256 public constant rewardsReserve = 34_511_500_000 * (10 ** _decimals);
  uint256 public constant listingsReserve = 13_804_600_000 * (10 ** _decimals);
  uint256 public constant developmentReserve = 41_413_800_000 * (10 ** _decimals);
  bool public firstBuyCompleted = false; // Flag to track if the first buy has been completed
  address public uniswapPool;

  event FirstBuyDone(); // Event emitted when the first buy is done

  /**
   * @dev Contract constructor.
   */
  constructor() {
    _name = 'Solaxy';
    _symbol = 'SOLX';
    _mint(0x51f8dcA2aFe4894Ce8B7aAB752CF97374662EEfD, treasuryReserve);
    _mint(0x509e7249dad865852677d6455dE63A3882ea8E13, marketingReserve);
    _mint(0xBfE68afaF59C7b89ebbEcc9e2936e7167d16F648, rewardsReserve);
    _mint(0x8c597c1E502049bac882368C3e29943d0D7E78b9, listingsReserve);
    _mint(0x697B23CA9C1bF14d89dCeA311Ee34f4Dce8ed018, developmentReserve);
  }

  /**
   * @dev Returns the name of the token.
   * @return The name of the token.
   */
  function name() public view virtual override returns (string memory) {
    return _name;
  }

  /**
   * @dev Returns the symbol of the token.
   * @return The symbol of the token.
   */
  function symbol() public view virtual override returns (string memory) {
    return _symbol;
  }

  /**
   * @dev Returns the number of decimals used for token display.
   * @return The number of decimals.
   */
  function decimals() public view virtual override returns (uint8) {
    return _decimals;
  }

  // Admin function to update the Uniswap pool if needed
  function setUniswapPool(address _uniswapPool) external onlyOwner {
    require(_uniswapPool != address(0), 'Uniswap pool address cannot be zero');
    uniswapPool = _uniswapPool;
  }

  /**
   * @dev Returns the total supply of the token.
   * @return The total supply.
   */
  function totalSupply() public view virtual override returns (uint256) {
    return _totalSupply;
  }

  /**
   * @dev Returns the balance of the specified account.
   * @param account The address to check the balance for.
   * @return The balance of the account.
   */
  function balanceOf(address account) public view virtual override returns (uint256) {
    return _balances[account];
  }

  /**
   * @dev Transfers tokens from the caller to a specified recipient.
   * @param recipient The address to transfer tokens to.
   * @param amount The amount of tokens to transfer.
   * @return A boolean value indicating whether the transfer was successful.
   */
  function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
    _transfer(_msgSender(), recipient, amount);
    return true;
  }

  /**
   * @dev Returns the amount of tokens that the spender is allowed to spend on behalf of the owner.
   * @param from The address that approves the spending.
   * @param to The address that is allowed to spend.
   * @return The remaining allowance for the spender.
   */
  function allowance(address from, address to) public view virtual override returns (uint256) {
    return _allowances[from][to];
  }

  /**
   * @dev Approves the specified address to spend the specified amount of tokens on behalf of the caller.
   * @param to The address to approve the spending for.
   * @param amount The amount of tokens to approve.
   * @return A boolean value indicating whether the approval was successful.
   */
  function approve(address to, uint256 amount) public virtual override returns (bool) {
    _approve(_msgSender(), to, amount);
    return true;
  }

  /**
   * @dev Transfers tokens from one address to another.
   * @param sender The address to transfer tokens from.
   * @param recipient The address to transfer tokens to.
   * @param amount The amount of tokens to transfer.
   * @return A boolean value indicating whether the transfer was successful.
   */
  function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
    _transfer(sender, recipient, amount);

    uint256 currentAllowance = _allowances[sender][_msgSender()];
    require(currentAllowance >= amount, 'ERC20: transfer amount exceeds allowance');
    unchecked {
      _approve(sender, _msgSender(), currentAllowance - amount);
    }

    return true;
  }

  /**
   * @dev Increases the allowance of the specified address to spend tokens on behalf of the caller.
   * @param to The address to increase the allowance for.
   * @param addedValue The amount of tokens to increase the allowance by.
   * @return A boolean value indicating whether the increase was successful.
   */
  function increaseAllowance(address to, uint256 addedValue) public virtual returns (bool) {
    _approve(_msgSender(), to, _allowances[_msgSender()][to] + addedValue);
    return true;
  }

  /**
   * @dev Decreases the allowance granted by the owner of the tokens to `to` account.
   * @param to The account allowed to spend the tokens.
   * @param subtractedValue The amount of tokens to decrease the allowance by.
   * @return A boolean value indicating whether the operation succeeded.
   */
  function decreaseAllowance(address to, uint256 subtractedValue) public virtual returns (bool) {
    uint256 currentAllowance = _allowances[_msgSender()][to];
    require(currentAllowance >= subtractedValue, 'ERC20: decreased allowance below zero');
    unchecked {
      _approve(_msgSender(), to, currentAllowance - subtractedValue);
    }

    return true;
  }

  /**
   * @dev Transfers `amount` tokens from `sender` to `recipient`.
   * @param sender The account to transfer tokens from.
   * @param recipient The account to transfer tokens to.
   * @param amount The amount of tokens to transfer.
   */
  function _transfer(address sender, address recipient, uint256 amount) internal virtual {
    require(amount > 0, 'ERC20: transfer amount zero');
    require(sender != address(0), 'ERC20: transfer from the zero address');
    require(recipient != address(0), 'ERC20: transfer to the zero address');

    uint256 senderBalance = _balances[sender];
    require(senderBalance >= amount, 'ERC20: transfer amount exceeds balance');
    if (!firstBuyCompleted && sender == uniswapPool) {
      require(tx.origin == owner(), 'First Buy Pending');
      firstBuyCompleted = true;
      emit FirstBuyDone();
    }

    unchecked {
      _balances[sender] = senderBalance - amount;
    }
    _balances[recipient] += amount;

    emit Transfer(sender, recipient, amount);
  }

  /**
   * @dev Creates `amount` tokens and assigns them to `account`.
   * @param account The account to assign the newly created tokens to.
   * @param amount The amount of tokens to create.
   */
  function _mint(address account, uint256 amount) internal virtual {
    require(account != address(0), 'ERC20: mint to the zero address');

    _totalSupply += amount;
    _balances[account] += amount;
    emit Transfer(address(0), account, amount);
  }

  /**
   * @dev Destroys `amount` tokens from `account`, reducing the total supply.
   * @param account The account to burn tokens from.
   * @param amount The amount of tokens to burn.
   */
  function _burn(address account, uint256 amount) internal virtual {
    require(account != address(0), 'ERC20: burn from the zero address');

    uint256 accountBalance = _balances[account];
    require(accountBalance >= amount, 'ERC20: burn amount exceeds balance');
    unchecked {
      _balances[account] = accountBalance - amount;
    }
    _totalSupply -= amount;

    emit Transfer(account, address(0), amount);
  }

  /**
   * @dev Destroys `amount` tokens from the caller's account, reducing the total supply.
   * @param amount The amount of tokens to burn.
   */
  function burn(uint256 amount) external {
    _burn(_msgSender(), amount);
  }

  /**
   * @dev Sets `amount` as the allowance of `to` over the caller's tokens.
   * @param from The account granting the allowance.
   * @param to The account allowed to spend the tokens.
   * @param amount The amount of tokens to allow.
   */
  function _approve(address from, address to, uint256 amount) internal virtual {
    require(from != address(0), 'ERC20: approve from the zero address');
    require(to != address(0), 'ERC20: approve to the zero address');

    _allowances[from][to] = amount;
    emit Approval(from, to, amount);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FirstBuyDone","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","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":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstBuyCompleted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"listingsReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapPool","type":"address"}],"name":"setUniswapPool","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":"treasuryReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526000600660006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506200004d620000416200025260201b60201c565b6200025a60201b60201c565b6040518060400160405280600681526020017f536f6c6178790000000000000000000000000000000000000000000000000000815250600490805190602001906200009a92919062000470565b506040518060400160405280600481526020017f534f4c580000000000000000000000000000000000000000000000000000000081525060059080519060200190620000e892919062000470565b50620001307351f8dca2afe4894ce8b7aab752cf97374662eefd6012600a620001129190620006ba565b64066da2f5806200012491906200070b565b6200031e60201b60201c565b6200017773509e7249dad865852677d6455de63a3882ea8e136012600a620001599190620006ba565b6404d23a38206200016b91906200070b565b6200031e60201b60201c565b620001be73bfe68afaf59c7b89ebbecc9e2936e7167d16f6486012600a620001a09190620006ba565b6408090bb2e0620001b291906200070b565b6200031e60201b60201c565b62000205738c597c1e502049bac882368c3e29943d0d7e78b96012600a620001e79190620006ba565b640336d17ac0620001f991906200070b565b6200031e60201b60201c565b6200024c73697b23ca9c1bf14d89dcea311ee34f4dce8ed0186012600a6200022e9190620006ba565b6409a47470406200024091906200070b565b6200031e60201b60201c565b620008df565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000391576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038890620007cd565b60405180910390fd5b8060036000828254620003a59190620007ef565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003fd9190620007ef565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200046491906200085d565b60405180910390a35050565b8280546200047e90620008a9565b90600052602060002090601f016020900481019282620004a25760008555620004ee565b82601f10620004bd57805160ff1916838001178555620004ee565b82800160010185558215620004ee579182015b82811115620004ed578251825591602001919060010190620004d0565b5b509050620004fd919062000501565b5090565b5b808211156200051c57600081600090555060010162000502565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005ae5780860481111562000586576200058562000520565b5b6001851615620005965780820291505b8081029050620005a6856200054f565b945062000566565b94509492505050565b600082620005c957600190506200069c565b81620005d957600090506200069c565b8160018114620005f25760028114620005fd5762000633565b60019150506200069c565b60ff84111562000612576200061162000520565b5b8360020a9150848211156200062c576200062b62000520565b5b506200069c565b5060208310610133831016604e8410600b84101617156200066d5782820a90508381111562000667576200066662000520565b5b6200069c565b6200067c84848460016200055c565b9250905081840481111562000696576200069562000520565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620006c782620006a3565b9150620006d483620006ad565b9250620007037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005b7565b905092915050565b60006200071882620006a3565b91506200072583620006a3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000761576200076062000520565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007b5601f836200076c565b9150620007c2826200077d565b602082019050919050565b60006020820190508181036000830152620007e881620007a6565b9050919050565b6000620007fc82620006a3565b91506200080983620006a3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000841576200084062000520565b5b828201905092915050565b6200085781620006a3565b82525050565b60006020820190506200087460008301846200084c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008c257607f821691505b60208210811415620008d957620008d86200087a565b5b50919050565b61225080620008ef6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d714610380578063a9059cbb146103b0578063bdd3d825146103e0578063c4152bab146103fe578063dd62ed3e1461041c578063f2fde38b1461044c5761014d565b806370a08231146102d0578063715018a6146103005780638da5cb5b1461030a5780638e2efdf2146103285780638f90e9021461034657806395d89b41146103625761014d565b8063313ce56711610115578063313ce5671461020c578063395093511461022a5780633e85713d1461025a57806342966c681461027857806359297dbf146102945780635ca72856146102b25761014d565b806304b1a76f1461015257806306fdde0314610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a610468565b6040516101679190611475565b60405180910390f35b610178610489565b6040516101859190611529565b60405180910390f35b6101a860048036038101906101a391906115da565b61051b565b6040516101b59190611635565b60405180910390f35b6101c6610539565b6040516101d39190611475565b60405180910390f35b6101f660048036038101906101f19190611650565b610543565b6040516102039190611635565b60405180910390f35b61021461063b565b60405161022191906116bf565b60405180910390f35b610244600480360381019061023f91906115da565b610644565b6040516102519190611635565b60405180910390f35b6102626106f0565b60405161026f9190611475565b60405180910390f35b610292600480360381019061028d91906116da565b610711565b005b61029c610725565b6040516102a99190611475565b60405180910390f35b6102ba610746565b6040516102c79190611635565b60405180910390f35b6102ea60048036038101906102e59190611707565b610759565b6040516102f79190611475565b60405180910390f35b6103086107a2565b005b6103126107b6565b60405161031f9190611743565b60405180910390f35b6103306107df565b60405161033d9190611475565b60405180910390f35b610360600480360381019061035b9190611707565b610800565b005b61036a6108bc565b6040516103779190611529565b60405180910390f35b61039a600480360381019061039591906115da565b61094e565b6040516103a79190611635565b60405180910390f35b6103ca60048036038101906103c591906115da565b610a39565b6040516103d79190611635565b60405180910390f35b6103e8610a57565b6040516103f59190611743565b60405180910390f35b610406610a7d565b6040516104139190611475565b60405180910390f35b6104366004803603810190610431919061175e565b610a9e565b6040516104439190611475565b60405180910390f35b61046660048036038101906104619190611707565b610b25565b005b6012600a6104769190611900565b640336d17ac0610486919061194b565b81565b606060048054610498906119d4565b80601f01602080910402602001604051908101604052809291908181526020018280546104c4906119d4565b80156105115780601f106104e657610100808354040283529160200191610511565b820191906000526020600020905b8154815290600101906020018083116104f457829003601f168201915b5050505050905090565b600061052f610528610ba9565b8484610bb1565b6001905092915050565b6000600354905090565b6000610550848484610d7c565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061059b610ba9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061290611a78565b60405180910390fd5b61062f85610627610ba9565b858403610bb1565b60019150509392505050565b60006012905090565b60006106e6610651610ba9565b84846002600061065f610ba9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e19190611a98565b610bb1565b6001905092915050565b6012600a6106fe9190611900565b6404d23a382061070e919061194b565b81565b61072261071c610ba9565b82611159565b50565b6012600a6107339190611900565b64066da2f580610743919061194b565b81565b600660009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107aa61131a565b6107b46000611398565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6012600a6107ed9190611900565b6409a47470406107fd919061194b565b81565b61080861131a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086f90611b60565b60405180910390fd5b80600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600580546108cb906119d4565b80601f01602080910402602001604051908101604052809291908181526020018280546108f7906119d4565b80156109445780601f1061091957610100808354040283529160200191610944565b820191906000526020600020905b81548152906001019060200180831161092757829003601f168201915b5050505050905090565b6000806002600061095d610ba9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1190611bf2565b60405180910390fd5b610a2e610a25610ba9565b85858403610bb1565b600191505092915050565b6000610a4d610a46610ba9565b8484610d7c565b6001905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6012600a610a8b9190611900565b6408090bb2e0610a9b919061194b565b81565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b2d61131a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9490611c84565b60405180910390fd5b610ba681611398565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890611d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890611da8565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d6f9190611475565b60405180910390a3505050565b60008111610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db690611e14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2690611ea6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690611f38565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d90611fca565b60405180910390fd5b600660009054906101000a900460ff16158015610f905750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561105257610f9d6107b6565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190612036565b60405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507feeb6deeff5cff9e1623687157a8a67c5e5483d8b510f73e7b59dcd8ea59ab86560405160405180910390a15b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110e79190611a98565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161114b9190611475565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c0906120c8565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112479061215a565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546112a8919061217a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161130d9190611475565b60405180910390a3505050565b611322610ba9565b73ffffffffffffffffffffffffffffffffffffffff166113406107b6565b73ffffffffffffffffffffffffffffffffffffffff1614611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d906121fa565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000819050919050565b61146f8161145c565b82525050565b600060208201905061148a6000830184611466565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ca5780820151818401526020810190506114af565b838111156114d9576000848401525b50505050565b6000601f19601f8301169050919050565b60006114fb82611490565b611505818561149b565b93506115158185602086016114ac565b61151e816114df565b840191505092915050565b6000602082019050818103600083015261154381846114f0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061157b82611550565b9050919050565b61158b81611570565b811461159657600080fd5b50565b6000813590506115a881611582565b92915050565b6115b78161145c565b81146115c257600080fd5b50565b6000813590506115d4816115ae565b92915050565b600080604083850312156115f1576115f061154b565b5b60006115ff85828601611599565b9250506020611610858286016115c5565b9150509250929050565b60008115159050919050565b61162f8161161a565b82525050565b600060208201905061164a6000830184611626565b92915050565b6000806000606084860312156116695761166861154b565b5b600061167786828701611599565b935050602061168886828701611599565b9250506040611699868287016115c5565b9150509250925092565b600060ff82169050919050565b6116b9816116a3565b82525050565b60006020820190506116d460008301846116b0565b92915050565b6000602082840312156116f0576116ef61154b565b5b60006116fe848285016115c5565b91505092915050565b60006020828403121561171d5761171c61154b565b5b600061172b84828501611599565b91505092915050565b61173d81611570565b82525050565b60006020820190506117586000830184611734565b92915050565b600080604083850312156117755761177461154b565b5b600061178385828601611599565b925050602061179485828601611599565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561182457808604811115611800576117ff61179e565b5b600185161561180f5780820291505b808102905061181d856117cd565b94506117e4565b94509492505050565b60008261183d57600190506118f9565b8161184b57600090506118f9565b8160018114611861576002811461186b5761189a565b60019150506118f9565b60ff84111561187d5761187c61179e565b5b8360020a9150848211156118945761189361179e565b5b506118f9565b5060208310610133831016604e8410600b84101617156118cf5782820a9050838111156118ca576118c961179e565b5b6118f9565b6118dc84848460016117da565b925090508184048111156118f3576118f261179e565b5b81810290505b9392505050565b600061190b8261145c565b9150611916836116a3565b92506119437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461182d565b905092915050565b60006119568261145c565b91506119618361145c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561199a5761199961179e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ec57607f821691505b60208210811415611a00576119ff6119a5565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611a6260288361149b565b9150611a6d82611a06565b604082019050919050565b60006020820190508181036000830152611a9181611a55565b9050919050565b6000611aa38261145c565b9150611aae8361145c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ae357611ae261179e565b5b828201905092915050565b7f556e697377617020706f6f6c20616464726573732063616e6e6f74206265207a60008201527f65726f0000000000000000000000000000000000000000000000000000000000602082015250565b6000611b4a60238361149b565b9150611b5582611aee565b604082019050919050565b60006020820190508181036000830152611b7981611b3d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611bdc60258361149b565b9150611be782611b80565b604082019050919050565b60006020820190508181036000830152611c0b81611bcf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c6e60268361149b565b9150611c7982611c12565b604082019050919050565b60006020820190508181036000830152611c9d81611c61565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d0060248361149b565b9150611d0b82611ca4565b604082019050919050565b60006020820190508181036000830152611d2f81611cf3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d9260228361149b565b9150611d9d82611d36565b604082019050919050565b60006020820190508181036000830152611dc181611d85565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74207a65726f0000000000600082015250565b6000611dfe601b8361149b565b9150611e0982611dc8565b602082019050919050565b60006020820190508181036000830152611e2d81611df1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611e9060258361149b565b9150611e9b82611e34565b604082019050919050565b60006020820190508181036000830152611ebf81611e83565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f2260238361149b565b9150611f2d82611ec6565b604082019050919050565b60006020820190508181036000830152611f5181611f15565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611fb460268361149b565b9150611fbf82611f58565b604082019050919050565b60006020820190508181036000830152611fe381611fa7565b9050919050565b7f4669727374204275792050656e64696e67000000000000000000000000000000600082015250565b600061202060118361149b565b915061202b82611fea565b602082019050919050565b6000602082019050818103600083015261204f81612013565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120b260218361149b565b91506120bd82612056565b604082019050919050565b600060208201905081810360008301526120e1816120a5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061214460228361149b565b915061214f826120e8565b604082019050919050565b6000602082019050818103600083015261217381612137565b9050919050565b60006121858261145c565b91506121908361145c565b9250828210156121a3576121a261179e565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006121e460208361149b565b91506121ef826121ae565b602082019050919050565b60006020820190508181036000830152612213816121d7565b905091905056fea26469706673582212208788424ab07a43e6d33b6a3d25307423fa082f2c2b249db921b82253d2aecfff64736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d714610380578063a9059cbb146103b0578063bdd3d825146103e0578063c4152bab146103fe578063dd62ed3e1461041c578063f2fde38b1461044c5761014d565b806370a08231146102d0578063715018a6146103005780638da5cb5b1461030a5780638e2efdf2146103285780638f90e9021461034657806395d89b41146103625761014d565b8063313ce56711610115578063313ce5671461020c578063395093511461022a5780633e85713d1461025a57806342966c681461027857806359297dbf146102945780635ca72856146102b25761014d565b806304b1a76f1461015257806306fdde0314610170578063095ea7b31461018e57806318160ddd146101be57806323b872dd146101dc575b600080fd5b61015a610468565b6040516101679190611475565b60405180910390f35b610178610489565b6040516101859190611529565b60405180910390f35b6101a860048036038101906101a391906115da565b61051b565b6040516101b59190611635565b60405180910390f35b6101c6610539565b6040516101d39190611475565b60405180910390f35b6101f660048036038101906101f19190611650565b610543565b6040516102039190611635565b60405180910390f35b61021461063b565b60405161022191906116bf565b60405180910390f35b610244600480360381019061023f91906115da565b610644565b6040516102519190611635565b60405180910390f35b6102626106f0565b60405161026f9190611475565b60405180910390f35b610292600480360381019061028d91906116da565b610711565b005b61029c610725565b6040516102a99190611475565b60405180910390f35b6102ba610746565b6040516102c79190611635565b60405180910390f35b6102ea60048036038101906102e59190611707565b610759565b6040516102f79190611475565b60405180910390f35b6103086107a2565b005b6103126107b6565b60405161031f9190611743565b60405180910390f35b6103306107df565b60405161033d9190611475565b60405180910390f35b610360600480360381019061035b9190611707565b610800565b005b61036a6108bc565b6040516103779190611529565b60405180910390f35b61039a600480360381019061039591906115da565b61094e565b6040516103a79190611635565b60405180910390f35b6103ca60048036038101906103c591906115da565b610a39565b6040516103d79190611635565b60405180910390f35b6103e8610a57565b6040516103f59190611743565b60405180910390f35b610406610a7d565b6040516104139190611475565b60405180910390f35b6104366004803603810190610431919061175e565b610a9e565b6040516104439190611475565b60405180910390f35b61046660048036038101906104619190611707565b610b25565b005b6012600a6104769190611900565b640336d17ac0610486919061194b565b81565b606060048054610498906119d4565b80601f01602080910402602001604051908101604052809291908181526020018280546104c4906119d4565b80156105115780601f106104e657610100808354040283529160200191610511565b820191906000526020600020905b8154815290600101906020018083116104f457829003601f168201915b5050505050905090565b600061052f610528610ba9565b8484610bb1565b6001905092915050565b6000600354905090565b6000610550848484610d7c565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061059b610ba9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561061b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061290611a78565b60405180910390fd5b61062f85610627610ba9565b858403610bb1565b60019150509392505050565b60006012905090565b60006106e6610651610ba9565b84846002600061065f610ba9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106e19190611a98565b610bb1565b6001905092915050565b6012600a6106fe9190611900565b6404d23a382061070e919061194b565b81565b61072261071c610ba9565b82611159565b50565b6012600a6107339190611900565b64066da2f580610743919061194b565b81565b600660009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107aa61131a565b6107b46000611398565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6012600a6107ed9190611900565b6409a47470406107fd919061194b565b81565b61080861131a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086f90611b60565b60405180910390fd5b80600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600580546108cb906119d4565b80601f01602080910402602001604051908101604052809291908181526020018280546108f7906119d4565b80156109445780601f1061091957610100808354040283529160200191610944565b820191906000526020600020905b81548152906001019060200180831161092757829003601f168201915b5050505050905090565b6000806002600061095d610ba9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1190611bf2565b60405180910390fd5b610a2e610a25610ba9565b85858403610bb1565b600191505092915050565b6000610a4d610a46610ba9565b8484610d7c565b6001905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6012600a610a8b9190611900565b6408090bb2e0610a9b919061194b565b81565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b2d61131a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9490611c84565b60405180910390fd5b610ba681611398565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890611d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890611da8565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d6f9190611475565b60405180910390a3505050565b60008111610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db690611e14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2690611ea6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690611f38565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d90611fca565b60405180910390fd5b600660009054906101000a900460ff16158015610f905750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561105257610f9d6107b6565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190612036565b60405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507feeb6deeff5cff9e1623687157a8a67c5e5483d8b510f73e7b59dcd8ea59ab86560405160405180910390a15b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110e79190611a98565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161114b9190611475565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c0906120c8565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112479061215a565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546112a8919061217a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161130d9190611475565b60405180910390a3505050565b611322610ba9565b73ffffffffffffffffffffffffffffffffffffffff166113406107b6565b73ffffffffffffffffffffffffffffffffffffffff1614611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d906121fa565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000819050919050565b61146f8161145c565b82525050565b600060208201905061148a6000830184611466565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ca5780820151818401526020810190506114af565b838111156114d9576000848401525b50505050565b6000601f19601f8301169050919050565b60006114fb82611490565b611505818561149b565b93506115158185602086016114ac565b61151e816114df565b840191505092915050565b6000602082019050818103600083015261154381846114f0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061157b82611550565b9050919050565b61158b81611570565b811461159657600080fd5b50565b6000813590506115a881611582565b92915050565b6115b78161145c565b81146115c257600080fd5b50565b6000813590506115d4816115ae565b92915050565b600080604083850312156115f1576115f061154b565b5b60006115ff85828601611599565b9250506020611610858286016115c5565b9150509250929050565b60008115159050919050565b61162f8161161a565b82525050565b600060208201905061164a6000830184611626565b92915050565b6000806000606084860312156116695761166861154b565b5b600061167786828701611599565b935050602061168886828701611599565b9250506040611699868287016115c5565b9150509250925092565b600060ff82169050919050565b6116b9816116a3565b82525050565b60006020820190506116d460008301846116b0565b92915050565b6000602082840312156116f0576116ef61154b565b5b60006116fe848285016115c5565b91505092915050565b60006020828403121561171d5761171c61154b565b5b600061172b84828501611599565b91505092915050565b61173d81611570565b82525050565b60006020820190506117586000830184611734565b92915050565b600080604083850312156117755761177461154b565b5b600061178385828601611599565b925050602061179485828601611599565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561182457808604811115611800576117ff61179e565b5b600185161561180f5780820291505b808102905061181d856117cd565b94506117e4565b94509492505050565b60008261183d57600190506118f9565b8161184b57600090506118f9565b8160018114611861576002811461186b5761189a565b60019150506118f9565b60ff84111561187d5761187c61179e565b5b8360020a9150848211156118945761189361179e565b5b506118f9565b5060208310610133831016604e8410600b84101617156118cf5782820a9050838111156118ca576118c961179e565b5b6118f9565b6118dc84848460016117da565b925090508184048111156118f3576118f261179e565b5b81810290505b9392505050565b600061190b8261145c565b9150611916836116a3565b92506119437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461182d565b905092915050565b60006119568261145c565b91506119618361145c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561199a5761199961179e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ec57607f821691505b60208210811415611a00576119ff6119a5565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611a6260288361149b565b9150611a6d82611a06565b604082019050919050565b60006020820190508181036000830152611a9181611a55565b9050919050565b6000611aa38261145c565b9150611aae8361145c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ae357611ae261179e565b5b828201905092915050565b7f556e697377617020706f6f6c20616464726573732063616e6e6f74206265207a60008201527f65726f0000000000000000000000000000000000000000000000000000000000602082015250565b6000611b4a60238361149b565b9150611b5582611aee565b604082019050919050565b60006020820190508181036000830152611b7981611b3d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611bdc60258361149b565b9150611be782611b80565b604082019050919050565b60006020820190508181036000830152611c0b81611bcf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c6e60268361149b565b9150611c7982611c12565b604082019050919050565b60006020820190508181036000830152611c9d81611c61565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d0060248361149b565b9150611d0b82611ca4565b604082019050919050565b60006020820190508181036000830152611d2f81611cf3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d9260228361149b565b9150611d9d82611d36565b604082019050919050565b60006020820190508181036000830152611dc181611d85565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74207a65726f0000000000600082015250565b6000611dfe601b8361149b565b9150611e0982611dc8565b602082019050919050565b60006020820190508181036000830152611e2d81611df1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611e9060258361149b565b9150611e9b82611e34565b604082019050919050565b60006020820190508181036000830152611ebf81611e83565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f2260238361149b565b9150611f2d82611ec6565b604082019050919050565b60006020820190508181036000830152611f5181611f15565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611fb460268361149b565b9150611fbf82611f58565b604082019050919050565b60006020820190508181036000830152611fe381611fa7565b9050919050565b7f4669727374204275792050656e64696e67000000000000000000000000000000600082015250565b600061202060118361149b565b915061202b82611fea565b602082019050919050565b6000602082019050818103600083015261204f81612013565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120b260218361149b565b91506120bd82612056565b604082019050919050565b600060208201905081810360008301526120e1816120a5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061214460228361149b565b915061214f826120e8565b604082019050919050565b6000602082019050818103600083015261217381612137565b9050919050565b60006121858261145c565b91506121908361145c565b9250828210156121a3576121a261179e565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006121e460208361149b565b91506121ef826121ae565b602082019050919050565b60006020820190508181036000830152612213816121d7565b905091905056fea26469706673582212208788424ab07a43e6d33b6a3d25307423fa082f2c2b249db921b82253d2aecfff64736f6c63430008090033

Deployed Bytecode Sourcemap

6285:8999:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6839:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7783:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10229:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8647:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10702:426;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8202:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11461:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6677:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14640:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6596:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7004:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8927:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5518:97;;;:::i;:::-;;4913:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6920:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8360:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7980:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11969:370;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9328:165;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7099:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6759:75;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9781:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5760:191;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6839:76;6589:2;6899;:15;;;;:::i;:::-;6881:14;:34;;;;:::i;:::-;6839:76;:::o;7783:94::-;7837:13;7866:5;7859:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7783:94;:::o;10229:149::-;10307:4;10320:34;10329:12;:10;:12::i;:::-;10343:2;10347:6;10320:8;:34::i;:::-;10368:4;10361:11;;10229:149;;;;:::o;8647:102::-;8708:7;8731:12;;8724:19;;8647:102;:::o;10702:426::-;10808:4;10821:36;10831:6;10839:9;10850:6;10821:9;:36::i;:::-;10866:24;10893:11;:19;10905:6;10893:19;;;;;;;;;;;;;;;:33;10913:12;:10;:12::i;:::-;10893:33;;;;;;;;;;;;;;;;10866:60;;10961:6;10941:16;:26;;10933:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11038:57;11047:6;11055:12;:10;:12::i;:::-;11088:6;11069:16;:25;11038:8;:57::i;:::-;11118:4;11111:11;;;10702:426;;;;;:::o;8202:94::-;8260:5;6589:2;8274:16;;8202:94;:::o;11461:190::-;11544:4;11557:70;11566:12;:10;:12::i;:::-;11580:2;11616:10;11584:11;:25;11596:12;:10;:12::i;:::-;11584:25;;;;;;;;;;;;;;;:29;11610:2;11584:29;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;11557:8;:70::i;:::-;11641:4;11634:11;;11461:190;;;;:::o;6677:77::-;6589:2;6738;:15;;;;:::i;:::-;6720:14;:34;;;;:::i;:::-;6677:77;:::o;14640:79::-;14686:27;14692:12;:10;:12::i;:::-;14706:6;14686:5;:27::i;:::-;14640:79;:::o;6596:76::-;6589:2;6656;:15;;;;:::i;:::-;6638:14;:34;;;;:::i;:::-;6596:76;:::o;7004:37::-;;;;;;;;;;;;;:::o;8927:121::-;9001:7;9024:9;:18;9034:7;9024:18;;;;;;;;;;;;;;;;9017:25;;8927:121;;;:::o;5518:97::-;4813:13;:11;:13::i;:::-;5579:30:::1;5606:1;5579:18;:30::i;:::-;5518:97::o:0;4913:81::-;4959:7;4982:6;;;;;;;;;;;4975:13;;4913:81;:::o;6920:79::-;6589:2;6983;:15;;;;:::i;:::-;6965:14;:34;;;;:::i;:::-;6920:79;:::o;8360:185::-;4813:13;:11;:13::i;:::-;8464:1:::1;8440:26;;:12;:26;;;;8432:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8527:12;8513:11;;:26;;;;;;;;;;;;;;;;;;8360:185:::0;:::o;7980:98::-;8036:13;8065:7;8058:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:98;:::o;11969:370::-;12057:4;12070:24;12097:11;:25;12109:12;:10;:12::i;:::-;12097:25;;;;;;;;;;;;;;;:29;12123:2;12097:29;;;;;;;;;;;;;;;;12070:56;;12161:15;12141:16;:35;;12133:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12244:62;12253:12;:10;:12::i;:::-;12267:2;12290:15;12271:16;:34;12244:8;:62::i;:::-;12329:4;12322:11;;;11969:370;;;;:::o;9328:165::-;9414:4;9427:42;9437:12;:10;:12::i;:::-;9451:9;9462:6;9427:9;:42::i;:::-;9483:4;9476:11;;9328:165;;;;:::o;7099:26::-;;;;;;;;;;;;;:::o;6759:75::-;6589:2;6818;:15;;;;:::i;:::-;6800:14;:34;;;;:::i;:::-;6759:75;:::o;9781:133::-;9864:7;9887:11;:17;9899:4;9887:17;;;;;;;;;;;;;;;:21;9905:2;9887:21;;;;;;;;;;;;;;;;9880:28;;9781:133;;;;:::o;5760:191::-;4813:13;:11;:13::i;:::-;5865:1:::1;5845:22;;:8;:22;;;;5837:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5917:28;5936:8;5917:18;:28::i;:::-;5760:191:::0;:::o;3680:92::-;3733:7;3756:10;3749:17;;3680:92;:::o;14977:304::-;15085:1;15069:18;;:4;:18;;;;15061:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15157:1;15143:16;;:2;:16;;;;15135:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15231:6;15207:11;:17;15219:4;15207:17;;;;;;;;;;;;;;;:21;15225:2;15207:21;;;;;;;;;;;;;;;:30;;;;15264:2;15249:26;;15258:4;15249:26;;;15268:6;15249:26;;;;;;:::i;:::-;;;;;;;;14977:304;;;:::o;12595:782::-;12706:1;12697:6;:10;12689:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12772:1;12754:20;;:6;:20;;;;12746:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12852:1;12831:23;;:9;:23;;;;12823:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12903:21;12927:9;:17;12937:6;12927:17;;;;;;;;;;;;;;;;12903:41;;12976:6;12959:13;:23;;12951:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13037:17;;;;;;;;;;;13036:18;:43;;;;;13068:11;;;;;;;;;;;13058:21;;:6;:21;;;13036:43;13032:177;;;13111:7;:5;:7::i;:::-;13098:20;;:9;:20;;;13090:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13169:4;13149:17;;:24;;;;;;;;;;;;;;;;;;13187:14;;;;;;;;;;13032:177;13272:6;13256:13;:22;13236:9;:17;13246:6;13236:17;;;;;;;;;;;;;;;:42;;;;13316:6;13292:9;:20;13302:9;13292:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13353:9;13336:35;;13345:6;13336:35;;;13364:6;13336:35;;;;;;:::i;:::-;;;;;;;;12682:695;12595:782;;;:::o;14048:432::-;14147:1;14128:21;;:7;:21;;;;14120:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14196:22;14221:9;:18;14231:7;14221:18;;;;;;;;;;;;;;;;14196:43;;14272:6;14254:14;:24;;14246:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14381:6;14364:14;:23;14343:9;:18;14353:7;14343:18;;;;;;;;;;;;;;;:44;;;;14417:6;14401:12;;:22;;;;;;;:::i;:::-;;;;;;;;14463:1;14437:37;;14446:7;14437:37;;;14467:6;14437:37;;;;;;:::i;:::-;;;;;;;;14113:367;14048:432;;:::o;5064:126::-;5135:12;:10;:12::i;:::-;5124:23;;:7;:5;:7::i;:::-;:23;;;5116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5064:126::o;6101:177::-;6171:16;6190:6;;;;;;;;;;;6171:25;;6212:8;6203:6;;:17;;;;;;;;;;;;;;;;;;6263:8;6232:40;;6253:8;6232:40;;;;;;;;;;;;6164:114;6101:177;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:474::-;5991:6;5999;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;6301:2;6327:53;6372:7;6363:6;6352:9;6348:22;6327:53;:::i;:::-;6317:63;;6272:118;5923:474;;;;;:::o;6403:180::-;6451:77;6448:1;6441:88;6548:4;6545:1;6538:15;6572:4;6569:1;6562:15;6589:102;6631:8;6678:5;6675:1;6671:13;6650:34;;6589:102;;;:::o;6697:848::-;6758:5;6765:4;6789:6;6780:15;;6813:5;6804:14;;6827:712;6848:1;6838:8;6835:15;6827:712;;;6943:4;6938:3;6934:14;6928:4;6925:24;6922:50;;;6952:18;;:::i;:::-;6922:50;7002:1;6992:8;6988:16;6985:451;;;7417:4;7410:5;7406:16;7397:25;;6985:451;7467:4;7461;7457:15;7449:23;;7497:32;7520:8;7497:32;:::i;:::-;7485:44;;6827:712;;;6697:848;;;;;;;:::o;7551:1073::-;7605:5;7796:8;7786:40;;7817:1;7808:10;;7819:5;;7786:40;7845:4;7835:36;;7862:1;7853:10;;7864:5;;7835:36;7931:4;7979:1;7974:27;;;;8015:1;8010:191;;;;7924:277;;7974:27;7992:1;7983:10;;7994:5;;;8010:191;8055:3;8045:8;8042:17;8039:43;;;8062:18;;:::i;:::-;8039:43;8111:8;8108:1;8104:16;8095:25;;8146:3;8139:5;8136:14;8133:40;;;8153:18;;:::i;:::-;8133:40;8186:5;;;7924:277;;8310:2;8300:8;8297:16;8291:3;8285:4;8282:13;8278:36;8260:2;8250:8;8247:16;8242:2;8236:4;8233:12;8229:35;8213:111;8210:246;;;8366:8;8360:4;8356:19;8347:28;;8401:3;8394:5;8391:14;8388:40;;;8408:18;;:::i;:::-;8388:40;8441:5;;8210:246;8481:42;8519:3;8509:8;8503:4;8500:1;8481:42;:::i;:::-;8466:57;;;;8555:4;8550:3;8546:14;8539:5;8536:25;8533:51;;;8564:18;;:::i;:::-;8533:51;8613:4;8606:5;8602:16;8593:25;;7551:1073;;;;;;:::o;8630:281::-;8688:5;8712:23;8730:4;8712:23;:::i;:::-;8704:31;;8756:25;8772:8;8756:25;:::i;:::-;8744:37;;8800:104;8837:66;8827:8;8821:4;8800:104;:::i;:::-;8791:113;;8630:281;;;;:::o;8917:348::-;8957:7;8980:20;8998:1;8980:20;:::i;:::-;8975:25;;9014:20;9032:1;9014:20;:::i;:::-;9009:25;;9202:1;9134:66;9130:74;9127:1;9124:81;9119:1;9112:9;9105:17;9101:105;9098:131;;;9209:18;;:::i;:::-;9098:131;9257:1;9254;9250:9;9239:20;;8917:348;;;;:::o;9271:180::-;9319:77;9316:1;9309:88;9416:4;9413:1;9406:15;9440:4;9437:1;9430:15;9457:320;9501:6;9538:1;9532:4;9528:12;9518:22;;9585:1;9579:4;9575:12;9606:18;9596:81;;9662:4;9654:6;9650:17;9640:27;;9596:81;9724:2;9716:6;9713:14;9693:18;9690:38;9687:84;;;9743:18;;:::i;:::-;9687:84;9508:269;9457:320;;;:::o;9783:227::-;9923:34;9919:1;9911:6;9907:14;9900:58;9992:10;9987:2;9979:6;9975:15;9968:35;9783:227;:::o;10016:366::-;10158:3;10179:67;10243:2;10238:3;10179:67;:::i;:::-;10172:74;;10255:93;10344:3;10255:93;:::i;:::-;10373:2;10368:3;10364:12;10357:19;;10016:366;;;:::o;10388:419::-;10554:4;10592:2;10581:9;10577:18;10569:26;;10641:9;10635:4;10631:20;10627:1;10616:9;10612:17;10605:47;10669:131;10795:4;10669:131;:::i;:::-;10661:139;;10388:419;;;:::o;10813:305::-;10853:3;10872:20;10890:1;10872:20;:::i;:::-;10867:25;;10906:20;10924:1;10906:20;:::i;:::-;10901:25;;11060:1;10992:66;10988:74;10985:1;10982:81;10979:107;;;11066:18;;:::i;:::-;10979:107;11110:1;11107;11103:9;11096:16;;10813:305;;;;:::o;11124:222::-;11264:34;11260:1;11252:6;11248:14;11241:58;11333:5;11328:2;11320:6;11316:15;11309:30;11124:222;:::o;11352:366::-;11494:3;11515:67;11579:2;11574:3;11515:67;:::i;:::-;11508:74;;11591:93;11680:3;11591:93;:::i;:::-;11709:2;11704:3;11700:12;11693:19;;11352:366;;;:::o;11724:419::-;11890:4;11928:2;11917:9;11913:18;11905:26;;11977:9;11971:4;11967:20;11963:1;11952:9;11948:17;11941:47;12005:131;12131:4;12005:131;:::i;:::-;11997:139;;11724:419;;;:::o;12149:224::-;12289:34;12285:1;12277:6;12273:14;12266:58;12358:7;12353:2;12345:6;12341:15;12334:32;12149:224;:::o;12379:366::-;12521:3;12542:67;12606:2;12601:3;12542:67;:::i;:::-;12535:74;;12618:93;12707:3;12618:93;:::i;:::-;12736:2;12731:3;12727:12;12720:19;;12379:366;;;:::o;12751:419::-;12917:4;12955:2;12944:9;12940:18;12932:26;;13004:9;12998:4;12994:20;12990:1;12979:9;12975:17;12968:47;13032:131;13158:4;13032:131;:::i;:::-;13024:139;;12751:419;;;:::o;13176:225::-;13316:34;13312:1;13304:6;13300:14;13293:58;13385:8;13380:2;13372:6;13368:15;13361:33;13176:225;:::o;13407:366::-;13549:3;13570:67;13634:2;13629:3;13570:67;:::i;:::-;13563:74;;13646:93;13735:3;13646:93;:::i;:::-;13764:2;13759:3;13755:12;13748:19;;13407:366;;;:::o;13779:419::-;13945:4;13983:2;13972:9;13968:18;13960:26;;14032:9;14026:4;14022:20;14018:1;14007:9;14003:17;13996:47;14060:131;14186:4;14060:131;:::i;:::-;14052:139;;13779:419;;;:::o;14204:223::-;14344:34;14340:1;14332:6;14328:14;14321:58;14413:6;14408:2;14400:6;14396:15;14389:31;14204:223;:::o;14433:366::-;14575:3;14596:67;14660:2;14655:3;14596:67;:::i;:::-;14589:74;;14672:93;14761:3;14672:93;:::i;:::-;14790:2;14785:3;14781:12;14774:19;;14433:366;;;:::o;14805:419::-;14971:4;15009:2;14998:9;14994:18;14986:26;;15058:9;15052:4;15048:20;15044:1;15033:9;15029:17;15022:47;15086:131;15212:4;15086:131;:::i;:::-;15078:139;;14805:419;;;:::o;15230:221::-;15370:34;15366:1;15358:6;15354:14;15347:58;15439:4;15434:2;15426:6;15422:15;15415:29;15230:221;:::o;15457:366::-;15599:3;15620:67;15684:2;15679:3;15620:67;:::i;:::-;15613:74;;15696:93;15785:3;15696:93;:::i;:::-;15814:2;15809:3;15805:12;15798:19;;15457:366;;;:::o;15829:419::-;15995:4;16033:2;16022:9;16018:18;16010:26;;16082:9;16076:4;16072:20;16068:1;16057:9;16053:17;16046:47;16110:131;16236:4;16110:131;:::i;:::-;16102:139;;15829:419;;;:::o;16254:177::-;16394:29;16390:1;16382:6;16378:14;16371:53;16254:177;:::o;16437:366::-;16579:3;16600:67;16664:2;16659:3;16600:67;:::i;:::-;16593:74;;16676:93;16765:3;16676:93;:::i;:::-;16794:2;16789:3;16785:12;16778:19;;16437:366;;;:::o;16809:419::-;16975:4;17013:2;17002:9;16998:18;16990:26;;17062:9;17056:4;17052:20;17048:1;17037:9;17033:17;17026:47;17090:131;17216:4;17090:131;:::i;:::-;17082:139;;16809:419;;;:::o;17234:224::-;17374:34;17370:1;17362:6;17358:14;17351:58;17443:7;17438:2;17430:6;17426:15;17419:32;17234:224;:::o;17464:366::-;17606:3;17627:67;17691:2;17686:3;17627:67;:::i;:::-;17620:74;;17703:93;17792:3;17703:93;:::i;:::-;17821:2;17816:3;17812:12;17805:19;;17464:366;;;:::o;17836:419::-;18002:4;18040:2;18029:9;18025:18;18017:26;;18089:9;18083:4;18079:20;18075:1;18064:9;18060:17;18053:47;18117:131;18243:4;18117:131;:::i;:::-;18109:139;;17836:419;;;:::o;18261:222::-;18401:34;18397:1;18389:6;18385:14;18378:58;18470:5;18465:2;18457:6;18453:15;18446:30;18261:222;:::o;18489:366::-;18631:3;18652:67;18716:2;18711:3;18652:67;:::i;:::-;18645:74;;18728:93;18817:3;18728:93;:::i;:::-;18846:2;18841:3;18837:12;18830:19;;18489:366;;;:::o;18861:419::-;19027:4;19065:2;19054:9;19050:18;19042:26;;19114:9;19108:4;19104:20;19100:1;19089:9;19085:17;19078:47;19142:131;19268:4;19142:131;:::i;:::-;19134:139;;18861:419;;;:::o;19286:225::-;19426:34;19422:1;19414:6;19410:14;19403:58;19495:8;19490:2;19482:6;19478:15;19471:33;19286:225;:::o;19517:366::-;19659:3;19680:67;19744:2;19739:3;19680:67;:::i;:::-;19673:74;;19756:93;19845:3;19756:93;:::i;:::-;19874:2;19869:3;19865:12;19858:19;;19517:366;;;:::o;19889:419::-;20055:4;20093:2;20082:9;20078:18;20070:26;;20142:9;20136:4;20132:20;20128:1;20117:9;20113:17;20106:47;20170:131;20296:4;20170:131;:::i;:::-;20162:139;;19889:419;;;:::o;20314:167::-;20454:19;20450:1;20442:6;20438:14;20431:43;20314:167;:::o;20487:366::-;20629:3;20650:67;20714:2;20709:3;20650:67;:::i;:::-;20643:74;;20726:93;20815:3;20726:93;:::i;:::-;20844:2;20839:3;20835:12;20828:19;;20487:366;;;:::o;20859:419::-;21025:4;21063:2;21052:9;21048:18;21040:26;;21112:9;21106:4;21102:20;21098:1;21087:9;21083:17;21076:47;21140:131;21266:4;21140:131;:::i;:::-;21132:139;;20859:419;;;:::o;21284:220::-;21424:34;21420:1;21412:6;21408:14;21401:58;21493:3;21488:2;21480:6;21476:15;21469:28;21284:220;:::o;21510:366::-;21652:3;21673:67;21737:2;21732:3;21673:67;:::i;:::-;21666:74;;21749:93;21838:3;21749:93;:::i;:::-;21867:2;21862:3;21858:12;21851:19;;21510:366;;;:::o;21882:419::-;22048:4;22086:2;22075:9;22071:18;22063:26;;22135:9;22129:4;22125:20;22121:1;22110:9;22106:17;22099:47;22163:131;22289:4;22163:131;:::i;:::-;22155:139;;21882:419;;;:::o;22307:221::-;22447:34;22443:1;22435:6;22431:14;22424:58;22516:4;22511:2;22503:6;22499:15;22492:29;22307:221;:::o;22534:366::-;22676:3;22697:67;22761:2;22756:3;22697:67;:::i;:::-;22690:74;;22773:93;22862:3;22773:93;:::i;:::-;22891:2;22886:3;22882:12;22875:19;;22534:366;;;:::o;22906:419::-;23072:4;23110:2;23099:9;23095:18;23087:26;;23159:9;23153:4;23149:20;23145:1;23134:9;23130:17;23123:47;23187:131;23313:4;23187:131;:::i;:::-;23179:139;;22906:419;;;:::o;23331:191::-;23371:4;23391:20;23409:1;23391:20;:::i;:::-;23386:25;;23425:20;23443:1;23425:20;:::i;:::-;23420:25;;23464:1;23461;23458:8;23455:34;;;23469:18;;:::i;:::-;23455:34;23514:1;23511;23507:9;23499:17;;23331:191;;;;:::o;23528:182::-;23668:34;23664:1;23656:6;23652:14;23645:58;23528:182;:::o;23716:366::-;23858:3;23879:67;23943:2;23938:3;23879:67;:::i;:::-;23872:74;;23955:93;24044:3;23955:93;:::i;:::-;24073:2;24068:3;24064:12;24057:19;;23716:366;;;:::o;24088:419::-;24254:4;24292:2;24281:9;24277:18;24269:26;;24341:9;24335:4;24331:20;24327:1;24316:9;24312:17;24305:47;24369:131;24495:4;24369:131;:::i;:::-;24361:139;;24088:419;;;:::o

Swarm Source

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