Contract 0x4cfbbdfbd5bf0814472ff35c72717bd095ada055 4

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf26b02466a6db5330f621da771ccc729df525207804735baec2ba803a0ccce28Transfer118410752021-10-17 4:06:5911 mins ago0xedb4c1b1dd4de1ce4280c4e1110ef5b58391e470 IN  Suterusu: SUTER Token0 BNB0.00019852
0x2413a18fa47e0eb4bc3778ad4bd28c9f1a61dd745e4a939ba4f1de9213b21fa3Transfer118409742021-10-17 4:01:5616 mins ago0x47dea913629afa09de2a945ef8572f9252dbe79d IN  Suterusu: SUTER Token0 BNB0.00032808
0x8c73c2ea01a4207813101bfd169b07e2f27d3e101db98cf6fd191b7a38b12b7dTransfer118409712021-10-17 4:01:4717 mins ago0x844651e1f76babfb71efe2e54f6651d1b1695d13 IN  Suterusu: SUTER Token0 BNB0.000328152
0x088eba69b3e6751a1439564f9ace610e6b8ebee152cc82b9e1e2f71831f30c77Transfer118409682021-10-17 4:01:3817 mins ago0x984299e361aa030a1c9d65dcf5154e5e7a0f3de1 IN  Suterusu: SUTER Token0 BNB0.000328152
0x40aaf6b2f58142c6c7d7596f4f91af2105bd6760a3ce7a960e7a5d0f2bcb1e55Transfer118409462021-10-17 4:00:3218 mins ago0x992a96c3ee1a53165870f2504892fd52e0e081f4 IN  Suterusu: SUTER Token0 BNB0.000328152
0x3191880bd80add8a9b86fd634fd0d56af1c18c632eb6c405fc6e2b29887c0983Transfer118409412021-10-17 4:00:1718 mins ago0x6547c52a27245c0ef510f320cd73036697742553 IN  Suterusu: SUTER Token0 BNB0.000328152
0x7833ff794a2156aede504cf51c1533fe81088d2162d7bbbf7801e0666d06c5a8Approve118407442021-10-17 3:50:2628 mins ago0xb32420d4b21253f739d3786da994d9dde4a9c0eb IN  Suterusu: SUTER Token0 BNB0.000226805
0x2ee1578a5a9a21733ad448ae24a0cb2e6467dc6bb9774b29a10dcd489c2e91e5Transfer118406502021-10-17 3:45:4433 mins ago0xcdedb197e45068c80a8a40bb1f6bacc1888bb66e IN  Suterusu: SUTER Token0 BNB0.00032808
0xfcbc742446d819328af2f5ffc698eef6c6c3b994db7895f689c4a1188ab05cc4Transfer118406472021-10-17 3:45:3533 mins ago0xcf135ed9986f6f6d373d0ae839bae851ba114b6e IN  Suterusu: SUTER Token0 BNB0.00032808
0xbdb571c46818b525238a886cf468b2dc845ab0fbb5eb210efbf3853f8f3c1b0aTransfer118403562021-10-17 3:31:0247 mins ago0x8cec1b524c882882681a053da48c0ecdfea162e6 IN  Suterusu: SUTER Token0 BNB0.000328152
0xa077afb3c7669364a996f7d64877e40765de4f9fd763e6f804146643ffa93ed6Transfer118403492021-10-17 3:30:4148 mins ago0x99fcade514729726f2b1be95f6cf6bfbbd314402 IN  Suterusu: SUTER Token0 BNB0.000328152
0x7e687c70c9c5d286467506827f2f0a8d5a4a9873acd609fb8e422dc615eb15feTransfer118403472021-10-17 3:30:3548 mins ago0x7e80503ed00c6ef5ae3c0f9a376b2f5cd666d9e9 IN  Suterusu: SUTER Token0 BNB0.000328152
0x145a1c2c27eef92b9a0c59be9ac7b96ece125f21aa4c4c5823e8559dafb381e7Transfer118403452021-10-17 3:30:2948 mins ago0xd769b2e58fef3a89900ec4532a18f50f4aba68fb IN  Suterusu: SUTER Token0 BNB0.000328152
0xec6ebda5599c70016122cea07999d6d79e610ca6592b9a93ba50db9e932828b8Transfer118400542021-10-17 3:15:561 hr 2 mins ago0x06212bc819ec160f23a13d1b34e5658d8c5b5e1c IN  Suterusu: SUTER Token0 BNB0.000328152
0x6c28117072b12055e2263990d96e89cf22cdd37b0fcf5e3c63c8c3c1cc269e43Transfer118400522021-10-17 3:15:501 hr 2 mins ago0x3363ac33f29ca22e73044685a2a1aeea2be93a69 IN  Suterusu: SUTER Token0 BNB0.00032808
0x36cd68e1d041a17991f5fd7864b875879e6c181485d30360ab426638be4d4498Transfer118400472021-10-17 3:15:351 hr 3 mins ago0x007727506a3676b2ae1f32bbde7ec48f34a7669a IN  Suterusu: SUTER Token0 BNB0.000328152
0x61304f78a9ad16b5359b28a1c39af0773f9cd59e0a330f91e44916d2da4c49c4Transfer118400412021-10-17 3:15:171 hr 3 mins ago0x8c00531ec649b3c6d5794fd6bede29f7e0b664f0 IN  Suterusu: SUTER Token0 BNB0.000328008
0xa2a0b6c5d7cb824f6e5fe3cd650c5f4e72871e487c81c8ff926245c23ecbaf04Transfer118397512021-10-17 3:00:471 hr 18 mins ago0x7895f51cb7f106058672f8754b24a5753b38853b IN  Suterusu: SUTER Token0 BNB0.000238152
0xb9d8ed5b14001050c45e25c2c62dadba8781fe57cb40e0e4bb22087c8e09d10eTransfer118394592021-10-17 2:46:111 hr 32 mins ago0x379d5803d0e221f3f15facb59f3112bbdbb69771 IN  Suterusu: SUTER Token0 BNB0.000328152
0xe92e2761a331288a490f82604052840586fbb5f1f3f8b17f7b65fe2490dfaf6fApprove118393232021-10-17 2:39:231 hr 39 mins ago0x56468797e7bb33bf5f9076463c3c8adffd7e39d4 IN  Suterusu: SUTER Token0 BNB0.000226805
0x565052d2cc933661c4fd00feec964fd24f8604e4bd52d78fd65b1b0191d67bc6Transfer118392612021-10-17 2:36:171 hr 42 mins ago0x87eb3cb7a99f97ed4658eea3b3ebb7d2e93fa4d2 IN  Suterusu: SUTER Token0 BNB0.00012346
0xa2eaf2940524271acecc10e7e37e15e1a8ecc7c2f5be05683bb45cfc07ea066bTransfer118391532021-10-17 2:30:531 hr 47 mins ago0xe1e5c27fa0a2f5961cd6b9891ea965ad9b7b0b5f IN  Suterusu: SUTER Token0 BNB0.000328152
0x77b2857af93eb190093cfd295397e63687bc5a67025070fd9fb5250a8352ec0dTransfer118391512021-10-17 2:30:471 hr 48 mins ago0x9bc85123964553d8bb491c49fc3b133c18104447 IN  Suterusu: SUTER Token0 BNB0.00032808
0x32a1639cd560bcf7f800e6b232f43ea9744c5982fc4b2151afb784fa7673f4bfTransfer118388452021-10-17 2:15:292 hrs 3 mins ago0x27ef388cbfe31b90bfb82f271e8c1e275bcfce2d IN  Suterusu: SUTER Token0 BNB0.000328152
0x4fa98113674f0188bd9ab214b724a40308ae5fa617b51ea577cce1f0296eb4ecTransfer118385602021-10-17 2:01:142 hrs 17 mins ago0xa0e0d9e93ea8913cd190b5da2e59df7bda51e2ef IN  Suterusu: SUTER Token0 BNB0.000327936
[ Download CSV Export 

OVERVIEW

Suterusu project builds a layer-2 privacy-preserving payment protocol for any smart contract supporting platforms based on our original ZK-ConSNARK technology.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SuterusuToken

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-03-13
*/

pragma solidity ^0.5.0;
/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot 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 Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be 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 Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be aplied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

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

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


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

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

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

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

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

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

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

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


contract BEP20 is IBEP20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    /**
     * @dev See `IBEP20.totalSupply`.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See `IBEP20.balanceOf`.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See `IBEP20.transfer`.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See `IBEP20.allowance`.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IBEP20.approve`.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev See `IBEP20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `BEP20`;
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IBEP20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IBEP20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to `transfer`, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a `Transfer` event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "BEP-20: transfer from the zero address");
        require(recipient != address(0), "BEP-20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a `Transfer` event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "BEP-20: mint to the zero address");

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

     /**
     * @dev Destoys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a `Transfer` event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0), "BEP-20: burn from the zero address");

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an `Approval` event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "BEP-20: approve from the zero address");
        require(spender != address(0), "BEP-20: approve to the zero address");

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

    /**
     * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See `_burn` and `_approve`.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
    }
}
/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

contract PauserRole {
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor () internal {
        _addPauser(msg.sender);
    }

    modifier onlyPauser() {
        require(isPauser(msg.sender), "PauserRole: caller does not have the Pauser role");
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    function addPauser(address account) public onlyPauser {
        _addPauser(account);
    }

    function renouncePauser() public {
        _removePauser(msg.sender);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
contract Pausable is PauserRole {
    /**
     * @dev Emitted when the pause is triggered by a pauser (`account`).
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by a pauser (`account`).
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state. Assigns the Pauser role
     * to the deployer.
     */
    constructor () internal {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

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

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

    /**
     * @dev Called by a pauser to pause, triggers stopped state.
     */
    function pause() public onlyPauser whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    /**
     * @dev Called by a pauser to unpause, returns to normal state.
     */
    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

/**
 * @title Pausable token
 * @dev BEP20 modified with pausable transfers.
 */
contract BEP20Pausable is BEP20, Pausable {
    function transfer(address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transferFrom(from, to, value);
    }

    function approve(address spender, uint256 value) public whenNotPaused returns (bool) {
        return super.approve(spender, value);
    }

    function increaseAllowance(address spender, uint addedValue) public whenNotPaused returns (bool) {
        return super.increaseAllowance(spender, addedValue);
    }

    function decreaseAllowance(address spender, uint subtractedValue) public whenNotPaused returns (bool) {
        return super.decreaseAllowance(spender, subtractedValue);
    }
}


contract Admin is Ownable {

    event AdminRoleAdded(address indexed account);

    event AdminRoleRemoved(address indexed account);

    mapping(address => bool) public AdminRole;

    constructor () internal {
        _addAdmin(msg.sender);
    }

    modifier onlyAdmin() {
        require(AdminRole[msg.sender]);
        _;
    }

    function addAdmin(address account) public onlyOwner {
        _addAdmin(account);
    }

    function removeAdmin(address account) public onlyOwner {
        _removeAdmin(account);
    }

    function renounceAdmin() public {
        _removeAdmin(msg.sender);
    }

    function _addAdmin(address account) internal {
        require(AdminRole[account] == false);
        AdminRole[account] = true;
        emit AdminRoleAdded(account);
    }

    function _removeAdmin(address account) internal {
        require(AdminRole[account] == true);
        AdminRole[account] = false;
        emit AdminRoleRemoved(account);
    }
}

contract Blacklist is Admin {

    mapping (address => bool) private _blacklist;

    event BlacklistAdded(address indexed account);

    event BlacklistRemoved(address indexed account);
    
    function isBlacklist(address account) public view returns (bool) {
        return _blacklist[account];
    }


    function addBlacklist(address account) public onlyAdmin {
        require(_blacklist[account] == false);
        _blacklist[account] = true;
        emit BlacklistAdded(account);
    }

    function removeBlacklist(address account) public onlyAdmin {
        require(_blacklist[account] == true);
        _blacklist[account] = false;
        emit BlacklistRemoved(account);
    }
}
contract SuterusuToken is Blacklist,BEP20, BEP20Pausable {
    string  public constant  name  = "Suterusu";
    string  public constant symbol   = "Suter";
    uint8 public constant decimals = 18;
    uint256 public constant cap = 10000000000 * 10 ** uint256(decimals);
    
    function burn(uint256 amount) onlyOwner public {
        _burn(msg.sender, amount);
    }

    /**
     * @dev See `BEP20._burnFrom`.
     */
    function burnFrom(address account, uint256 amount) onlyOwner public {
        _burnFrom(account, amount);
    }
    
    function mint(address account, uint256 amount) onlyOwner public  {
        require(totalSupply().add(amount) <= cap, "more than token cap");
        require(!isBlacklist(account));
        _mint(account, amount);
    }


    function transfer(address to, uint256 value) public  returns (bool) {
        require(!isBlacklist(msg.sender), "Token: caller in blacklist can't transfer");
        require(!isBlacklist(to), "Token: not allow to transfer to recipient address in blacklist");
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public  returns (bool) {
        require(!isBlacklist(msg.sender), "Token: caller in blacklist can't transferFrom");
        require(!isBlacklist(from), "Token: from in blacklist can't transfer");
        require(!isBlacklist(to), "Token: not allow to transfer to recipient address in blacklist");
        return super.transferFrom(from, to, value);
    }
}

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":"","type":"address"}],"name":"AdminRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"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":true,"inputs":[{"name":"account","type":"address"}],"name":"isBlacklist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"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":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"addBlacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"removeBlacklist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"BlacklistAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"BlacklistRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"AdminRoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"AdminRoleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620000da3362000115640100000000026401000000009004565b620000f43362000212640100000000026401000000009004565b6000600760006101000a81548160ff0219169083151502179055506200048f565b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156200017557600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f25cc8d4039f7afd8efdce4a2a256292a21960a85fee5e8e73a3209d334cdcdab60405160405180910390a250565b620002368160066200027c6401000000000262002f82179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6200029782826200036b640100000000026401000000009004565b1515156200030d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6133cc806200049f6000396000f3fe60806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610190578063095ea7b31461022057806316afc871146102935780631785f53c146102fc57806318160ddd1461034d57806323b872dd14610378578063313ce5671461040b578063333e99db1461043c578063355274ea146104a557806339509351146104d05780633f4ba83a1461054357806340c10f191461055a57806342966c68146105b557806346fbf68e146105f05780635c975abb146106595780636ef8d66d14610688578063704802751461069f57806370a08231146106f057806379cc67901461075557806382dc1ec4146107b05780638456cb59146108015780638bad0c0a146108185780638da5cb5b1461082f5780638f32d59b1461088657806395d89b41146108b55780639cfe42da14610945578063a457c2d714610996578063a9059cbb14610a09578063dd62ed3e14610a7c578063eb91e65114610b01578063f2fde38b14610b52575b600080fd5b34801561019c57600080fd5b506101a5610ba3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e55780820151818401526020810190506101ca565b50505050905090810190601f1680156102125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022c57600080fd5b506102796004803603604081101561024357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bdc565b604051808215151515815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c75565b604051808215151515815260200191505060405180910390f35b34801561030857600080fd5b5061034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c95565b005b34801561035957600080fd5b50610362610d1d565b6040518082815260200191505060405180910390f35b34801561038457600080fd5b506103f16004803603606081101561039b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d27565b604051808215151515815260200191505060405180910390f35b34801561041757600080fd5b50610420610f29565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044857600080fd5b5061048b6004803603602081101561045f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f2e565b604051808215151515815260200191505060405180910390f35b3480156104b157600080fd5b506104ba610f84565b6040518082815260200191505060405180910390f35b3480156104dc57600080fd5b50610529600480360360408110156104f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f96565b604051808215151515815260200191505060405180910390f35b34801561054f57600080fd5b5061055861102f565b005b34801561056657600080fd5b506105b36004803603604081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d6565b005b3480156105c157600080fd5b506105ee600480360360208110156105d857600080fd5b8101908080359060200190929190505050611314565b005b3480156105fc57600080fd5b5061063f6004803603602081101561061357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061139d565b604051808215151515815260200191505060405180910390f35b34801561066557600080fd5b5061066e6113ba565b604051808215151515815260200191505060405180910390f35b34801561069457600080fd5b5061069d6113d1565b005b3480156106ab57600080fd5b506106ee600480360360208110156106c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113dc565b005b3480156106fc57600080fd5b5061073f6004803603602081101561071357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611464565b6040518082815260200191505060405180910390f35b34801561076157600080fd5b506107ae6004803603604081101561077857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ad565b005b3480156107bc57600080fd5b506107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611537565b005b34801561080d57600080fd5b506108166115e6565b005b34801561082457600080fd5b5061082d61178e565b005b34801561083b57600080fd5b50610844611799565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089257600080fd5b5061089b6117c2565b604051808215151515815260200191505060405180910390f35b3480156108c157600080fd5b506108ca611819565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561090a5780820151818401526020810190506108ef565b50505050905090810190601f1680156109375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561095157600080fd5b506109946004803603602081101561096857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611852565b005b3480156109a257600080fd5b506109ef600480360360408110156109b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119a7565b604051808215151515815260200191505060405180910390f35b348015610a1557600080fd5b50610a6260048036036040811015610a2c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a40565b604051808215151515815260200191505060405180910390f35b348015610a8857600080fd5b50610aeb60048036036040811015610a9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b9c565b6040518082815260200191505060405180910390f35b348015610b0d57600080fd5b50610b5060048036036020811015610b2457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c23565b005b348015610b5e57600080fd5b50610ba160048036036020811015610b7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d78565b005b6040805190810160405280600881526020017f537574657275737500000000000000000000000000000000000000000000000081525081565b6000600760009054906101000a900460ff16151515610c63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b610c6d8383611e00565b905092915050565b60016020528060005260406000206000915054906101000a900460ff1681565b610c9d6117c2565b1515610d11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610d1a81611e17565b50565b6000600554905090565b6000610d3233610f2e565b151515610dcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f546f6b656e3a2063616c6c657220696e20626c61636b6c6973742063616e277481526020017f207472616e7366657246726f6d0000000000000000000000000000000000000081525060400191505060405180910390fd5b610dd684610f2e565b151515610e71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f546f6b656e3a2066726f6d20696e20626c61636b6c6973742063616e2774207481526020017f72616e736665720000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e7a83610f2e565b151515610f15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001807f546f6b656e3a206e6f7420616c6c6f7720746f207472616e7366657220746f2081526020017f726563697069656e74206164647265737320696e20626c61636b6c697374000081525060400191505060405180910390fd5b610f20848484611f14565b90509392505050565b601281565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601260ff16600a0a6402540be4000281565b6000600760009054906101000a900460ff1615151561101d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6110278383611faf565b905092915050565b6110383361139d565b15156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f207468652050617573657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b600760009054906101000a900460ff161515611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6111de6117c2565b1515611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601260ff16600a0a6402540be4000261127b8261126d610d1d565b61205490919063ffffffff16565b111515156112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6d6f7265207468616e20746f6b656e206361700000000000000000000000000081525060200191505060405180910390fd5b6112fa82610f2e565b15151561130657600080fd5b61131082826120de565b5050565b61131c6117c2565b1515611390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61139a338261229d565b50565b60006113b382600661248290919063ffffffff16565b9050919050565b6000600760009054906101000a900460ff16905090565b6113da336125a5565b565b6113e46117c2565b1515611458576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611461816125ff565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114b56117c2565b1515611529576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61153382826126fb565b5050565b6115403361139d565b15156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f207468652050617573657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b6115e3816127a2565b50565b6115ef3361139d565b1515611689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f207468652050617573657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b600760009054906101000a900460ff1615151561170e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b61179733611e17565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040805190810160405280600581526020017f537574657200000000000000000000000000000000000000000000000000000081525081565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156118aa57600080fd5b60001515600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561190957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b87896760405160405180910390a250565b6000600760009054906101000a900460ff16151515611a2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611a3883836127fc565b905092915050565b6000611a4b33610f2e565b151515611ae6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f546f6b656e3a2063616c6c657220696e20626c61636b6c6973742063616e277481526020017f207472616e73666572000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611aef83610f2e565b151515611b8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001807f546f6b656e3a206e6f7420616c6c6f7720746f207472616e7366657220746f2081526020017f726563697069656e74206164647265737320696e20626c61636b6c697374000081525060400191505060405180910390fd5b611b9483836128a1565b905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c7b57600080fd5b60011515600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515611cda57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde860405160405180910390a250565b611d806117c2565b1515611df4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611dfd8161293a565b50565b6000611e0d338484612ac3565b6001905092915050565b60011515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515611e7657600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f2d63f8ac641aea9e12c12daecbbf1ff5c41954f082604d02af14295e2d50f64060405160405180910390a250565b6000600760009054906101000a900460ff16151515611f9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b611fa6848484612d44565b90509392505050565b600061204a338461204585600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205490919063ffffffff16565b612ac3565b6001905092915050565b60008082840190508381101515156120d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4245502d32303a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b6121988160055461205490919063ffffffff16565b6005819055506121f081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205490919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4245502d32303a206275726e2066726f6d20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61237d81600554612df590919063ffffffff16565b6005819055506123d581600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df590919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561254e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6125b9816006612e8090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561265e57600080fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f25cc8d4039f7afd8efdce4a2a256292a21960a85fee5e8e73a3209d334cdcdab60405160405180910390a250565b612705828261229d565b61279e823361279984600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df590919063ffffffff16565b612ac3565b5050565b6127b6816006612f8290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6000612897338461289285600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df590919063ffffffff16565b612ac3565b6001905092915050565b6000600760009054906101000a900460ff16151515612928576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b612932838361305f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526020017f646472657373000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612b8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4245502d32303a20617070726f76652066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612c59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4245502d32303a20617070726f766520746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000612d51848484613076565b612dea8433612de585600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df590919063ffffffff16565b612ac3565b600190509392505050565b6000828211151515612e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b612e8a8282612482565b1515612f24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612f8c8282612482565b151515613001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061306c338484613076565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515613141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4245502d32303a207472616e736665722066726f6d20746865207a65726f206181526020017f646472657373000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561320c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4245502d32303a207472616e7366657220746f20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61325e81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612df590919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132f381600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205490919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fea165627a7a72305820a3e7b64d1560510b8511c5eade15842803fe2e482251b892f33b5894272f78ee0029

Deployed ByteCode Sourcemap

21562:1539:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21626:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21626:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;21626:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19325:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19325:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19325:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19979:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19979:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19979:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20288:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20288:95:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20288:95:0;;;;;;;;;;;;;;;;;;;;;;8441:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8441:91:0;;;;;;;;;;;;;;;;;;;;;;;22675:423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22675:423:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22675:423:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21725:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21725:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;21048:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21048:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21048:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21767:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21767:67:0;;;;;;;;;;;;;;;;;;;;;;;19473:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19473:167:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19473:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18758:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18758:118:0;;;;;;22125:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22125:222:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22125:222:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21847:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21847:91:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21847:91:0;;;;;;;;;;;;;;;;;;;;16340:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16340:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16340:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17967:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17967:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16557:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16557:77:0;;;;;;20191:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20191:89:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20191:89:0;;;;;;;;;;;;;;;;;;;;;;8595:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8595:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8595:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22000:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22000:113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22000:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16457:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16457:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16457:92:0;;;;;;;;;;;;;;;;;;;;;;18547:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18547:116:0;;;;;;20391:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20391:75:0;;;;;;4449:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4449:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4815:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4815:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;21676:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21676:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;21676:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21168:188;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21168:188:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21168:188:0;;;;;;;;;;;;;;;;;;;;;;19648:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19648:177:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19648:177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22357:310;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22357:310:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22357:310:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9137:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9137:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9137:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21364:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21364:193:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21364:193:0;;;;;;;;;;;;;;;;;;;;;;5062:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5062:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5062:109:0;;;;;;;;;;;;;;;;;;;;;;21626:43;;;;;;;;;;;;;;;;;;;;:::o;19325:140::-;19404:4;18204:7;;;;;;;;;;;18203:8;18195:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19428:29;19442:7;19451:5;19428:13;:29::i;:::-;19421:36;;19325:140;;;;:::o;19979:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;20288:95::-;4661:9;:7;:9::i;:::-;4653:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20354:21;20367:7;20354:12;:21::i;:::-;20288:95;:::o;8441:91::-;8485:7;8512:12;;8505:19;;8441:91;:::o;22675:423::-;22755:4;22781:23;22793:10;22781:11;:23::i;:::-;22780:24;22772:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22874:17;22886:4;22874:11;:17::i;:::-;22873:18;22865:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22955:15;22967:2;22955:11;:15::i;:::-;22954:16;22946:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23055:35;23074:4;23080:2;23084:5;23055:18;:35::i;:::-;23048:42;;22675:423;;;;;:::o;21725:35::-;21758:2;21725:35;:::o;21048:110::-;21107:4;21131:10;:19;21142:7;21131:19;;;;;;;;;;;;;;;;;;;;;;;;;21124:26;;21048:110;;;:::o;21767:67::-;21758:2;21817:17;;21811:2;:23;21797:11;:37;21767:67;:::o;19473:167::-;19564:4;18204:7;;;;;;;;;;;18203:8;18195:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19588:44;19612:7;19621:10;19588:23;:44::i;:::-;19581:51;;19473:167;;;;:::o;18758:118::-;16239:20;16248:10;16239:8;:20::i;:::-;16231:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18403:7;;;;;;;;;;;18395:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18827:5;18817:7;;:15;;;;;;;;;;;;;;;;;;18848:20;18857:10;18848:20;;;;;;;;;;;;;;;;;;;;;;18758:118::o;22125:222::-;4661:9;:7;:9::i;:::-;4653:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21758:2;21817:17;;21811:2;:23;21797:11;:37;22209:25;22227:6;22209:13;:11;:13::i;:::-;:17;;:25;;;;:::i;:::-;:32;;22201:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22285:20;22297:7;22285:11;:20::i;:::-;22284:21;22276:30;;;;;;;;22317:22;22323:7;22332:6;22317:5;:22::i;:::-;22125:222;;:::o;21847:91::-;4661:9;:7;:9::i;:::-;4653:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21905:25;21911:10;21923:6;21905:5;:25::i;:::-;21847:91;:::o;16340:109::-;16396:4;16420:21;16433:7;16420:8;:12;;:21;;;;:::i;:::-;16413:28;;16340:109;;;:::o;17967:78::-;18006:4;18030:7;;;;;;;;;;;18023:14;;17967:78;:::o;16557:77::-;16601:25;16615:10;16601:13;:25::i;:::-;16557:77::o;20191:89::-;4661:9;:7;:9::i;:::-;4653:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20254:18;20264:7;20254:9;:18::i;:::-;20191:89;:::o;8595:110::-;8652:7;8679:9;:18;8689:7;8679:18;;;;;;;;;;;;;;;;8672:25;;8595:110;;;:::o;22000:113::-;4661:9;:7;:9::i;:::-;4653:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22079:26;22089:7;22098:6;22079:9;:26::i;:::-;22000:113;;:::o;16457:92::-;16239:20;16248:10;16239:8;:20::i;:::-;16231:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16522:19;16533:7;16522:10;:19::i;:::-;16457:92;:::o;18547:116::-;16239:20;16248:10;16239:8;:20::i;:::-;16231:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18204:7;;;;;;;;;;;18203:8;18195:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18617:4;18607:7;;:14;;;;;;;;;;;;;;;;;;18637:18;18644:10;18637:18;;;;;;;;;;;;;;;;;;;;;;18547:116::o;20391:75::-;20434:24;20447:10;20434:12;:24::i;:::-;20391:75::o;4449:79::-;4487:7;4514:6;;;;;;;;;;;4507:13;;4449:79;:::o;4815:92::-;4855:4;4893:6;;;;;;;;;;;4879:20;;:10;:20;;;4872:27;;4815:92;:::o;21676:42::-;;;;;;;;;;;;;;;;;;;;:::o;21168:188::-;20141:9;:21;20151:10;20141:21;;;;;;;;;;;;;;;;;;;;;;;;;20133:30;;;;;;;;21266:5;21243:28;;:10;:19;21254:7;21243:19;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;21235:37;;;;;;;;21305:4;21283:10;:19;21294:7;21283:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;21340:7;21325:23;;;;;;;;;;;;21168:188;:::o;19648:177::-;19744:4;18204:7;;;;;;;;;;;18203:8;18195:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19768:49;19792:7;19801:15;19768:23;:49::i;:::-;19761:56;;19648:177;;;;:::o;22357:310::-;22419:4;22445:23;22457:10;22445:11;:23::i;:::-;22444:24;22436:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22534:15;22546:2;22534:11;:15::i;:::-;22533:16;22525:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22634:25;22649:2;22653:5;22634:14;:25::i;:::-;22627:32;;22357:310;;;;:::o;9137:134::-;9209:7;9236:11;:18;9248:5;9236:18;;;;;;;;;;;;;;;:27;9255:7;9236:27;;;;;;;;;;;;;;;;9229:34;;9137:134;;;;:::o;21364:193::-;20141:9;:21;20151:10;20141:21;;;;;;;;;;;;;;;;;;;;;;;;;20133:30;;;;;;;;21465:4;21442:27;;:10;:19;21453:7;21442:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;21434:36;;;;;;;;21503:5;21481:10;:19;21492:7;21481:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21541:7;21524:25;;;;;;;;;;;;21364:193;:::o;5062:109::-;4661:9;:7;:9::i;:::-;4653:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5135:28;5154:8;5135:18;:28::i;:::-;5062:109;:::o;9418:148::-;9483:4;9500:36;9509:10;9521:7;9530:5;9500:8;:36::i;:::-;9554:4;9547:11;;9418:148;;;;:::o;20657:180::-;20746:4;20724:26;;:9;:18;20734:7;20724:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;20716:35;;;;;;;;20783:5;20762:9;:18;20772:7;20762:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20821:7;20804:25;;;;;;;;;;;;20657:180;:::o;19157:160::-;19250:4;18204:7;;;;;;;;;;;18203:8;18195:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19274:35;19293:4;19299:2;19303:5;19274:18;:35::i;:::-;19267:42;;19157:160;;;;;:::o;10702:206::-;10782:4;10799:79;10808:10;10820:7;10829:48;10866:10;10829:11;:23;10841:10;10829:23;;;;;;;;;;;;;;;:32;10853:7;10829:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;10799:8;:79::i;:::-;10896:4;10889:11;;10702:206;;;;:::o;857:181::-;915:7;935:9;951:1;947;:5;935:17;;976:1;971;:6;;963:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1029:1;1022:8;;;857:181;;;;:::o;12829:309::-;12924:1;12905:21;;:7;:21;;;;12897:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12991:24;13008:6;12991:12;;:16;;:24;;;;:::i;:::-;12976:12;:39;;;;13047:30;13070:6;13047:9;:18;13057:7;13047:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;13026:9;:18;13036:7;13026:18;;;;;;;;;;;;;;;:51;;;;13114:7;13093:37;;13110:1;13093:37;;;13123:6;13093:37;;;;;;;;;;;;;;;;;;12829:309;;:::o;13470:307::-;13564:1;13545:21;;:7;:21;;;;13537:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13633:23;13650:5;13633:12;;:16;;:23;;;;:::i;:::-;13618:12;:38;;;;13688:29;13711:5;13688:9;:18;13698:7;13688:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;13667:9;:18;13677:7;13667:18;;;;;;;;;;;;;;;:50;;;;13759:1;13733:36;;13742:7;13733:36;;;13763:5;13733:36;;;;;;;;;;;;;;;;;;13470:307;;:::o;15715:203::-;15787:4;15831:1;15812:21;;:7;:21;;;;15804:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15890:4;:11;;:20;15902:7;15890:20;;;;;;;;;;;;;;;;;;;;;;;;;15883:27;;15715:203;;;;:::o;16772:130::-;16832:24;16848:7;16832:8;:15;;:24;;;;:::i;:::-;16886:7;16872:22;;;;;;;;;;;;16772:130;:::o;20474:175::-;20560:5;20538:27;;:9;:18;20548:7;20538:18;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;20530:36;;;;;;;;20598:4;20577:9;:18;20587:7;20577:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;20633:7;20618:23;;;;;;;;;;;;20474:175;:::o;14739:188::-;14811:22;14817:7;14826:6;14811:5;:22::i;:::-;14844:75;14853:7;14862:10;14874:44;14911:6;14874:11;:20;14886:7;14874:20;;;;;;;;;;;;;;;:32;14895:10;14874:32;;;;;;;;;;;;;;;;:36;;:44;;;;:::i;:::-;14844:8;:75::i;:::-;14739:188;;:::o;16642:122::-;16699:21;16712:7;16699:8;:12;;:21;;;;:::i;:::-;16748:7;16736:20;;;;;;;;;;;;16642:122;:::o;11411:216::-;11496:4;11513:84;11522:10;11534:7;11543:53;11580:15;11543:11;:23;11555:10;11543:23;;;;;;;;;;;;;;;:32;11567:7;11543:32;;;;;;;;;;;;;;;;:36;;:53;;;;:::i;:::-;11513:8;:84::i;:::-;11615:4;11608:11;;11411:216;;;;:::o;19017:132::-;19092:4;18204:7;;;;;;;;;;;18203:8;18195:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19116:25;19131:2;19135:5;19116:14;:25::i;:::-;19109:32;;19017:132;;;;:::o;5277:229::-;5371:1;5351:22;;:8;:22;;;;5343:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:8;5432:38;;5453:6;;;;;;;;;;;5432:38;;;;;;;;;;;;5490:8;5481:6;;:17;;;;;;;;;;;;;;;;;;5277:229;:::o;14217:337::-;14327:1;14310:19;;:5;:19;;;;14302:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14409:1;14390:21;;:7;:21;;;;14382:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14494:5;14464:11;:18;14476:5;14464:18;;;;;;;;;;;;;;;:27;14483:7;14464:27;;;;;;;;;;;;;;;:35;;;;14531:7;14515:31;;14524:5;14515:31;;;14540:5;14515:31;;;;;;;;;;;;;;;;;;14217:337;;;:::o;10037:256::-;10126:4;10143:36;10153:6;10161:9;10172:6;10143:9;:36::i;:::-;10190:73;10199:6;10207:10;10219:43;10255:6;10219:11;:19;10231:6;10219:19;;;;;;;;;;;;;;;:31;10239:10;10219:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;10190:8;:73::i;:::-;10281:4;10274:11;;10037:256;;;;;:::o;1313:184::-;1371:7;1404:1;1399;:6;;1391:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1451:9;1467:1;1463;:5;1451:17;;1488:1;1481:8;;;1313:184;;;;:::o;15437:183::-;15517:18;15521:4;15527:7;15517:3;:18::i;:::-;15509:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15607:5;15584:4;:11;;:20;15596:7;15584:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15437:183;;:::o;15179:178::-;15257:18;15261:4;15267:7;15257:3;:18::i;:::-;15256:19;15248:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15345:4;15322;:11;;:20;15334:7;15322:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;15179:178;;:::o;8918:156::-;8987:4;9004:40;9014:10;9026:9;9037:6;9004:9;:40::i;:::-;9062:4;9055:11;;8918:156;;;;:::o;12117:431::-;12233:1;12215:20;;:6;:20;;;;12207:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12318:1;12297:23;;:9;:23;;;;12289:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12394:29;12416:6;12394:9;:17;12404:6;12394:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12374:9;:17;12384:6;12374:17;;;;;;;;;;;;;;;:49;;;;12457:32;12482:6;12457:9;:20;12467:9;12457:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12434:9;:20;12444:9;12434:20;;;;;;;;;;;;;;;:55;;;;12522:9;12505:35;;12514:6;12505:35;;;12533:6;12505:35;;;;;;;;;;;;;;;;;;12117:431;;;:::o

Swarm Source

bzzr://a3e7b64d1560510b8511c5eade15842803fe2e482251b892f33b5894272f78ee
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.