ETH Price: $3,066.02 (+2.83%)
Gas: 9 Gwei

Token

Marshal Lion Group Coin (MLGC)
 

Overview

Max Total Supply

120,000,000 MLGC

Holders

287 (0.00%)

Total Transfers

-

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$49,507.20

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 0 Decimals)

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

OVERVIEW

To create a platform that will grant investors access to the non-bank lending market.

Market

Volume (24H):$0.00
Market Capitalization:$0.00
Circulating Supply:0.00 MLGC
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Mlgc

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 4 of 7: mlgc-token.sol
pragma solidity ^0.5.10;

import "./ierc20.sol";
import "./safemath.sol";
import "./erc20.sol";
import "./burnable.sol";
import "./ownable.sol";
import "./timelocks.sol";

contract ContractFallbacks {
    function receiveApproval(address from, uint256 _amount, address _token, bytes memory _data) public;
	function onTokenTransfer(address from, uint256 amount, bytes memory data) public returns (bool success);
}

contract Mlgc is IERC20, ERC20, ERC20Burnable, Ownable, Timelocks {
	using SafeMath for uint256;

	string public name;
	string public symbol;
	uint8 public decimals;

	/**
	*	@dev Token constructor
	*/
	constructor () public {
		name = "Marshal Lion Group Coin";		//token name
		symbol = "MLGC";					//token symbol
		decimals = 0; 						//decimals used in token

		owner = 0x4fED0a484D44fe65C4a87dd3317C2138D62d7F2A;					//contract owner
		emit OwnershipTransferred(address(0), owner);

		_mint(0x4fED0a484D44fe65C4a87dd3317C2138D62d7F2A, 108000000);
		_mint(0xDe37E05d5609a70Ab6e2b9Dd23d54Df8a0584238, 6000000);
		_mint(0x5b7EB436b78BeD09793E1c38d775B37ab06B6e91, 6000000);
	}

	/**
	 * @dev function that allow to approve for transfer and call contract in one transaction
	 * @param _spender contract address
	 * @param _amount amount of tokens
	 * @param _extraData optional encoded data to send to contract
	 * @return True if function call was succesfull
	 */
    function approveAndCall(address _spender, uint256 _amount, bytes calldata _extraData) external returns (bool success)
	{
        require(approve(_spender, _amount), "ERC20: Approve unsuccesfull");
        ContractFallbacks(_spender).receiveApproval(msg.sender, _amount, address(this), _extraData);
        return true;
    }

    /**
     * @dev function that transer tokens to diven address and call function on that address
     * @param _to address to send tokens and call
     * @param _value amount of tokens
     * @param _data optional extra data to process in calling contract
     * @return success True if all succedd
     */
	function transferAndCall(address _to, uint _value, bytes calldata _data) external returns (bool success)
  	{
  	    _transfer(msg.sender, _to, _value);
		ContractFallbacks(_to).onTokenTransfer(msg.sender, _value, _data);
		return true;
  	}

}

File 1 of 7: burnable.sol
pragma solidity ^0.5.10;

import "./erc20.sol";

/**
* @title Burnable Token
* @dev Token that can be irreversibly burned (destroyed).
*/
contract ERC20Burnable is ERC20 {
	/**
	* @dev Burns a specific amount of tokens.
	* @param value The amount of token to be burned.
	*/
	function burn(uint256 value) external {
		_burn(msg.sender, value);
	}

	/**
	* @dev Burns a specific amount of tokens from the target address and decrements allowance.
	* @param from address The account whose tokens will be burned.
	* @param value uint256 The amount of token to be burned.
	*/
	function burnFrom(address from, uint256 value) external {
		_burnFrom(from, value);
	}
}

File 2 of 7: erc20.sol
pragma solidity ^0.5.10;

import "./safemath.sol";
import "./ierc20.sol";

