ETH Price: $3,183.38 (-0.43%)

Token

Codyfight Token (CTOK)

Overview

Max Total Supply

127,000,001 CTOK

Holders

2,718 (0.00%)

Transfers

-
1

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Codyfight is a competitive turn-based strategy RPG packed with chess-like depth and ever-evolving battles against AI-controlled NPCs. Choose your path to glory - lead Codyfighters in every battle or evoke programming excitement with your trained AI bots.

Contract Source Code Verified (Exact Match)

Contract Name:
CodyfightToken

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license, Audited
/**
 *Submitted for verification at Arbiscan.io on 2024-04-23
*/

// Sources flattened with hardhat v2.19.4 https://hardhat.org

// SPDX-License-Identifier: MIT

// File lib/lossless/flattened/LERC20BurnableFlat.sol

// Original license: SPDX_License_Identifier: MIT
pragma solidity 0.8.25;

/**
 * @title Context
 * @dev Context library from OpenZeppelin contracts.
 * @notice Context provides information about the transaction sender.
 */
abstract contract Context {
  /**
   * @dev Returns the transaction sender address.
   * @return sender_ The transaction sender address.
   */
  function _msgSender() internal view virtual returns (address) {
    return msg.sender;
  }

  /**
   * @dev Returns the transaction data.
   * @return data_ The transaction data.
   */
  function _msgData() internal view virtual returns (bytes calldata) {
    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
    return msg.data;
  }
}

/**
 * @dev Interface of the LssController.
 * @notice LssController is a contract that implements the lossless feature. It is used to control the lossless feature of the LERC20Burnable contract.
 * @notice The LssController contract must implement the beforeTransfer, beforeTransferFrom, beforeApprove, beforeIncreaseAllowance, beforeDecreaseAllowance, and beforeBurn functions.
 * @notice The LssController contract must be set in the LERC20Burnable contract.
 */
interface ILssController {
  /**
   * @dev Function to be called before a transfer.
   * @param sender The sender address.
   * @param recipient The recipient address.
   * @param amount The transfer amount.
   */
  function beforeTransfer(
    address sender,
    address recipient,
    uint256 amount
  ) external;

  /**
   * @dev Function to be called before a transfer from.
   * @param msgSender The transaction sender address.
   * @param sender The sender address.
   * @param recipient The recipient address.
   * @param amount The transfer amount.
   */
  function beforeTransferFrom(
    address msgSender,
    address sender,
    address recipient,
    uint256 amount
  ) external;

  /**
   * @dev Function to be called before an approve.
   * @param sender The sender address.
   * @param spender The spender address.
   * @param amount The approve amount.
   */
  function beforeApprove(
    address sender,
    address spender,
    uint256 amount
  ) external;

  /**
   * @dev Function to be called before an increase allowance.
   * @param msgSender The transaction sender address.
   * @param spender The spender address.
   * @param addedValue The added allowance amount.
   */
  function beforeIncreaseAllowance(
    address msgSender,
    address spender,
    uint256 addedValue
  ) external;

  /**
   * @dev Function to be called before a decrease allowance.
   * @param msgSender The transaction sender address.
   * @param spender The spender address.
   * @param subtractedValue The subtracted allowance amount.
   */
  function beforeDecreaseAllowance(
    address msgSender,
    address spender,
    uint256 subtractedValue
  ) external;

  /**
   * @dev Function to be called before a burn.
   * @param account The account address.
   * @param amount The burn amount.
   */
  function beforeBurn(address account, uint256 amount) external;
}

/**
 * @title LERC20Burnable
 * @dev LERC20Burnable contract from Lossless.io. Extends the Context contract.
 * @notice LERC20Burnable is a contract that implements the ERC20 standard with burn and lossless features.
 * @notice The LERC20Burnable contract is based on the OpenZeppelin Context contract.
 */
