false
true
0

Contract Address Details

0x86FADb80d8D2cff3C3680819E4da99C10232Ba0F

Token
EURBASE Stablecoin (EBASE)
Creator
0x736c3d–2fd933 at 0x8adc1a–9f98aa
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
2,528 Transactions
Transfers
0 Transfers
Gas Used
102,058,016
Last Balance Update
25904333
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
EBASE




Optimization enabled
true
Compiler version
v0.5.11+commit.c082d0b4




Optimization runs
200
EVM Version
petersburg




Verified at
2026-02-28T07:24:36.151315Z

EBASE.sol

pragma solidity ^0.5.7;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

    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);

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

interface IERC223 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);

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

    function transfer(address to, uint value) external returns (bool);
    function transfer(address to, uint value, bytes calldata data) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint value, bytes indexed data);
}

contract ContractReceiver {
    function tokenFallback(address _from, uint _value, bytes memory _data) public {

    }
}

/**
 * @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);

        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);
        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);
        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);

        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);
        return a % b;
    }
}

/**
 * @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;


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


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }


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


    /**
     * @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) onlyOwner public {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;


    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() public onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }
}

/**
 * @title Blacklistable Token
 * @dev Allows accounts to be blacklisted by a "blacklister" role
*/
contract Blacklistable is Pausable {

    address public blacklister;
    mapping(address => bool) internal blacklisted;

    event Blacklisted(address indexed _account);
    event UnBlacklisted(address indexed _account);
    event BlacklisterChanged(address indexed newBlacklister);

    constructor() public {
        blacklister = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the blacklister
    */
    modifier onlyBlacklister() {
        require(msg.sender == blacklister);
        _;
    }

    /**
     * @dev Throws if argument account is blacklisted
     * @param _account The address to check
    */
    modifier notBlacklisted(address _account) {
        require(blacklisted[_account] == false);
        _;
    }

    /**
     * @dev Checks if account is blacklisted
     * @param _account The address to check
    */
    function isBlacklisted(address _account) public view returns (bool) {
        return blacklisted[_account];
    }

    /**
     * @dev Adds account to blacklist
     * @param _account The address to blacklist
    */
    function blacklist(address _account) public onlyBlacklister {
        blacklisted[_account] = true;
        emit Blacklisted(_account);
    }

    /**
     * @dev Removes account from blacklist
     * @param _account The address to remove from the blacklist
    */
    function unBlacklist(address _account) public onlyBlacklister {
        blacklisted[_account] = false;
        emit UnBlacklisted(_account);
    }

    function updateBlacklister(address _newBlacklister) public onlyOwner {
        require(_newBlacklister != address(0));
        blacklister = _newBlacklister;
        emit BlacklisterChanged(blacklister);
    }
}


contract StandardToken is IERC20, IERC223, Pausable, Blacklistable {
    uint256 public totalSupply;

    using SafeMath for uint;

    mapping (address => uint256) internal balances;
    mapping (address => mapping (address => uint256)) internal allowed;

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }

    function transferFrom(address _from, address _to, uint256 _value) whenNotPaused notBlacklisted(_to) notBlacklisted(msg.sender) notBlacklisted(_from) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value) whenNotPaused notBlacklisted(msg.sender) notBlacklisted(_spender) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }

    function increaseApproval(address _spender, uint _addedValue) whenNotPaused notBlacklisted(msg.sender) notBlacklisted(_spender) public returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval(address _spender, uint _subtractedValue) whenNotPaused notBlacklisted(msg.sender) notBlacklisted(_spender) public returns (bool) {
        uint oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    // Function that is called when a user or another contract wants to transfer funds.
    function transfer(address _to, uint _value, bytes memory _data) whenNotPaused notBlacklisted(msg.sender) notBlacklisted(_to) public returns (bool success) {
        if (isContract(_to)) {
            return transferToContract(_to, _value, _data);
        } else {
            return transferToAddress(_to, _value, _data);
        }
    }

    // Standard function transfer similar to ERC20 transfer with no _data.
    // Added due to backwards compatibility reasons.
    function transfer(address _to, uint _value) whenNotPaused notBlacklisted(msg.sender) notBlacklisted(_to) public returns (bool success) {
        bytes memory empty;
        if (isContract(_to)) {
            return transferToContract(_to, _value, empty);
        } else {
            return transferToAddress(_to, _value, empty);
        }
    }

    // Assemble the given address bytecode. If bytecode exists then the _addr is a contract.
    function isContract(address _addr) private view returns (bool is_contract) {
        uint length;
        require(_addr != address(0));
        assembly {
            //retrieve the size of the code on target address, this needs assembly
            length := extcodesize(_addr)
        }
        return (length > 0);
    }

    // Function that is called when transaction target is an address.
    function transferToAddress(address _to, uint _value, bytes memory _data) private returns (bool success) {
        require(balances[msg.sender] >= _value);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        emit Transfer(msg.sender, _to, _value, _data);
        return true;
    }

    // Function that is called when transaction target is a contract.
    function transferToContract(address _to, uint _value, bytes memory _data) private returns (bool success) {
        require(balances[msg.sender] >= _value);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        ContractReceiver receiver = ContractReceiver(_to);
        receiver.tokenFallback(msg.sender, _value, _data);
        emit Transfer(msg.sender, _to, _value);
        emit Transfer(msg.sender, _to, _value, _data);
        return true;
    }
}