/**
* @title Standard ERC20 token
** @dev Implementation of the basic standard token.
* https://eips.ethereum.org/EIPS/eip-20
* Originally based on code by FirstBlood:
* https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
** This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for
* all accounts just by listening to said events. Note that this isn't required by the specification, and other
* compliant implementations may not do it.
*/
contract ERC20 is IERC20 {
	using SafeMath for uint256;

	mapping (address => uint256) internal _balances;

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

	uint256 private _totalSupply;

	/**
	* @dev Total number of tokens in existence.
	*/
	function totalSupply() external view returns (uint256) {
		return _totalSupply;
	}

	/**
	* @dev Gets the balance of the specified address.
	* @param owner The address to query the balance of.
	* @return A uint256 representing the amount owned by the passed address.
	*/
	function balanceOf(address owner) external view returns (uint256) {
		return _balances[owner];
	}

	/**
	* @dev Function to check the amount of tokens that an owner allowed to a spender.
	* @param owner address The address which owns the funds.
	* @param spender address The address which will spend the funds.
	* @return A uint256 specifying the amount of tokens still available for the spender.
	*/
	function allowance(address owner, address spender) external view returns (uint256) {
		return _allowed[owner][spender];
	}

	/**
	* @dev Transfer token to a specified address.
	* @param to The address to transfer to.
	* @param value The amount to be transferred.
	*/
	function transfer(address to, uint256 value) external returns (bool) {
		_transfer(msg.sender, to, value);
		return true;
	}

	/**
	* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
	* 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
	* @param spender The address which will spend the funds.
	* @param value The amount of tokens to be spent.
	*/
	function approve(address spender, uint256 value) public returns (bool) {
		_approve(msg.sender, spender, value);
		return true;
	}

	/**
	* @dev Transfer tokens from one address to another.
	* Note that while this function emits an Approval event, this is not required as per the specification,
	* and other compliant implementations may not emit the event.
	* @param from address The address which you want to send tokens from
	* @param to address The address which you want to transfer to
	* @param value uint256 the amount of tokens to be transferred
	*/
	function transferFrom(address from, address to, uint256 value) external returns (bool) {
		_transfer(from, to, value);
		_approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
		return true;
	}

	/**
	* @dev Increase the amount of tokens that an owner allowed to a spender.
	* approve should be called when _allowed[msg.sender][spender] == 0. To increment
	* allowed value is better to use this function to avoid 2 calls (and wait until
	* the first transaction is mined)
	* From MonolithDAO Token.sol
	* Emits an Approval event.
	* @param spender The address which will spend the funds.
	* @param addedValue The amount of tokens to increase the allowance by.
	*/
	function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
		_approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
		return true;
	}

	/**
	* @dev Decrease the amount of tokens that an owner allowed to a spender.
	* approve should be called when _allowed[msg.sender][spender] == 0. To decrement
	* allowed value is better to use this function to avoid 2 calls (and wait until
	* the first transaction is mined)
	* From MonolithDAO Token.sol
	* Emits an Approval event.
	* @param spender The address which will spend the funds.
	* @param subtractedValue The amount of tokens to decrease the allowance by.
	*/
	function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
		_approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
		return true;
	}

	/**
	* @dev Transfer token for a specified addresses.
	* @param from The address to transfer from.
	* @param to The address to transfer to.
	* @param value The amount to be transferred.
	*/
	function _transfer(address from, address to, uint256 value) internal {
		require(to != address(0), "ERC20: transfer to the zero address");
        require(_balances[from]>=value, "ERC20 transfer: not enough tokens");
		_balances[from] = _balances[from].sub(value);
		_balances[to] = _balances[to].add(value);
		emit Transfer(from, to, value);
	}

	/**
	* @dev Internal function that mints an amount of the token and assigns it to
	* an account. This encapsulates the modification of balances such that the
	* proper events are emitted.
	* @param account The account that will receive the created tokens.
	* @param value The amount that will be created.
	*/
	function _mint(address account, uint256 value) internal {
		require(account != address(0), "ERC20: mint to the zero address");

		_totalSupply = _totalSupply.add(value);
		_balances[account] = _balances[account].add(value);
		emit Transfer(address(0), account, value);
	}

	/**
	* @dev Internal function that burns an amount of the token of a given
	* account.
	* @param account The account whose tokens will be burnt.
	* @param value The amount that will be burnt.
	*/
	function _burn(address account, uint256 value) internal {
		require(account != address(0), "ERC20: burn from the zero address");
		require(_balances[account] >= value, "Burn: not enough tokens");
		_totalSupply = _totalSupply.sub(value);
		_balances[account] = _balances[account].sub(value);
		emit Transfer(account, address(0), value);
	}

	/**
	* @dev Approve an address to spend another addresses' tokens.
	* @param owner The address that owns the tokens.
	* @param spender The address that will spend the tokens.
	* @param value The number of tokens that can be spent.
	*/
	function _approve(address owner, address spender, uint256 value) internal {
		require(owner != address(0), "ERC20: approve from the zero address");
		require(spender != address(0), "ERC20: approve to the zero address");
		_allowed[owner][spender] = value;
		emit Approval(owner, spender, value);
	}

	/**
	* @dev Internal function that burns an amount of the token of a given
	* account, deducting from the sender's allowance for said account. Uses the
	* internal burn function.
	* Emits an Approval event (reflecting the reduced allowance).
	* @param account The account whose tokens will be burnt.
	* @param value The amount that will be burnt.
	*/
	function _burnFrom(address account, uint256 value) internal {
		require(_allowed[account][msg.sender]>=value, "Burn: allowance too low");
		_burn(account, value);
		_approve(account, msg.sender, _allowed[account][msg.sender].sub(value));
	}
}

File 3 of 7: ierc20.sol
pragma solidity ^0.5.10;

/**
* @title ERC20 interface
* @dev see https://eips.ethereum.org/EIPS/eip-20
*/
interface IERC20 {
	function transfer(address to, uint256 value) external returns (bool);

	function approve(address spender, uint256 value) external returns (bool);

	function transferFrom(address from, address to, uint256 value) external returns (bool);

	function totalSupply() external view returns (uint256);

	function balanceOf(address who) external view returns (uint256);

	function allowance(address owner, address spender) external view returns (uint256);

	event Transfer(address indexed from, address indexed to, uint256 value);

	event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 5 of 7: ownable.sol
pragma solidity ^0.5.10;

/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
	address public owner;
	address public newOwner;

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

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

	/**
	* @return true if `msg.sender` is the owner of the contract.
	*/
	function isOwner() public view returns (bool) {
		return msg.sender == owner;
	}

	/**
	* @dev Allows the current owner to relinquish control of the contract.
	* It will not be possible to call the functions with the `onlyOwner`
	* modifier anymore.
	* @notice Renouncing ownership will leave the contract without an owner,
	* thereby removing any functionality that is only available to the owner.
	*/
	function renounceOwnership() external onlyOwner {
		emit OwnershipTransferred(owner, address(0));
		owner = address(0);
	}