contract LERC20Burnable is Context {
  // --- ERC20 variables ---

  /**
   * @dev Mapping of balances.
   * @notice _balances is a mapping of addresses to token balances.
   */
  mapping(address => uint256) private _balances;

  /**
   * @dev Mapping of allowances.
   * @notice _allowances is a mapping of addresses to mapping of addresses to allowance amounts.
   */
  mapping(address => mapping(address => uint256)) private _allowances;

  /**
   * @dev Total supply variable.
   * @notice _totalSupply is the total supply of the token.
   */
  uint256 private _totalSupply;

  /**
   * @dev Name variable.
   * @notice _name is the name of the token.
   */
  string private _name;

  /**
   * @dev Symbol variable.
   * @notice _symbol is the symbol of the token.
   */
  string private _symbol;

  // --- Lossless variables ---

  /**
   * @dev Recovery admin variable.
   * @notice recoveryAdmin is the address of the recovery admin, who can change the admin and turn off the lossless feature.
   */
  address public recoveryAdmin;

  /**
   * @dev Recovery admin candidate variable.
   * @notice recoveryAdminCandidate is the address of the recovery admin candidate, who can accept the recovery admin ownership.
   */
  address private recoveryAdminCandidate;

  /**
   * @dev Recovery admin key hash variable.
   * @notice recoveryAdminKeyHash is the hash of the recovery admin key, which is used to accept the recovery admin ownership.
   */
  bytes32 private recoveryAdminKeyHash;

  /**
   * @dev Admin variable.
   * @notice admin is the address of the admin, who will hold the minted tokens and have governance rights.
   */
  address public admin;

  /**
   * @dev Timelock period variable.
   * @notice timelockPeriod is the period in seconds that the recovery admin must wait to turn off the lossless feature.
   */
  uint256 public timelockPeriod;

  /**
   * @dev Lossless turn off timestamp variable.
   * @notice losslessTurnOffTimestamp is the timestamp when the lossless feature will be turned off.
   */
  uint256 public losslessTurnOffTimestamp;

  /**
   * @dev Lossless on variable.
   * @notice isLosslessOn is a boolean that indicates if the lossless feature is on.
   */
  bool public isLosslessOn = true;

  /**
   * @dev Lossless controller variable.
   * @notice lossless is the address of the LssController contract, which implements the lossless feature.
   */
  ILssController public lossless;

  /**
   * @dev Constructor function.
   * @notice Constructor sets the initial values of the contract. It mints the total supply to the admin address.
   * @param totalSupply_ The total supply of the token.
   * @param name_ The name of the token.
   * @param symbol_ The symbol of the token.
   * @param admin_ The address of the admin.
   * @param recoveryAdmin_ The address of the recovery admin.
   * @param timelockPeriod_ The timelock period in seconds.
   * @param lossless_ The address of the LssController contract.
   */
  constructor(
    uint256 totalSupply_,
    string memory name_,
    string memory symbol_,
    address admin_,
    address recoveryAdmin_,
    uint256 timelockPeriod_,
    address lossless_
  ) {
    require(
      lossless_ != address(0),
      'LERC20: Lossless controller cannot be zero address'
    );

    _mint(admin_, totalSupply_);
    _name = name_;
    _symbol = symbol_;
    admin = admin_;
    recoveryAdmin = recoveryAdmin_;
    recoveryAdminCandidate = address(0);
    recoveryAdminKeyHash = '';
    timelockPeriod = timelockPeriod_;
    losslessTurnOffTimestamp = 0;
    lossless = ILssController(lossless_);
  }

  // --- Events ---

  /**
   * @dev Transfer event.
   * @param _from The sender address.
   * @param _to The recipient address.
   * @param _value The transfer amount.
   */
  event Transfer(address indexed _from, address indexed _to, uint256 _value);

  /**
   * @dev Approval event.
   * @param _owner The owner address.
   * @param _spender The spender address.
   * @param _value The approve amount.
   */
  event Approval(
    address indexed _owner,
    address indexed _spender,
    uint256 _value
  );

  /**
   * @dev New admin event.
   * @param _newAdmin The new admin address.
   */
  event NewAdmin(address indexed _newAdmin);

  /**
   * @dev New recovery admin proposal event.
   * @param _candidate The candidate address.
   */
  event NewRecoveryAdminProposal(address indexed _candidate);

  /**
   * @dev New recovery admin event.
   * @param _newAdmin The new recovery admin address.
   */
  event NewRecoveryAdmin(address indexed _newAdmin);

  /**
   * @dev Lossless turn off proposal event.
   * @param _turnOffDate The turn off date timestamp.
   */
  event LosslessTurnOffProposal(uint256 _turnOffDate);

  /**
   * @dev Lossless off event.
   */
  event LosslessOff();

  /**
   * @dev Lossless on event.
   */
  event LosslessOn();

  // --- LOSSLESS modifiers ---

  /**
   * @dev Lossless approve modifier.
   * @notice The lssAprove modifier calls the beforeApprove function of the lossless contract.
   * @param spender The spender address.
   * @param amount The approve amount.
   */
  modifier lssAprove(address spender, uint256 amount) {
    if (isLosslessOn) {
      lossless.beforeApprove(_msgSender(), spender, amount);
    }
    _;
  }

  /**
   * @dev Lossless transfer modifier.
   * @notice The lssTransfer modifier calls the beforeTransfer function of the lossless contract.
   * @param recipient The recipient address.
   * @param amount The transfer amount.
   */
  modifier lssTransfer(address recipient, uint256 amount) {
    if (isLosslessOn) {
      lossless.beforeTransfer(_msgSender(), recipient, amount);
    }
    _;
  }

  /**
   * @dev Lossless transfer from modifier.
   * @notice The lssTransferFrom modifier calls the beforeTransferFrom function of the lossless contract.
   * @param sender The sender address.
   * @param recipient The recipient address.
   * @param amount The transfer amount.
   */
  modifier lssTransferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) {
    if (isLosslessOn) {
      lossless.beforeTransferFrom(_msgSender(), sender, recipient, amount);
    }
    _;
  }

  /**
   * @dev Lossless burn modifier.
   * @notice The lssBurn modifier calls the beforeBurn function of the lossless contract.
   * @param account The account address.
   * @param amount The burn amount.
   */
  modifier lssBurn(address account, uint256 amount) {
    if (isLosslessOn) {
      lossless.beforeBurn(account, amount);
    }
    _;
  }

  /**
   * @dev Lossless increase allowance modifier.
   * @notice The lssIncreaseAllowance modifier calls the beforeIncreaseAllowance function of the lossless contract.
   * @param spender The spender address.
   * @param addedValue The added allowance amount.
   */
  modifier lssIncreaseAllowance(address spender, uint256 addedValue) {
    if (isLosslessOn) {
      lossless.beforeIncreaseAllowance(_msgSender(), spender, addedValue);
    }
    _;
  }

  /**
   * @dev Lossless decrease allowance modifier.
   * @notice The lssDecreaseAllowance modifier calls the beforeDecreaseAllowance function of the lossless contract.
   * @param spender The spender address.
   * @param subtractedValue The subtracted allowance amount.
   */
  modifier lssDecreaseAllowance(address spender, uint256 subtractedValue) {
    if (isLosslessOn) {
      lossless.beforeDecreaseAllowance(_msgSender(), spender, subtractedValue);
    }
    _;
  }

  /**
   * @dev Recovery admin modifier.
   * @notice The onlyRecoveryAdmin modifier restricts access to the recovery admin.
   */
  modifier onlyRecoveryAdmin() {
    require(_msgSender() == recoveryAdmin, 'LERC20: Must be recovery admin');
    _;
  }

  // --- LOSSLESS management ---

  /**
   * @dev Function to transfer out blacklisted funds.
   * @notice This function allows the lossless contract to transfer out blacklisted funds.
   * @param from The array of addresses from which the funds will be transferred.
   */
  function transferOutBlacklistedFunds(address[] calldata from) external {
    require(
      _msgSender() == address(lossless),
      'LERC20: Only lossless contract'
    );
    require(isLosslessOn, 'LERC20: Lossless is off');

    uint256 fromLength = from.length;
    uint256 totalAmount = 0;

    for (uint256 i = 0; i < fromLength; i++) {
      address fromAddress = from[i];
      uint256 fromBalance = _balances[fromAddress];
      _balances[fromAddress] = 0;
      totalAmount += fromBalance;
      emit Transfer(fromAddress, address(lossless), fromBalance);
    }

    _balances[address(lossless)] += totalAmount;
  }

  /**
   * @dev Function to set new admin.
   * @notice This function allows the recovery admin to set a new admin.
   * @param newAdmin The new admin address.
   */
  function setLosslessAdmin(address newAdmin) external onlyRecoveryAdmin {
    require(newAdmin != admin, 'LERC20: Cannot set same address');
    emit NewAdmin(newAdmin);
    admin = newAdmin;
  }

  /**
   * @dev Function to transfer recovery admin ownership.
   * @notice This function allows the recovery admin to transfer the recovery admin ownership to a candidate address.
   * @param candidate The candidate address.
   * @param keyHash The key hash.
   */
  function transferRecoveryAdminOwnership(
    address candidate,
    bytes32 keyHash
  ) external onlyRecoveryAdmin {
    recoveryAdminCandidate = candidate;
    recoveryAdminKeyHash = keyHash;
    emit NewRecoveryAdminProposal(candidate);
  }

  /**
   * @dev Function to accept recovery admin ownership.
   * @notice This function allows the candidate address to accept the recovery admin ownership.
   * @param key The key.
   */
  function acceptRecoveryAdminOwnership(bytes memory key) external {
    require(
      _msgSender() == recoveryAdminCandidate,
      'LERC20: Must be canditate'
    );
    require(keccak256(key) == recoveryAdminKeyHash, 'LERC20: Invalid key');
    emit NewRecoveryAdmin(recoveryAdminCandidate);
    recoveryAdmin = recoveryAdminCandidate;
    recoveryAdminCandidate = address(0);
  }

  /**
   * @dev Function to propose lossless turn off.
   * @notice This function allows the recovery admin to propose to turn off the lossless features.
   */
  function proposeLosslessTurnOff() external onlyRecoveryAdmin {
    require(losslessTurnOffTimestamp == 0, 'LERC20: TurnOff already proposed');
    require(isLosslessOn, 'LERC20: Lossless already off');
    losslessTurnOffTimestamp = block.timestamp + timelockPeriod;
    emit LosslessTurnOffProposal(losslessTurnOffTimestamp);
  }

  /**
   * @dev Function to execute lossless turn off.
   * @notice This function allows the recovery admin to execute the lossless turn off, when the timelock period has passed.
   */
  function executeLosslessTurnOff() external onlyRecoveryAdmin {
    require(losslessTurnOffTimestamp != 0, 'LERC20: TurnOff not proposed');
    require(
      losslessTurnOffTimestamp <= block.timestamp,
      'LERC20: Time lock in progress'
    );
    isLosslessOn = false;
    losslessTurnOffTimestamp = 0;
    emit LosslessOff();
  }

  /**
   * @dev Function to execute lossless turn on.
   * @notice This function allows the recovery admin to execute the lossless turn on.
   */
  function executeLosslessTurnOn() external onlyRecoveryAdmin {
    require(!isLosslessOn, 'LERC20: Lossless already on');
    losslessTurnOffTimestamp = 0;
    isLosslessOn = true;
    emit LosslessOn();
  }

  /**
   * @dev Function to get the admin address.
   * @return The admin address.
   */
  function getAdmin() public view virtual returns (address) {
    return admin;
  }

  // --- ERC20 methods ---

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

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

  /**
   * @dev Function to get the decimals of the token.
   * @return The decimals of the token.
   */
  function decimals() public view virtual returns (uint8) {
    return 18;
  }

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

  /**
   * @dev Function to get the balance of an account.
   * @param account The account address.
   * @return The balance of the account.
   */
  function balanceOf(address account) public view virtual returns (uint256) {
    return _balances[account];
  }

  /**
   * @dev Function to transfer tokens. Uses the lssTransfer modifier to call the beforeTransfer function of the lossless contract.
   * @param recipient The recipient address.
   * @param amount The transfer amount.
   * @return A boolean that indicates if the operation was successful.
   */
  function transfer(
    address recipient,
    uint256 amount
  ) public virtual lssTransfer(recipient, amount) returns (bool) {
    _transfer(_msgSender(), recipient, amount);
    return true;
  }

  /**
   * @dev Function to get the allowance of a spender on an owner's tokens.
   * @param owner The owner address.
   * @param spender The spender address.
   * @return The allowance of the spender on the owner's tokens.
   */
  function allowance(
    address owner,
    address spender
  ) public view virtual returns (uint256) {
    return _allowances[owner][spender];
  }

  /**
   * @dev Function to approve a spender to spend an amount of tokens. Uses the lssAprove modifier to call the beforeApprove function of the lossless contract.
   * @param spender The spender address.
   * @param amount The approve amount.
   * @return A boolean that indicates if the operation was successful.
   */
  function approve(
    address spender,
    uint256 amount
  ) public virtual lssAprove(spender, amount) returns (bool) {
    _approve(_msgSender(), spender, amount);
    return true;
  }

  /**
   * @dev Function to transfer tokens from an owner to a recipient. Uses the lssTransferFrom modifier to call the beforeTransferFrom function of the lossless contract.
   * @param sender The sender address.
   * @param recipient The recipient address.
   * @param amount The transfer amount.
   * @return A boolean that indicates if the operation was successful.
   */
  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) public virtual lssTransferFrom(sender, recipient, amount) returns (bool) {
    uint256 currentAllowance = _allowances[sender][_msgSender()];
    require(
      currentAllowance >= amount,
      'LERC20: transfer amount exceeds allowance'
    );
    _transfer(sender, recipient, amount);

    _approve(sender, _msgSender(), currentAllowance - amount);

    return true;
  }

  /**
   * @dev Function to increase the allowance of a spender. Uses the lssIncreaseAllowance modifier to call the beforeIncreaseAllowance function of the lossless contract.
   * @param spender The spender address.
   * @param addedValue The added allowance amount.
   * @return A boolean that indicates if the operation was successful.
   */
  function increaseAllowance(
    address spender,
    uint256 addedValue
  ) public virtual lssIncreaseAllowance(spender, addedValue) returns (bool) {
    _approve(
      _msgSender(),
      spender,
      _allowances[_msgSender()][spender] + addedValue
    );
    return true;
  }

  /**
   * @dev Function to decrease the allowance of a spender. Uses the lssDecreaseAllowance modifier to call the beforeDecreaseAllowance function of the lossless contract.
   * @param spender The spender address.
   * @param subtractedValue The subtracted allowance amount.
   * @return A boolean that indicates if the operation was successful.
   */
  function decreaseAllowance(
    address spender,
    uint256 subtractedValue
  )
    public
    virtual
    lssDecreaseAllowance(spender, subtractedValue)
    returns (bool)
  {
    uint256 currentAllowance = _allowances[_msgSender()][spender];
    require(
      currentAllowance >= subtractedValue,
      'LERC20: decreased allowance below zero'
    );
    _approve(_msgSender(), spender, currentAllowance - subtractedValue);

    return true;
  }

  // --- Internal functions ---

  /**
   * @dev Internal function to transfer tokens. Overrides the _transfer function of the Context contract to enforce specific conditions.
   * @param sender The sender address.
   * @param recipient The recipient address.
   * @param amount The transfer amount.
   */
  function _transfer(
    address sender,
    address recipient,
    uint256 amount
  ) internal virtual {
    require(sender != address(0), 'LERC20: transfer from the zero address');

    uint256 senderBalance = _balances[sender];
    require(senderBalance >= amount, 'LERC20: transfer amount exceeds balance');
    _balances[sender] = senderBalance - amount;
    _balances[recipient] += amount;

    emit Transfer(sender, recipient, amount);
  }

  /**
   * @dev Internal function to mint tokens. Overrides the _mint function of the Context contract to enforce specific conditions.
   * @notice Mint function is only executed at contract deployment. No mint function is available after deployment.
   * @param account The account address.
   * @param amount The mint amount.
   */
  function _mint(address account, uint256 amount) internal virtual {
    require(account != address(0), 'LERC20: mint to the zero address');

    _totalSupply += amount;

    // Cannot overflow because the sum of all user
    // balances can't exceed the max uint256 value.
    unchecked {
      _balances[account] += amount;
    }
    emit Transfer(address(0), account, amount);
  }

  /**
   * @dev Internal function to burn tokens. Overrides the _burn function of the Context contract to enforce specific conditions.
   * @param account The account address.
   * @param amount The burn amount.
   */
  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 Internal function to approve a spender to spend an amount of tokens.
   * @param owner The owner address.
   * @param spender The spender address.
   * @param amount The approve amount.
   */
  function _approve(
    address owner,
    address spender,
    uint256 amount
  ) internal virtual {
    _allowances[owner][spender] = amount;
    emit Approval(owner, spender, amount);
  }

  // --- ERC20Burnable methods ---

  /**
   * @dev Function to burn tokens. Uses the lssBurn modifier to call the beforeBurn function of the lossless contract.
   * @notice Burn function may not be allowed if the lossless feature is on, Lossless controller may block the burn.
   * @param amount The burn amount.
   */
  function burn(uint256 amount) public virtual lssBurn(_msgSender(), amount) {
    _burn(_msgSender(), amount);
  }

  /**
   * @dev Function to burn tokens from an account. Uses the lssBurn modifier to call the beforeBurn function of the lossless contract.
   * @notice Burn function may not be allowed if the lossless feature is on, Lossless controller may block the burn.
   * @param account The account address.
   * @param amount The burn amount.
   */
  function burnFrom(
    address account,
    uint256 amount
  ) public virtual lssBurn(account, amount) {
    uint256 currentAllowance = allowance(account, _msgSender());
    require(currentAllowance >= amount, 'ERC20: burn amount exceeds allowance');
    unchecked {
      _approve(account, _msgSender(), currentAllowance - amount);
    }
    _burn(account, amount);
  }
}

// File contracts/CTOK.sol

// Original license: SPDX_License_Identifier: MIT

/**
 * @title CodyfightToken - CTOK contract.
 * @dev CodyfightToken fully inherits the LERC20Burnable contract, which implements the ERC20 standard with burn and lossless features.
 * @notice CodyfightToken is the official token of Codyfight. Tokens are only minted at contract deployment. No mint function is available after deployment. Tokens can be burned.
 */