/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */
contract MintableToken is StandardToken {
    event Mint(address indexed to, uint256 amount);
    event MintFinished();

    bool public mintingFinished = false;


    modifier canMint() {
        require(!mintingFinished);
        _;
    }

    /**
     * @dev Function to mint tokens
     * @param _to The address that will receive the minted tokens.
     * @param _amount The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
        totalSupply = totalSupply.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        emit Mint(_to, _amount);
        emit Transfer(address(0), _to, _amount);
        return true;
    }

    /**
     * @dev Function to stop minting new tokens.
     * @return True if the operation was successful.
     */
    function finishMinting() onlyOwner canMint public returns (bool) {
        mintingFinished = true;
        emit MintFinished();
        return true;
    }
}

/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is MintableToken {

  event Burn(address indexed burner, uint256 value);

  /**
   * @dev Burns a specific amount of tokens.
   * @param _value The amount of token to be burned.
   */
  function burn(uint256 _value) public {
    _burn(msg.sender, _value);
  }

  function _burn(address _who, uint256 _value) internal {
    require(_value <= balances[_who]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    balances[_who] = balances[_who].sub(_value);
    totalSupply = totalSupply.sub(_value);
    emit Burn(_who, _value);
    emit Transfer(_who, address(0), _value);
  }
}

contract EBASE is BurnableToken {
    string public constant name = "EURBASE Stablecoin";
    string public constant symbol = "EBASE";
    uint8 public constant decimals = 18;
    uint256 public constant initialSupply = 1000000 * 10 ** uint256(decimals);

    constructor () public {
        totalSupply = initialSupply;
        balances[msg.sender] = initialSupply;
    }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"petersburg","compilationTarget":{"EBASE.sol":"EBASE"}}
              

Contract ABI

[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"mintingFinished","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"_spender","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"unBlacklist","inputs":[{"type":"address","name":"_account","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"initialSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"unpause","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"mint","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"_value","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"paused","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseApproval","inputs":[{"type":"address","name":"_spender","internalType":"address"},{"type":"uint256","name":"_subtractedValue","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"balance","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"_owner","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"finishMinting","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"pause","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"updateBlacklister","inputs":[{"type":"address","name":"_newBlacklister","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address"}],"name":"blacklister","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"},{"type":"bytes","name":"_data","internalType":"bytes"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseApproval","inputs":[{"type":"address","name":"_spender","internalType":"address"},{"type":"uint256","name":"_addedValue","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"_owner","internalType":"address"},{"type":"address","name":"_spender","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"blacklist","inputs":[{"type":"address","name":"_account","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isBlacklisted","inputs":[{"type":"address","name":"_account","internalType":"address"}],"constant":true},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[]},{"type":"event","name":"Burn","inputs":[{"type":"address","name":"burner","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"MintFinished","inputs":[],"anonymous":false},{"type":"event","name":"Blacklisted","inputs":[{"type":"address","name":"_account","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"UnBlacklisted","inputs":[{"type":"address","name":"_account","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"BlacklisterChanged","inputs":[{"type":"address","name":"newBlacklister","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Pause","inputs":[],"anonymous":false},{"type":"event","name":"Unpause","inputs":[],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false},{"type":"bytes","name":"data","internalType":"bytes","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false}]
              

Contract Creation Code

Verify & Publish
0x60806040526000805460ff60a01b191690556006805460ff1916905534801561002757600080fd5b50600080546001600160a01b031990811633908117835560018054909216811790915569d3c21bcecceda1000000600381905590825260046020526040909120556115ea806100776000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063bd10243011610097578063dd62ed3e11610071578063dd62ed3e14610539578063f2fde38b14610567578063f9f92be41461058d578063fe575a87146105b3576101a9565b8063bd1024301461044a578063be45fd6214610452578063d73dd6231461050d576101a9565b80638da5cb5b116100d35780638da5cb5b146103cc57806395d89b41146103f0578063a9059cbb146103f8578063ad38bf2214610424576101a9565b806370a08231146103965780637d64bcb4146103bc5780638456cb59146103c4576101a9565b8063313ce5671161016657806340c10f191161014057806340c10f191461031957806342966c68146103455780635c975abb14610362578063661884631461036a576101a9565b8063313ce567146102eb578063378dc3dc146103095780633f4ba83a14610311576101a9565b806305d2035b146101ae57806306fdde03146101ca578063095ea7b31461024757806318160ddd146102735780631a8952661461028d57806323b872dd146102b5575b600080fd5b6101b66105d9565b604080519115158252519081900360200190f35b6101d26105e2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020c5781810151838201526020016101f4565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b66004803603604081101561025d57600080fd5b506001600160a01b038135169060200135610610565b61027b6106d8565b60408051918252519081900360200190f35b6102b3600480360360208110156102a357600080fd5b50356001600160a01b03166106de565b005b6101b6600480360360608110156102cb57600080fd5b506001600160a01b0381358116916020810135909116906040013561073e565b6102f3610929565b6040805160ff9092168252519081900360200190f35b61027b61092e565b6102b361093c565b6101b66004803603604081101561032f57600080fd5b506001600160a01b03813516906020013561099f565b6102b36004803603602081101561035b57600080fd5b5035610a90565b6101b6610a9d565b6101b66004803603604081101561038057600080fd5b506001600160a01b038135169060200135610aad565b61027b600480360360208110156103ac57600080fd5b50356001600160a01b0316610bfc565b6101b6610c17565b6102b3610c7b565b6103d4610ce5565b604080516001600160a01b039092168252519081900360200190f35b6101d2610cf4565b6101b66004803603604081101561040e57600080fd5b506001600160a01b038135169060200135610d15565b6102b36004803603602081101561043a57600080fd5b50356001600160a01b0316610da0565b6103d4610e1a565b6101b66004803603606081101561046857600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111640100000000831117156104cc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e29945050505050565b6101b66004803603604081101561052357600080fd5b506001600160a01b038135169060200135610eba565b61027b6004803603604081101561054f57600080fd5b506001600160a01b0381358116916020013516610fb2565b6102b36004803603602081101561057d57600080fd5b50356001600160a01b0316610fdd565b6102b3600480360360208110156105a357600080fd5b50356001600160a01b0316611062565b6101b6600480360360208110156105c957600080fd5b50356001600160a01b03166110c5565b60065460ff1681565b6040518060400160405280601281526020017122aaa92120a9a29029ba30b13632b1b7b4b760711b81525081565b60008054600160a01b900460ff161561062857600080fd5b3360008181526002602052604090205460ff161561064557600080fd5b6001600160a01b038416600090815260026020526040902054849060ff161561066d57600080fd5b3360008181526005602090815260408083206001600160a01b038a1680855290835292819020889055805188815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600192505b505092915050565b60035481565b6001546001600160a01b031633146106f557600080fd5b6001600160a01b038116600081815260026020526040808220805460ff19169055517f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9190a250565b60008054600160a01b900460ff161561075657600080fd5b6001600160a01b038316600090815260026020526040902054839060ff161561077e57600080fd5b3360008181526002602052604090205460ff161561079b57600080fd5b6001600160a01b038616600090815260026020526040902054869060ff16156107c357600080fd5b6001600160a01b0386166107d657600080fd5b6001600160a01b0387166000908152600460205260409020548511156107fb57600080fd5b6001600160a01b038716600090815260056020908152604080832033845290915290205485111561082b57600080fd5b6001600160a01b038716600090815260046020526040902054610854908663ffffffff6110e316565b6001600160a01b038089166000908152600460205260408082209390935590881681522054610889908663ffffffff6110f816565b6001600160a01b03808816600090815260046020908152604080832094909455918a1681526005825282812033825290915220546108cd908663ffffffff6110e316565b6001600160a01b0380891660008181526005602090815260408083203384528252918290209490945580518981529051928a16939192600080516020611596833981519152929181900390910190a35060019695505050505050565b601281565b69d3c21bcecceda100000081565b6000546001600160a01b0316331461095357600080fd5b600054600160a01b900460ff1661096957600080fd5b6000805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600080546001600160a01b031633146109b757600080fd5b60065460ff16156109c757600080fd5b6003546109da908363ffffffff6110f816565b6003556001600160a01b038316600090815260046020526040902054610a06908363ffffffff6110f816565b6001600160a01b038416600081815260046020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a26040805183815290516001600160a01b038516916000916000805160206115968339815191529181900360200190a350600192915050565b610a9a3382611111565b50565b600054600160a01b900460ff1681565b60008054600160a01b900460ff1615610ac557600080fd5b3360008181526002602052604090205460ff1615610ae257600080fd5b6001600160a01b038416600090815260026020526040902054849060ff1615610b0a57600080fd5b3360009081526005602090815260408083206001600160a01b038916845290915290205480851115610b5f573360009081526005602090815260408083206001600160a01b038a168452909152812055610b94565b610b6f818663ffffffff6110e316565b3360009081526005602090815260408083206001600160a01b038b1684529091529020555b3360008181526005602090815260408083206001600160a01b038b168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600195945050505050565b6001600160a01b031660009081526004602052604090205490565b600080546001600160a01b03163314610c2f57600080fd5b60065460ff1615610c3f57600080fd5b6006805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b6000546001600160a01b03163314610c9257600080fd5b600054600160a01b900460ff1615610ca957600080fd5b6000805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b6000546001600160a01b031681565b60405180604001604052806005815260200164454241534560d81b81525081565b60008054600160a01b900460ff1615610d2d57600080fd5b3360008181526002602052604090205460ff1615610d4a57600080fd5b6001600160a01b038416600090815260026020526040902054849060ff1615610d7257600080fd5b6060610d7d86611200565b15610d9557610d8d86868361121e565b9350506106d0565b610d8d868683611443565b6000546001600160a01b03163314610db757600080fd5b6001600160a01b038116610dca57600080fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b6001546001600160a01b031681565b60008054600160a01b900460ff1615610e4157600080fd5b3360008181526002602052604090205460ff1615610e5e57600080fd5b6001600160a01b038516600090815260026020526040902054859060ff1615610e8657600080fd5b610e8f86611200565b15610ea657610e9f86868661121e565b9250610eb1565b610e9f868686611443565b50509392505050565b60008054600160a01b900460ff1615610ed257600080fd5b3360008181526002602052604090205460ff1615610eef57600080fd5b6001600160a01b038416600090815260026020526040902054849060ff1615610f1757600080fd5b3360009081526005602090815260408083206001600160a01b0389168452909152902054610f4b908563ffffffff6110f816565b3360008181526005602090815260408083206001600160a01b038b168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a3506001949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6000546001600160a01b03163314610ff457600080fd5b6001600160a01b03811661100757600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461107957600080fd5b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a250565b6001600160a01b031660009081526002602052604090205460ff1690565b6000828211156110f257600080fd5b50900390565b60008282018381101561110a57600080fd5b9392505050565b6001600160a01b03821660009081526004602052604090205481111561113657600080fd5b6001600160a01b03821660009081526004602052604090205461115f908263ffffffff6110e316565b6001600160a01b03831660009081526004602052604090205560035461118b908263ffffffff6110e316565b6003556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a26040805182815290516000916001600160a01b038516916000805160206115968339815191529181900360200190a35050565b6000806001600160a01b03831661121657600080fd5b50503b151590565b3360009081526004602052604081205483111561123a57600080fd5b3360009081526004602052604090205461125a908463ffffffff6110e316565b33600090815260046020526040808220929092556001600160a01b0386168152205461128c908463ffffffff6110f816565b6001600160a01b038516600081815260046020818152604080842095909555935163607705c560e11b815233918101828152602482018990526060604483019081528851606484015288518b9763c0ee0b8a968c958c9594936084909101928601918190849084905b8381101561130d5781810151838201526020016112f5565b50505050905090810190601f16801561133a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561135b57600080fd5b505af115801561136f573d6000803e3d6000fd5b50506040805187815290516001600160a01b03891693503392506000805160206115968339815191529181900360200190a3826040518082805190602001908083835b602083106113d15780518252601f1990920191602091820191016113b2565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208a835293519395506001600160a01b038b16945033937fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c169350918290030190a4506001949350505050565b3360009081526004602052604081205483111561145f57600080fd5b3360009081526004602052604090205461147f908463ffffffff6110e316565b33600090815260046020526040808220929092556001600160a01b038616815220546114b1908463ffffffff6110f816565b6001600160a01b0385166000818152600460209081526040918290209390935580518681529051919233926000805160206115968339815191529281900390910190a3816040518082805190602001908083835b602083106115245780518252601f199092019160209182019101611505565b51815160209384036101000a60001901801990921691161790526040805192909401829003822089835293519395506001600160a01b038a16945033937fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c169350918290030190a4506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72315820972f3ff59cad63a5e18bee8973d14f7b3efad6ca31424c08898169d863aa15af64736f6c634300050b0032

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063bd10243011610097578063dd62ed3e11610071578063dd62ed3e14610539578063f2fde38b14610567578063f9f92be41461058d578063fe575a87146105b3576101a9565b8063bd1024301461044a578063be45fd6214610452578063d73dd6231461050d576101a9565b80638da5cb5b116100d35780638da5cb5b146103cc57806395d89b41146103f0578063a9059cbb146103f8578063ad38bf2214610424576101a9565b806370a08231146103965780637d64bcb4146103bc5780638456cb59146103c4576101a9565b8063313ce5671161016657806340c10f191161014057806340c10f191461031957806342966c68146103455780635c975abb14610362578063661884631461036a576101a9565b8063313ce567146102eb578063378dc3dc146103095780633f4ba83a14610311576101a9565b806305d2035b146101ae57806306fdde03146101ca578063095ea7b31461024757806318160ddd146102735780631a8952661461028d57806323b872dd146102b5575b600080fd5b6101b66105d9565b604080519115158252519081900360200190f35b6101d26105e2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020c5781810151838201526020016101f4565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b66004803603604081101561025d57600080fd5b506001600160a01b038135169060200135610610565b61027b6106d8565b60408051918252519081900360200190f35b6102b3600480360360208110156102a357600080fd5b50356001600160a01b03166106de565b005b6101b6600480360360608110156102cb57600080fd5b506001600160a01b0381358116916020810135909116906040013561073e565b6102f3610929565b6040805160ff9092168252519081900360200190f35b61027b61092e565b6102b361093c565b6101b66004803603604081101561032f57600080fd5b506001600160a01b03813516906020013561099f565b6102b36004803603602081101561035b57600080fd5b5035610a90565b6101b6610a9d565b6101b66004803603604081101561038057600080fd5b506001600160a01b038135169060200135610aad565b61027b600480360360208110156103ac57600080fd5b50356001600160a01b0316610bfc565b6101b6610c17565b6102b3610c7b565b6103d4610ce5565b604080516001600160a01b039092168252519081900360200190f35b6101d2610cf4565b6101b66004803603604081101561040e57600080fd5b506001600160a01b038135169060200135610d15565b6102b36004803603602081101561043a57600080fd5b50356001600160a01b0316610da0565b6103d4610e1a565b6101b66004803603606081101561046857600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111640100000000831117156104cc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e29945050505050565b6101b66004803603604081101561052357600080fd5b506001600160a01b038135169060200135610eba565b61027b6004803603604081101561054f57600080fd5b506001600160a01b0381358116916020013516610fb2565b6102b36004803603602081101561057d57600080fd5b50356001600160a01b0316610fdd565b6102b3600480360360208110156105a357600080fd5b50356001600160a01b0316611062565b6101b6600480360360208110156105c957600080fd5b50356001600160a01b03166110c5565b60065460ff1681565b6040518060400160405280601281526020017122aaa92120a9a29029ba30b13632b1b7b4b760711b81525081565b60008054600160a01b900460ff161561062857600080fd5b3360008181526002602052604090205460ff161561064557600080fd5b6001600160a01b038416600090815260026020526040902054849060ff161561066d57600080fd5b3360008181526005602090815260408083206001600160a01b038a1680855290835292819020889055805188815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600192505b505092915050565b60035481565b6001546001600160a01b031633146106f557600080fd5b6001600160a01b038116600081815260026020526040808220805460ff19169055517f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9190a250565b60008054600160a01b900460ff161561075657600080fd5b6001600160a01b038316600090815260026020526040902054839060ff161561077e57600080fd5b3360008181526002602052604090205460ff161561079b57600080fd5b6001600160a01b038616600090815260026020526040902054869060ff16156107c357600080fd5b6001600160a01b0386166107d657600080fd5b6001600160a01b0387166000908152600460205260409020548511156107fb57600080fd5b6001600160a01b038716600090815260056020908152604080832033845290915290205485111561082b57600080fd5b6001600160a01b038716600090815260046020526040902054610854908663ffffffff6110e316565b6001600160a01b038089166000908152600460205260408082209390935590881681522054610889908663ffffffff6110f816565b6001600160a01b03808816600090815260046020908152604080832094909455918a1681526005825282812033825290915220546108cd908663ffffffff6110e316565b6001600160a01b0380891660008181526005602090815260408083203384528252918290209490945580518981529051928a16939192600080516020611596833981519152929181900390910190a35060019695505050505050565b601281565b69d3c21bcecceda100000081565b6000546001600160a01b0316331461095357600080fd5b600054600160a01b900460ff1661096957600080fd5b6000805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600080546001600160a01b031633146109b757600080fd5b60065460ff16156109c757600080fd5b6003546109da908363ffffffff6110f816565b6003556001600160a01b038316600090815260046020526040902054610a06908363ffffffff6110f816565b6001600160a01b038416600081815260046020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a26040805183815290516001600160a01b038516916000916000805160206115968339815191529181900360200190a350600192915050565b610a9a3382611111565b50565b600054600160a01b900460ff1681565b60008054600160a01b900460ff1615610ac557600080fd5b3360008181526002602052604090205460ff1615610ae257600080fd5b6001600160a01b038416600090815260026020526040902054849060ff1615610b0a57600080fd5b3360009081526005602090815260408083206001600160a01b038916845290915290205480851115610b5f573360009081526005602090815260408083206001600160a01b038a168452909152812055610b94565b610b6f818663ffffffff6110e316565b3360009081526005602090815260408083206001600160a01b038b1684529091529020555b3360008181526005602090815260408083206001600160a01b038b168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600195945050505050565b6001600160a01b031660009081526004602052604090205490565b600080546001600160a01b03163314610c2f57600080fd5b60065460ff1615610c3f57600080fd5b6006805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b6000546001600160a01b03163314610c9257600080fd5b600054600160a01b900460ff1615610ca957600080fd5b6000805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b6000546001600160a01b031681565b60405180604001604052806005815260200164454241534560d81b81525081565b60008054600160a01b900460ff1615610d2d57600080fd5b3360008181526002602052604090205460ff1615610d4a57600080fd5b6001600160a01b038416600090815260026020526040902054849060ff1615610d7257600080fd5b6060610d7d86611200565b15610d9557610d8d86868361121e565b9350506106d0565b610d8d868683611443565b6000546001600160a01b03163314610db757600080fd5b6001600160a01b038116610dca57600080fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b6001546001600160a01b031681565b60008054600160a01b900460ff1615610e4157600080fd5b3360008181526002602052604090205460ff1615610e5e57600080fd5b6001600160a01b038516600090815260026020526040902054859060ff1615610e8657600080fd5b610e8f86611200565b15610ea657610e9f86868661121e565b9250610eb1565b610e9f868686611443565b50509392505050565b60008054600160a01b900460ff1615610ed257600080fd5b3360008181526002602052604090205460ff1615610eef57600080fd5b6001600160a01b038416600090815260026020526040902054849060ff1615610f1757600080fd5b3360009081526005602090815260408083206001600160a01b0389168452909152902054610f4b908563ffffffff6110f816565b3360008181526005602090815260408083206001600160a01b038b168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a3506001949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6000546001600160a01b03163314610ff457600080fd5b6001600160a01b03811661100757600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461107957600080fd5b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a250565b6001600160a01b031660009081526002602052604090205460ff1690565b6000828211156110f257600080fd5b50900390565b60008282018381101561110a57600080fd5b9392505050565b6001600160a01b03821660009081526004602052604090205481111561113657600080fd5b6001600160a01b03821660009081526004602052604090205461115f908263ffffffff6110e316565b6001600160a01b03831660009081526004602052604090205560035461118b908263ffffffff6110e316565b6003556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a26040805182815290516000916001600160a01b038516916000805160206115968339815191529181900360200190a35050565b6000806001600160a01b03831661121657600080fd5b50503b151590565b3360009081526004602052604081205483111561123a57600080fd5b3360009081526004602052604090205461125a908463ffffffff6110e316565b33600090815260046020526040808220929092556001600160a01b0386168152205461128c908463ffffffff6110f816565b6001600160a01b038516600081815260046020818152604080842095909555935163607705c560e11b815233918101828152602482018990526060604483019081528851606484015288518b9763c0ee0b8a968c958c9594936084909101928601918190849084905b8381101561130d5781810151838201526020016112f5565b50505050905090810190601f16801561133a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561135b57600080fd5b505af115801561136f573d6000803e3d6000fd5b50506040805187815290516001600160a01b03891693503392506000805160206115968339815191529181900360200190a3826040518082805190602001908083835b602083106113d15780518252601f1990920191602091820191016113b2565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208a835293519395506001600160a01b038b16945033937fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c169350918290030190a4506001949350505050565b3360009081526004602052604081205483111561145f57600080fd5b3360009081526004602052604090205461147f908463ffffffff6110e316565b33600090815260046020526040808220929092556001600160a01b038616815220546114b1908463ffffffff6110f816565b6001600160a01b0385166000818152600460209081526040918290209390935580518681529051919233926000805160206115968339815191529281900390910190a3816040518082805190602001908083835b602083106115245780518252601f199092019160209182019101611505565b51815160209384036101000a60001901801990921691161790526040805192909401829003822089835293519395506001600160a01b038a16945033937fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c169350918290030190a4506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72315820972f3ff59cad63a5e18bee8973d14f7b3efad6ca31424c08898169d863aa15af64736f6c634300050b0032