	/**
	* @dev Allows the current owner to transfer control of the contract to a newOwner.
	* @param _newOwner The address to transfer ownership to.
	*/
	function transferOwnership(address _newOwner) external onlyOwner {
		newOwner = _newOwner;
	}

	function acceptOwnership() public{
		require (newOwner == msg.sender, "Ownable: only new Owner can accept");
		emit OwnershipTransferred(owner, newOwner);
		owner = newOwner;
		newOwner = address(0);
	}
}

File 6 of 7: safemath.sol
pragma solidity ^0.5.10;

/**
* @title SafeMath
* @dev Unsigned math operations with safety checks that revert on error.
*/
library SafeMath {
	/**
	* @dev Multiplies two unsigned integers, reverts on overflow.
	*/
	function mul(uint256 a, uint256 b) internal pure returns (uint256) {
		// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
		// benefit is lost if 'b' is also tested.
		// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
		if (a == 0) {
			return 0;
		}

		uint256 c = a * b;
		require(c / a == b, "SafeMath: multiplication overflow");

		return c;
	}

	/**
	* @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
	*/
	function div(uint256 a, uint256 b) internal pure returns (uint256) {
		// Solidity only automatically asserts when dividing by 0
		require(b > 0, "SafeMath: division by zero");
		uint256 c = a / b;
		// assert(a == b * c + a % b); // There is no case in which this doesn't hold

		return c;
	}

	/**
	* @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
	*/
	function sub(uint256 a, uint256 b) internal pure returns (uint256) {
		require(b <= a, "SafeMath: subtraction overflow");
		uint256 c = a - b;

		return c;
	}

	/**
	* @dev Adds two unsigned integers, reverts on overflow.
	*/
	function add(uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		require(c >= a, "SafeMath: addition overflow");

		return c;
	}

	/**
	* @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
	* reverts when dividing by zero.
	*/
	function mod(uint256 a, uint256 b) internal pure returns (uint256) {
		require(b != 0, "SafeMath: modulo by zero");
		return a % b;
	}
}

File 7 of 7: timelocks.sol
pragma solidity ^0.5.10;

import "./erc20.sol";
import "./ownable.sol";

