ETH Price: $3,665.61 (+1.80%)

Token

AAG (AAG)
 

Overview

Max Total Supply

1,000,000,000 AAG

Holders

1,236 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (+8.43%)

Onchain Market Cap

$1,589,900.00

Circulating Supply Market Cap

$857,916.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 AAG

Value
$0.00
0xcb08101100ed323ec2c1d5e633ef8b9bb0a3fd63
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

AAG Ventures is a Play-To-Earn (P2E) project with 3 pillars: a P2E guild, a P2E platform and a Learn-To-Earn (L2E) platform.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AAGToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at Etherscan.io on 2021-12-04
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

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


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

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

interface ILosslessController {
  function beforeTransfer(
    address sender,
    address recipient,
    uint256 amount
  ) external;

  function beforeTransferFrom(
    address msgSender,
    address sender,
    address recipient,
    uint256 amount
  ) external;

  function beforeApprove(
    address sender,
    address spender,
    uint256 amount
  ) external;

  function beforeIncreaseAllowance(
    address msgSender,
    address spender,
    uint256 addedValue
  ) external;

  function beforeDecreaseAllowance(
    address msgSender,
    address spender,
    uint256 subtractedValue
  ) external;

  function afterApprove(
    address sender,
    address spender,
    uint256 amount
  ) external;

  function afterTransfer(
    address sender,
    address recipient,
    uint256 amount
  ) external;

  function afterTransferFrom(
    address msgSender,
    address sender,
    address recipient,
    uint256 amount
  ) external;

  function afterIncreaseAllowance(
    address sender,
    address spender,
    uint256 addedValue
  ) external;

  function afterDecreaseAllowance(
    address sender,
    address spender,
    uint256 subtractedValue
  ) external;
}

contract AAGToken is Context, IERC20 {
  mapping(address => uint256) private _balances;
  mapping(address => mapping(address => uint256)) private _allowances;

  uint256 private _totalSupply;
  string private constant NAME = "AAG";
  string private constant SYMBOL = "AAG";

  address public recoveryAdmin;
  address private recoveryAdminCanditate;
  bytes32 private recoveryAdminKeyHash;
  address public admin;
  uint256 public timelockPeriod;
  uint256 public losslessTurnOffTimestamp;
  bool public isLosslessTurnOffProposed;
  bool public isLosslessOn = true;
  ILosslessController private lossless;

  event AdminChanged(address indexed previousAdmin, address indexed newAdmin);
  event RecoveryAdminChangeProposed(address indexed candidate);
  event RecoveryAdminChanged(address indexed previousAdmin, address indexed newAdmin);
  event LosslessTurnOffProposed(uint256 turnOffDate);
  event LosslessTurnedOff();
  event LosslessTurnedOn();

  uint256 private constant _TOTAL_SUPPLY = 1000000000e18; // Initial supply 1 000 000 000
  bool private initialPoolClaimed = false;

  constructor(
    address admin_,
    address recoveryAdmin_,
    uint256 timelockPeriod_,
    address lossless_,
    bool losslessOn
  ) {
    _mint(address(this), _TOTAL_SUPPLY);
    admin = admin_;
    recoveryAdmin = recoveryAdmin_;
    timelockPeriod = timelockPeriod_;
    isLosslessOn = losslessOn;
    lossless = ILosslessController(lossless_);
  }

  // AAG unlocked tokens claiming

  function claimTokens() public onlyRecoveryAdmin {
    require(initialPoolClaimed == false, "Already claimed");
    initialPoolClaimed = true;
    _transfer(address(this), admin, _TOTAL_SUPPLY);
  }

  // --- LOSSLESS modifiers ---

  modifier lssAprove(address spender, uint256 amount) {
    if (isLosslessOn) {
      lossless.beforeApprove(_msgSender(), spender, amount);
      _;
      lossless.afterApprove(_msgSender(), spender, amount);
    } else {
      _;
    }
  }

  modifier lssTransfer(address recipient, uint256 amount) {
    if (isLosslessOn) {
      lossless.beforeTransfer(_msgSender(), recipient, amount);
      _;
      lossless.afterTransfer(_msgSender(), recipient, amount);
    } else {
      _;
    }
  }

  modifier lssTransferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) {
    if (isLosslessOn) {
      lossless.beforeTransferFrom(_msgSender(), sender, recipient, amount);
      _;
      lossless.afterTransferFrom(_msgSender(), sender, recipient, amount);
    } else {
      _;
    }
  }

  modifier lssIncreaseAllowance(address spender, uint256 addedValue) {
    if (isLosslessOn) {
      lossless.beforeIncreaseAllowance(_msgSender(), spender, addedValue);
      _;
      lossless.afterIncreaseAllowance(_msgSender(), spender, addedValue);
    } else {
      _;
    }
  }

  modifier lssDecreaseAllowance(address spender, uint256 subtractedValue) {
    if (isLosslessOn) {
      lossless.beforeDecreaseAllowance(_msgSender(), spender, subtractedValue);
      _;
      lossless.afterDecreaseAllowance(_msgSender(), spender, subtractedValue);
    } else {
      _;
    }
  }

  modifier onlyRecoveryAdmin() {
    require(_msgSender() == recoveryAdmin, "ERC20: Must be recovery admin");
    _;
  }

  // --- LOSSLESS management ---

  function getAdmin() external view returns (address) {
    return admin;
  }

  function transferOutBlacklistedFunds(address[] calldata from) external {
    require(_msgSender() == address(lossless), "ERC20: Only lossless contract");
    for (uint256 i = 0; i < from.length; i++) {
      _transfer(from[i], address(lossless), balanceOf(from[i]));
    }
  }

  function setLosslessAdmin(address newAdmin) public onlyRecoveryAdmin {
    emit AdminChanged(admin, newAdmin);
    admin = newAdmin;
  }

  function transferRecoveryAdminOwnership(address candidate, bytes32 keyHash) public onlyRecoveryAdmin {
    recoveryAdminCanditate = candidate;
    recoveryAdminKeyHash = keyHash;
    emit RecoveryAdminChangeProposed(candidate);
  }

  function acceptRecoveryAdminOwnership(bytes memory key) external {
    require(_msgSender() == recoveryAdminCanditate, "ERC20: Must be canditate");
    require(keccak256(key) == recoveryAdminKeyHash, "ERC20: Invalid key");
    emit RecoveryAdminChanged(recoveryAdmin, recoveryAdminCanditate);
    recoveryAdmin = recoveryAdminCanditate;
  }

  function proposeLosslessTurnOff() public onlyRecoveryAdmin {
    losslessTurnOffTimestamp = block.timestamp + timelockPeriod;
    isLosslessTurnOffProposed = true;
    emit LosslessTurnOffProposed(losslessTurnOffTimestamp);
  }

  function executeLosslessTurnOff() public onlyRecoveryAdmin {
    require(isLosslessTurnOffProposed, "ERC20: TurnOff not proposed");
    require(losslessTurnOffTimestamp <= block.timestamp, "ERC20: Time lock in progress");
    isLosslessOn = false;
    isLosslessTurnOffProposed = false;
    emit LosslessTurnedOff();
  }

  function executeLosslessTurnOn() public onlyRecoveryAdmin {
    isLosslessTurnOffProposed = false;
    isLosslessOn = true;
    emit LosslessTurnedOn();
  }

  // --- ERC20 methods ---

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

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

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

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

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

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

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

  function approve(address spender, uint256 amount) public virtual override lssAprove(spender, amount) returns (bool) {
    require((amount == 0) || (_allowances[_msgSender()][spender] == 0), "ERC20: Cannot change non zero allowance");
    _approve(_msgSender(), spender, amount);
    return true;
  }

  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) public virtual override lssTransferFrom(sender, recipient, amount) returns (bool) {
    _transfer(sender, recipient, amount);

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

    return true;
  }

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

  function decreaseAllowance(address spender, uint256 subtractedValue) public virtual lssDecreaseAllowance(spender, subtractedValue) returns (bool) {
    uint256 currentAllowance = _allowances[_msgSender()][spender];
    require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    _approve(_msgSender(), spender, currentAllowance - subtractedValue);

    return true;
  }

  function _transfer(
    address sender,
    address recipient,
    uint256 amount
  ) internal virtual {
    require(sender != address(0), "ERC20: transfer from the zero address");
    require(recipient != address(0), "ERC20: transfer to the zero address");

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

    emit Transfer(sender, recipient, amount);
  }

  function _mint(address account, uint256 amount) internal virtual {
    require(account != address(0), "ERC20: mint to the zero address");

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"recoveryAdmin_","type":"address"},{"internalType":"uint256","name":"timelockPeriod_","type":"uint256"},{"internalType":"address","name":"lossless_","type":"address"},{"internalType":"bool","name":"losslessOn","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"turnOffDate","type":"uint256"}],"name":"LosslessTurnOffProposed","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessTurnedOff","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessTurnedOn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"candidate","type":"address"}],"name":"RecoveryAdminChangeProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"RecoveryAdminChanged","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":[],"name":"claimTokens","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":"isLosslessTurnOffProposed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