contract CodyfightToken is LERC20Burnable {
  /**
   * @dev Constructor function.
   * @notice Constructor sets the initial values of the contract. It mints the total supply to the admin address.
   * @param totalSupply_ The total supply of the token.
   * @param name_ The name of the token.
   * @param symbol_ The symbol of the token.
   * @param admin_ The address of the admin.
   * @param recoveryAdmin_ The address of the recovery admin.
   * @param timelockPeriod_ The timelock period in seconds.
   * @param lossless_ The address of the LssController contract.
   */
  constructor(
    uint256 totalSupply_,
    string memory name_,
    string memory symbol_,
    address admin_,
    address recoveryAdmin_,
    uint256 timelockPeriod_,
    address lossless_
  )
    LERC20Burnable(
      totalSupply_,
      name_,
      symbol_,
      admin_,
      recoveryAdmin_,
      timelockPeriod_,
      lossless_
    )
  {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"recoveryAdmin_","type":"address"},{"internalType":"uint256","name":"timelockPeriod_","type":"uint256"},{"internalType":"address","name":"lossless_","type":"address"}],"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":"LosslessOff","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessOn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_turnOffDate","type":"uint256"}],"name":"LosslessTurnOffProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newAdmin","type":"address"}],"name":"NewRecoveryAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_candidate","type":"address"}],"name":"NewRecoveryAdminProposal","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":"bytes","name":"key","type":"bytes"}],"name":"acceptRecoveryAdminOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLosslessTurnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLosslessTurnOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLosslessOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lossless","outputs":[{"internalType":"contract ILssController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"losslessTurnOffTimestamp","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":"proposeLosslessTurnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoveryAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setLosslessAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"from","type":"address[]"}],"name":"transferOutBlacklistedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"candidate","type":"address"},{"internalType":"bytes32","name":"keyHash","type":"bytes32"}],"name":"transferRecoveryAdminOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001600b5f6101000a81548160ff021916908315150217905550348015610029575f80fd5b50604051613ab0380380613ab0833981810160405281019061004b919061052b565b868686868686865f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b790610680565b60405180910390fd5b6100d0848861021960201b60201c565b85600390816100df91906108a2565b5084600490816100ef91906108a2565b508360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600781905550816009819055505f600a8190555080600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050505050505050610a61565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027e906109bb565b60405180910390fd5b8060025f8282546102989190610a06565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103459190610a48565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61037481610362565b811461037e575f80fd5b50565b5f8151905061038f8161036b565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103e38261039d565b810181811067ffffffffffffffff82111715610402576104016103ad565b5b80604052505050565b5f610414610351565b905061042082826103da565b919050565b5f67ffffffffffffffff82111561043f5761043e6103ad565b5b6104488261039d565b9050602081019050919050565b8281835e5f83830152505050565b5f61047561047084610425565b61040b565b90508281526020810184848401111561049157610490610399565b5b61049c848285610455565b509392505050565b5f82601f8301126104b8576104b7610395565b5b81516104c8848260208601610463565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104fa826104d1565b9050919050565b61050a816104f0565b8114610514575f80fd5b50565b5f8151905061052581610501565b92915050565b5f805f805f805f60e0888a0312156105465761054561035a565b5b5f6105538a828b01610381565b975050602088015167ffffffffffffffff8111156105745761057361035e565b5b6105808a828b016104a4565b965050604088015167ffffffffffffffff8111156105a1576105a061035e565b5b6105ad8a828b016104a4565b95505060606105be8a828b01610517565b94505060806105cf8a828b01610517565b93505060a06105e08a828b01610381565b92505060c06105f18a828b01610517565b91505092959891949750929550565b5f82825260208201905092915050565b7f4c45524332303a204c6f73736c65737320636f6e74726f6c6c65722063616e6e5f8201527f6f74206265207a65726f20616464726573730000000000000000000000000000602082015250565b5f61066a603283610600565b915061067582610610565b604082019050919050565b5f6020820190508181035f8301526106978161065e565b9050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806106ec57607f821691505b6020821081036106ff576106fe6106a8565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610726565b61076b8683610726565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6107a66107a161079c84610362565b610783565b610362565b9050919050565b5f819050919050565b6107bf8361078c565b6107d36107cb826107ad565b848454610732565b825550505050565b5f90565b6107e76107db565b6107f28184846107b6565b505050565b5b818110156108155761080a5f826107df565b6001810190506107f8565b5050565b601f82111561085a5761082b81610705565b61083484610717565b81016020851015610843578190505b61085761084f85610717565b8301826107f7565b50505b505050565b5f82821c905092915050565b5f61087a5f198460080261085f565b1980831691505092915050565b5f610892838361086b565b9150826002028217905092915050565b6108ab8261069e565b67ffffffffffffffff8111156108c4576108c36103ad565b5b6108ce82546106d5565b6108d9828285610819565b5f60209050601f83116001811461090a575f84156108f8578287015190505b6109028582610887565b865550610969565b601f19841661091886610705565b5f5b8281101561093f5784890151825560018201915060208501945060208101905061091a565b8683101561095c5784890151610958601f89168261086b565b8355505b6001600288020188555050505b505050505050565b7f4c45524332303a206d696e7420746f20746865207a65726f20616464726573735f82015250565b5f6109a5602083610600565b91506109b082610971565b602082019050919050565b5f6020820190508181035f8301526109d281610999565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a1082610362565b9150610a1b83610362565b9250828201905080821115610a3357610a326109d9565b5b92915050565b610a4281610362565b82525050565b5f602082019050610a5b5f830184610a39565b92915050565b61304280610a6e5f395ff3fe608060405234801561000f575f80fd5b50600436106101a7575f3560e01c80636e9960c3116100f7578063a9059cbb11610095578063ccfa214f1161006f578063ccfa214f14610495578063d6e242b8146104b3578063dd62ed3e146104bd578063f851a440146104ed576101a7565b8063a9059cbb1461043f578063b38fe9571461046f578063b5c2287714610479576101a7565b806393310ffe116100d157806393310ffe146103b9578063936af911146103d557806395d89b41146103f1578063a457c2d71461040f576101a7565b80636e9960c31461034f57806370a082311461036d57806379cc67901461039d576101a7565b8063313ce5671161016457806342966c681161013e57806342966c68146102ed5780635b8a194a146103095780635f6529a31461031357806361086b0014610331576101a7565b8063313ce5671461028157806334f6ebf51461029f57806339509351146102bd576101a7565b806306fdde03146101ab578063095ea7b3146101c957806318160ddd146101f957806323b872dd146102175780632baa3c9e146102475780632ecaf67514610263575b5f80fd5b6101b361050b565b6040516101c0919061205f565b60405180910390f35b6101e360048036038101906101de919061211d565b61059b565b6040516101f09190612175565b60405180910390f35b610201610664565b60405161020e919061219d565b60405180910390f35b610231600480360381019061022c91906121b6565b61066d565b60405161023e9190612175565b60405180910390f35b610261600480360381019061025c9190612206565b610818565b005b61026b6109c3565b604051610278919061219d565b60405180910390f35b6102896109c9565b604051610296919061224c565b60405180910390f35b6102a76109d1565b6040516102b491906122c0565b60405180910390f35b6102d760048036038101906102d2919061211d565b6109f7565b6040516102e49190612175565b60405180910390f35b610307600480360381019061030291906122d9565b610b4a565b005b610311610c08565b005b61031b610d3c565b6040516103289190612313565b60405180910390f35b610339610d61565b604051610346919061219d565b60405180910390f35b610357610d67565b6040516103649190612313565b60405180910390f35b61038760048036038101906103829190612206565b610d8f565b604051610394919061219d565b60405180910390f35b6103b760048036038101906103b2919061211d565b610dd4565b005b6103d360048036038101906103ce919061235f565b610ef1565b005b6103ef60048036038101906103ea91906123fe565b611015565b005b6103f96112d7565b604051610406919061205f565b60405180910390f35b6104296004803603810190610424919061211d565b611367565b6040516104369190612175565b60405180910390f35b6104596004803603810190610454919061211d565b611502565b6040516104669190612175565b60405180910390f35b6104776115cb565b005b610493600480360381019061048e9190612571565b611738565b005b61049d611921565b6040516104aa9190612175565b60405180910390f35b6104bb611933565b005b6104d760048036038101906104d291906125b8565b611aaa565b6040516104e4919061219d565b60405180910390f35b6104f5611b2c565b6040516105029190612313565b60405180910390f35b60606003805461051a90612623565b80601f016020809104026020016040519081016040528092919081815260200182805461054690612623565b80156105915780601f1061056857610100808354040283529160200191610591565b820191905f5260205f20905b81548152906001019060200180831161057457829003601f168201915b5050505050905090565b5f8282600b5f9054906101000a900460ff161561064657600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347abf3be6105f8611b51565b84846040518463ffffffff1660e01b815260040161061893929190612653565b5f604051808303815f87803b15801561062f575f80fd5b505af1158015610641573d5f803e3d5ffd5b505050505b610658610651611b51565b8686611b58565b60019250505092915050565b5f600254905090565b5f838383600b5f9054906101000a900460ff161561071b57600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663379f5c696106cb611b51565b8585856040518563ffffffff1660e01b81526004016106ed9493929190612688565b5f604051808303815f87803b158015610704575f80fd5b505af1158015610716573d5f803e3d5ffd5b505050505b5f60015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610762611b51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050858110156107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d89061273b565b60405180910390fd5b6107ec888888611c3f565b610809886107f8611b51565b88846108049190612786565b611b58565b60019450505050509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610858611b51565b73ffffffffffffffffffffffffffffffffffffffff16146108ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590612803565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109349061286b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60405160405180910390a28060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b5f6012905090565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8282600b5f9054906101000a900460ff1615610aa257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf5961bb610a54611b51565b84846040518463ffffffff1660e01b8152600401610a7493929190612653565b5f604051808303815f87803b158015610a8b575f80fd5b505af1158015610a9d573d5f803e3d5ffd5b505050505b610b3e610aad611b51565b868660015f610aba611b51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b399190612889565b611b58565b60019250505092915050565b610b52611b51565b81600b5f9054906101000a900460ff1615610bf257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a1fefbd83836040518363ffffffff1660e01b8152600401610bc49291906128bc565b5f604051808303815f87803b158015610bdb575f80fd5b505af1158015610bed573d5f803e3d5ffd5b505050505b610c03610bfd611b51565b84611e39565b505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c48611b51565b73ffffffffffffffffffffffffffffffffffffffff1614610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590612803565b60405180910390fd5b600b5f9054906101000a900460ff1615610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061292d565b60405180910390fd5b5f600a819055506001600b5f6101000a81548160ff0219169083151502179055507f1ba3b66404043da8297d0b876fa6464f2cb127edfc6626308046d4503028322b60405160405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8181600b5f9054906101000a900460ff1615610e7557600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a1fefbd83836040518363ffffffff1660e01b8152600401610e479291906128bc565b5f604051808303815f87803b158015610e5e575f80fd5b505af1158015610e70573d5f803e3d5ffd5b505050505b5f610e8785610e82611b51565b611aaa565b905083811015610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec3906129bb565b60405180910390fd5b610ee085610ed8611b51565b868403611b58565b610eea8585611e39565b5050505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f31611b51565b73ffffffffffffffffffffffffffffffffffffffff1614610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90612803565b60405180910390fd5b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806007819055508173ffffffffffffffffffffffffffffffffffffffff167f6c591da8da2f6e69746d7d9ae61c27ee29fbe303798141b4942ae2aef54274b160405160405180910390a25050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611056611b51565b73ffffffffffffffffffffffffffffffffffffffff16146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a390612a23565b60405180910390fd5b600b5f9054906101000a900460ff166110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190612a8b565b60405180910390fd5b5f8282905090505f805b8281101561125c575f8585838181106111205761111f612aa9565b5b90506020020160208101906111359190612206565b90505f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080846111c49190612889565b9350600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611245919061219d565b60405180910390a350508080600101915050611104565b50805f80600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546112ca9190612889565b9250508190555050505050565b6060600480546112e690612623565b80601f016020809104026020016040519081016040528092919081815260200182805461131290612623565b801561135d5780601f106113345761010080835404028352916020019161135d565b820191905f5260205f20905b81548152906001019060200180831161134057829003601f168201915b5050505050905090565b5f8282600b5f9054906101000a900460ff161561141257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568c75a96113c4611b51565b84846040518463ffffffff1660e01b81526004016113e493929190612653565b5f604051808303815f87803b1580156113fb575f80fd5b505af115801561140d573d5f803e3d5ffd5b505050505b5f60015f61141e611b51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050848110156114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf90612b46565b60405180910390fd5b6114f56114e3611b51565b8787846114f09190612786565b611b58565b6001935050505092915050565b5f8282600b5f9054906101000a900460ff16156115ad57600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ffb811f61155f611b51565b84846040518463ffffffff1660e01b815260040161157f93929190612653565b5f604051808303815f87803b158015611596575f80fd5b505af11580156115a8573d5f803e3d5ffd5b505050505b6115bf6115b8611b51565b8686611c3f565b60019250505092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661160b611b51565b73ffffffffffffffffffffffffffffffffffffffff1614611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890612803565b60405180910390fd5b5f600a54036116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c90612bae565b60405180910390fd5b42600a5411156116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190612c16565b60405180910390fd5b5f600b5f6101000a81548160ff0219169083151502179055505f600a819055507f3eb72350c9c7928d31e9ab450bfff2c159434aa4b82658a7d8eae7f109cb4e7b60405160405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611778611b51565b73ffffffffffffffffffffffffffffffffffffffff16146117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c590612c7e565b60405180910390fd5b600754818051906020012014611819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181090612ce6565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb94bba6936ec7f75ee931dadf6e1a4d66b43d09b6fa0178fb13df9b77fb5841f60405160405180910390a260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5f9054906101000a900460ff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611973611b51565b73ffffffffffffffffffffffffffffffffffffffff16146119c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c090612803565b60405180910390fd5b5f600a5414611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490612d4e565b60405180910390fd5b600b5f9054906101000a900460ff16611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290612db6565b60405180910390fd5b60095442611a699190612889565b600a819055507f6ca688e6e3ddd707280140b2bf0106afe883689b6c74e68cbd517576dd9c245a600a54604051611aa0919061219d565b60405180910390a1565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c32919061219d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490612e44565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790612ed2565b60405180910390fd5b8181611d3c9190612786565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611dc79190612889565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e2b919061219d565b60405180910390a350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90612f60565b60405180910390fd5b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2190612fee565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f828254611f7e9190612786565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fe2919061219d565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61203182611fef565b61203b8185611ff9565b935061204b818560208601612009565b61205481612017565b840191505092915050565b5f6020820190508181035f8301526120778184612027565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120b982612090565b9050919050565b6120c9816120af565b81146120d3575f80fd5b50565b5f813590506120e4816120c0565b92915050565b5f819050919050565b6120fc816120ea565b8114612106575f80fd5b50565b5f81359050612117816120f3565b92915050565b5f806040838503121561213357612132612088565b5b5f612140858286016120d6565b925050602061215185828601612109565b9150509250929050565b5f8115159050919050565b61216f8161215b565b82525050565b5f6020820190506121885f830184612166565b92915050565b612197816120ea565b82525050565b5f6020820190506121b05f83018461218e565b92915050565b5f805f606084860312156121cd576121cc612088565b5b5f6121da868287016120d6565b93505060206121eb868287016120d6565b92505060406121fc86828701612109565b9150509250925092565b5f6020828403121561221b5761221a612088565b5b5f612228848285016120d6565b91505092915050565b5f60ff82169050919050565b61224681612231565b82525050565b5f60208201905061225f5f83018461223d565b92915050565b5f819050919050565b5f61228861228361227e84612090565b612265565b612090565b9050919050565b5f6122998261226e565b9050919050565b5f6122aa8261228f565b9050919050565b6122ba816122a0565b82525050565b5f6020820190506122d35f8301846122b1565b92915050565b5f602082840312156122ee576122ed612088565b5b5f6122fb84828501612109565b91505092915050565b61230d816120af565b82525050565b5f6020820190506123265f830184612304565b92915050565b5f819050919050565b61233e8161232c565b8114612348575f80fd5b50565b5f8135905061235981612335565b92915050565b5f806040838503121561237557612374612088565b5b5f612382858286016120d6565b92505060206123938582860161234b565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126123be576123bd61239d565b5b8235905067ffffffffffffffff8111156123db576123da6123a1565b5b6020830191508360208202830111156123f7576123f66123a5565b5b9250929050565b5f806020838503121561241457612413612088565b5b5f83013567ffffffffffffffff8111156124315761243061208c565b5b61243d858286016123a9565b92509250509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61248382612017565b810181811067ffffffffffffffff821117156124a2576124a161244d565b5b80604052505050565b5f6124b461207f565b90506124c0828261247a565b919050565b5f67ffffffffffffffff8211156124df576124de61244d565b5b6124e882612017565b9050602081019050919050565b828183375f83830152505050565b5f612515612510846124c5565b6124ab565b90508281526020810184848401111561253157612530612449565b5b61253c8482856124f5565b509392505050565b5f82601f8301126125585761255761239d565b5b8135612568848260208601612503565b91505092915050565b5f6020828403121561258657612585612088565b5b5f82013567ffffffffffffffff8111156125a3576125a261208c565b5b6125af84828501612544565b91505092915050565b5f80604083850312156125ce576125cd612088565b5b5f6125db858286016120d6565b92505060206125ec858286016120d6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061263a57607f821691505b60208210810361264d5761264c6125f6565b5b50919050565b5f6060820190506126665f830186612304565b6126736020830185612304565b612680604083018461218e565b949350505050565b5f60808201905061269b5f830187612304565b6126a86020830186612304565b6126b56040830185612304565b6126c2606083018461218e565b95945050505050565b7f4c45524332303a207472616e7366657220616d6f756e742065786365656473205f8201527f616c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b5f612725602983611ff9565b9150612730826126cb565b604082019050919050565b5f6020820190508181035f83015261275281612719565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612790826120ea565b915061279b836120ea565b92508282039050818111156127b3576127b2612759565b5b92915050565b7f4c45524332303a204d757374206265207265636f766572792061646d696e00005f82015250565b5f6127ed601e83611ff9565b91506127f8826127b9565b602082019050919050565b5f6020820190508181035f83015261281a816127e1565b9050919050565b7f4c45524332303a2043616e6e6f74207365742073616d652061646472657373005f82015250565b5f612855601f83611ff9565b915061286082612821565b602082019050919050565b5f6020820190508181035f83015261288281612849565b9050919050565b5f612893826120ea565b915061289e836120ea565b92508282019050808211156128b6576128b5612759565b5b92915050565b5f6040820190506128cf5f830185612304565b6128dc602083018461218e565b9392505050565b7f4c45524332303a204c6f73736c65737320616c7265616479206f6e00000000005f82015250565b5f612917601b83611ff9565b9150612922826128e3565b602082019050919050565b5f6020820190508181035f8301526129448161290b565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f6129a5602483611ff9565b91506129b08261294b565b604082019050919050565b5f6020820190508181035f8301526129d281612999565b9050919050565b7f4c45524332303a204f6e6c79206c6f73736c65737320636f6e747261637400005f82015250565b5f612a0d601e83611ff9565b9150612a18826129d9565b602082019050919050565b5f6020820190508181035f830152612a3a81612a01565b9050919050565b7f4c45524332303a204c6f73736c657373206973206f66660000000000000000005f82015250565b5f612a75601783611ff9565b9150612a8082612a41565b602082019050919050565b5f6020820190508181035f830152612aa281612a69565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f5f8201527f77207a65726f0000000000000000000000000000000000000000000000000000602082015250565b5f612b30602683611ff9565b9150612b3b82612ad6565b604082019050919050565b5f6020820190508181035f830152612b5d81612b24565b9050919050565b7f4c45524332303a205475726e4f6666206e6f742070726f706f736564000000005f82015250565b5f612b98601c83611ff9565b9150612ba382612b64565b602082019050919050565b5f6020820190508181035f830152612bc581612b8c565b9050919050565b7f4c45524332303a2054696d65206c6f636b20696e2070726f67726573730000005f82015250565b5f612c00601d83611ff9565b9150612c0b82612bcc565b602082019050919050565b5f6020820190508181035f830152612c2d81612bf4565b9050919050565b7f4c45524332303a204d7573742062652063616e646974617465000000000000005f82015250565b5f612c68601983611ff9565b9150612c7382612c34565b602082019050919050565b5f6020820190508181035f830152612c9581612c5c565b9050919050565b7f4c45524332303a20496e76616c6964206b6579000000000000000000000000005f82015250565b5f612cd0601383611ff9565b9150612cdb82612c9c565b602082019050919050565b5f6020820190508181035f830152612cfd81612cc4565b9050919050565b7f4c45524332303a205475726e4f666620616c72656164792070726f706f7365645f82015250565b5f612d38602083611ff9565b9150612d4382612d04565b602082019050919050565b5f6020820190508181035f830152612d6581612d2c565b9050919050565b7f4c45524332303a204c6f73736c65737320616c7265616479206f6666000000005f82015250565b5f612da0601c83611ff9565b9150612dab82612d6c565b602082019050919050565b5f6020820190508181035f830152612dcd81612d94565b9050919050565b7f4c45524332303a207472616e736665722066726f6d20746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612e2e602683611ff9565b9150612e3982612dd4565b604082019050919050565b5f6020820190508181035f830152612e5b81612e22565b9050919050565b7f4c45524332303a207472616e7366657220616d6f756e742065786365656473205f8201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b5f612ebc602783611ff9565b9150612ec782612e62565b604082019050919050565b5f6020820190508181035f830152612ee981612eb0565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f4a602183611ff9565b9150612f5582612ef0565b604082019050919050565b5f6020820190508181035f830152612f7781612f3e565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fd8602283611ff9565b9150612fe382612f7e565b604082019050919050565b5f6020820190508181035f83015261300581612fcc565b905091905056fea26469706673582212203a63dfce843ccecd17944aec6369ce6d11453c848dfbdf64c1d086f8c8de7a9d64736f6c63430008190033000000000000000000000000000000000000000000690d4bd97860968664000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000d7c4cecf3cb5261248532aca56c4e71f10241906000000000000000000000000b42c21b3b080cc9871f7c44714c8e2613449e0de000000000000000000000000000000000000000000000000000000000001518000000000000000000000000038d40f5c8375f84c5b90bc460a94a436d09133fb000000000000000000000000000000000000000000000000000000000000000f436f6479666967687420546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443544f4b00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101a7575f3560e01c80636e9960c3116100f7578063a9059cbb11610095578063ccfa214f1161006f578063ccfa214f14610495578063d6e242b8146104b3578063dd62ed3e146104bd578063f851a440146104ed576101a7565b8063a9059cbb1461043f578063b38fe9571461046f578063b5c2287714610479576101a7565b806393310ffe116100d157806393310ffe146103b9578063936af911146103d557806395d89b41146103f1578063a457c2d71461040f576101a7565b80636e9960c31461034f57806370a082311461036d57806379cc67901461039d576101a7565b8063313ce5671161016457806342966c681161013e57806342966c68146102ed5780635b8a194a146103095780635f6529a31461031357806361086b0014610331576101a7565b8063313ce5671461028157806334f6ebf51461029f57806339509351146102bd576101a7565b806306fdde03146101ab578063095ea7b3146101c957806318160ddd146101f957806323b872dd146102175780632baa3c9e146102475780632ecaf67514610263575b5f80fd5b6101b361050b565b6040516101c0919061205f565b60405180910390f35b6101e360048036038101906101de919061211d565b61059b565b6040516101f09190612175565b60405180910390f35b610201610664565b60405161020e919061219d565b60405180910390f35b610231600480360381019061022c91906121b6565b61066d565b60405161023e9190612175565b60405180910390f35b610261600480360381019061025c9190612206565b610818565b005b61026b6109c3565b604051610278919061219d565b60405180910390f35b6102896109c9565b604051610296919061224c565b60405180910390f35b6102a76109d1565b6040516102b491906122c0565b60405180910390f35b6102d760048036038101906102d2919061211d565b6109f7565b6040516102e49190612175565b60405180910390f35b610307600480360381019061030291906122d9565b610b4a565b005b610311610c08565b005b61031b610d3c565b6040516103289190612313565b60405180910390f35b610339610d61565b604051610346919061219d565b60405180910390f35b610357610d67565b6040516103649190612313565b60405180910390f35b61038760048036038101906103829190612206565b610d8f565b604051610394919061219d565b60405180910390f35b6103b760048036038101906103b2919061211d565b610dd4565b005b6103d360048036038101906103ce919061235f565b610ef1565b005b6103ef60048036038101906103ea91906123fe565b611015565b005b6103f96112d7565b604051610406919061205f565b60405180910390f35b6104296004803603810190610424919061211d565b611367565b6040516104369190612175565b60405180910390f35b6104596004803603810190610454919061211d565b611502565b6040516104669190612175565b60405180910390f35b6104776115cb565b005b610493600480360381019061048e9190612571565b611738565b005b61049d611921565b6040516104aa9190612175565b60405180910390f35b6104bb611933565b005b6104d760048036038101906104d291906125b8565b611aaa565b6040516104e4919061219d565b60405180910390f35b6104f5611b2c565b6040516105029190612313565b60405180910390f35b60606003805461051a90612623565b80601f016020809104026020016040519081016040528092919081815260200182805461054690612623565b80156105915780601f1061056857610100808354040283529160200191610591565b820191905f5260205f20905b81548152906001019060200180831161057457829003601f168201915b5050505050905090565b5f8282600b5f9054906101000a900460ff161561064657600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347abf3be6105f8611b51565b84846040518463ffffffff1660e01b815260040161061893929190612653565b5f604051808303815f87803b15801561062f575f80fd5b505af1158015610641573d5f803e3d5ffd5b505050505b610658610651611b51565b8686611b58565b60019250505092915050565b5f600254905090565b5f838383600b5f9054906101000a900460ff161561071b57600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663379f5c696106cb611b51565b8585856040518563ffffffff1660e01b81526004016106ed9493929190612688565b5f604051808303815f87803b158015610704575f80fd5b505af1158015610716573d5f803e3d5ffd5b505050505b5f60015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610762611b51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050858110156107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d89061273b565b60405180910390fd5b6107ec888888611c3f565b610809886107f8611b51565b88846108049190612786565b611b58565b60019450505050509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610858611b51565b73ffffffffffffffffffffffffffffffffffffffff16146108ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590612803565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109349061286b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60405160405180910390a28060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b5f6012905090565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8282600b5f9054906101000a900460ff1615610aa257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf5961bb610a54611b51565b84846040518463ffffffff1660e01b8152600401610a7493929190612653565b5f604051808303815f87803b158015610a8b575f80fd5b505af1158015610a9d573d5f803e3d5ffd5b505050505b610b3e610aad611b51565b868660015f610aba611b51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b399190612889565b611b58565b60019250505092915050565b610b52611b51565b81600b5f9054906101000a900460ff1615610bf257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a1fefbd83836040518363ffffffff1660e01b8152600401610bc49291906128bc565b5f604051808303815f87803b158015610bdb575f80fd5b505af1158015610bed573d5f803e3d5ffd5b505050505b610c03610bfd611b51565b84611e39565b505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c48611b51565b73ffffffffffffffffffffffffffffffffffffffff1614610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590612803565b60405180910390fd5b600b5f9054906101000a900460ff1615610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061292d565b60405180910390fd5b5f600a819055506001600b5f6101000a81548160ff0219169083151502179055507f1ba3b66404043da8297d0b876fa6464f2cb127edfc6626308046d4503028322b60405160405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b8181600b5f9054906101000a900460ff1615610e7557600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a1fefbd83836040518363ffffffff1660e01b8152600401610e479291906128bc565b5f604051808303815f87803b158015610e5e575f80fd5b505af1158015610e70573d5f803e3d5ffd5b505050505b5f610e8785610e82611b51565b611aaa565b905083811015610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec3906129bb565b60405180910390fd5b610ee085610ed8611b51565b868403611b58565b610eea8585611e39565b5050505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f31611b51565b73ffffffffffffffffffffffffffffffffffffffff1614610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90612803565b60405180910390fd5b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806007819055508173ffffffffffffffffffffffffffffffffffffffff167f6c591da8da2f6e69746d7d9ae61c27ee29fbe303798141b4942ae2aef54274b160405160405180910390a25050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611056611b51565b73ffffffffffffffffffffffffffffffffffffffff16146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a390612a23565b60405180910390fd5b600b5f9054906101000a900460ff166110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190612a8b565b60405180910390fd5b5f8282905090505f805b8281101561125c575f8585838181106111205761111f612aa9565b5b90506020020160208101906111359190612206565b90505f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080846111c49190612889565b9350600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611245919061219d565b60405180910390a350508080600101915050611104565b50805f80600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546112ca9190612889565b9250508190555050505050565b6060600480546112e690612623565b80601f016020809104026020016040519081016040528092919081815260200182805461131290612623565b801561135d5780601f106113345761010080835404028352916020019161135d565b820191905f5260205f20905b81548152906001019060200180831161134057829003601f168201915b5050505050905090565b5f8282600b5f9054906101000a900460ff161561141257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568c75a96113c4611b51565b84846040518463ffffffff1660e01b81526004016113e493929190612653565b5f604051808303815f87803b1580156113fb575f80fd5b505af115801561140d573d5f803e3d5ffd5b505050505b5f60015f61141e611b51565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050848110156114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf90612b46565b60405180910390fd5b6114f56114e3611b51565b8787846114f09190612786565b611b58565b6001935050505092915050565b5f8282600b5f9054906101000a900460ff16156115ad57600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ffb811f61155f611b51565b84846040518463ffffffff1660e01b815260040161157f93929190612653565b5f604051808303815f87803b158015611596575f80fd5b505af11580156115a8573d5f803e3d5ffd5b505050505b6115bf6115b8611b51565b8686611c3f565b60019250505092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661160b611b51565b73ffffffffffffffffffffffffffffffffffffffff1614611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890612803565b60405180910390fd5b5f600a54036116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c90612bae565b60405180910390fd5b42600a5411156116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190612c16565b60405180910390fd5b5f600b5f6101000a81548160ff0219169083151502179055505f600a819055507f3eb72350c9c7928d31e9ab450bfff2c159434aa4b82658a7d8eae7f109cb4e7b60405160405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611778611b51565b73ffffffffffffffffffffffffffffffffffffffff16146117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c590612c7e565b60405180910390fd5b600754818051906020012014611819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181090612ce6565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb94bba6936ec7f75ee931dadf6e1a4d66b43d09b6fa0178fb13df9b77fb5841f60405160405180910390a260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5f9054906101000a900460ff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611973611b51565b73ffffffffffffffffffffffffffffffffffffffff16146119c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c090612803565b60405180910390fd5b5f600a5414611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490612d4e565b60405180910390fd5b600b5f9054906101000a900460ff16611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290612db6565b60405180910390fd5b60095442611a699190612889565b600a819055507f6ca688e6e3ddd707280140b2bf0106afe883689b6c74e68cbd517576dd9c245a600a54604051611aa0919061219d565b60405180910390a1565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c32919061219d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490612e44565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2790612ed2565b60405180910390fd5b8181611d3c9190612786565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611dc79190612889565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e2b919061219d565b60405180910390a350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9e90612f60565b60405180910390fd5b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2190612fee565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f828254611f7e9190612786565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fe2919061219d565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61203182611fef565b61203b8185611ff9565b935061204b818560208601612009565b61205481612017565b840191505092915050565b5f6020820190508181035f8301526120778184612027565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120b982612090565b9050919050565b6120c9816120af565b81146120d3575f80fd5b50565b5f813590506120e4816120c0565b92915050565b5f819050919050565b6120fc816120ea565b8114612106575f80fd5b50565b5f81359050612117816120f3565b92915050565b5f806040838503121561213357612132612088565b5b5f612140858286016120d6565b925050602061215185828601612109565b9150509250929050565b5f8115159050919050565b61216f8161215b565b82525050565b5f6020820190506121885f830184612166565b92915050565b612197816120ea565b82525050565b5f6020820190506121b05f83018461218e565b92915050565b5f805f606084860312156121cd576121cc612088565b5b5f6121da868287016120d6565b93505060206121eb868287016120d6565b92505060406121fc86828701612109565b9150509250925092565b5f6020828403121561221b5761221a612088565b5b5f612228848285016120d6565b91505092915050565b5f60ff82169050919050565b61224681612231565b82525050565b5f60208201905061225f5f83018461223d565b92915050565b5f819050919050565b5f61228861228361227e84612090565b612265565b612090565b9050919050565b5f6122998261226e565b9050919050565b5f6122aa8261228f565b9050919050565b6122ba816122a0565b82525050565b5f6020820190506122d35f8301846122b1565b92915050565b5f602082840312156122ee576122ed612088565b5b5f6122fb84828501612109565b91505092915050565b61230d816120af565b82525050565b5f6020820190506123265f830184612304565b92915050565b5f819050919050565b61233e8161232c565b8114612348575f80fd5b50565b5f8135905061235981612335565b92915050565b5f806040838503121561237557612374612088565b5b5f612382858286016120d6565b92505060206123938582860161234b565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126123be576123bd61239d565b5b8235905067ffffffffffffffff8111156123db576123da6123a1565b5b6020830191508360208202830111156123f7576123f66123a5565b5b9250929050565b5f806020838503121561241457612413612088565b5b5f83013567ffffffffffffffff8111156124315761243061208c565b5b61243d858286016123a9565b92509250509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61248382612017565b810181811067ffffffffffffffff821117156124a2576124a161244d565b5b80604052505050565b5f6124b461207f565b90506124c0828261247a565b919050565b5f67ffffffffffffffff8211156124df576124de61244d565b5b6124e882612017565b9050602081019050919050565b828183375f83830152505050565b5f612515612510846124c5565b6124ab565b90508281526020810184848401111561253157612530612449565b5b61253c8482856124f5565b509392505050565b5f82601f8301126125585761255761239d565b5b8135612568848260208601612503565b91505092915050565b5f6020828403121561258657612585612088565b5b5f82013567ffffffffffffffff8111156125a3576125a261208c565b5b6125af84828501612544565b91505092915050565b5f80604083850312156125ce576125cd612088565b5b5f6125db858286016120d6565b92505060206125ec858286016120d6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061263a57607f821691505b60208210810361264d5761264c6125f6565b5b50919050565b5f6060820190506126665f830186612304565b6126736020830185612304565b612680604083018461218e565b949350505050565b5f60808201905061269b5f830187612304565b6126a86020830186612304565b6126b56040830185612304565b6126c2606083018461218e565b95945050505050565b7f4c45524332303a207472616e7366657220616d6f756e742065786365656473205f8201527f616c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b5f612725602983611ff9565b9150612730826126cb565b604082019050919050565b5f6020820190508181035f83015261275281612719565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612790826120ea565b915061279b836120ea565b92508282039050818111156127b3576127b2612759565b5b92915050565b7f4c45524332303a204d757374206265207265636f766572792061646d696e00005f82015250565b5f6127ed601e83611ff9565b91506127f8826127b9565b602082019050919050565b5f6020820190508181035f83015261281a816127e1565b9050919050565b7f4c45524332303a2043616e6e6f74207365742073616d652061646472657373005f82015250565b5f612855601f83611ff9565b915061286082612821565b602082019050919050565b5f6020820190508181035f83015261288281612849565b9050919050565b5f612893826120ea565b915061289e836120ea565b92508282019050808211156128b6576128b5612759565b5b92915050565b5f6040820190506128cf5f830185612304565b6128dc602083018461218e565b9392505050565b7f4c45524332303a204c6f73736c65737320616c7265616479206f6e00000000005f82015250565b5f612917601b83611ff9565b9150612922826128e3565b602082019050919050565b5f6020820190508181035f8301526129448161290b565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f6129a5602483611ff9565b91506129b08261294b565b604082019050919050565b5f6020820190508181035f8301526129d281612999565b9050919050565b7f4c45524332303a204f6e6c79206c6f73736c65737320636f6e747261637400005f82015250565b5f612a0d601e83611ff9565b9150612a18826129d9565b602082019050919050565b5f6020820190508181035f830152612a3a81612a01565b9050919050565b7f4c45524332303a204c6f73736c657373206973206f66660000000000000000005f82015250565b5f612a75601783611ff9565b9150612a8082612a41565b602082019050919050565b5f6020820190508181035f830152612aa281612a69565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f5f8201527f77207a65726f0000000000000000000000000000000000000000000000000000602082015250565b5f612b30602683611ff9565b9150612b3b82612ad6565b604082019050919050565b5f6020820190508181035f830152612b5d81612b24565b9050919050565b7f4c45524332303a205475726e4f6666206e6f742070726f706f736564000000005f82015250565b5f612b98601c83611ff9565b9150612ba382612b64565b602082019050919050565b5f6020820190508181035f830152612bc581612b8c565b9050919050565b7f4c45524332303a2054696d65206c6f636b20696e2070726f67726573730000005f82015250565b5f612c00601d83611ff9565b9150612c0b82612bcc565b602082019050919050565b5f6020820190508181035f830152612c2d81612bf4565b9050919050565b7f4c45524332303a204d7573742062652063616e646974617465000000000000005f82015250565b5f612c68601983611ff9565b9150612c7382612c34565b602082019050919050565b5f6020820190508181035f830152612c9581612c5c565b9050919050565b7f4c45524332303a20496e76616c6964206b6579000000000000000000000000005f82015250565b5f612cd0601383611ff9565b9150612cdb82612c9c565b602082019050919050565b5f6020820190508181035f830152612cfd81612cc4565b9050919050565b7f4c45524332303a205475726e4f666620616c72656164792070726f706f7365645f82015250565b5f612d38602083611ff9565b9150612d4382612d04565b602082019050919050565b5f6020820190508181035f830152612d6581612d2c565b9050919050565b7f4c45524332303a204c6f73736c65737320616c7265616479206f6666000000005f82015250565b5f612da0601c83611ff9565b9150612dab82612d6c565b602082019050919050565b5f6020820190508181035f830152612dcd81612d94565b9050919050565b7f4c45524332303a207472616e736665722066726f6d20746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612e2e602683611ff9565b9150612e3982612dd4565b604082019050919050565b5f6020820190508181035f830152612e5b81612e22565b9050919050565b7f4c45524332303a207472616e7366657220616d6f756e742065786365656473205f8201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b5f612ebc602783611ff9565b9150612ec782612e62565b604082019050919050565b5f6020820190508181035f830152612ee981612eb0565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f4a602183611ff9565b9150612f5582612ef0565b604082019050919050565b5f6020820190508181035f830152612f7781612f3e565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fd8602283611ff9565b9150612fe382612f7e565b604082019050919050565b5f6020820190508181035f83015261300581612fcc565b905091905056fea26469706673582212203a63dfce843ccecd17944aec6369ce6d11453c848dfbdf64c1d086f8c8de7a9d64736f6c63430008190033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000690d4bd97860968664000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000d7c4cecf3cb5261248532aca56c4e71f10241906000000000000000000000000b42c21b3b080cc9871f7c44714c8e2613449e0de000000000000000000000000000000000000000000000000000000000001518000000000000000000000000038d40f5c8375f84c5b90bc460a94a436d09133fb000000000000000000000000000000000000000000000000000000000000000f436f6479666967687420546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443544f4b00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : totalSupply_ (uint256): 127000001000000000000000000