contract Timelocks is ERC20, Ownable{

    uint public lockedBalance;

    struct Locker {
        uint amount;
        uint locktime;
    }

    mapping(address => Locker[]) timeLocks;

    /**
    * @dev function that lock tokens held by contract. Tokens can be unlocked and send to user after fime pass
    * @param lockTimestamp timestamp after whih coins can be unlocked
    * @param amount amount of tokens to lock
    * @param user address of uset that cn unlock and posess tokens
    */
    function lock(uint lockTimestamp, uint amount, address user) external onlyOwner {
        _lock(lockTimestamp, amount, user);
    }

	function _lock(uint lockTimestamp, uint amount, address user) internal{
        uint current = _balances[address(this)];
        require(amount <= current.sub(lockedBalance), "Lock: Not enough tokens");
        lockedBalance = lockedBalance.add(amount);
        timeLocks[user].push(Locker(amount, lockTimestamp));
    }

    /**
     * @dev Function to unlock timelocked tokens
     * If block.timestap passed tokens are sent to owner and lock is removed from database
     */
    function unlock() external
    {
        require(timeLocks[msg.sender].length > 0, "Unlock: No locks!");
        Locker[] storage l = timeLocks[msg.sender];
        for (uint i = 0; i < l.length; i++)
        {
            // solium-disable-next-line security/no-block-members
            if (l[i].locktime < block.timestamp) {
                uint amount = l[i].amount;
                require(amount <= lockedBalance && amount <= _balances[address(this)], "Unlock: Not enough coins on contract!");
                lockedBalance = lockedBalance.sub(amount);
                _transfer(address(this), msg.sender, amount);
                for (uint j = i; j < l.length - 1; j++)
                {
                    l[j] = l[j + 1];
                }
                l.length--;
                i--;
            }
        }
    }

    /**
     * @dev Function to check how many locks are on caller account
     * We need it because (for now) contract can not retrurn array of structs
     * @return number of timelocked locks
     */
    function locks() external view returns(uint)
    {
        return _locks(msg.sender);
    }

    /**
     * @dev Function to check timelocks of any user
     * @param user addres of user
     * @return nuber of locks
     */
    function locksOf(address user) external view returns(uint) {
        return _locks(user);
    }

    function _locks(address user) internal view returns(uint){
        return timeLocks[user].length;
    }

    /**
     * @dev Function to check given timeLock
     * @param num number of timeLock
     * @return amount locked
     * @return timestamp after whih coins can be unlocked
     */
    function showLock(uint num) external view returns(uint, uint)
    {
        return _showLock(msg.sender, num);
    }

    /**
     * @dev Function to show timeLock of any user
     * @param user address of user
     * @param num number of lock
     * @return amount locked
     * @return timestamp after whih can be unlocked
     */
    function showLockOf(address user, uint num) external view returns(uint, uint) {
        return _showLock(user, num);
    }

    function _showLock(address user, uint num) internal view returns(uint, uint) {
        require(timeLocks[user].length > 0, "ShowLock: No locks!");
        require(num < timeLocks[user].length, "ShowLock: Index over number of locks.");
        Locker[] storage l = timeLocks[user];
        return (l[num].amount, l[num].locktime);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"num","type":"uint256"}],"name":"showLock","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockedBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"locksOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"lockTimestamp","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"user","type":"address"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"locks","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"num","type":"uint256"}],"name":"showLockOf","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040523480156200001157600080fd5b506040518060400160405280601781526020017f4d61727368616c204c696f6e2047726f757020436f696e000000000000000000815250600790805190602001906200005f92919062000471565b506040518060400160405280600481526020017f4d4c47430000000000000000000000000000000000000000000000000000000081525060089080519060200190620000ad92919062000471565b506000600960006101000a81548160ff021916908360ff160217905550734fed0a484d44fe65c4a87dd3317c2138d62d7f2a600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620001c6734fed0a484d44fe65c4a87dd3317c2138d62d7f2a63066ff3006200021e60201b60201c565b620001ef73de37e05d5609a70ab6e2b9dd23d54df8a0584238625b8d806200021e60201b60201c565b62000218735b7eb436b78bed09793e1c38d775b37ab06b6e91625b8d806200021e60201b60201c565b62000520565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620002de81600254620003e860201b620020ea1790919060201c565b6002819055506200033c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620003e860201b620020ea1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008082840190508381101562000467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004b457805160ff1916838001178555620004e5565b82800160010185558215620004e5579182015b82811115620004e4578251825591602001919060010190620004c7565b5b509050620004f49190620004f8565b5090565b6200051d91905b8082111562000519576000816000905550600101620004ff565b5090565b90565b6128da80620005306000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063cae9ca5111610097578063dd62ed3e11610071578063dd62ed3e14610964578063f2fde38b146109dc578063f557ab0314610a20578063fe01aad114610a3e576101c4565b8063cae9ca5114610807578063d35cf790146108c2578063d4ee1d901461091a576101c4565b8063a457c2d7116100d3578063a457c2d7146106d9578063a69df4b51461073f578063a9059cbb14610749578063c3f9ab58146107af576101c4565b80638da5cb5b146105ea5780638f32d59b1461063457806395d89b4114610656576101c4565b80634000aea011610166578063715018a611610140578063715018a61461056a57806379ba50971461057457806379cc67901461057e5780637b80889b146105cc576101c4565b80634000aea01461042957806342966c68146104e457806370a0823114610512576101c4565b80631ace059f116101a25780631ace059f146102d057806323b872dd14610319578063313ce5671461039f57806339509351146103c3576101c4565b806306fdde03146101c9578063095ea7b31461024c57806318160ddd146102b2575b600080fd5b6101d1610aa7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102986004803603604081101561026257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b45565b604051808215151515815260200191505060405180910390f35b6102ba610b5c565b6040518082815260200191505060405180910390f35b6102fc600480360360208110156102e657600080fd5b8101908080359060200190929190505050610b66565b604051808381526020018281526020019250505060405180910390f35b6103856004803603606081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7c565b604051808215151515815260200191505060405180910390f35b6103a7610c2d565b604051808260ff1660ff16815260200191505060405180910390f35b61040f600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c40565b604051808215151515815260200191505060405180910390f35b6104ca6004803603606081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460018302840111640100000000831117156104ba57600080fd5b9091929391929390505050610ce5565b604051808215151515815260200191505060405180910390f35b610510600480360360208110156104fa57600080fd5b8101908080359060200190929190505050610df5565b005b6105546004803603602081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e02565b6040518082815260200191505060405180910390f35b610572610e4a565b005b61057c610f85565b005b6105ca6004803603604081101561059457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611170565b005b6105d461117e565b6040518082815260200191505060405180910390f35b6105f2611184565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61063c6111aa565b604051808215151515815260200191505060405180910390f35b61065e611202565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561069e578082015181840152602081019050610683565b50505050905090810190601f1680156106cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610725600480360360408110156106ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112a0565b604051808215151515815260200191505060405180910390f35b610747611345565b005b6107956004803603604081101561075f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611606565b604051808215151515815260200191505060405180910390f35b6107f1600480360360208110156107c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061161d565b6040518082815260200191505060405180910390f35b6108a86004803603606081101561081d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561086457600080fd5b82018360208201111561087657600080fd5b8035906020019184600183028401116401000000008311171561089857600080fd5b909192939192939050505061162f565b604051808215151515815260200191505060405180910390f35b610918600480360360608110156108d857600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c0565b005b61092261184a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109c66004803603604081101561097a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611870565b6040518082815260200191505060405180910390f35b610a1e600480360360208110156109f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f7565b005b610a286119b5565b6040518082815260200191505060405180910390f35b610a8a60048036036040811015610a5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119c5565b604051808381526020018281526020019250505060405180910390f35b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b3d5780601f10610b1257610100808354040283529160200191610b3d565b820191906000526020600020905b815481529060010190602001808311610b2057829003601f168201915b505050505081565b6000610b523384846119dd565b6001905092915050565b6000600254905090565b600080610b733384611bd4565b91509150915091565b6000610b89848484611db4565b610c228433610c1d85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6119dd565b600190509392505050565b600960009054906101000a900460ff1681565b6000610cdb3384610cd685600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ea90919063ffffffff16565b6119dd565b6001905092915050565b6000610cf2338686611db4565b8473ffffffffffffffffffffffffffffffffffffffff1663a4c0ed36338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506040513d6020811015610dd757600080fd5b81019080805190602001909291905050505060019050949350505050565b610dff3382612172565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e526111aa565b610ec4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061283f6022913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61117a82826123c4565b5050565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112985780601f1061126d57610100808354040283529160200191611298565b820191906000526020600020905b81548152906001019060200180831161127b57829003601f168201915b505050505081565b600061133b338461133685600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6119dd565b6001905092915050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e6c6f636b3a204e6f206c6f636b732100000000000000000000000000000081525060200191505060405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008090505b8180549050811015611602574282828154811061145f57fe5b90600052602060002090600202016001015410156115f557600082828154811061148557fe5b906000526020600020906002020160000154905060055481111580156114e957506000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b61153e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127f96025913960400191505060405180910390fd5b6115538160055461206190919063ffffffff16565b600581905550611564303383611db4565b60008290505b60018480549050038110156115d45783600182018154811061158857fe5b90600052602060002090600202018482815481106115a257fe5b90600052602060002090600202016000820154816000015560018201548160010155905050808060010191505061156a565b50828054809190600190036115e9919061272d565b50818060019003925050505b8080600101915050611446565b5050565b6000611613338484611db4565b6001905092915050565b60006116288261255d565b9050919050565b600061163b8585610b45565b6116ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a20417070726f766520756e73756363657366756c6c000000000081525060200191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133863087876040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b5050505060019050949350505050565b6117c86111aa565b61183a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6118458383836125a9565b505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118ff6111aa565b611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006119c03361255d565b905090565b6000806119d28484611bd4565b915091509250929050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806128826024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ae9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127d76022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000806000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611c8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53686f774c6f636b3a204e6f206c6f636b73210000000000000000000000000081525060200191505060405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508310611d29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127b26025913960400191505060405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050808481548110611d7857fe5b906000526020600020906002020160000154818581548110611d9657fe5b90600052602060002090600202016001015492509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061278f6023913960400191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ed1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061281e6021913960400191505060405180910390fd5b611f22816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fb5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ea90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000828211156120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806128616021913960400191505060405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4275726e3a206e6f7420656e6f75676820746f6b656e7300000000000000000081525060200191505060405180910390fd5b6122c18160025461206190919063ffffffff16565b600281905550612318816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4275726e3a20616c6c6f77616e636520746f6f206c6f7700000000000000000081525060200191505060405180910390fd5b6124c08282612172565b612559823361255484600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6119dd565b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506126016005548261206190919063ffffffff16565b831115612676576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4c6f636b3a204e6f7420656e6f75676820746f6b656e7300000000000000000081525060200191505060405180910390fd5b61268b836005546120ea90919063ffffffff16565b600581905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808581526020018681525090806001815401808255809150509060018203906000526020600020906002020160009091929091909150600082015181600001556020820151816001015550505050505050565b81548183558181111561275a57600202816002028360005260206000209182019101612759919061275f565b5b505050565b61278b91905b8082111561278757600080820160009055600182016000905550600201612765565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737353686f774c6f636b3a20496e646578206f766572206e756d626572206f66206c6f636b732e45524332303a20617070726f766520746f20746865207a65726f2061646472657373556e6c6f636b3a204e6f7420656e6f75676820636f696e73206f6e20636f6e7472616374214552433230207472616e736665723a206e6f7420656e6f75676820746f6b656e734f776e61626c653a206f6e6c79206e6577204f776e65722063616e2061636365707445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723058208ac84ff671f4c81efffddb3621dbb99d64712ec7a620e76adf448afea1b8927f64736f6c634300050a0032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063cae9ca5111610097578063dd62ed3e11610071578063dd62ed3e14610964578063f2fde38b146109dc578063f557ab0314610a20578063fe01aad114610a3e576101c4565b8063cae9ca5114610807578063d35cf790146108c2578063d4ee1d901461091a576101c4565b8063a457c2d7116100d3578063a457c2d7146106d9578063a69df4b51461073f578063a9059cbb14610749578063c3f9ab58146107af576101c4565b80638da5cb5b146105ea5780638f32d59b1461063457806395d89b4114610656576101c4565b80634000aea011610166578063715018a611610140578063715018a61461056a57806379ba50971461057457806379cc67901461057e5780637b80889b146105cc576101c4565b80634000aea01461042957806342966c68146104e457806370a0823114610512576101c4565b80631ace059f116101a25780631ace059f146102d057806323b872dd14610319578063313ce5671461039f57806339509351146103c3576101c4565b806306fdde03146101c9578063095ea7b31461024c57806318160ddd146102b2575b600080fd5b6101d1610aa7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102986004803603604081101561026257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b45565b604051808215151515815260200191505060405180910390f35b6102ba610b5c565b6040518082815260200191505060405180910390f35b6102fc600480360360208110156102e657600080fd5b8101908080359060200190929190505050610b66565b604051808381526020018281526020019250505060405180910390f35b6103856004803603606081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b7c565b604051808215151515815260200191505060405180910390f35b6103a7610c2d565b604051808260ff1660ff16815260200191505060405180910390f35b61040f600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c40565b604051808215151515815260200191505060405180910390f35b6104ca6004803603606081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561048657600080fd5b82018360208201111561049857600080fd5b803590602001918460018302840111640100000000831117156104ba57600080fd5b9091929391929390505050610ce5565b604051808215151515815260200191505060405180910390f35b610510600480360360208110156104fa57600080fd5b8101908080359060200190929190505050610df5565b005b6105546004803603602081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e02565b6040518082815260200191505060405180910390f35b610572610e4a565b005b61057c610f85565b005b6105ca6004803603604081101561059457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611170565b005b6105d461117e565b6040518082815260200191505060405180910390f35b6105f2611184565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61063c6111aa565b604051808215151515815260200191505060405180910390f35b61065e611202565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561069e578082015181840152602081019050610683565b50505050905090810190601f1680156106cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610725600480360360408110156106ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112a0565b604051808215151515815260200191505060405180910390f35b610747611345565b005b6107956004803603604081101561075f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611606565b604051808215151515815260200191505060405180910390f35b6107f1600480360360208110156107c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061161d565b6040518082815260200191505060405180910390f35b6108a86004803603606081101561081d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561086457600080fd5b82018360208201111561087657600080fd5b8035906020019184600183028401116401000000008311171561089857600080fd5b909192939192939050505061162f565b604051808215151515815260200191505060405180910390f35b610918600480360360608110156108d857600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c0565b005b61092261184a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109c66004803603604081101561097a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611870565b6040518082815260200191505060405180910390f35b610a1e600480360360208110156109f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f7565b005b610a286119b5565b6040518082815260200191505060405180910390f35b610a8a60048036036040811015610a5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119c5565b604051808381526020018281526020019250505060405180910390f35b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b3d5780601f10610b1257610100808354040283529160200191610b3d565b820191906000526020600020905b815481529060010190602001808311610b2057829003601f168201915b505050505081565b6000610b523384846119dd565b6001905092915050565b6000600254905090565b600080610b733384611bd4565b91509150915091565b6000610b89848484611db4565b610c228433610c1d85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6119dd565b600190509392505050565b600960009054906101000a900460ff1681565b6000610cdb3384610cd685600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ea90919063ffffffff16565b6119dd565b6001905092915050565b6000610cf2338686611db4565b8473ffffffffffffffffffffffffffffffffffffffff1663a4c0ed36338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506040513d6020811015610dd757600080fd5b81019080805190602001909291905050505060019050949350505050565b610dff3382612172565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e526111aa565b610ec4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061283f6022913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61117a82826123c4565b5050565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112985780601f1061126d57610100808354040283529160200191611298565b820191906000526020600020905b81548152906001019060200180831161127b57829003601f168201915b505050505081565b600061133b338461133685600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6119dd565b6001905092915050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f556e6c6f636b3a204e6f206c6f636b732100000000000000000000000000000081525060200191505060405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008090505b8180549050811015611602574282828154811061145f57fe5b90600052602060002090600202016001015410156115f557600082828154811061148557fe5b906000526020600020906002020160000154905060055481111580156114e957506000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b61153e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127f96025913960400191505060405180910390fd5b6115538160055461206190919063ffffffff16565b600581905550611564303383611db4565b60008290505b60018480549050038110156115d45783600182018154811061158857fe5b90600052602060002090600202018482815481106115a257fe5b90600052602060002090600202016000820154816000015560018201548160010155905050808060010191505061156a565b50828054809190600190036115e9919061272d565b50818060019003925050505b8080600101915050611446565b5050565b6000611613338484611db4565b6001905092915050565b60006116288261255d565b9050919050565b600061163b8585610b45565b6116ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a20417070726f766520756e73756363657366756c6c000000000081525060200191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133863087876040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561179c57600080fd5b505af11580156117b0573d6000803e3d6000fd5b5050505060019050949350505050565b6117c86111aa565b61183a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6118458383836125a9565b505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118ff6111aa565b611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006119c03361255d565b905090565b6000806119d28484611bd4565b915091509250929050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806128826024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ae9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127d76022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000806000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611c8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53686f774c6f636b3a204e6f206c6f636b73210000000000000000000000000081525060200191505060405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508310611d29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127b26025913960400191505060405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050808481548110611d7857fe5b906000526020600020906002020160000154818581548110611d9657fe5b90600052602060002090600202016001015492509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061278f6023913960400191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611ed1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061281e6021913960400191505060405180910390fd5b611f22816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fb5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ea90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000828211156120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806128616021913960400191505060405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4275726e3a206e6f7420656e6f75676820746f6b656e7300000000000000000081525060200191505060405180910390fd5b6122c18160025461206190919063ffffffff16565b600281905550612318816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4275726e3a20616c6c6f77616e636520746f6f206c6f7700000000000000000081525060200191505060405180910390fd5b6124c08282612172565b612559823361255484600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206190919063ffffffff16565b6119dd565b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506126016005548261206190919063ffffffff16565b831115612676576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4c6f636b3a204e6f7420656e6f75676820746f6b656e7300000000000000000081525060200191505060405180910390fd5b61268b836005546120ea90919063ffffffff16565b600581905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180604001604052808581526020018681525090806001815401808255809150509060018203906000526020600020906002020160009091929091909150600082015181600001556020820151816001015550505050505050565b81548183558181111561275a57600202816002028360005260206000209182019101612759919061275f565b5b505050565b61278b91905b8082111561278757600080820160009055600182016000905550600201612765565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737353686f774c6f636b3a20496e646578206f766572206e756d626572206f66206c6f636b732e45524332303a20617070726f766520746f20746865207a65726f2061646472657373556e6c6f636b3a204e6f7420656e6f75676820636f696e73206f6e20636f6e7472616374214552433230207472616e736665723a206e6f7420656e6f75676820746f6b656e734f776e61626c653a206f6e6c79206e6577204f776e65722063616e2061636365707445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723058208ac84ff671f4c81efffddb3621dbb99d64712ec7a620e76adf448afea1b8927f64736f6c634300050a0032