60806040526001600960016101000a81548160ff0219169083151502179055506000600960166101000a81548160ff0219169083151502179055503480156200004757600080fd5b50604051620037f5380380620037f583398181016040528101906200006d919062000310565b6200008b306b033b2e3c9fd0803ce80000006200017a60201b60201c565b84600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260078190555080600960016101000a81548160ff02191690831515021790555081600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000572565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001e490620003d0565b60405180910390fd5b806002600082825462000201919062000420565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000258919062000420565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002bf9190620003f2565b60405180910390a35050565b600081519050620002dc8162000524565b92915050565b600081519050620002f3816200053e565b92915050565b6000815190506200030a8162000558565b92915050565b600080600080600060a086880312156200032f576200032e620004f6565b5b60006200033f88828901620002cb565b95505060206200035288828901620002cb565b94505060406200036588828901620002f9565b93505060606200037888828901620002cb565b92505060806200038b88828901620002e2565b9150509295509295909350565b6000620003a7601f836200040f565b9150620003b482620004fb565b602082019050919050565b620003ca81620004bd565b82525050565b60006020820190508181036000830152620003eb8162000398565b9050919050565b6000602082019050620004096000830184620003bf565b92915050565b600082825260208201905092915050565b60006200042d82620004bd565b91506200043a83620004bd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004725762000471620004c7565b5b828201905092915050565b60006200048a826200049d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6200052f816200047d565b81146200053b57600080fd5b50565b620005498162000491565b81146200055557600080fd5b50565b6200056381620004bd565b81146200056f57600080fd5b50565b61327380620005826000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063b38fe95711610097578063d6e242b811610071578063d6e242b81461044f578063dd62ed3e14610459578063efab831c14610489578063f851a440146104a75761018e565b8063b38fe9571461040b578063b5c2287714610415578063ccfa214f146104315761018e565b806370a082311461032557806393310ffe14610355578063936af9111461037157806395d89b411461038d578063a457c2d7146103ab578063a9059cbb146103db5761018e565b8063313ce5671161014b5780635b8a194a116101255780635b8a194a146102c15780635f6529a3146102cb57806361086b00146102e95780636e9960c3146103075761018e565b8063313ce56714610269578063395093511461028757806348c54b9d146102b75761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806323b872dd146101ff5780632baa3c9e1461022f5780632ecaf6751461024b575b600080fd5b61019b6104c5565b6040516101a89190612956565b60405180910390f35b6101cb60048036038101906101c6919061254c565b610502565b6040516101d8919061293b565b60405180910390f35b6101e9610827565b6040516101f69190612b58565b60405180910390f35b610219600480360381019061021491906124b9565b610831565b604051610226919061293b565b60405180910390f35b6102496004803603810190610244919061244c565b610b7f565b005b610253610cd6565b6040516102609190612b58565b60405180910390f35b610271610cdc565b60405161027e9190612b73565b60405180910390f35b6102a1600480360381019061029c919061254c565b610ce5565b6040516102ae919061293b565b60405180910390f35b6102bf610f84565b005b6102c96110c7565b005b6102d36111c2565b6040516102e091906128a4565b60405180910390f35b6102f16111e8565b6040516102fe9190612b58565b60405180910390f35b61030f6111ee565b60405161031c91906128a4565b60405180910390f35b61033f600480360381019061033a919061244c565b611218565b60405161034c9190612b58565b60405180910390f35b61036f600480360381019061036a919061250c565b611260565b005b61038b6004803603810190610386919061258c565b611386565b005b6103956114c6565b6040516103a29190612956565b60405180910390f35b6103c560048036038101906103c0919061254c565b611503565b6040516103d2919061293b565b60405180910390f35b6103f560048036038101906103f0919061254c565b611834565b604051610402919061293b565b60405180910390f35b6104136119b7565b005b61042f600480360381019061042a91906125d9565b611b46565b005b610439611d2c565b604051610446919061293b565b60405180910390f35b610457611d3f565b005b610473600480360381019061046e9190612479565b611e40565b6040516104809190612b58565b60405180910390f35b610491611ec7565b60405161049e919061293b565b60405180910390f35b6104af611eda565b6040516104bc91906128a4565b60405180910390f35b60606040518060400160405280600381526020017f4141470000000000000000000000000000000000000000000000000000000000815250905090565b60008282600960019054906101000a900460ff161561073757600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347abf3be610561611f00565b84846040518463ffffffff1660e01b815260040161058193929190612904565b600060405180830381600087803b15801561059b57600080fd5b505af11580156105af573d6000803e3d6000fd5b50505050600084148061064557506000600160006105cb611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067b90612a18565b60405180910390fd5b61069661068f611f00565b8686611f08565b60019250600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663900f66ef6106e0611f00565b84846040518463ffffffff1660e01b815260040161070093929190612904565b600060405180830381600087803b15801561071a57600080fd5b505af115801561072e573d6000803e3d6000fd5b5050505061081f565b60008414806107c9575060006001600061074f611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ff90612a18565b60405180910390fd5b61081a610813611f00565b8686611f08565b600192505b505092915050565b6000600254905090565b6000838383600960019054906101000a900460ff1615610a7c57600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663379f5c69610891611f00565b8585856040518563ffffffff1660e01b81526004016108b394939291906128bf565b600060405180830381600087803b1580156108cd57600080fd5b505af11580156108e1573d6000803e3d6000fd5b505050506108f08787876120d3565b6000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061093b611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b290612a58565b60405180910390fd5b6109d8886109c7611f00565b88846109d39190612c56565b611f08565b6001945050600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a56e8adf610a23611f00565b8585856040518563ffffffff1660e01b8152600401610a4594939291906128bf565b600060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b50505050610b75565b610a878787876120d3565b6000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad2611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4990612a58565b60405180910390fd5b610b6f88610b5e611f00565b8884610b6a9190612c56565b611f08565b60019450505b5050509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc0611f00565b73ffffffffffffffffffffffffffffffffffffffff1614610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90612ad8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b60006012905090565b60008282600960019054906101000a900460ff1615610ed757600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf5961bb610d44611f00565b84846040518463ffffffff1660e01b8152600401610d6493929190612904565b600060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b50505050610e36610da1611f00565b868660016000610daf611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e319190612c00565b611f08565b60019250600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334d01aa8610e80611f00565b84846040518463ffffffff1660e01b8152600401610ea093929190612904565b600060405180830381600087803b158015610eba57600080fd5b505af1158015610ece573d6000803e3d6000fd5b50505050610f7c565b610f77610ee2611f00565b868660016000610ef0611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f729190612c00565b611f08565b600192505b505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc5611f00565b73ffffffffffffffffffffffffffffffffffffffff161461101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101290612ad8565b60405180910390fd5b60001515600960169054906101000a900460ff16151514611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890612a38565b60405180910390fd5b6001600960166101000a81548160ff0219169083151502179055506110c530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce80000006120d3565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611108611f00565b73ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115590612ad8565b60405180910390fd5b6000600960006101000a81548160ff0219169083151502179055506001600960016101000a81548160ff0219169083151502179055507fa4a40bdd0a809720a61b44f1b3497ce7dad87741a0ba3b961c2e65e645060e7060405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a1611f00565b73ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90612ad8565b60405180910390fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806005819055508173ffffffffffffffffffffffffffffffffffffffff167fc5666bfdfb79a4b0b4abdbc565d6e9937a263233b2b378c55132d34dc5784a3660405160405180910390a25050565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113c7611f00565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141490612978565b60405180910390fd5b60005b828290508110156114c1576114ae83838381811061144157611440612dd4565b5b9050602002016020810190611456919061244c565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114a986868681811061148f5761148e612dd4565b5b90506020020160208101906114a4919061244c565b611218565b6120d3565b80806114b990612d5c565b915050611420565b505050565b60606040518060400160405280600381526020017f4141470000000000000000000000000000000000000000000000000000000000815250905090565b60008282600960019054906101000a900460ff161561173e57600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568c75a9611562611f00565b84846040518463ffffffff1660e01b815260040161158293929190612904565b600060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506000600160006115c2611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508481101561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612b38565b60405180910390fd5b61169c61168a611f00565b8787846116979190612c56565b611f08565b6001935050600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ded1f4d06116e7611f00565b84846040518463ffffffff1660e01b815260040161170793929190612904565b600060405180830381600087803b15801561172157600080fd5b505af1158015611735573d6000803e3d6000fd5b5050505061182c565b60006001600061174c611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612b38565b60405180910390fd5b611826611814611f00565b8787846118219190612c56565b611f08565b60019350505b505092915050565b60008282600960019054906101000a900460ff161561199857600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ffb811f611893611f00565b84846040518463ffffffff1660e01b81526004016118b393929190612904565b600060405180830381600087803b1580156118cd57600080fd5b505af11580156118e1573d6000803e3d6000fd5b505050506118f76118f0611f00565b86866120d3565b60019250600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f49062ca611941611f00565b84846040518463ffffffff1660e01b815260040161196193929190612904565b600060405180830381600087803b15801561197b57600080fd5b505af115801561198f573d6000803e3d6000fd5b505050506119af565b6119aa6119a3611f00565b86866120d3565b600192505b505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f8611f00565b73ffffffffffffffffffffffffffffffffffffffff1614611a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4590612ad8565b60405180910390fd5b600960009054906101000a900460ff16611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490612b18565b60405180910390fd5b426008541115611ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad9906129d8565b60405180910390fd5b6000600960016101000a81548160ff0219169083151502179055506000600960006101000a81548160ff0219169083151502179055507f5b534e2716e5ad68b9f67521378f8199a7ceb9d3f6f354275dad33fe42cf710a60405160405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b87611f00565b73ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490612af8565b60405180910390fd5b600554818051906020012014611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f90612a78565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1c7f382531621f02aefb4212478bba8871ffad078202bdbba87f3e21d639aebb60405160405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960019054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d80611f00565b73ffffffffffffffffffffffffffffffffffffffff1614611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd90612ad8565b60405180910390fd5b60075442611de49190612c00565b6008819055506001600960006101000a81548160ff0219169083151502179055507f88e0be0448355c71674462d3cb36342f0d085f7b43a1deab03052c95eb158709600854604051611e369190612b58565b60405180910390a1565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960009054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f90612ab8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf906129b8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120c69190612b58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90612a98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90612998565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612239576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612230906129f8565b60405180910390fd5b81816122459190612c56565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122d59190612c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123399190612b58565b60405180910390a350505050565b600061235a61235584612bb3565b612b8e565b90508281526020810184848401111561237657612375612e41565b5b612381848285612ce9565b509392505050565b600081359050612398816131f8565b92915050565b60008083601f8401126123b4576123b3612e37565b5b8235905067ffffffffffffffff8111156123d1576123d0612e32565b5b6020830191508360208202830111156123ed576123ec612e3c565b5b9250929050565b6000813590506124038161320f565b92915050565b600082601f83011261241e5761241d612e37565b5b813561242e848260208601612347565b91505092915050565b60008135905061244681613226565b92915050565b60006020828403121561246257612461612e4b565b5b600061247084828501612389565b91505092915050565b600080604083850312156124905761248f612e4b565b5b600061249e85828601612389565b92505060206124af85828601612389565b9150509250929050565b6000806000606084860312156124d2576124d1612e4b565b5b60006124e086828701612389565b93505060206124f186828701612389565b925050604061250286828701612437565b9150509250925092565b6000806040838503121561252357612522612e4b565b5b600061253185828601612389565b9250506020612542858286016123f4565b9150509250929050565b6000806040838503121561256357612562612e4b565b5b600061257185828601612389565b925050602061258285828601612437565b9150509250929050565b600080602083850312156125a3576125a2612e4b565b5b600083013567ffffffffffffffff8111156125c1576125c0612e46565b5b6125cd8582860161239e565b92509250509250929050565b6000602082840312156125ef576125ee612e4b565b5b600082013567ffffffffffffffff81111561260d5761260c612e46565b5b61261984828501612409565b91505092915050565b61262b81612c8a565b82525050565b61263a81612c9c565b82525050565b600061264b82612be4565b6126558185612bef565b9350612665818560208601612cf8565b61266e81612e50565b840191505092915050565b6000612686601d83612bef565b915061269182612e61565b602082019050919050565b60006126a9602383612bef565b91506126b482612e8a565b604082019050919050565b60006126cc602283612bef565b91506126d782612ed9565b604082019050919050565b60006126ef601c83612bef565b91506126fa82612f28565b602082019050919050565b6000612712602683612bef565b915061271d82612f51565b604082019050919050565b6000612735602783612bef565b915061274082612fa0565b604082019050919050565b6000612758600f83612bef565b915061276382612fef565b602082019050919050565b600061277b602883612bef565b915061278682613018565b604082019050919050565b600061279e601283612bef565b91506127a982613067565b602082019050919050565b60006127c1602583612bef565b91506127cc82613090565b604082019050919050565b60006127e4602483612bef565b91506127ef826130df565b604082019050919050565b6000612807601d83612bef565b91506128128261312e565b602082019050919050565b600061282a601883612bef565b915061283582613157565b602082019050919050565b600061284d601b83612bef565b915061285882613180565b602082019050919050565b6000612870602583612bef565b915061287b826131a9565b604082019050919050565b61288f81612cd2565b82525050565b61289e81612cdc565b82525050565b60006020820190506128b96000830184612622565b92915050565b60006080820190506128d46000830187612622565b6128e16020830186612622565b6128ee6040830185612622565b6128fb6060830184612886565b95945050505050565b60006060820190506129196000830186612622565b6129266020830185612622565b6129336040830184612886565b949350505050565b60006020820190506129506000830184612631565b92915050565b600060208201905081810360008301526129708184612640565b905092915050565b6000602082019050818103600083015261299181612679565b9050919050565b600060208201905081810360008301526129b18161269c565b9050919050565b600060208201905081810360008301526129d1816126bf565b9050919050565b600060208201905081810360008301526129f1816126e2565b9050919050565b60006020820190508181036000830152612a1181612705565b9050919050565b60006020820190508181036000830152612a3181612728565b9050919050565b60006020820190508181036000830152612a518161274b565b9050919050565b60006020820190508181036000830152612a718161276e565b9050919050565b60006020820190508181036000830152612a9181612791565b9050919050565b60006020820190508181036000830152612ab1816127b4565b9050919050565b60006020820190508181036000830152612ad1816127d7565b9050919050565b60006020820190508181036000830152612af1816127fa565b9050919050565b60006020820190508181036000830152612b118161281d565b9050919050565b60006020820190508181036000830152612b3181612840565b9050919050565b60006020820190508181036000830152612b5181612863565b9050919050565b6000602082019050612b6d6000830184612886565b92915050565b6000602082019050612b886000830184612895565b92915050565b6000612b98612ba9565b9050612ba48282612d2b565b919050565b6000604051905090565b600067ffffffffffffffff821115612bce57612bcd612e03565b5b612bd782612e50565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000612c0b82612cd2565b9150612c1683612cd2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c4b57612c4a612da5565b5b828201905092915050565b6000612c6182612cd2565b9150612c6c83612cd2565b925082821015612c7f57612c7e612da5565b5b828203905092915050565b6000612c9582612cb2565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612d16578082015181840152602081019050612cfb565b83811115612d25576000848401525b50505050565b612d3482612e50565b810181811067ffffffffffffffff82111715612d5357612d52612e03565b5b80604052505050565b6000612d6782612cd2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d9a57612d99612da5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a204f6e6c79206c6f73736c65737320636f6e7472616374000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2054696d65206c6f636b20696e2070726f677265737300000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2043616e6e6f74206368616e6765206e6f6e207a65726f20616c60008201527f6c6f77616e636500000000000000000000000000000000000000000000000000602082015250565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20496e76616c6964206b65790000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a204d757374206265207265636f766572792061646d696e000000600082015250565b7f45524332303a204d7573742062652063616e6469746174650000000000000000600082015250565b7f45524332303a205475726e4f6666206e6f742070726f706f7365640000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61320181612c8a565b811461320c57600080fd5b50565b61321881612ca8565b811461322357600080fd5b50565b61322f81612cd2565b811461323a57600080fd5b5056fea2646970667358221220a9aecefac499d12e94a2baa1a76b8434a502316da619fb32f2e481a0bc5cfb4164736f6c63430008070033000000000000000000000000f536ab9e042d414c8e54bff40147f34f0926e2440000000000000000000000009accdb69d8757dd9ceb7f69e985cbca879c0ddf60000000000000000000000000000000000000000000000000000000000015180000000000000000000000000e91d7cebce484070fc70777cb04f7e2efae31db40000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063b38fe95711610097578063d6e242b811610071578063d6e242b81461044f578063dd62ed3e14610459578063efab831c14610489578063f851a440146104a75761018e565b8063b38fe9571461040b578063b5c2287714610415578063ccfa214f146104315761018e565b806370a082311461032557806393310ffe14610355578063936af9111461037157806395d89b411461038d578063a457c2d7146103ab578063a9059cbb146103db5761018e565b8063313ce5671161014b5780635b8a194a116101255780635b8a194a146102c15780635f6529a3146102cb57806361086b00146102e95780636e9960c3146103075761018e565b8063313ce56714610269578063395093511461028757806348c54b9d146102b75761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806323b872dd146101ff5780632baa3c9e1461022f5780632ecaf6751461024b575b600080fd5b61019b6104c5565b6040516101a89190612956565b60405180910390f35b6101cb60048036038101906101c6919061254c565b610502565b6040516101d8919061293b565b60405180910390f35b6101e9610827565b6040516101f69190612b58565b60405180910390f35b610219600480360381019061021491906124b9565b610831565b604051610226919061293b565b60405180910390f35b6102496004803603810190610244919061244c565b610b7f565b005b610253610cd6565b6040516102609190612b58565b60405180910390f35b610271610cdc565b60405161027e9190612b73565b60405180910390f35b6102a1600480360381019061029c919061254c565b610ce5565b6040516102ae919061293b565b60405180910390f35b6102bf610f84565b005b6102c96110c7565b005b6102d36111c2565b6040516102e091906128a4565b60405180910390f35b6102f16111e8565b6040516102fe9190612b58565b60405180910390f35b61030f6111ee565b60405161031c91906128a4565b60405180910390f35b61033f600480360381019061033a919061244c565b611218565b60405161034c9190612b58565b60405180910390f35b61036f600480360381019061036a919061250c565b611260565b005b61038b6004803603810190610386919061258c565b611386565b005b6103956114c6565b6040516103a29190612956565b60405180910390f35b6103c560048036038101906103c0919061254c565b611503565b6040516103d2919061293b565b60405180910390f35b6103f560048036038101906103f0919061254c565b611834565b604051610402919061293b565b60405180910390f35b6104136119b7565b005b61042f600480360381019061042a91906125d9565b611b46565b005b610439611d2c565b604051610446919061293b565b60405180910390f35b610457611d3f565b005b610473600480360381019061046e9190612479565b611e40565b6040516104809190612b58565b60405180910390f35b610491611ec7565b60405161049e919061293b565b60405180910390f35b6104af611eda565b6040516104bc91906128a4565b60405180910390f35b60606040518060400160405280600381526020017f4141470000000000000000000000000000000000000000000000000000000000815250905090565b60008282600960019054906101000a900460ff161561073757600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347abf3be610561611f00565b84846040518463ffffffff1660e01b815260040161058193929190612904565b600060405180830381600087803b15801561059b57600080fd5b505af11580156105af573d6000803e3d6000fd5b50505050600084148061064557506000600160006105cb611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067b90612a18565b60405180910390fd5b61069661068f611f00565b8686611f08565b60019250600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663900f66ef6106e0611f00565b84846040518463ffffffff1660e01b815260040161070093929190612904565b600060405180830381600087803b15801561071a57600080fd5b505af115801561072e573d6000803e3d6000fd5b5050505061081f565b60008414806107c9575060006001600061074f611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b610808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ff90612a18565b60405180910390fd5b61081a610813611f00565b8686611f08565b600192505b505092915050565b6000600254905090565b6000838383600960019054906101000a900460ff1615610a7c57600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663379f5c69610891611f00565b8585856040518563ffffffff1660e01b81526004016108b394939291906128bf565b600060405180830381600087803b1580156108cd57600080fd5b505af11580156108e1573d6000803e3d6000fd5b505050506108f08787876120d3565b6000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061093b611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b290612a58565b60405180910390fd5b6109d8886109c7611f00565b88846109d39190612c56565b611f08565b6001945050600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a56e8adf610a23611f00565b8585856040518563ffffffff1660e01b8152600401610a4594939291906128bf565b600060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b50505050610b75565b610a878787876120d3565b6000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad2611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4990612a58565b60405180910390fd5b610b6f88610b5e611f00565b8884610b6a9190612c56565b611f08565b60019450505b5050509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc0611f00565b73ffffffffffffffffffffffffffffffffffffffff1614610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90612ad8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b60006012905090565b60008282600960019054906101000a900460ff1615610ed757600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf5961bb610d44611f00565b84846040518463ffffffff1660e01b8152600401610d6493929190612904565b600060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b50505050610e36610da1611f00565b868660016000610daf611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e319190612c00565b611f08565b60019250600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334d01aa8610e80611f00565b84846040518463ffffffff1660e01b8152600401610ea093929190612904565b600060405180830381600087803b158015610eba57600080fd5b505af1158015610ece573d6000803e3d6000fd5b50505050610f7c565b610f77610ee2611f00565b868660016000610ef0611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f729190612c00565b611f08565b600192505b505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc5611f00565b73ffffffffffffffffffffffffffffffffffffffff161461101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101290612ad8565b60405180910390fd5b60001515600960169054906101000a900460ff16151514611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890612a38565b60405180910390fd5b6001600960166101000a81548160ff0219169083151502179055506110c530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce80000006120d3565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611108611f00565b73ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115590612ad8565b60405180910390fd5b6000600960006101000a81548160ff0219169083151502179055506001600960016101000a81548160ff0219169083151502179055507fa4a40bdd0a809720a61b44f1b3497ce7dad87741a0ba3b961c2e65e645060e7060405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a1611f00565b73ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90612ad8565b60405180910390fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806005819055508173ffffffffffffffffffffffffffffffffffffffff167fc5666bfdfb79a4b0b4abdbc565d6e9937a263233b2b378c55132d34dc5784a3660405160405180910390a25050565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113c7611f00565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141490612978565b60405180910390fd5b60005b828290508110156114c1576114ae83838381811061144157611440612dd4565b5b9050602002016020810190611456919061244c565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114a986868681811061148f5761148e612dd4565b5b90506020020160208101906114a4919061244c565b611218565b6120d3565b80806114b990612d5c565b915050611420565b505050565b60606040518060400160405280600381526020017f4141470000000000000000000000000000000000000000000000000000000000815250905090565b60008282600960019054906101000a900460ff161561173e57600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568c75a9611562611f00565b84846040518463ffffffff1660e01b815260040161158293929190612904565b600060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506000600160006115c2611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508481101561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612b38565b60405180910390fd5b61169c61168a611f00565b8787846116979190612c56565b611f08565b6001935050600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ded1f4d06116e7611f00565b84846040518463ffffffff1660e01b815260040161170793929190612904565b600060405180830381600087803b15801561172157600080fd5b505af1158015611735573d6000803e3d6000fd5b5050505061182c565b60006001600061174c611f00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612b38565b60405180910390fd5b611826611814611f00565b8787846118219190612c56565b611f08565b60019350505b505092915050565b60008282600960019054906101000a900460ff161561199857600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ffb811f611893611f00565b84846040518463ffffffff1660e01b81526004016118b393929190612904565b600060405180830381600087803b1580156118cd57600080fd5b505af11580156118e1573d6000803e3d6000fd5b505050506118f76118f0611f00565b86866120d3565b60019250600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f49062ca611941611f00565b84846040518463ffffffff1660e01b815260040161196193929190612904565b600060405180830381600087803b15801561197b57600080fd5b505af115801561198f573d6000803e3d6000fd5b505050506119af565b6119aa6119a3611f00565b86866120d3565b600192505b505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f8611f00565b73ffffffffffffffffffffffffffffffffffffffff1614611a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4590612ad8565b60405180910390fd5b600960009054906101000a900460ff16611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490612b18565b60405180910390fd5b426008541115611ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad9906129d8565b60405180910390fd5b6000600960016101000a81548160ff0219169083151502179055506000600960006101000a81548160ff0219169083151502179055507f5b534e2716e5ad68b9f67521378f8199a7ceb9d3f6f354275dad33fe42cf710a60405160405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b87611f00565b73ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490612af8565b60405180910390fd5b600554818051906020012014611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f90612a78565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1c7f382531621f02aefb4212478bba8871ffad078202bdbba87f3e21d639aebb60405160405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960019054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d80611f00565b73ffffffffffffffffffffffffffffffffffffffff1614611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd90612ad8565b60405180910390fd5b60075442611de49190612c00565b6008819055506001600960006101000a81548160ff0219169083151502179055507f88e0be0448355c71674462d3cb36342f0d085f7b43a1deab03052c95eb158709600854604051611e369190612b58565b60405180910390a1565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960009054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f90612ab8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf906129b8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120c69190612b58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90612a98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90612998565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612239576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612230906129f8565b60405180910390fd5b81816122459190612c56565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122d59190612c00565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123399190612b58565b60405180910390a350505050565b600061235a61235584612bb3565b612b8e565b90508281526020810184848401111561237657612375612e41565b5b612381848285612ce9565b509392505050565b600081359050612398816131f8565b92915050565b60008083601f8401126123b4576123b3612e37565b5b8235905067ffffffffffffffff8111156123d1576123d0612e32565b5b6020830191508360208202830111156123ed576123ec612e3c565b5b9250929050565b6000813590506124038161320f565b92915050565b600082601f83011261241e5761241d612e37565b5b813561242e848260208601612347565b91505092915050565b60008135905061244681613226565b92915050565b60006020828403121561246257612461612e4b565b5b600061247084828501612389565b91505092915050565b600080604083850312156124905761248f612e4b565b5b600061249e85828601612389565b92505060206124af85828601612389565b9150509250929050565b6000806000606084860312156124d2576124d1612e4b565b5b60006124e086828701612389565b93505060206124f186828701612389565b925050604061250286828701612437565b9150509250925092565b6000806040838503121561252357612522612e4b565b5b600061253185828601612389565b9250506020612542858286016123f4565b9150509250929050565b6000806040838503121561256357612562612e4b565b5b600061257185828601612389565b925050602061258285828601612437565b9150509250929050565b600080602083850312156125a3576125a2612e4b565b5b600083013567ffffffffffffffff8111156125c1576125c0612e46565b5b6125cd8582860161239e565b92509250509250929050565b6000602082840312156125ef576125ee612e4b565b5b600082013567ffffffffffffffff81111561260d5761260c612e46565b5b61261984828501612409565b91505092915050565b61262b81612c8a565b82525050565b61263a81612c9c565b82525050565b600061264b82612be4565b6126558185612bef565b9350612665818560208601612cf8565b61266e81612e50565b840191505092915050565b6000612686601d83612bef565b915061269182612e61565b602082019050919050565b60006126a9602383612bef565b91506126b482612e8a565b604082019050919050565b60006126cc602283612bef565b91506126d782612ed9565b604082019050919050565b60006126ef601c83612bef565b91506126fa82612f28565b602082019050919050565b6000612712602683612bef565b915061271d82612f51565b604082019050919050565b6000612735602783612bef565b915061274082612fa0565b604082019050919050565b6000612758600f83612bef565b915061276382612fef565b602082019050919050565b600061277b602883612bef565b915061278682613018565b604082019050919050565b600061279e601283612bef565b91506127a982613067565b602082019050919050565b60006127c1602583612bef565b91506127cc82613090565b604082019050919050565b60006127e4602483612bef565b91506127ef826130df565b604082019050919050565b6000612807601d83612bef565b91506128128261312e565b602082019050919050565b600061282a601883612bef565b915061283582613157565b602082019050919050565b600061284d601b83612bef565b915061285882613180565b602082019050919050565b6000612870602583612bef565b915061287b826131a9565b604082019050919050565b61288f81612cd2565b82525050565b61289e81612cdc565b82525050565b60006020820190506128b96000830184612622565b92915050565b60006080820190506128d46000830187612622565b6128e16020830186612622565b6128ee6040830185612622565b6128fb6060830184612886565b95945050505050565b60006060820190506129196000830186612622565b6129266020830185612622565b6129336040830184612886565b949350505050565b60006020820190506129506000830184612631565b92915050565b600060208201905081810360008301526129708184612640565b905092915050565b6000602082019050818103600083015261299181612679565b9050919050565b600060208201905081810360008301526129b18161269c565b9050919050565b600060208201905081810360008301526129d1816126bf565b9050919050565b600060208201905081810360008301526129f1816126e2565b9050919050565b60006020820190508181036000830152612a1181612705565b9050919050565b60006020820190508181036000830152612a3181612728565b9050919050565b60006020820190508181036000830152612a518161274b565b9050919050565b60006020820190508181036000830152612a718161276e565b9050919050565b60006020820190508181036000830152612a9181612791565b9050919050565b60006020820190508181036000830152612ab1816127b4565b9050919050565b60006020820190508181036000830152612ad1816127d7565b9050919050565b60006020820190508181036000830152612af1816127fa565b9050919050565b60006020820190508181036000830152612b118161281d565b9050919050565b60006020820190508181036000830152612b3181612840565b9050919050565b60006020820190508181036000830152612b5181612863565b9050919050565b6000602082019050612b6d6000830184612886565b92915050565b6000602082019050612b886000830184612895565b92915050565b6000612b98612ba9565b9050612ba48282612d2b565b919050565b6000604051905090565b600067ffffffffffffffff821115612bce57612bcd612e03565b5b612bd782612e50565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000612c0b82612cd2565b9150612c1683612cd2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612c4b57612c4a612da5565b5b828201905092915050565b6000612c6182612cd2565b9150612c6c83612cd2565b925082821015612c7f57612c7e612da5565b5b828203905092915050565b6000612c9582612cb2565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612d16578082015181840152602081019050612cfb565b83811115612d25576000848401525b50505050565b612d3482612e50565b810181811067ffffffffffffffff82111715612d5357612d52612e03565b5b80604052505050565b6000612d6782612cd2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d9a57612d99612da5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a204f6e6c79206c6f73736c65737320636f6e7472616374000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2054696d65206c6f636b20696e2070726f677265737300000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2043616e6e6f74206368616e6765206e6f6e207a65726f20616c60008201527f6c6f77616e636500000000000000000000000000000000000000000000000000602082015250565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20496e76616c6964206b65790000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a204d757374206265207265636f766572792061646d696e000000600082015250565b7f45524332303a204d7573742062652063616e6469746174650000000000000000600082015250565b7f45524332303a205475726e4f6666206e6f742070726f706f7365640000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61320181612c8a565b811461320c57600080fd5b50565b61321881612ca8565b811461322357600080fd5b50565b61322f81612cd2565b811461323a57600080fd5b5056fea2646970667358221220a9aecefac499d12e94a2baa1a76b8434a502316da619fb32f2e481a0bc5cfb4164736f6c63430008070033

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