Arg [1] : name_ (string): Codyfight Token
Arg [2] : symbol_ (string): CTOK
Arg [3] : admin_ (address): 0xd7c4CeCF3cb5261248532aCA56c4e71f10241906
Arg [4] : recoveryAdmin_ (address): 0xb42c21b3B080cC9871f7C44714c8e2613449E0dE
Arg [5] : timelockPeriod_ (uint256): 86400
Arg [6] : lossless_ (address): 0x38D40f5c8375F84C5B90bc460A94a436D09133fB

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000690d4bd978609686640000
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 000000000000000000000000d7c4cecf3cb5261248532aca56c4e71f10241906
Arg [4] : 000000000000000000000000b42c21b3b080cc9871f7c44714c8e2613449e0de
Arg [5] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [6] : 00000000000000000000000038d40f5c8375f84c5b90bc460a94a436d09133fb
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [8] : 436f6479666967687420546f6b656e0000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [10] : 43544f4b00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

24792:958:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15820:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18024:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16421:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18604:476;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12775:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5592:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16220:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19436:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23484:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15290:211;;;:::i;:::-;;4742:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5793:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15600:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16672:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23952:380;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13251:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11954:644;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16016:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20092:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17095:202;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14790:344;;;:::i;:::-;;13699:391;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5972:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14260:335;;;:::i;:::-;;17539:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5392:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15820:85;15865:13;15894:5;15887:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15820:85;:::o;18024:192::-;18140:4;18114:7;18123:6;9055:12;;;;;;;;;;;9051:88;;;9078:8;;;;;;;;;;;:22;;;9101:12;:10;:12::i;:::-;9115:7;9124:6;9078:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9051:88;18153:39:::1;18162:12;:10;:12::i;:::-;18176:7;18185:6;18153:8;:39::i;:::-;18206:4;18199:11;;18024:192:::0;;;;;;:::o;16421:93::-;16473:7;16496:12;;16489:19;;16421:93;:::o;18604:476::-;18764:4;18728:6;18736:9;18747:6;9969:12;;;;;;;;;;;9965:103;;;9992:8;;;;;;;;;;;:27;;;10020:12;:10;:12::i;:::-;10034:6;10042:9;10053:6;9992:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9965:103;18777:24:::1;18804:11;:19;18816:6;18804:19;;;;;;;;;;;;;;;:33;18824:12;:10;:12::i;:::-;18804:33;;;;;;;;;;;;;;;;18777:60;;18880:6;18860:16;:26;;18844:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;18952:36;18962:6;18970:9;18981:6;18952:9;:36::i;:::-;18997:57;19006:6;19014:12;:10;:12::i;:::-;19047:6;19028:16;:25;;;;:::i;:::-;18997:8;:57::i;:::-;19070:4;19063:11;;;18604:476:::0;;;;;;;;:::o;12775:198::-;11606:13;;;;;;;;;;;11590:29;;:12;:10;:12::i;:::-;:29;;;11582:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12873:5:::1;;;;;;;;;;;12861:17;;:8;:17;;::::0;12853:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12935:8;12926:18;;;;;;;;;;;;12959:8;12951:5;;:16;;;;;;;;;;;;;;;;;;12775:198:::0;:::o;5592:29::-;;;;:::o;16220:78::-;16269:5;16290:2;16283:9;;16220:78;:::o;6173:30::-;;;;;;;;;;;;;:::o;19436:290::-;19581:4;19551:7;19560:10;10805:12;;;;;;;;;;;10801:102;;;10828:8;;;;;;;;;;;:32;;;10861:12;:10;:12::i;:::-;10875:7;10884:10;10828:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10801:102;19594:108:::1;19611:12;:10;:12::i;:::-;19632:7;19685:10;19648:11;:25;19660:12;:10;:12::i;:::-;19648:25;;;;;;;;;;;;;;;:34;19674:7;19648:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;19594:8;:108::i;:::-;19716:4;19709:11;;19436:290:::0;;;;;;:::o;23484:115::-;23537:12;:10;:12::i;:::-;23551:6;10367:12;;;;;;;;;;;10363:71;;;10390:8;;;;;;;;;;;:19;;;10410:7;10419:6;10390:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10363:71;23566:27:::1;23572:12;:10;:12::i;:::-;23586:6;23566:5;:27::i;:::-;23484:115:::0;;;:::o;15290:211::-;11606:13;;;;;;;;;;;11590:29;;:12;:10;:12::i;:::-;:29;;;11582:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15366:12:::1;;;;;;;;;;;15365:13;15357:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;15444:1;15417:24;:28;;;;15467:4;15452:12;;:19;;;;;;;;;;;;;;;;;;15483:12;;;;;;;;;;15290:211::o:0;4742:28::-;;;;;;;;;;;;;:::o;5793:39::-;;;;:::o;15600:83::-;15649:7;15672:5;;;;;;;;;;;15665:12;;15600:83;:::o;16672:112::-;16737:7;16760:9;:18;16770:7;16760:18;;;;;;;;;;;;;;;;16753:25;;16672:112;;;:::o;23952:380::-;24041:7;24050:6;10367:12;;;;;;;;;;;10363:71;;;10390:8;;;;;;;;;;;:19;;;10410:7;10419:6;10390:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10363:71;24065:24:::1;24092:32;24102:7;24111:12;:10;:12::i;:::-;24092:9;:32::i;:::-;24065:59;;24159:6;24139:16;:26;;24131:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24232:58;24241:7;24250:12;:10;:12::i;:::-;24283:6;24264:16;:25;24232:8;:58::i;:::-;24304:22;24310:7;24319:6;24304:5;:22::i;:::-;24058:274;23952:380:::0;;;;:::o;13251:249::-;11606:13;;;;;;;;;;;11590:29;;:12;:10;:12::i;:::-;:29;;;11582:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13401:9:::1;13376:22;;:34;;;;;;;;;;;;;;;;;;13440:7;13417:20;:30;;;;13484:9;13459:35;;;;;;;;;;;;13251:249:::0;;:::o;11954:644::-;12072:8;;;;;;;;;;;12048:33;;:12;:10;:12::i;:::-;:33;;;12032:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;12144:12;;;;;;;;;;;12136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12193:18;12214:4;;:11;;12193:32;;12232:19;12269:9;12264:277;12288:10;12284:1;:14;12264:277;;;12314:19;12336:4;;12341:1;12336:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12314:29;;12352:19;12374:9;:22;12384:11;12374:22;;;;;;;;;;;;;;;;12352:44;;12430:1;12405:9;:22;12415:11;12405:22;;;;;;;;;;;;;;;:26;;;;12455:11;12440:26;;;;;:::i;:::-;;;12510:8;;;;;;;;;;;12480:53;;12489:11;12480:53;;;12521:11;12480:53;;;;;;:::i;:::-;;;;;;;;12305:236;;12300:3;;;;;;;12264:277;;;;12581:11;12549:9;:28;12567:8;;;;;;;;;;;12549:28;;;;;;;;;;;;;;;;:43;;;;;;;:::i;:::-;;;;;;;;12025:573;;11954:644;;:::o;16016:89::-;16063:13;16092:7;16085:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16016:89;:::o;20092:466::-;20267:4;20227:7;20236:15;11289:12;;;;;;;;;;;11285:107;;;11312:8;;;;;;;;;;;:32;;;11345:12;:10;:12::i;:::-;11359:7;11368:15;11312:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11285:107;20283:24:::1;20310:11;:25;20322:12;:10;:12::i;:::-;20310:25;;;;;;;;;;;;;;;:34;20336:7;20310:34;;;;;;;;;;;;;;;;20283:61;;20387:15;20367:16;:35;;20351:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;20465:67;20474:12;:10;:12::i;:::-;20488:7;20516:15;20497:16;:34;;;;:::i;:::-;20465:8;:67::i;:::-;20548:4;20541:11;;;20092:466:::0;;;;;;:::o;17095:202::-;17218:4;17190:9;17201:6;9464:12;;;;;;;;;;;9460:91;;;9487:8;;;;;;;;;;;:23;;;9511:12;:10;:12::i;:::-;9525:9;9536:6;9487:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9460:91;17231:42:::1;17241:12;:10;:12::i;:::-;17255:9;17266:6;17231:9;:42::i;:::-;17287:4;17280:11;;17095:202:::0;;;;;;:::o;14790:344::-;11606:13;;;;;;;;;;;11590:29;;:12;:10;:12::i;:::-;:29;;;11582:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14894:1:::1;14866:24;;:29:::0;14858:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14979:15;14951:24;;:43;;14935:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15063:5;15048:12;;:20;;;;;;;;;;;;;;;;;;15102:1;15075:24;:28;;;;15115:13;;;;;;;;;;14790:344::o:0;13699:391::-;13803:22;;;;;;;;;;;13787:38;;:12;:10;:12::i;:::-;:38;;;13771:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;13901:20;;13893:3;13883:14;;;;;;:38;13875:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13974:22;;;;;;;;;;;13957:40;;;;;;;;;;;;14020:22;;;;;;;;;;;14004:13;;:38;;;;;;;;;;;;;;;;;;14082:1;14049:22;;:35;;;;;;;;;;;;;;;;;;13699:391;:::o;5972:31::-;;;;;;;;;;;;;:::o;14260:335::-;11606:13;;;;;;;;;;;11590:29;;:12;:10;:12::i;:::-;:29;;;11582:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14364:1:::1;14336:24;;:29;14328:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:12;;;;;;;;;;;14409:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14514:14;;14496:15;:32;;;;:::i;:::-;14469:24;:59;;;;14540:49;14564:24;;14540:49;;;;;;:::i;:::-;;;;;;;;14260:335::o:0;17539:151::-;17634:7;17657:11;:18;17669:5;17657:18;;;;;;;;;;;;;;;:27;17676:7;17657:27;;;;;;;;;;;;;;;;17650:34;;17539:151;;;;:::o;5392:20::-;;;;;;;;;;;;;:::o;539:92::-;592:7;615:10;608:17;;539:92;:::o;22955:196::-;23095:6;23065:11;:18;23077:5;23065:18;;;;;;;;;;;;;;;:27;23084:7;23065:27;;;;;;;;;;;;;;;:36;;;;23129:7;23113:32;;23122:5;23113:32;;;23138:6;23113:32;;;;;;:::i;:::-;;;;;;;;22955:196;;;:::o;20878:458::-;21018:1;21000:20;;:6;:20;;;20992:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21072:21;21096:9;:17;21106:6;21096:17;;;;;;;;;;;;;;;;21072:41;;21145:6;21128:13;:23;;21120:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21238:6;21222:13;:22;;;;:::i;:::-;21202:9;:17;21212:6;21202:17;;;;;;;;;;;;;;;:42;;;;21275:6;21251:9;:20;21261:9;21251:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;21312:9;21295:35;;21304:6;21295:35;;;21323:6;21295:35;;;;;;:::i;:::-;;;;;;;;20985:351;20878:458;;;:::o;22303:432::-;22402:1;22383:21;;:7;:21;;;22375:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22451:22;22476:9;:18;22486:7;22476:18;;;;;;;;;;;;;;;;22451:43;;22527:6;22509:14;:24;;22501:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22636:6;22619:14;:23;22598:9;:18;22608:7;22598:18;;;;;;;;;;;;;;;:44;;;;22672:6;22656:12;;:22;;;;;;;:::i;:::-;;;;;;;;22718:1;22692:37;;22701:7;22692:37;;;22722:6;22692:37;;;;;;:::i;:::-;;;;;;;;22368:367;22303:432;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:60::-;5109:3;5130:5;5123:12;;5081:60;;;:::o;5147:142::-;5197:9;5230:53;5248:34;5257:24;5275:5;5257:24;:::i;:::-;5248:34;:::i;:::-;5230:53;:::i;:::-;5217:66;;5147:142;;;:::o;5295:126::-;5345:9;5378:37;5409:5;5378:37;:::i;:::-;5365:50;;5295:126;;;:::o;5427:147::-;5498:9;5531:37;5562:5;5531:37;:::i;:::-;5518:50;;5427:147;;;:::o;5580:173::-;5688:58;5740:5;5688:58;:::i;:::-;5683:3;5676:71;5580:173;;:::o;5759:264::-;5873:4;5911:2;5900:9;5896:18;5888:26;;5924:92;6013:1;6002:9;5998:17;5989:6;5924:92;:::i;:::-;5759:264;;;;:::o;6029:329::-;6088:6;6137:2;6125:9;6116:7;6112:23;6108:32;6105:119;;;6143:79;;:::i;:::-;6105:119;6263:1;6288:53;6333:7;6324:6;6313:9;6309:22;6288:53;:::i;:::-;6278:63;;6234:117;6029:329;;;;:::o;6364:118::-;6451:24;6469:5;6451:24;:::i;:::-;6446:3;6439:37;6364:118;;:::o;6488:222::-;6581:4;6619:2;6608:9;6604:18;6596:26;;6632:71;6700:1;6689:9;6685:17;6676:6;6632:71;:::i;:::-;6488:222;;;;:::o;6716:77::-;6753:7;6782:5;6771:16;;6716:77;;;:::o;6799:122::-;6872:24;6890:5;6872:24;:::i;:::-;6865:5;6862:35;6852:63;;6911:1;6908;6901:12;6852:63;6799:122;:::o;6927:139::-;6973:5;7011:6;6998:20;6989:29;;7027:33;7054:5;7027:33;:::i;:::-;6927:139;;;;:::o;7072:474::-;7140:6;7148;7197:2;7185:9;7176:7;7172:23;7168:32;7165:119;;;7203:79;;:::i;:::-;7165:119;7323:1;7348:53;7393:7;7384:6;7373:9;7369:22;7348:53;:::i;:::-;7338:63;;7294:117;7450:2;7476:53;7521:7;7512:6;7501:9;7497:22;7476:53;:::i;:::-;7466:63;;7421:118;7072:474;;;;;:::o;7552:117::-;7661:1;7658;7651:12;7675:117;7784:1;7781;7774:12;7798:117;7907:1;7904;7897:12;7938:568;8011:8;8021:6;8071:3;8064:4;8056:6;8052:17;8048:27;8038:122;;8079:79;;:::i;:::-;8038:122;8192:6;8179:20;8169:30;;8222:18;8214:6;8211:30;8208:117;;;8244:79;;:::i;:::-;8208:117;8358:4;8350:6;8346:17;8334:29;;8412:3;8404:4;8396:6;8392:17;8382:8;8378:32;8375:41;8372:128;;;8419:79;;:::i;:::-;8372:128;7938:568;;;;;:::o;8512:559::-;8598:6;8606;8655:2;8643:9;8634:7;8630:23;8626:32;8623:119;;;8661:79;;:::i;:::-;8623:119;8809:1;8798:9;8794:17;8781:31;8839:18;8831:6;8828:30;8825:117;;;8861:79;;:::i;:::-;8825:117;8974:80;9046:7;9037:6;9026:9;9022:22;8974:80;:::i;:::-;8956:98;;;;8752:312;8512:559;;;;;:::o;9077:117::-;9186:1;9183;9176:12;9200:180;9248:77;9245:1;9238:88;9345:4;9342:1;9335:15;9369:4;9366:1;9359:15;9386:281;9469:27;9491:4;9469:27;:::i;:::-;9461:6;9457:40;9599:6;9587:10;9584:22;9563:18;9551:10;9548:34;9545:62;9542:88;;;9610:18;;:::i;:::-;9542:88;9650:10;9646:2;9639:22;9429:238;9386:281;;:::o;9673:129::-;9707:6;9734:20;;:::i;:::-;9724:30;;9763:33;9791:4;9783:6;9763:33;:::i;:::-;9673:129;;;:::o;9808:307::-;9869:4;9959:18;9951:6;9948:30;9945:56;;;9981:18;;:::i;:::-;9945:56;10019:29;10041:6;10019:29;:::i;:::-;10011:37;;10103:4;10097;10093:15;10085:23;;9808:307;;;:::o;10121:148::-;10219:6;10214:3;10209;10196:30;10260:1;10251:6;10246:3;10242:16;10235:27;10121:148;;;:::o;10275:423::-;10352:5;10377:65;10393:48;10434:6;10393:48;:::i;:::-;10377:65;:::i;:::-;10368:74;;10465:6;10458:5;10451:21;10503:4;10496:5;10492:16;10541:3;10532:6;10527:3;10523:16;10520:25;10517:112;;;10548:79;;:::i;:::-;10517:112;10638:54;10685:6;10680:3;10675;10638:54;:::i;:::-;10358:340;10275:423;;;;;:::o;10717:338::-;10772:5;10821:3;10814:4;10806:6;10802:17;10798:27;10788:122;;10829:79;;:::i;:::-;10788:122;10946:6;10933:20;10971:78;11045:3;11037:6;11030:4;11022:6;11018:17;10971:78;:::i;:::-;10962:87;;10778:277;10717:338;;;;:::o;11061:507::-;11129:6;11178:2;11166:9;11157:7;11153:23;11149:32;11146:119;;;11184:79;;:::i;:::-;11146:119;11332:1;11321:9;11317:17;11304:31;11362:18;11354:6;11351:30;11348:117;;;11384:79;;:::i;:::-;11348:117;11489:62;11543:7;11534:6;11523:9;11519:22;11489:62;:::i;:::-;11479:72;;11275:286;11061:507;;;;:::o;11574:474::-;11642:6;11650;11699:2;11687:9;11678:7;11674:23;11670:32;11667:119;;;11705:79;;:::i;:::-;11667:119;11825:1;11850:53;11895:7;11886:6;11875:9;11871:22;11850:53;:::i;:::-;11840:63;;11796:117;11952:2;11978:53;12023:7;12014:6;12003:9;11999:22;11978:53;:::i;:::-;11968:63;;11923:118;11574:474;;;;;:::o;12054:180::-;12102:77;12099:1;12092:88;12199:4;12196:1;12189:15;12223:4;12220:1;12213:15;12240:320;12284:6;12321:1;12315:4;12311:12;12301:22;;12368:1;12362:4;12358:12;12389:18;12379:81;;12445:4;12437:6;12433:17;12423:27;;12379:81;12507:2;12499:6;12496:14;12476:18;12473:38;12470:84;;12526:18;;:::i;:::-;12470:84;12291:269;12240:320;;;:::o;12566:442::-;12715:4;12753:2;12742:9;12738:18;12730:26;;12766:71;12834:1;12823:9;12819:17;12810:6;12766:71;:::i;:::-;12847:72;12915:2;12904:9;12900:18;12891:6;12847:72;:::i;:::-;12929;12997:2;12986:9;12982:18;12973:6;12929:72;:::i;:::-;12566:442;;;;;;:::o;13014:553::-;13191:4;13229:3;13218:9;13214:19;13206:27;;13243:71;13311:1;13300:9;13296:17;13287:6;13243:71;:::i;:::-;13324:72;13392:2;13381:9;13377:18;13368:6;13324:72;:::i;:::-;13406;13474:2;13463:9;13459:18;13450:6;13406:72;:::i;:::-;13488;13556:2;13545:9;13541:18;13532:6;13488:72;:::i;:::-;13014:553;;;;;;;:::o;13573:228::-;13713:34;13709:1;13701:6;13697:14;13690:58;13782:11;13777:2;13769:6;13765:15;13758:36;13573:228;:::o;13807:366::-;13949:3;13970:67;14034:2;14029:3;13970:67;:::i;:::-;13963:74;;14046:93;14135:3;14046:93;:::i;:::-;14164:2;14159:3;14155:12;14148:19;;13807:366;;;:::o;14179:419::-;14345:4;14383:2;14372:9;14368:18;14360:26;;14432:9;14426:4;14422:20;14418:1;14407:9;14403:17;14396:47;14460:131;14586:4;14460:131;:::i;:::-;14452:139;;14179:419;;;:::o;14604:180::-;14652:77;14649:1;14642:88;14749:4;14746:1;14739:15;14773:4;14770:1;14763:15;14790:194;14830:4;14850:20;14868:1;14850:20;:::i;:::-;14845:25;;14884:20;14902:1;14884:20;:::i;:::-;14879:25;;14928:1;14925;14921:9;14913:17;;14952:1;14946:4;14943:11;14940:37;;;14957:18;;:::i;:::-;14940:37;14790:194;;;;:::o;14990:180::-;15130:32;15126:1;15118:6;15114:14;15107:56;14990:180;:::o;15176:366::-;15318:3;15339:67;15403:2;15398:3;15339:67;:::i;:::-;15332:74;;15415:93;15504:3;15415:93;:::i;:::-;15533:2;15528:3;15524:12;15517:19;;15176:366;;;:::o;15548:419::-;15714:4;15752:2;15741:9;15737:18;15729:26;;15801:9;15795:4;15791:20;15787:1;15776:9;15772:17;15765:47;15829:131;15955:4;15829:131;:::i;:::-;15821:139;;15548:419;;;:::o;15973:181::-;16113:33;16109:1;16101:6;16097:14;16090:57;15973:181;:::o;16160:366::-;16302:3;16323:67;16387:2;16382:3;16323:67;:::i;:::-;16316:74;;16399:93;16488:3;16399:93;:::i;:::-;16517:2;16512:3;16508:12;16501:19;;16160:366;;;:::o;16532:419::-;16698:4;16736:2;16725:9;16721:18;16713:26;;16785:9;16779:4;16775:20;16771:1;16760:9;16756:17;16749:47;16813:131;16939:4;16813:131;:::i;:::-;16805:139;;16532:419;;;:::o;16957:191::-;16997:3;17016:20;17034:1;17016:20;:::i;:::-;17011:25;;17050:20;17068:1;17050:20;:::i;:::-;17045:25;;17093:1;17090;17086:9;17079:16;;17114:3;17111:1;17108:10;17105:36;;;17121:18;;:::i;:::-;17105:36;16957:191;;;;:::o;17154:332::-;17275:4;17313:2;17302:9;17298:18;17290:26;;17326:71;17394:1;17383:9;17379:17;17370:6;17326:71;:::i;:::-;17407:72;17475:2;17464:9;17460:18;17451:6;17407:72;:::i;:::-;17154:332;;;;;:::o;17492:177::-;17632:29;17628:1;17620:6;17616:14;17609:53;17492:177;:::o;17675:366::-;17817:3;17838:67;17902:2;17897:3;17838:67;:::i;:::-;17831:74;;17914:93;18003:3;17914:93;:::i;:::-;18032:2;18027:3;18023:12;18016:19;;17675:366;;;:::o;18047:419::-;18213:4;18251:2;18240:9;18236:18;18228:26;;18300:9;18294:4;18290:20;18286:1;18275:9;18271:17;18264:47;18328:131;18454:4;18328:131;:::i;:::-;18320:139;;18047:419;;;:::o;18472:223::-;18612:34;18608:1;18600:6;18596:14;18589:58;18681:6;18676:2;18668:6;18664:15;18657:31;18472:223;:::o;18701:366::-;18843:3;18864:67;18928:2;18923:3;18864:67;:::i;:::-;18857:74;;18940:93;19029:3;18940:93;:::i;:::-;19058:2;19053:3;19049:12;19042:19;;18701:366;;;:::o;19073:419::-;19239:4;19277:2;19266:9;19262:18;19254:26;;19326:9;19320:4;19316:20;19312:1;19301:9;19297:17;19290:47;19354:131;19480:4;19354:131;:::i;:::-;19346:139;;19073:419;;;:::o;19498:180::-;19638:32;19634:1;19626:6;19622:14;19615:56;19498:180;:::o;19684:366::-;19826:3;19847:67;19911:2;19906:3;19847:67;:::i;:::-;19840:74;;19923:93;20012:3;19923:93;:::i;:::-;20041:2;20036:3;20032:12;20025:19;;19684:366;;;:::o;20056:419::-;20222:4;20260:2;20249:9;20245:18;20237:26;;20309:9;20303:4;20299:20;20295:1;20284:9;20280:17;20273:47;20337:131;20463:4;20337:131;:::i;:::-;20329:139;;20056:419;;;:::o;20481:173::-;20621:25;20617:1;20609:6;20605:14;20598:49;20481:173;:::o;20660:366::-;20802:3;20823:67;20887:2;20882:3;20823:67;:::i;:::-;20816:74;;20899:93;20988:3;20899:93;:::i;:::-;21017:2;21012:3;21008:12;21001:19;;20660:366;;;:::o;21032:419::-;21198:4;21236:2;21225:9;21221:18;21213:26;;21285:9;21279:4;21275:20;21271:1;21260:9;21256:17;21249:47;21313:131;21439:4;21313:131;:::i;:::-;21305:139;;21032:419;;;:::o;21457:180::-;21505:77;21502:1;21495:88;21602:4;21599:1;21592:15;21626:4;21623:1;21616:15;21643:225;21783:34;21779:1;21771:6;21767:14;21760:58;21852:8;21847:2;21839:6;21835:15;21828:33;21643:225;:::o;21874:366::-;22016:3;22037:67;22101:2;22096:3;22037:67;:::i;:::-;22030:74;;22113:93;22202:3;22113:93;:::i;:::-;22231:2;22226:3;22222:12;22215:19;;21874:366;;;:::o;22246:419::-;22412:4;22450:2;22439:9;22435:18;22427:26;;22499:9;22493:4;22489:20;22485:1;22474:9;22470:17;22463:47;22527:131;22653:4;22527:131;:::i;:::-;22519:139;;22246:419;;;:::o;22671:178::-;22811:30;22807:1;22799:6;22795:14;22788:54;22671:178;:::o;22855:366::-;22997:3;23018:67;23082:2;23077:3;23018:67;:::i;:::-;23011:74;;23094:93;23183:3;23094:93;:::i;:::-;23212:2;23207:3;23203:12;23196:19;;22855:366;;;:::o;23227:419::-;23393:4;23431:2;23420:9;23416:18;23408:26;;23480:9;23474:4;23470:20;23466:1;23455:9;23451:17;23444:47;23508:131;23634:4;23508:131;:::i;:::-;23500:139;;23227:419;;;:::o;23652:179::-;23792:31;23788:1;23780:6;23776:14;23769:55;23652:179;:::o;23837:366::-;23979:3;24000:67;24064:2;24059:3;24000:67;:::i;:::-;23993:74;;24076:93;24165:3;24076:93;:::i;:::-;24194:2;24189:3;24185:12;24178:19;;23837:366;;;:::o;24209:419::-;24375:4;24413:2;24402:9;24398:18;24390:26;;24462:9;24456:4;24452:20;24448:1;24437:9;24433:17;24426:47;24490:131;24616:4;24490:131;:::i;:::-;24482:139;;24209:419;;;:::o;24634:175::-;24774:27;24770:1;24762:6;24758:14;24751:51;24634:175;:::o;24815:366::-;24957:3;24978:67;25042:2;25037:3;24978:67;:::i;:::-;24971:74;;25054:93;25143:3;25054:93;:::i;:::-;25172:2;25167:3;25163:12;25156:19;;24815:366;;;:::o;25187:419::-;25353:4;25391:2;25380:9;25376:18;25368:26;;25440:9;25434:4;25430:20;25426:1;25415:9;25411:17;25404:47;25468:131;25594:4;25468:131;:::i;:::-;25460:139;;25187:419;;;:::o;25612:169::-;25752:21;25748:1;25740:6;25736:14;25729:45;25612:169;:::o;25787:366::-;25929:3;25950:67;26014:2;26009:3;25950:67;:::i;:::-;25943:74;;26026:93;26115:3;26026:93;:::i;:::-;26144:2;26139:3;26135:12;26128:19;;25787:366;;;:::o;26159:419::-;26325:4;26363:2;26352:9;26348:18;26340:26;;26412:9;26406:4;26402:20;26398:1;26387:9;26383:17;26376:47;26440:131;26566:4;26440:131;:::i;:::-;26432:139;;26159:419;;;:::o;26584:182::-;26724:34;26720:1;26712:6;26708:14;26701:58;26584:182;:::o;26772:366::-;26914:3;26935:67;26999:2;26994:3;26935:67;:::i;:::-;26928:74;;27011:93;27100:3;27011:93;:::i;:::-;27129:2;27124:3;27120:12;27113:19;;26772:366;;;:::o;27144:419::-;27310:4;27348:2;27337:9;27333:18;27325:26;;27397:9;27391:4;27387:20;27383:1;27372:9;27368:17;27361:47;27425:131;27551:4;27425:131;:::i;:::-;27417:139;;27144:419;;;:::o;27569:178::-;27709:30;27705:1;27697:6;27693:14;27686:54;27569:178;:::o;27753:366::-;27895:3;27916:67;27980:2;27975:3;27916:67;:::i;:::-;27909:74;;27992:93;28081:3;27992:93;:::i;:::-;28110:2;28105:3;28101:12;28094:19;;27753:366;;;:::o;28125:419::-;28291:4;28329:2;28318:9;28314:18;28306:26;;28378:9;28372:4;28368:20;28364:1;28353:9;28349:17;28342:47;28406:131;28532:4;28406:131;:::i;:::-;28398:139;;28125:419;;;:::o;28550:225::-;28690:34;28686:1;28678:6;28674:14;28667:58;28759:8;28754:2;28746:6;28742:15;28735:33;28550:225;:::o;28781:366::-;28923:3;28944:67;29008:2;29003:3;28944:67;:::i;:::-;28937:74;;29020:93;29109:3;29020:93;:::i;:::-;29138:2;29133:3;29129:12;29122:19;;28781:366;;;:::o;29153:419::-;29319:4;29357:2;29346:9;29342:18;29334:26;;29406:9;29400:4;29396:20;29392:1;29381:9;29377:17;29370:47;29434:131;29560:4;29434:131;:::i;:::-;29426:139;;29153:419;;;:::o;29578:226::-;29718:34;29714:1;29706:6;29702:14;29695:58;29787:9;29782:2;29774:6;29770:15;29763:34;29578:226;:::o;29810:366::-;29952:3;29973:67;30037:2;30032:3;29973:67;:::i;:::-;29966:74;;30049:93;30138:3;30049:93;:::i;:::-;30167:2;30162:3;30158:12;30151:19;;29810:366;;;:::o;30182:419::-;30348:4;30386:2;30375:9;30371:18;30363:26;;30435:9;30429:4;30425:20;30421:1;30410:9;30406:17;30399:47;30463:131;30589:4;30463:131;:::i;:::-;30455:139;;30182:419;;;:::o;30607:220::-;30747:34;30743:1;30735:6;30731:14;30724:58;30816:3;30811:2;30803:6;30799:15;30792:28;30607:220;:::o;30833:366::-;30975:3;30996:67;31060:2;31055:3;30996:67;:::i;:::-;30989:74;;31072:93;31161:3;31072:93;:::i;:::-;31190:2;31185:3;31181:12;31174:19;;30833:366;;;:::o;31205:419::-;31371:4;31409:2;31398:9;31394:18;31386:26;;31458:9;31452:4;31448:20;31444:1;31433:9;31429:17;31422:47;31486:131;31612:4;31486:131;:::i;:::-;31478:139;;31205:419;;;:::o;31630:221::-;31770:34;31766:1;31758:6;31754:14;31747:58;31839:4;31834:2;31826:6;31822:15;31815:29;31630:221;:::o;31857:366::-;31999:3;32020:67;32084:2;32079:3;32020:67;:::i;:::-;32013:74;;32096:93;32185:3;32096:93;:::i;:::-;32214:2;32209:3;32205:12;32198:19;;31857:366;;;:::o;32229:419::-;32395:4;32433:2;32422:9;32418:18;32410:26;;32482:9;32476:4;32472:20;32468:1;32457:9;32453:17;32446:47;32510:131;32636:4;32510:131;:::i;:::-;32502:139;;32229:419;;;:::o

Swarm Source

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