Deployed Bytecode Sourcemap

428:1901:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;428:1901:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;530:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2604:133:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2604:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;898:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2937:119:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2937:119:6;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3176:209:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3176:209:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;576:21:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3869:190:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3869:190:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2078:246:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2078:246:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2078:246:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2078:246:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2078:246:3;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;288:72:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;288:72:0;;;;;;;;;;;;;;;;;:::i;:::-;;1179:99:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1179:99:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1041:125:4;;;:::i;:::-;;1426:207;;;:::i;:::-;;593:88:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;593:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;123:25:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;240:20:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;626:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;552:20:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;552:20:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4548:200:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4548:200:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1225:848:6;;;:::i;:::-;;1868:127:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1868:127:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2528:97:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2528:97:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1427:329:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1427:329:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1427:329:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1427:329:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1427:329:3;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;594:133:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;594:133:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;264:23:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1591:124:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1591:124:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1326:95:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1326:95:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;2289:94:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3286:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3286:124:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;530:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2604:133:1:-;2669:4;2680:36;2689:10;2701:7;2710:5;2680:8;:36::i;:::-;2728:4;2721:11;;2604:133;;;;:::o;898:84::-;944:7;965:12;;958:19;;898:84;:::o;2937:119:6:-;2987:4;2993;3022:26;3032:10;3044:3;3022:9;:26::i;:::-;3015:33;;;;2937:119;;;:::o;3176:209:1:-;3257:4;3268:26;3278:4;3284:2;3288:5;3268:9;:26::i;:::-;3299:65;3308:4;3314:10;3326:37;3357:5;3326:8;:14;3335:4;3326:14;;;;;;;;;;;;;;;:26;3341:10;3326:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;3299:8;:65::i;:::-;3376:4;3369:11;;3176:209;;;;;:::o;576:21:3:-;;;;;;;;;;;;;:::o;3869:190:1:-;3951:4;3962:76;3971:10;3983:7;3992:45;4026:10;3992:8;:20;4001:10;3992:20;;;;;;;;;;;;;;;:29;4013:7;3992:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;3962:8;:76::i;:::-;4050:4;4043:11;;3869:190;;;;:::o;2078:246:3:-;2169:12;2197:34;2207:10;2219:3;2224:6;2197:9;:34::i;:::-;2254:3;2236:38;;;2275:10;2287:6;2295:5;;2236:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2236:65:3;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2236:65:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2236:65:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2236:65:3;;;;;;;;;;;;;;;;;2313:4;2306:11;;2078:246;;;;;;:::o;288:72:0:-;331:24;337:10;349:5;331;:24::i;:::-;288:72;:::o;1179:99:1:-;1236:7;1257:9;:16;1267:5;1257:16;;;;;;;;;;;;;;;;1250:23;;1179:99;;;:::o;1041:125:4:-;490:9;:7;:9::i;:::-;482:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:1;1099:39;;1120:5;;;;;;;;;;;1099:39;;;;;;;;;;;;1159:1;1143:5;;:18;;;;;;;;;;;;;;;;;;1041:125::o;1426:207::-;1485:10;1473:22;;:8;;;;;;;;;;;:22;;;1464:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1572:8;;;;;;;;;;;1544:37;;1565:5;;;;;;;;;;;1544:37;;;;;;;;;;;;1594:8;;;;;;;;;;;1586:5;;:16;;;;;;;;;;;;;;;;;;1626:1;1607:8;;:21;;;;;;;;;;;;;;;;;;1426:207::o;593:88:0:-;654:22;664:4;670:5;654:9;:22::i;:::-;593:88;;:::o;123:25:6:-;;;;:::o;240:20:4:-;;;;;;;;;;;;;:::o;626:82::-;666:4;698:5;;;;;;;;;;;684:19;;:10;:19;;;677:26;;626:82;:::o;552:20:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4548:200:1:-;4635:4;4646:81;4655:10;4667:7;4676:50;4710:15;4676:8;:20;4685:10;4676:20;;;;;;;;;;;;;;;:29;4697:7;4676:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;4646:8;:81::i;:::-;4739:4;4732:11;;4548:200;;;;:::o;1225:848:6:-;1307:1;1276:9;:21;1286:10;1276:21;;;;;;;;;;;;;;;:28;;;;:32;1268:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1341:18;1362:9;:21;1372:10;1362:21;;;;;;;;;;;;;;;1341:42;;1399:6;1408:1;1399:10;;1394:672;1415:1;:8;;;;1411:1;:12;1394:672;;;1541:15;1525:1;1527;1525:4;;;;;;;;;;;;;;;;;;:13;;;:31;1521:534;;;1577:11;1591:1;1593;1591:4;;;;;;;;;;;;;;;;;;:11;;;1577:25;;1639:13;;1629:6;:23;;:61;;;;;1666:9;:24;1684:4;1666:24;;;;;;;;;;;;;;;;1656:6;:34;;1629:61;1621:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1767:25;1785:6;1767:13;;:17;;:25;;;;:::i;:::-;1751:13;:41;;;;1811:44;1829:4;1836:10;1848:6;1811:9;:44::i;:::-;1879:6;1888:1;1879:10;;1874:115;1906:1;1895;:8;;;;:12;1891:1;:16;1874:115;;;1961:1;1967;1963;:5;1961:8;;;;;;;;;;;;;;;;;;1954:1;1956;1954:4;;;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;;1909:3;;;;;;;1874:115;;;;2007:1;:10;;;;;;;;;;;;:::i;:::-;;2036:3;;;;;;;;1521:534;;1425:3;;;;;;;1394:672;;;;1225:848;:::o;1868:127:1:-;1931:4;1942:32;1952:10;1964:2;1968:5;1942:9;:32::i;:::-;1986:4;1979:11;;1868:127;;;;:::o;2528:97:6:-;2581:4;2605:12;2612:4;2605:6;:12::i;:::-;2598:19;;2528:97;;;:::o;1427:329:3:-;1531:12;1566:26;1574:8;1584:7;1566;:26::i;:::-;1558:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1653:8;1635:43;;;1679:10;1691:7;1708:4;1715:10;;1635:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1635:91:3;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1635:91:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1635:91:3;;;;1744:4;1737:11;;1427:329;;;;;;:::o;594:133:6:-;490:9:4;:7;:9::i;:::-;482:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;685:34:6;691:13;706:6;714:4;685:5;:34::i;:::-;594:133;;;:::o;264:23:4:-;;;;;;;;;;;;;:::o;1591:124:1:-;1665:7;1686:8;:15;1695:5;1686:15;;;;;;;;;;;;;;;:24;1702:7;1686:24;;;;;;;;;;;;;;;;1679:31;;1591:124;;;;:::o;1326:95:4:-;490:9;:7;:9::i;:::-;482:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1407:9;1396:8;;:20;;;;;;;;;;;;;;;;;;1326:95;:::o;2289:94:6:-;2328:4;2357:18;2364:10;2357:6;:18::i;:::-;2350:25;;2289:94;:::o;3286:124::-;3352:4;3358;3382:20;3392:4;3398:3;3382:9;:20::i;:::-;3375:27;;;;3286:124;;;;;:::o;6700:303:1:-;6804:1;6787:19;;:5;:19;;;;6779:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6879:1;6860:21;;:7;:21;;;;6852:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6952:5;6925:8;:15;6934:5;6925:15;;;;;;;;;;;;;;;:24;6941:7;6925:24;;;;;;;;;;;;;;;:32;;;;6983:7;6967:31;;6976:5;6967:31;;;6992:5;6967:31;;;;;;;;;;;;;;;;;;6700:303;;;:::o;3418:340:6:-;3483:4;3489;3539:1;3514:9;:15;3524:4;3514:15;;;;;;;;;;;;;;;:22;;;;:26;3506:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3589:9;:15;3599:4;3589:15;;;;;;;;;;;;;;;:22;;;;3583:3;:28;3575:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3664:18;3685:9;:15;3695:4;3685:15;;;;;;;;;;;;;;;3664:36;;3719:1;3721:3;3719:6;;;;;;;;;;;;;;;;;;:13;;;3734:1;3736:3;3734:6;;;;;;;;;;;;;;;;;;:15;;;3711:39;;;;;3418:340;;;;;:::o;4950:351:1:-;5046:1;5032:16;;:2;:16;;;;5024:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5124:5;5107:9;:15;5117:4;5107:15;;;;;;;;;;;;;;;;:22;;5099:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5190:26;5210:5;5190:9;:15;5200:4;5190:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5172:9;:15;5182:4;5172:15;;;;;;;;;;;;;;;:44;;;;5237:24;5255:5;5237:9;:13;5247:2;5237:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5221:9;:13;5231:2;5221:13;;;;;;;;;;;;;;;:40;;;;5286:2;5271:25;;5280:4;5271:25;;;5290:5;5271:25;;;;;;;;;;;;;;;;;;4950:351;;;:::o;1181:163:5:-;1239:7;1266:1;1261;:6;;1253:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1338:1;1331:8;;;1181:163;;;;:::o;1418:160::-;1476:7;1490:9;1506:1;1502;:5;1490:17;;1525:1;1520;:6;;1512:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1572:1;1565:8;;;1418:160;;;;:::o;6108:345:1:-;6196:1;6177:21;;:7;:21;;;;6169:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6271:5;6249:9;:18;6259:7;6249:18;;;;;;;;;;;;;;;;:27;;6241:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6324:23;6341:5;6324:12;;:16;;:23;;;;:::i;:::-;6309:12;:38;;;;6373:29;6396:5;6373:9;:18;6383:7;6373:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;6352:9;:18;6362:7;6352:18;;;;;;;;;;;;;;;:50;;;;6438:1;6412:36;;6421:7;6412:36;;;6442:5;6412:36;;;;;;;;;;;;;;;;;;6108:345;;:::o;7368:244::-;7472:5;7441:8;:17;7450:7;7441:17;;;;;;;;;;;;;;;:29;7459:10;7441:29;;;;;;;;;;;;;;;;:36;;7433:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7510:21;7516:7;7525:5;7510;:21::i;:::-;7536:71;7545:7;7554:10;7566:40;7600:5;7566:8;:17;7575:7;7566:17;;;;;;;;;;;;;;;:29;7584:10;7566:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;7536:8;:71::i;:::-;7368:244;;:::o;2633:105:6:-;2685:4;2708:9;:15;2718:4;2708:15;;;;;;;;;;;;;;;:22;;;;2701:29;;2633:105;;;:::o;732:325::-;813:12;828:9;:24;846:4;828:24;;;;;;;;;;;;;;;;813:39;;881:26;893:13;;881:7;:11;;:26;;;;:::i;:::-;871:6;:36;;863:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:25;980:6;962:13;;:17;;:25;;;;:::i;:::-;946:13;:41;;;;998:9;:15;1008:4;998:15;;;;;;;;;;;;;;;1019:29;;;;;;;;1026:6;1019:29;;;;1034:13;1019:29;;;998:51;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;998:51:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;732:325;;;;:::o;428:1901:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://8ac84ff671f4c81efffddb3621dbb99d64712ec7a620e76adf448afea1b8927f
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.