000000000000000000000000f536ab9e042d414c8e54bff40147f34f0926e2440000000000000000000000009accdb69d8757dd9ceb7f69e985cbca879c0ddf60000000000000000000000000000000000000000000000000000000000015180000000000000000000000000e91d7cebce484070fc70777cb04f7e2efae31db40000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : admin_ (address): 0xf536AB9e042d414C8E54Bff40147f34f0926E244
Arg [1] : recoveryAdmin_ (address): 0x9acCDB69D8757Dd9ceb7f69E985Cbca879c0dDF6
Arg [2] : timelockPeriod_ (uint256): 86400
Arg [3] : lossless_ (address): 0xe91D7cEBcE484070fc70777cB04F7e2EfAe31DB4
Arg [4] : losslessOn (bool): True

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000f536ab9e042d414c8e54bff40147f34f0926e244
Arg [1] : 0000000000000000000000009accdb69d8757dd9ceb7f69e985cbca879c0ddf6
Arg [2] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [3] : 000000000000000000000000e91d7cebce484070fc70777cb04f7e2efae31db4
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

4647:8704:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9897:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10753:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10165:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11062:463;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8395:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5074:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10081:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11531:247;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6170:201;;;:::i;:::-;;9701:160;;;:::i;:::-;;4932:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5108:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8025:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10273:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8540:235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8108:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9987:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11784:406;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10400:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9369:326;;;:::i;:::-;;8781:345;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5194:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9132:231;;;:::i;:::-;;10602:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5152:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5049:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9897:84;9942:13;9971:4;;;;;;;;;;;;;;;;;9964:11;;9897:84;:::o;10753:303::-;10863:4;10837:7;10846:6;6475:12;;;;;;;;;;;6471:183;;;6498:8;;;;;;;;;;;:22;;;6521:12;:10;:12::i;:::-;6535:7;6544:6;6498:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10895:1:::1;10885:6;:11;10884:58;;;;10940:1;10902:11;:25;10914:12;:10;:12::i;:::-;10902:25;;;;;;;;;;;;;;;:34;10928:7;10902:34;;;;;;;;;;;;;;;;:39;10884:58;10876:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10993:39;11002:12;:10;:12::i;:::-;11016:7;11025:6;10993:8;:39::i;:::-;11046:4;11039:11;;6570:8:::0;;;;;;;;;;;:21;;;6592:12;:10;:12::i;:::-;6606:7;6615:6;6570:52;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:183;;;10895:1:::1;10885:6;:11;10884:58;;;;10940:1;10902:11;:25;10914:12;:10;:12::i;:::-;10902:25;;;;;;;;;;;;;;;:34;10928:7;10902:34;;;;;;;;;;;;;;;;:39;10884:58;10876:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10993:39;11002:12;:10;:12::i;:::-;11016:7;11025:6;10993:8;:39::i;:::-;11046:4;11039:11;;6471:183:::0;10753:303;;;;;;:::o;10165:102::-;10226:7;10249:12;;10242:19;;10165:102;:::o;11062:463::-;11231:4;11195:6;11203:9;11214:6;7035:12;;;;;;;;;;;7031:213;;;7058:8;;;;;;;;;;;:27;;;7086:12;:10;:12::i;:::-;7100:6;7108:9;7119:6;7058:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11244:36:::1;11254:6;11262:9;11273:6;11244:9;:36::i;:::-;11289:24;11316:11;:19;11328:6;11316:19;;;;;;;;;;;;;;;:33;11336:12;:10;:12::i;:::-;11316:33;;;;;;;;;;;;;;;;11289:60;;11384:6;11364:16;:26;;11356:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11442:57;11451:6;11459:12;:10;:12::i;:::-;11492:6;11473:16;:25;;;;:::i;:::-;11442:8;:57::i;:::-;11515:4;11508:11;;;7145:8:::0;;;;;;;;;;;:26;;;7172:12;:10;:12::i;:::-;7186:6;7194:9;7205:6;7145:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7031:213;;;11244:36:::1;11254:6;11262:9;11273:6;11244:9;:36::i;:::-;11289:24;11316:11;:19;11328:6;11316:19;;;;;;;;;;;;;;;:33;11336:12;:10;:12::i;:::-;11316:33;;;;;;;;;;;;;;;;11289:60;;11384:6;11364:16;:26;;11356:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11442:57;11451:6;11459:12;:10;:12::i;:::-;11492:6;11473:16;:25;;;;:::i;:::-;11442:8;:57::i;:::-;11515:4;11508:11;;;7031:213:::0;11062:463;;;;;;;;:::o;8395:139::-;7922:13;;;;;;;;;;;7906:29;;:12;:10;:12::i;:::-;:29;;;7898:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8496:8:::1;8476:29;;8489:5;;;;;;;;;;;8476:29;;;;;;;;;;;;8520:8;8512:5;;:16;;;;;;;;;;;;;;;;;;8395:139:::0;:::o;5074:29::-;;;;:::o;10081:78::-;10130:5;10151:2;10144:9;;10081:78;:::o;11531:247::-;11661:4;11631:7;11640:10;7333:12;;;;;;;;;;;7329:211;;;7356:8;;;;;;;;;;;:32;;;7389:12;:10;:12::i;:::-;7403:7;7412:10;7356:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11674:80:::1;11683:12;:10;:12::i;:::-;11697:7;11743:10;11706:11;:25;11718:12;:10;:12::i;:::-;11706:25;;;;;;;;;;;;;;;:34;11732:7;11706:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11674:8;:80::i;:::-;11768:4;11761:11;;7442:8:::0;;;;;;;;;;;:31;;;7474:12;:10;:12::i;:::-;7488:7;7497:10;7442:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7329:211;;;11674:80:::1;11683:12;:10;:12::i;:::-;11697:7;11743:10;11706:11;:25;11718:12;:10;:12::i;:::-;11706:25;;;;;;;;;;;;;;;:34;11732:7;11706:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11674:8;:80::i;:::-;11768:4;11761:11;;7329:211:::0;11531:247;;;;;;:::o;6170:201::-;7922:13;;;;;;;;;;;7906:29;;:12;:10;:12::i;:::-;:29;;;7898:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6255:5:::1;6233:27;;:18;;;;;;;;;;;:27;;;6225:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6308:4;6287:18;;:25;;;;;;;;;;;;;;;;;;6319:46;6337:4;6344:5;;;;;;;;;;;5663:13;6319:9;:46::i;:::-;6170:201::o:0;9701:160::-;7922:13;;;;;;;;;;;7906:29;;:12;:10;:12::i;:::-;:29;;;7898:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9794:5:::1;9766:25;;:33;;;;;;;;;;;;;;;;;;9821:4;9806:12;;:19;;;;;;;;;;;;;;;;;;9837:18;;;;;;;;;;9701:160::o:0;4932:28::-;;;;;;;;;;;;;:::o;5108:39::-;;;;:::o;8025:77::-;8068:7;8091:5;;;;;;;;;;;8084:12;;8025:77;:::o;10273:121::-;10347:7;10370:9;:18;10380:7;10370:18;;;;;;;;;;;;;;;;10363:25;;10273:121;;;:::o;8540:235::-;7922:13;;;;;;;;;;;7906:29;;:12;:10;:12::i;:::-;:29;;;7898:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8673:9:::1;8648:22;;:34;;;;;;;;;;;;;;;;;;8712:7;8689:20;:30;;;;8759:9;8731:38;;;;;;;;;;;;8540:235:::0;;:::o;8108:281::-;8218:8;;;;;;;;;;;8194:33;;:12;:10;:12::i;:::-;:33;;;8186:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;8273:9;8268:116;8292:4;;:11;;8288:1;:15;8268:116;;;8319:57;8329:4;;8334:1;8329:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8346:8;;;;;;;;;;;8357:18;8367:4;;8372:1;8367:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8357:9;:18::i;:::-;8319:9;:57::i;:::-;8305:3;;;;;:::i;:::-;;;;8268:116;;;;8108:281;;:::o;9987:88::-;10034:13;10063:6;;;;;;;;;;;;;;;;;10056:13;;9987:88;:::o;11784:406::-;11924:4;11889:7;11898:15;7634:12;;;;;;;;;;;7630:221;;;7657:8;;;;;;;;;;;:32;;;7690:12;:10;:12::i;:::-;7704:7;7713:15;7657:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11937:24:::1;11964:11;:25;11976:12;:10;:12::i;:::-;11964:25;;;;;;;;;;;;;;;:34;11990:7;11964:34;;;;;;;;;;;;;;;;11937:61;;12033:15;12013:16;:35;;12005:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12097:67;12106:12;:10;:12::i;:::-;12120:7;12148:15;12129:16;:34;;;;:::i;:::-;12097:8;:67::i;:::-;12180:4;12173:11;;;7748:8:::0;;;;;;;;;;;:31;;;7780:12;:10;:12::i;:::-;7794:7;7803:15;7748:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7630:221;;;11937:24:::1;11964:11;:25;11976:12;:10;:12::i;:::-;11964:25;;;;;;;;;;;;;;;:34;11990:7;11964:34;;;;;;;;;;;;;;;;11937:61;;12033:15;12013:16;:35;;12005:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12097:67;12106:12;:10;:12::i;:::-;12120:7;12148:15;12129:16;:34;;;;:::i;:::-;12097:8;:67::i;:::-;12180:4;12173:11;;;7630:221:::0;11784:406;;;;;;:::o;10400:196::-;10517:4;10489:9;10500:6;6732:12;;;;;;;;;;;6728:189;;;6755:8;;;;;;;;;;;:23;;;6779:12;:10;:12::i;:::-;6793:9;6804:6;6755:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10530:42:::1;10540:12;:10;:12::i;:::-;10554:9;10565:6;10530:9;:42::i;:::-;10586:4;10579:11;;6830:8:::0;;;;;;;;;;;:22;;;6853:12;:10;:12::i;:::-;6867:9;6878:6;6830:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6728:189;;;10530:42:::1;10540:12;:10;:12::i;:::-;10554:9;10565:6;10530:9;:42::i;:::-;10586:4;10579:11;;6728:189:::0;10400:196;;;;;;:::o;9369:326::-;7922:13;;;;;;;;;;;7906:29;;:12;:10;:12::i;:::-;:29;;;7898:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9443:25:::1;;;;;;;;;;;9435:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9543:15;9515:24;;:43;;9507:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;9613:5;9598:12;;:20;;;;;;;;;;;;;;;;;;9653:5;9625:25;;:33;;;;;;;;;;;;;;;;;;9670:19;;;;;;;;;;9369:326::o:0;8781:345::-;8877:22;;;;;;;;;;;8861:38;;:12;:10;:12::i;:::-;:38;;;8853:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;8961:20;;8953:3;8943:14;;;;;;:38;8935:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9052:22;;;;;;;;;;;9016:59;;9037:13;;;;;;;;;;;9016:59;;;;;;;;;;;;9098:22;;;;;;;;;;;9082:13;;:38;;;;;;;;;;;;;;;;;;8781:345;:::o;5194:31::-;;;;;;;;;;;;;:::o;9132:231::-;7922:13;;;;;;;;;;;7906:29;;:12;:10;:12::i;:::-;:29;;;7898:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9243:14:::1;;9225:15;:32;;;;:::i;:::-;9198:24;:59;;;;9292:4;9264:25;;:32;;;;;;;;;;;;;;;;;;9308:49;9332:24;;9308:49;;;;;;:::i;:::-;;;;;;;;9132:231::o:0;10602:145::-;10691:7;10714:11;:18;10726:5;10714:18;;;;;;;;;;;;;;;:27;10733:7;10714:27;;;;;;;;;;;;;;;;10707:34;;10602:145;;;;:::o;5152:37::-;;;;;;;;;;;;;:::o;5049:20::-;;;;;;;;;;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;13000:348::-;13135:1;13118:19;;:5;:19;;;;13110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13212:1;13193:21;;:7;:21;;;;13185:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13292:6;13262:11;:18;13274:5;13262:18;;;;;;;;;;;;;;;:27;13281:7;13262:27;;;;;;;;;;;;;;;:36;;;;13326:7;13310:32;;13319:5;13310:32;;;13335:6;13310:32;;;;;;:::i;:::-;;;;;;;;13000:348;;;:::o;12196:534::-;12336:1;12318:20;;:6;:20;;;;12310:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12416:1;12395:23;;:9;:23;;;;12387:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12467:21;12491:9;:17;12501:6;12491:17;;;;;;;;;;;;;;;;12467:41;;12540:6;12523:13;:23;;12515:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12632:6;12616:13;:22;;;;:::i;:::-;12596:9;:17;12606:6;12596:17;;;;;;;;;;;;;;;:42;;;;12669:6;12645:9;:20;12655:9;12645:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12706:9;12689:35;;12698:6;12689:35;;;12717:6;12689:35;;;;;;:::i;:::-;;;;;;;;12303:427;12196:534;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;585:568::-;658:8;668:6;718:3;711:4;703:6;699:17;695:27;685:122;;726:79;;:::i;:::-;685:122;839:6;826:20;816:30;;869:18;861:6;858:30;855:117;;;891:79;;:::i;:::-;855:117;1005:4;997:6;993:17;981:29;;1059:3;1051:4;1043:6;1039:17;1029:8;1025:32;1022:41;1019:128;;;1066:79;;:::i;:::-;1019:128;585:568;;;;;:::o;1159:139::-;1205:5;1243:6;1230:20;1221:29;;1259:33;1286:5;1259:33;:::i;:::-;1159:139;;;;:::o;1317:338::-;1372:5;1421:3;1414:4;1406:6;1402:17;1398:27;1388:122;;1429:79;;:::i;:::-;1388:122;1546:6;1533:20;1571:78;1645:3;1637:6;1630:4;1622:6;1618:17;1571:78;:::i;:::-;1562:87;;1378:277;1317:338;;;;:::o;1661:139::-;1707:5;1745:6;1732:20;1723:29;;1761:33;1788:5;1761:33;:::i;:::-;1661:139;;;;:::o;1806:329::-;1865:6;1914:2;1902:9;1893:7;1889:23;1885:32;1882:119;;;1920:79;;:::i;:::-;1882:119;2040:1;2065:53;2110:7;2101:6;2090:9;2086:22;2065:53;:::i;:::-;2055:63;;2011:117;1806:329;;;;:::o;2141:474::-;2209:6;2217;2266:2;2254:9;2245:7;2241:23;2237:32;2234:119;;;2272:79;;:::i;:::-;2234:119;2392:1;2417:53;2462:7;2453:6;2442:9;2438:22;2417:53;:::i;:::-;2407:63;;2363:117;2519:2;2545:53;2590:7;2581:6;2570:9;2566:22;2545:53;:::i;:::-;2535:63;;2490:118;2141:474;;;;;:::o;2621:619::-;2698:6;2706;2714;2763:2;2751:9;2742:7;2738:23;2734:32;2731:119;;;2769:79;;:::i;:::-;2731:119;2889:1;2914:53;2959:7;2950:6;2939:9;2935:22;2914:53;:::i;:::-;2904:63;;2860:117;3016:2;3042:53;3087:7;3078:6;3067:9;3063:22;3042:53;:::i;:::-;3032:63;;2987:118;3144:2;3170:53;3215:7;3206:6;3195:9;3191:22;3170:53;:::i;:::-;3160:63;;3115:118;2621:619;;;;;:::o;3246:474::-;3314:6;3322;3371:2;3359:9;3350:7;3346:23;3342:32;3339:119;;;3377:79;;:::i;:::-;3339:119;3497:1;3522:53;3567:7;3558:6;3547:9;3543:22;3522:53;:::i;:::-;3512:63;;3468:117;3624:2;3650:53;3695:7;3686:6;3675:9;3671:22;3650:53;:::i;:::-;3640:63;;3595:118;3246:474;;;;;:::o;3726:::-;3794:6;3802;3851:2;3839:9;3830:7;3826:23;3822:32;3819:119;;;3857:79;;:::i;:::-;3819:119;3977:1;4002:53;4047:7;4038:6;4027:9;4023:22;4002:53;:::i;:::-;3992:63;;3948:117;4104:2;4130:53;4175:7;4166:6;4155:9;4151:22;4130:53;:::i;:::-;4120:63;;4075:118;3726:474;;;;;:::o;4206:559::-;4292:6;4300;4349:2;4337:9;4328:7;4324:23;4320:32;4317:119;;;4355:79;;:::i;:::-;4317:119;4503:1;4492:9;4488:17;4475:31;4533:18;4525:6;4522:30;4519:117;;;4555:79;;:::i;:::-;4519:117;4668:80;4740:7;4731:6;4720:9;4716:22;4668:80;:::i;:::-;4650:98;;;;4446:312;4206:559;;;;;:::o;4771:507::-;4839:6;4888:2;4876:9;4867:7;4863:23;4859:32;4856:119;;;4894:79;;:::i;:::-;4856:119;5042:1;5031:9;5027:17;5014:31;5072:18;5064:6;5061:30;5058:117;;;5094:79;;:::i;:::-;5058:117;5199:62;5253:7;5244:6;5233:9;5229:22;5199:62;:::i;:::-;5189:72;;4985:286;4771:507;;;;:::o;5284:118::-;5371:24;5389:5;5371:24;:::i;:::-;5366:3;5359:37;5284:118;;:::o;5408:109::-;5489:21;5504:5;5489:21;:::i;:::-;5484:3;5477:34;5408:109;;:::o;5523:364::-;5611:3;5639:39;5672:5;5639:39;:::i;:::-;5694:71;5758:6;5753:3;5694:71;:::i;:::-;5687:78;;5774:52;5819:6;5814:3;5807:4;5800:5;5796:16;5774:52;:::i;:::-;5851:29;5873:6;5851:29;:::i;:::-;5846:3;5842:39;5835:46;;5615:272;5523:364;;;;:::o;5893:366::-;6035:3;6056:67;6120:2;6115:3;6056:67;:::i;:::-;6049:74;;6132:93;6221:3;6132:93;:::i;:::-;6250:2;6245:3;6241:12;6234:19;;5893:366;;;:::o;6265:::-;6407:3;6428:67;6492:2;6487:3;6428:67;:::i;:::-;6421:74;;6504:93;6593:3;6504:93;:::i;:::-;6622:2;6617:3;6613:12;6606:19;;6265:366;;;:::o;6637:::-;6779:3;6800:67;6864:2;6859:3;6800:67;:::i;:::-;6793:74;;6876:93;6965:3;6876:93;:::i;:::-;6994:2;6989:3;6985:12;6978:19;;6637:366;;;:::o;7009:::-;7151:3;7172:67;7236:2;7231:3;7172:67;:::i;:::-;7165:74;;7248:93;7337:3;7248:93;:::i;:::-;7366:2;7361:3;7357:12;7350:19;;7009:366;;;:::o;7381:::-;7523:3;7544:67;7608:2;7603:3;7544:67;:::i;:::-;7537:74;;7620:93;7709:3;7620:93;:::i;:::-;7738:2;7733:3;7729:12;7722:19;;7381:366;;;:::o;7753:::-;7895:3;7916:67;7980:2;7975:3;7916:67;:::i;:::-;7909:74;;7992:93;8081:3;7992:93;:::i;:::-;8110:2;8105:3;8101:12;8094:19;;7753:366;;;:::o;8125:::-;8267:3;8288:67;8352:2;8347:3;8288:67;:::i;:::-;8281:74;;8364:93;8453:3;8364:93;:::i;:::-;8482:2;8477:3;8473:12;8466:19;;8125:366;;;:::o;8497:::-;8639:3;8660:67;8724:2;8719:3;8660:67;:::i;:::-;8653:74;;8736:93;8825:3;8736:93;:::i;:::-;8854:2;8849:3;8845:12;8838:19;;8497:366;;;:::o;8869:::-;9011:3;9032:67;9096:2;9091:3;9032:67;:::i;:::-;9025:74;;9108:93;9197:3;9108:93;:::i;:::-;9226:2;9221:3;9217:12;9210:19;;8869:366;;;:::o;9241:::-;9383:3;9404:67;9468:2;9463:3;9404:67;:::i;:::-;9397:74;;9480:93;9569:3;9480:93;:::i;:::-;9598:2;9593:3;9589:12;9582:19;;9241:366;;;:::o;9613:::-;9755:3;9776:67;9840:2;9835:3;9776:67;:::i;:::-;9769:74;;9852:93;9941:3;9852:93;:::i;:::-;9970:2;9965:3;9961:12;9954:19;;9613:366;;;:::o;9985:::-;10127:3;10148:67;10212:2;10207:3;10148:67;:::i;:::-;10141:74;;10224:93;10313:3;10224:93;:::i;:::-;10342:2;10337:3;10333:12;10326:19;;9985:366;;;:::o;10357:::-;10499:3;10520:67;10584:2;10579:3;10520:67;:::i;:::-;10513:74;;10596:93;10685:3;10596:93;:::i;:::-;10714:2;10709:3;10705:12;10698:19;;10357:366;;;:::o;10729:::-;10871:3;10892:67;10956:2;10951:3;10892:67;:::i;:::-;10885:74;;10968:93;11057:3;10968:93;:::i;:::-;11086:2;11081:3;11077:12;11070:19;;10729:366;;;:::o;11101:::-;11243:3;11264:67;11328:2;11323:3;11264:67;:::i;:::-;11257:74;;11340:93;11429:3;11340:93;:::i;:::-;11458:2;11453:3;11449:12;11442:19;;11101:366;;;:::o;11473:118::-;11560:24;11578:5;11560:24;:::i;:::-;11555:3;11548:37;11473:118;;:::o;11597:112::-;11680:22;11696:5;11680:22;:::i;:::-;11675:3;11668:35;11597:112;;:::o;11715:222::-;11808:4;11846:2;11835:9;11831:18;11823:26;;11859:71;11927:1;11916:9;11912:17;11903:6;11859:71;:::i;:::-;11715:222;;;;:::o;11943:553::-;12120:4;12158:3;12147:9;12143:19;12135:27;;12172:71;12240:1;12229:9;12225:17;12216:6;12172:71;:::i;:::-;12253:72;12321:2;12310:9;12306:18;12297:6;12253:72;:::i;:::-;12335;12403:2;12392:9;12388:18;12379:6;12335:72;:::i;:::-;12417;12485:2;12474:9;12470:18;12461:6;12417:72;:::i;:::-;11943:553;;;;;;;:::o;12502:442::-;12651:4;12689:2;12678:9;12674:18;12666:26;;12702:71;12770:1;12759:9;12755:17;12746:6;12702:71;:::i;:::-;12783:72;12851:2;12840:9;12836:18;12827:6;12783:72;:::i;:::-;12865;12933:2;12922:9;12918:18;12909:6;12865:72;:::i;:::-;12502:442;;;;;;:::o;12950:210::-;13037:4;13075:2;13064:9;13060:18;13052:26;;13088:65;13150:1;13139:9;13135:17;13126:6;13088:65;:::i;:::-;12950:210;;;;:::o;13166:313::-;13279:4;13317:2;13306:9;13302:18;13294:26;;13366:9;13360:4;13356:20;13352:1;13341:9;13337:17;13330:47;13394:78;13467:4;13458:6;13394:78;:::i;:::-;13386:86;;13166:313;;;;:::o;13485:419::-;13651:4;13689:2;13678:9;13674:18;13666:26;;13738:9;13732:4;13728:20;13724:1;13713:9;13709:17;13702:47;13766:131;13892:4;13766:131;:::i;:::-;13758:139;;13485:419;;;:::o;13910:::-;14076:4;14114:2;14103:9;14099:18;14091:26;;14163:9;14157:4;14153:20;14149:1;14138:9;14134:17;14127:47;14191:131;14317:4;14191:131;:::i;:::-;14183:139;;13910:419;;;:::o;14335:::-;14501:4;14539:2;14528:9;14524:18;14516:26;;14588:9;14582:4;14578:20;14574:1;14563:9;14559:17;14552:47;14616:131;14742:4;14616:131;:::i;:::-;14608:139;;14335:419;;;:::o;14760:::-;14926:4;14964:2;14953:9;14949:18;14941:26;;15013:9;15007:4;15003:20;14999:1;14988:9;14984:17;14977:47;15041:131;15167:4;15041:131;:::i;:::-;15033:139;;14760:419;;;:::o;15185:::-;15351:4;15389:2;15378:9;15374:18;15366:26;;15438:9;15432:4;15428:20;15424:1;15413:9;15409:17;15402:47;15466:131;15592:4;15466:131;:::i;:::-;15458:139;;15185:419;;;:::o;15610:::-;15776:4;15814:2;15803:9;15799:18;15791:26;;15863:9;15857:4;15853:20;15849:1;15838:9;15834:17;15827:47;15891:131;16017:4;15891:131;:::i;:::-;15883:139;;15610:419;;;:::o;16035:::-;16201:4;16239:2;16228:9;16224:18;16216:26;;16288:9;16282:4;16278:20;16274:1;16263:9;16259:17;16252:47;16316:131;16442:4;16316:131;:::i;:::-;16308:139;;16035:419;;;:::o;16460:::-;16626:4;16664:2;16653:9;16649:18;16641:26;;16713:9;16707:4;16703:20;16699:1;16688:9;16684:17;16677:47;16741:131;16867:4;16741:131;:::i;:::-;16733:139;;16460:419;;;:::o;16885:::-;17051:4;17089:2;17078:9;17074:18;17066:26;;17138:9;17132:4;17128:20;17124:1;17113:9;17109:17;17102:47;17166:131;17292:4;17166:131;:::i;:::-;17158:139;;16885:419;;;:::o;17310:::-;17476:4;17514:2;17503:9;17499:18;17491:26;;17563:9;17557:4;17553:20;17549:1;17538:9;17534:17;17527:47;17591:131;17717:4;17591:131;:::i;:::-;17583:139;;17310:419;;;:::o;17735:::-;17901:4;17939:2;17928:9;17924:18;17916:26;;17988:9;17982:4;17978:20;17974:1;17963:9;17959:17;17952:47;18016:131;18142:4;18016:131;:::i;:::-;18008:139;;17735:419;;;:::o;18160:::-;18326:4;18364:2;18353:9;18349:18;18341:26;;18413:9;18407:4;18403:20;18399:1;18388:9;18384:17;18377:47;18441:131;18567:4;18441:131;:::i;:::-;18433:139;;18160:419;;;:::o;18585:::-;18751:4;18789:2;18778:9;18774:18;18766:26;;18838:9;18832:4;18828:20;18824:1;18813:9;18809:17;18802:47;18866:131;18992:4;18866:131;:::i;:::-;18858:139;;18585:419;;;:::o;19010:::-;19176:4;19214:2;19203:9;19199:18;19191:26;;19263:9;19257:4;19253:20;19249:1;19238:9;19234:17;19227:47;19291:131;19417:4;19291:131;:::i;:::-;19283:139;;19010:419;;;:::o;19435:::-;19601:4;19639:2;19628:9;19624:18;19616:26;;19688:9;19682:4;19678:20;19674:1;19663:9;19659:17;19652:47;19716:131;19842:4;19716:131;:::i;:::-;19708:139;;19435:419;;;:::o;19860:222::-;19953:4;19991:2;19980:9;19976:18;19968:26;;20004:71;20072:1;20061:9;20057:17;20048:6;20004:71;:::i;:::-;19860:222;;;;:::o;20088:214::-;20177:4;20215:2;20204:9;20200:18;20192:26;;20228:67;20292:1;20281:9;20277:17;20268:6;20228:67;:::i;:::-;20088:214;;;;:::o;20308:129::-;20342:6;20369:20;;:::i;:::-;20359:30;;20398:33;20426:4;20418:6;20398:33;:::i;:::-;20308:129;;;:::o;20443:75::-;20476:6;20509:2;20503:9;20493:19;;20443:75;:::o;20524:307::-;20585:4;20675:18;20667:6;20664:30;20661:56;;;20697:18;;:::i;:::-;20661:56;20735:29;20757:6;20735:29;:::i;:::-;20727:37;;20819:4;20813;20809:15;20801:23;;20524:307;;;:::o;20837:99::-;20889:6;20923:5;20917:12;20907:22;;20837:99;;;:::o;20942:169::-;21026:11;21060:6;21055:3;21048:19;21100:4;21095:3;21091:14;21076:29;;20942:169;;;;:::o;21117:305::-;21157:3;21176:20;21194:1;21176:20;:::i;:::-;21171:25;;21210:20;21228:1;21210:20;:::i;:::-;21205:25;;21364:1;21296:66;21292:74;21289:1;21286:81;21283:107;;;21370:18;;:::i;:::-;21283:107;21414:1;21411;21407:9;21400:16;;21117:305;;;;:::o;21428:191::-;21468:4;21488:20;21506:1;21488:20;:::i;:::-;21483:25;;21522:20;21540:1;21522:20;:::i;:::-;21517:25;;21561:1;21558;21555:8;21552:34;;;21566:18;;:::i;:::-;21552:34;21611:1;21608;21604:9;21596:17;;21428:191;;;;:::o;21625:96::-;21662:7;21691:24;21709:5;21691:24;:::i;:::-;21680:35;;21625:96;;;:::o;21727:90::-;21761:7;21804:5;21797:13;21790:21;21779:32;;21727:90;;;:::o;21823:77::-;21860:7;21889:5;21878:16;;21823:77;;;:::o;21906:126::-;21943:7;21983:42;21976:5;21972:54;21961:65;;21906:126;;;:::o;22038:77::-;22075:7;22104:5;22093:16;;22038:77;;;:::o;22121:86::-;22156:7;22196:4;22189:5;22185:16;22174:27;;22121:86;;;:::o;22213:154::-;22297:6;22292:3;22287;22274:30;22359:1;22350:6;22345:3;22341:16;22334:27;22213:154;;;:::o;22373:307::-;22441:1;22451:113;22465:6;22462:1;22459:13;22451:113;;;22550:1;22545:3;22541:11;22535:18;22531:1;22526:3;22522:11;22515:39;22487:2;22484:1;22480:10;22475:15;;22451:113;;;22582:6;22579:1;22576:13;22573:101;;;22662:1;22653:6;22648:3;22644:16;22637:27;22573:101;22422:258;22373:307;;;:::o;22686:281::-;22769:27;22791:4;22769:27;:::i;:::-;22761:6;22757:40;22899:6;22887:10;22884:22;22863:18;22851:10;22848:34;22845:62;22842:88;;;22910:18;;:::i;:::-;22842:88;22950:10;22946:2;22939:22;22729:238;22686:281;;:::o;22973:233::-;23012:3;23035:24;23053:5;23035:24;:::i;:::-;23026:33;;23081:66;23074:5;23071:77;23068:103;;;23151:18;;:::i;:::-;23068:103;23198:1;23191:5;23187:13;23180:20;;22973:233;;;:::o;23212:180::-;23260:77;23257:1;23250:88;23357:4;23354:1;23347:15;23381:4;23378:1;23371:15;23398:180;23446:77;23443:1;23436:88;23543:4;23540:1;23533:15;23567:4;23564:1;23557:15;23584:180;23632:77;23629:1;23622:88;23729:4;23726:1;23719:15;23753:4;23750:1;23743:15;23770:117;23879:1;23876;23869:12;23893:117;24002:1;23999;23992:12;24016:117;24125:1;24122;24115:12;24139:117;24248:1;24245;24238:12;24262:117;24371:1;24368;24361:12;24385:117;24494:1;24491;24484:12;24508:102;24549:6;24600:2;24596:7;24591:2;24584:5;24580:14;24576:28;24566:38;;24508:102;;;:::o;24616:179::-;24756:31;24752:1;24744:6;24740:14;24733:55;24616:179;:::o;24801:222::-;24941:34;24937:1;24929:6;24925:14;24918:58;25010:5;25005:2;24997:6;24993:15;24986:30;24801:222;:::o;25029:221::-;25169:34;25165:1;25157:6;25153:14;25146:58;25238:4;25233:2;25225:6;25221:15;25214:29;25029:221;:::o;25256:178::-;25396:30;25392:1;25384:6;25380:14;25373:54;25256:178;:::o;25440:225::-;25580:34;25576:1;25568:6;25564:14;25557:58;25649:8;25644:2;25636:6;25632:15;25625:33;25440:225;:::o;25671:226::-;25811:34;25807:1;25799:6;25795:14;25788:58;25880:9;25875:2;25867:6;25863:15;25856:34;25671:226;:::o;25903:165::-;26043:17;26039:1;26031:6;26027:14;26020:41;25903:165;:::o;26074:227::-;26214:34;26210:1;26202:6;26198:14;26191:58;26283:10;26278:2;26270:6;26266:15;26259:35;26074:227;:::o;26307:168::-;26447:20;26443:1;26435:6;26431:14;26424:44;26307:168;:::o;26481:224::-;26621:34;26617:1;26609:6;26605:14;26598:58;26690:7;26685:2;26677:6;26673:15;26666:32;26481:224;:::o;26711:223::-;26851:34;26847:1;26839:6;26835:14;26828:58;26920:6;26915:2;26907:6;26903:15;26896:31;26711:223;:::o;26940:179::-;27080:31;27076:1;27068:6;27064:14;27057:55;26940:179;:::o;27125:174::-;27265:26;27261:1;27253:6;27249:14;27242:50;27125:174;:::o;27305:177::-;27445:29;27441:1;27433:6;27429:14;27422:53;27305:177;:::o;27488:224::-;27628:34;27624:1;27616:6;27612:14;27605:58;27697:7;27692:2;27684:6;27680:15;27673:32;27488:224;:::o;27718:122::-;27791:24;27809:5;27791:24;:::i;:::-;27784:5;27781:35;27771:63;;27830:1;27827;27820:12;27771:63;27718:122;:::o;27846:::-;27919:24;27937:5;27919:24;:::i;:::-;27912:5;27909:35;27899:63;;27958:1;27955;27948:12;27899:63;27846:122;:::o;27974:::-;28047:24;28065:5;28047:24;:::i;:::-;28040:5;28037:35;28027:63;;28086:1;28083;28076:12;28027:63;27974:122;:::o

Swarm Source

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