ETH Price: $3,350.94 (+4.07%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve171417652023-04-28 2:49:47644 days ago1682650187IN
Colendi: COD Token
0 ETH0.0016090434.65905998
Transfer148019572022-05-19 0:37:25988 days ago1652920645IN
Colendi: COD Token
0.001 ETH0.0004897223.32025636
Transfer144362242022-03-22 12:51:311045 days ago1647953491IN
Colendi: COD Token
0 ETH0.0004945823.55187049
Transfer144362202022-03-22 12:50:321045 days ago1647953432IN
Colendi: COD Token
0 ETH0.000431720.55756116
Transfer137454302021-12-05 10:02:131153 days ago1638698533IN
Colendi: COD Token
0 ETH0.0039866776.80426104
Approve115295052020-12-26 13:09:371496 days ago1608988177IN
Colendi: COD Token
0 ETH0.0025278957
Transfer109778912020-10-02 17:21:441581 days ago1601659304IN
Colendi: COD Token
0 ETH0.0050892999
Meta Approve And...104727702020-07-16 20:49:161659 days ago1594932556IN
Colendi: COD Token
0 ETH0.0020904138
Meta Approve And...103895122020-07-03 23:45:171672 days ago1593819917IN
Colendi: COD Token
0 ETH0.0012662623
Meta Approve And...103895022020-07-03 23:43:091672 days ago1593819789IN
Colendi: COD Token
0 ETH0.0012737523.13609666
Approve103819792020-07-02 19:59:531673 days ago1593719993IN
Colendi: COD Token
0 ETH0.0012857729
Meta Approve And...97751042020-03-30 20:05:231767 days ago1585598723IN
Colendi: COD Token
0 ETH0.00007321.331
Meta Approve And...96421232020-03-10 6:25:031788 days ago1583821503IN
Colendi: COD Token
0 ETH0.000220184
Meta Approve And...96421182020-03-10 6:23:281788 days ago1583821408IN
Colendi: COD Token
0 ETH0.000110092
Approve96065922020-03-04 19:20:051793 days ago1583349605IN
Colendi: COD Token
0 ETH0.00035448
Meta Approve And...95206072020-02-20 14:20:381806 days ago1582208438IN
Colendi: COD Token
0 ETH0.000209083.8
Approve92684502020-01-12 21:07:121845 days ago1578863232IN
Colendi: COD Token
0 ETH0.00035448
Transfer92070052020-01-03 11:38:531855 days ago1578051533IN
Colendi: COD Token
0 ETH0.000291168
Approve91900982019-12-31 8:55:091858 days ago1577782509IN
Colendi: COD Token
0 ETH0.00039879
Approve91549222019-12-24 8:51:491865 days ago1577177509IN
Colendi: COD Token
0 ETH0.00039879
Approve91548612019-12-24 8:34:031865 days ago1577176443IN
Colendi: COD Token
0 ETH0.00039879
Transfer91548552019-12-24 8:31:201865 days ago1577176280IN
Colendi: COD Token
0 ETH0.000462779
Meta Approve And...91542912019-12-24 5:49:281865 days ago1577166568IN
Colendi: COD Token
0 ETH0.000275235
Meta Approve And...91525422019-12-23 21:18:211865 days ago1577135901IN
Colendi: COD Token
0 ETH0.000055041
Meta Approve And...91121822019-12-15 20:47:461873 days ago1576442866IN
Colendi: COD Token
0 ETH0.000055271.00466799
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ColendiToken

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-08-22
*/

// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see `ERC20Detailed`.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * > 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);
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

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

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

pragma solidity ^0.5.0;



/**
 * @dev Implementation of the `IERC20` interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using `_mint`.
 * For a generic mechanism see `ERC20Mintable`.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See `IERC20.approve`.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

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

    /**
     * @dev See `IERC20.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 `IERC20.allowance`.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IERC20.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 `IERC20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `ERC20`;
     *
     * 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 `IERC20.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 `IERC20.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), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: 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), "ERC20: 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), "ERC20: 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), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: 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));
    }
}

// File: openzeppelin-solidity/contracts/cryptography/ECDSA.sol

pragma solidity ^0.5.0;

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * (.note) This call _does not revert_ if the signature is invalid, or
     * if the signer is otherwise unable to be retrieved. In those scenarios,
     * the zero address is returned.
     *
     * (.warning) `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise)
     * be too long), and then calling `toEthSignedMessageHash` on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        // Check the signature length
        if (signature.length != 65) {
            return (address(0));
        }

        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // ecrecover takes the signature parameters, and the only way to get them
        // currently is to use assembly.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := byte(0, mload(add(signature, 0x60)))
        }

        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return address(0);
        }

        if (v != 27 && v != 28) {
            return address(0);
        }

        // If the signature is valid (and not malleable), return the signer address
        return ecrecover(hash, v, r, s);
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * replicates the behavior of the
     * [`eth_sign`](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign)
     * JSON-RPC method.
     *
     * See `recover`.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }
}

// File: contracts/ColendiToken.sol

pragma solidity ^0.5.8;



contract ColendiToken is ERC20 {

    using ECDSA for bytes32;

    string public name = "Colendi Token";

    string public symbol = "COD";

    uint8 public decimals = 18;

    uint256 public INITIAL_SUPPLY = 1e9 * (10 ** uint256(decimals));

    constructor() public {
        _mint(msg.sender, INITIAL_SUPPLY);

    }

    /// @dev User to Current Nonces
    mapping(address => uint256) public currentNonce;

    function metaTransfer(bytes calldata signature, address to, uint256 value, uint256 nonce, uint256 reward)
    external returns (bool) {
        bytes32 metaHash = metaTransferHash(to,value,nonce,reward);
        address signer = checkSignatureAndPayReward(metaHash, signature, nonce, reward);
        _transfer(signer, to, value);
        return true;
    }
    function metaTransferHash(address to, uint256 value, uint256 nonce, uint256 reward) public view returns(bytes32){
        return keccak256(abi.encodePacked(address(this),"metaTransfer", to, value, nonce, reward)).toEthSignedMessageHash();
    }

    function metaApprove(bytes calldata signature, address spender, uint256 value, uint256 nonce, uint256 reward)
    external returns (bool) {
        bytes32 metaHash = metaApproveHash(spender,value,nonce,reward);
        address signer = checkSignatureAndPayReward(metaHash, signature, nonce, reward);
        _approve(signer, spender, value);
        return true;

    }
    function metaApproveHash(address spender, uint256 value, uint256 nonce, uint256 reward) public view returns(bytes32){
        return keccak256(abi.encodePacked(address(this),"metaApprove", spender, value, nonce, reward)).toEthSignedMessageHash();
    }

    function metaTransferFrom(
        bytes calldata signature,address sender,address recipient,uint256 value,uint256 nonce,uint256 reward
    ) external returns (bool)
    {
        bytes32 metaHash = metaTransferFromHash(sender, recipient,value,nonce,reward);
        address signer = checkSignatureAndPayReward(metaHash, signature, nonce, reward);
        uint256 allowed = allowance(sender,signer);
        _transfer(sender, recipient, value);
        _approve(sender, signer, allowed.sub(value));
        return true;
    }
    function metaTransferFromHash(address sender, address recipient, uint256 value, uint256 nonce, uint256 reward)
    public view returns(bytes32){
        return keccak256(
            abi.encodePacked(address(this),"metaTransferFrom", sender, recipient, value, nonce, reward)
            ).toEthSignedMessageHash();
    }

    function recoverSigner(bytes32 messageHash, bytes calldata signature) external pure returns(address){
        return messageHash.recover(signature);
    }

    function approveAndCall(address target, uint256 amount, bytes calldata data) external returns(bool) {
        approve(target, amount);
        (bool isSucceed, ) = target.call(data);
        require(isSucceed, "Transaction has been reverted");
        return true;
    }

    function metaApproveAndCall(
        bytes calldata signature, address target, uint256 amount, bytes calldata data, uint256 nonce, uint256 reward, uint256 gasLimit
        ) external returns (bool) {
        uint256 startGas = gasleft();
        bytes32 metaHash = metaApproveAndCallHash(target,amount,data,nonce,reward,gasLimit);
        address signer = checkSignatureAndPayReward(metaHash, signature, nonce, reward, startGas, gasLimit);
        _approve(signer, target, amount);
        target.call(data);
        return true;

    }
    function metaApproveAndCallHash(address target, uint256 amount, bytes memory data, uint256 nonce, uint256 reward, uint256 gasLimit)
    public view returns(bytes32){
        return keccak256(
            abi.encodePacked(address(this),"metaApproveAndCall", target, amount, data, nonce, reward, gasLimit)
            ).toEthSignedMessageHash();
    }
    function checkSignatureAndPayReward(
        bytes32 metaHash, bytes memory signature, uint256 nonce, uint256 reward, uint256 startGas, uint256 gasLimit
    ) internal returns (address) {
        address signer = metaHash.recover(signature);
        require(startGas>=gasLimit,"Not enough gas provided by relayer");
        require(signer!=address(0), "ZERO_ADDRESS can not be signer");
        require(nonce == currentNonce[signer], "Can not execute replay attack");
        currentNonce[signer]++;
        if(reward>0){
            _transfer(signer, msg.sender, reward);
        }

        return signer;
    }

    function checkSignatureAndPayReward(
        bytes32 metaHash, bytes memory signature, uint256 nonce, uint256 reward) internal returns (address) {
        address signer = metaHash.recover(signature);
        require(signer!=address(0), "ZERO_ADDRESS can not be signer");
        require(nonce == currentNonce[signer], "Can not execute replay attack");
        currentNonce[signer]++;
        if(reward>0){
            _transfer(signer, msg.sender, reward);
        }

        return signer;
    }
}

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":false,"inputs":[{"name":"signature","type":"bytes"},{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"value","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"reward","type":"uint256"}],"name":"metaTransferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"signature","type":"bytes"},{"name":"target","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"},{"name":"nonce","type":"uint256"},{"name":"reward","type":"uint256"},{"name":"gasLimit","type":"uint256"}],"name":"metaApproveAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"value","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"reward","type":"uint256"}],"name":"metaTransferFromHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"signature","type":"bytes"},{"name":"spender","type":"address"},{"name":"value","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"reward","type":"uint256"}],"name":"metaApprove","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"currentNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"target","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"},{"name":"nonce","type":"uint256"},{"name":"reward","type":"uint256"},{"name":"gasLimit","type":"uint256"}],"name":"metaApproveAndCallHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","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":"signature","type":"bytes"},{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"reward","type":"uint256"}],"name":"metaTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"messageHash","type":"bytes32"},{"name":"signature","type":"bytes"}],"name":"recoverSigner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"reward","type":"uint256"}],"name":"metaApproveHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"reward","type":"uint256"}],"name":"metaTransferHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","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"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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"}]

60c0604052600d60808190527f436f6c656e646920546f6b656e0000000000000000000000000000000000000060a090815262000040916003919062000274565b506040805180820190915260038082527f434f4400000000000000000000000000000000000000000000000000000000006020909201918252620000879160049162000274565b5060058054601260ff19909116179081905560ff16600a0a633b9aca0002600655348015620000b557600080fd5b50620000d333600654620000d9640100000000026401000000009004565b62000319565b600160a060020a0382166200014f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546200016c90826401000000006200169d620001f882021704565b600255600160a060020a038216600090815260208190526040902054620001a290826401000000006200169d620001f882021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000828201838110156200026d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002b757805160ff1916838001178555620002e7565b82800160010185558215620002e7579182015b82811115620002e7578251825591602001919060010190620002ca565b50620002f5929150620002f9565b5090565b6200031691905b80821115620002f5576000815560010162000300565b90565b61191c80620003296000396000f3fe608060405234801561001057600080fd5b506004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900480636437ecfc116100e05780639dec2189116100995780639dec21891461074b578063a457c2d714610783578063a9059cbb146107af578063bf4b72e3146107db578063cae9ca5114610813578063dd62ed3e146108985761016a565b80636437ecfc14610513578063677ecc4f1461053957806370a08231146105ff57806371316b331461062557806395d89b41146106b057806397aba7f9146106b85761016a565b806327284ac11161013257806327284ac1146103115780632ff2e9dc146103f4578063313ce567146103fc578063395093511461041a5780635957f4ed14610446578063640576d2146104885761016a565b806306fdde031461016f578063095ea7b3146101ec5780630ed7faf91461022c57806318160ddd146102c157806323b872dd146102db575b600080fd5b6101776108c6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b1578181015183820152602001610199565b50505050905090810190601f1680156101de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102186004803603604081101561020257600080fd5b50600160a060020a038135169060200135610954565b604080519115158252519081900360200190f35b610218600480360360c081101561024257600080fd5b81019060208101813564010000000081111561025d57600080fd5b82018360208201111561026f57600080fd5b8035906020019184600183028401116401000000008311171561029157600080fd5b9193509150600160a060020a0381358116916020810135909116906040810135906060810135906080013561096b565b6102c9610a09565b60408051918252519081900360200190f35b610218600480360360608110156102f157600080fd5b50600160a060020a03813581169160208101359091169060400135610a0f565b610218600480360360e081101561032757600080fd5b81019060208101813564010000000081111561034257600080fd5b82018360208201111561035457600080fd5b8035906020019184600183028401116401000000008311171561037657600080fd5b91939092600160a060020a038335169260208101359291906060810190604001356401000000008111156103a957600080fd5b8201836020820111156103bb57600080fd5b803590602001918460018302840111640100000000831117156103dd57600080fd5b919350915080359060208101359060400135610a61565b6102c9610b7d565b610404610b83565b6040805160ff9092168252519081900360200190f35b6102186004803603604081101561043057600080fd5b50600160a060020a038135169060200135610b8c565b6102c9600480360360a081101561045c57600080fd5b50600160a060020a03813581169160208101359091169060408101359060608101359060800135610bc8565b610218600480360360a081101561049e57600080fd5b8101906020810181356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460018302840111640100000000831117156104ed57600080fd5b9193509150600160a060020a038135169060208101359060408101359060600135610c6b565b6102c96004803603602081101561052957600080fd5b5035600160a060020a0316610cde565b6102c9600480360360c081101561054f57600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561057f57600080fd5b82018360208201111561059157600080fd5b803590602001918460018302840111640100000000831117156105b357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060400135610cf0565b6102c96004803603602081101561061557600080fd5b5035600160a060020a0316610e06565b610218600480360360a081101561063b57600080fd5b81019060208101813564010000000081111561065657600080fd5b82018360208201111561066857600080fd5b8035906020019184600183028401116401000000008311171561068a57600080fd5b9193509150600160a060020a038135169060208101359060408101359060600135610e21565b610177610e85565b61072f600480360360408110156106ce57600080fd5b813591908101906040810160208201356401000000008111156106f057600080fd5b82018360208201111561070257600080fd5b8035906020019184600183028401116401000000008311171561072457600080fd5b509092509050610ee0565b60408051600160a060020a039092168252519081900360200190f35b6102c96004803603608081101561076157600080fd5b50600160a060020a038135169060208101359060408101359060600135610f32565b6102186004803603604081101561079957600080fd5b50600160a060020a038135169060200135610fca565b610218600480360360408110156107c557600080fd5b50600160a060020a038135169060200135611006565b6102c9600480360360808110156107f157600080fd5b50600160a060020a038135169060208101359060408101359060600135611013565b6102186004803603606081101561082957600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561085957600080fd5b82018360208201111561086b57600080fd5b8035906020019184600183028401116401000000008311171561088d57600080fd5b5090925090506110a1565b6102c9600480360360408110156108ae57600080fd5b50600160a060020a0381358116916020013516611176565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b505050505081565b60006109613384846111a1565b5060015b92915050565b60008061097b8787878787610bc8565b905060006109c3828b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508991506112939050565b905060006109d18983611176565b90506109de8989896113a1565b6109f889836109f3848b63ffffffff6114e916565b6111a1565b5060019a9950505050505050505050565b60025490565b6000610a1c8484846113a1565b600160a060020a038416600090815260016020908152604080832033808552925290912054610a579186916109f3908663ffffffff6114e916565b5060019392505050565b6000805a90506000610aaf8a8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91508a9050610cf0565b90506000610af9828e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91508890508a611549565b9050610b06818c8c6111a1565b8a600160a060020a03168989604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114610b62576040519150601f19603f3d011682016040523d82523d6000602084013e610b67565b606091505b5060019f9e505050505050505050505050505050565b60065481565b60055460ff1681565b336000818152600160209081526040808320600160a060020a038716845290915281205490916109619185906109f3908663ffffffff61169d16565b604080516c010000000000000000000000003081026020808401919091527f6d6574615472616e7366657246726f6d000000000000000000000000000000006034840152600160a060020a03808a168302604485015288169091026058830152606c8201869052608c820185905260ac8083018590528351808403909101815260cc9092019092528051910120600090610c6190611701565b9695505050505050565b600080610c7a86868686610f32565b90506000610cc2828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508991506112939050565b9050610ccf8188886111a1565b50600198975050505050505050565b60076020526000908152604090205481565b6000610dfb308888888888886040516020018088600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401807f6d657461417070726f7665416e6443616c6c000000000000000000000000000081525060120187600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140186815260200185805190602001908083835b60208310610daa5780518252601f199092019160209182019101610d8b565b51815160209384036101000a60001901801990921691161790529201958652508481019390935250604080840191909152805180840382018152606090930190528151910120935061170192505050565b979650505050505050565b600160a060020a031660009081526020819052604090205490565b600080610e3086868686611013565b90506000610e78828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508991506112939050565b9050610ccf8188886113a1565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561094c5780601f106109215761010080835404028352916020019161094c565b6000610f2a83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889392505063ffffffff611752169050565b949350505050565b604080516c010000000000000000000000003081026020808401919091527f6d657461417070726f76650000000000000000000000000000000000000000006034840152600160a060020a038816909102603f830152605382018690526073820185905260938083018590528351808403909101815260b39092019092528051910120600090610fc190611701565b95945050505050565b336000818152600160209081526040808320600160a060020a038716845290915281205490916109619185906109f3908663ffffffff6114e916565b60006109613384846113a1565b604080516c010000000000000000000000003081026020808401919091527f6d6574615472616e7366657200000000000000000000000000000000000000006034840152600160a060020a03881690910282840152605482018690526074820185905260948083018590528351808403909101815260b49092019092528051910120600090610fc190611701565b60006110ad8585610954565b50600085600160a060020a03168484604051808383808284376040519201945060009350909150508083038183865af19150503d806000811461110c576040519150601f19603f3d011682016040523d82523d6000602084013e611111565b606091505b505090508061116a576040805160e560020a62461bcd02815260206004820152601d60248201527f5472616e73616374696f6e20686173206265656e207265766572746564000000604482015290519081900360640190fd5b50600195945050505050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600160a060020a0383166111e95760405160e560020a62461bcd0281526004018080602001828103825260248152602001806118ab6024913960400191505060405180910390fd5b600160a060020a0382166112315760405160e560020a62461bcd0281526004018080602001828103825260228152602001806118646022913960400191505060405180910390fd5b600160a060020a03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000806112a6868663ffffffff61175216565b9050600160a060020a038116611306576040805160e560020a62461bcd02815260206004820152601e60248201527f5a45524f5f414444524553532063616e206e6f74206265207369676e65720000604482015290519081900360640190fd5b600160a060020a0381166000908152600760205260409020548414611375576040805160e560020a62461bcd02815260206004820152601d60248201527f43616e206e6f742065786563757465207265706c61792061747461636b000000604482015290519081900360640190fd5b600160a060020a0381166000908152600760205260409020805460010190558215610fc157610fc18133855b600160a060020a0383166113e95760405160e560020a62461bcd0281526004018080602001828103825260258152602001806118866025913960400191505060405180910390fd5b600160a060020a0382166114315760405160e560020a62461bcd0281526004018080602001828103825260238152602001806118416023913960400191505060405180910390fd5b600160a060020a03831660009081526020819052604090205461145a908263ffffffff6114e916565b600160a060020a03808516600090815260208190526040808220939093559084168152205461148f908263ffffffff61169d16565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115611543576040805160e560020a62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008061155c888863ffffffff61175216565b9050828410156115a05760405160e560020a62461bcd0281526004018080602001828103825260228152602001806118cf6022913960400191505060405180910390fd5b600160a060020a0381166115fe576040805160e560020a62461bcd02815260206004820152601e60248201527f5a45524f5f414444524553532063616e206e6f74206265207369676e65720000604482015290519081900360640190fd5b600160a060020a038116600090815260076020526040902054861461166d576040805160e560020a62461bcd02815260206004820152601d60248201527f43616e206e6f742065786563757465207265706c61792061747461636b000000604482015290519081900360640190fd5b600160a060020a0381166000908152600760205260409020805460010190558415610dfb57610dfb8133876113a1565b6000828201838110156116fa576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461176557506000610965565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156117ab5760009350505050610965565b8060ff16601b141580156117c357508060ff16601c14155b156117d45760009350505050610965565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa15801561182b573d6000803e3d6000fd5b5050604051601f19015197965050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734e6f7420656e6f756768206761732070726f76696465642062792072656c61796572a165627a7a72305820e84c1fe95d275960e55c78e5a6f01f5ca3b47737baf5bb198c4daa7a1775b15f0029

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900480636437ecfc116100e05780639dec2189116100995780639dec21891461074b578063a457c2d714610783578063a9059cbb146107af578063bf4b72e3146107db578063cae9ca5114610813578063dd62ed3e146108985761016a565b80636437ecfc14610513578063677ecc4f1461053957806370a08231146105ff57806371316b331461062557806395d89b41146106b057806397aba7f9146106b85761016a565b806327284ac11161013257806327284ac1146103115780632ff2e9dc146103f4578063313ce567146103fc578063395093511461041a5780635957f4ed14610446578063640576d2146104885761016a565b806306fdde031461016f578063095ea7b3146101ec5780630ed7faf91461022c57806318160ddd146102c157806323b872dd146102db575b600080fd5b6101776108c6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b1578181015183820152602001610199565b50505050905090810190601f1680156101de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102186004803603604081101561020257600080fd5b50600160a060020a038135169060200135610954565b604080519115158252519081900360200190f35b610218600480360360c081101561024257600080fd5b81019060208101813564010000000081111561025d57600080fd5b82018360208201111561026f57600080fd5b8035906020019184600183028401116401000000008311171561029157600080fd5b9193509150600160a060020a0381358116916020810135909116906040810135906060810135906080013561096b565b6102c9610a09565b60408051918252519081900360200190f35b610218600480360360608110156102f157600080fd5b50600160a060020a03813581169160208101359091169060400135610a0f565b610218600480360360e081101561032757600080fd5b81019060208101813564010000000081111561034257600080fd5b82018360208201111561035457600080fd5b8035906020019184600183028401116401000000008311171561037657600080fd5b91939092600160a060020a038335169260208101359291906060810190604001356401000000008111156103a957600080fd5b8201836020820111156103bb57600080fd5b803590602001918460018302840111640100000000831117156103dd57600080fd5b919350915080359060208101359060400135610a61565b6102c9610b7d565b610404610b83565b6040805160ff9092168252519081900360200190f35b6102186004803603604081101561043057600080fd5b50600160a060020a038135169060200135610b8c565b6102c9600480360360a081101561045c57600080fd5b50600160a060020a03813581169160208101359091169060408101359060608101359060800135610bc8565b610218600480360360a081101561049e57600080fd5b8101906020810181356401000000008111156104b957600080fd5b8201836020820111156104cb57600080fd5b803590602001918460018302840111640100000000831117156104ed57600080fd5b9193509150600160a060020a038135169060208101359060408101359060600135610c6b565b6102c96004803603602081101561052957600080fd5b5035600160a060020a0316610cde565b6102c9600480360360c081101561054f57600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561057f57600080fd5b82018360208201111561059157600080fd5b803590602001918460018302840111640100000000831117156105b357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060400135610cf0565b6102c96004803603602081101561061557600080fd5b5035600160a060020a0316610e06565b610218600480360360a081101561063b57600080fd5b81019060208101813564010000000081111561065657600080fd5b82018360208201111561066857600080fd5b8035906020019184600183028401116401000000008311171561068a57600080fd5b9193509150600160a060020a038135169060208101359060408101359060600135610e21565b610177610e85565b61072f600480360360408110156106ce57600080fd5b813591908101906040810160208201356401000000008111156106f057600080fd5b82018360208201111561070257600080fd5b8035906020019184600183028401116401000000008311171561072457600080fd5b509092509050610ee0565b60408051600160a060020a039092168252519081900360200190f35b6102c96004803603608081101561076157600080fd5b50600160a060020a038135169060208101359060408101359060600135610f32565b6102186004803603604081101561079957600080fd5b50600160a060020a038135169060200135610fca565b610218600480360360408110156107c557600080fd5b50600160a060020a038135169060200135611006565b6102c9600480360360808110156107f157600080fd5b50600160a060020a038135169060208101359060408101359060600135611013565b6102186004803603606081101561082957600080fd5b600160a060020a038235169160208101359181019060608101604082013564010000000081111561085957600080fd5b82018360208201111561086b57600080fd5b8035906020019184600183028401116401000000008311171561088d57600080fd5b5090925090506110a1565b6102c9600480360360408110156108ae57600080fd5b50600160a060020a0381358116916020013516611176565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b505050505081565b60006109613384846111a1565b5060015b92915050565b60008061097b8787878787610bc8565b905060006109c3828b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508991506112939050565b905060006109d18983611176565b90506109de8989896113a1565b6109f889836109f3848b63ffffffff6114e916565b6111a1565b5060019a9950505050505050505050565b60025490565b6000610a1c8484846113a1565b600160a060020a038416600090815260016020908152604080832033808552925290912054610a579186916109f3908663ffffffff6114e916565b5060019392505050565b6000805a90506000610aaf8a8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91508a9050610cf0565b90506000610af9828e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b91508890508a611549565b9050610b06818c8c6111a1565b8a600160a060020a03168989604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114610b62576040519150601f19603f3d011682016040523d82523d6000602084013e610b67565b606091505b5060019f9e505050505050505050505050505050565b60065481565b60055460ff1681565b336000818152600160209081526040808320600160a060020a038716845290915281205490916109619185906109f3908663ffffffff61169d16565b604080516c010000000000000000000000003081026020808401919091527f6d6574615472616e7366657246726f6d000000000000000000000000000000006034840152600160a060020a03808a168302604485015288169091026058830152606c8201869052608c820185905260ac8083018590528351808403909101815260cc9092019092528051910120600090610c6190611701565b9695505050505050565b600080610c7a86868686610f32565b90506000610cc2828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508991506112939050565b9050610ccf8188886111a1565b50600198975050505050505050565b60076020526000908152604090205481565b6000610dfb308888888888886040516020018088600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401807f6d657461417070726f7665416e6443616c6c000000000000000000000000000081525060120187600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140186815260200185805190602001908083835b60208310610daa5780518252601f199092019160209182019101610d8b565b51815160209384036101000a60001901801990921691161790529201958652508481019390935250604080840191909152805180840382018152606090930190528151910120935061170192505050565b979650505050505050565b600160a060020a031660009081526020819052604090205490565b600080610e3086868686611013565b90506000610e78828a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508991506112939050565b9050610ccf8188886113a1565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561094c5780601f106109215761010080835404028352916020019161094c565b6000610f2a83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889392505063ffffffff611752169050565b949350505050565b604080516c010000000000000000000000003081026020808401919091527f6d657461417070726f76650000000000000000000000000000000000000000006034840152600160a060020a038816909102603f830152605382018690526073820185905260938083018590528351808403909101815260b39092019092528051910120600090610fc190611701565b95945050505050565b336000818152600160209081526040808320600160a060020a038716845290915281205490916109619185906109f3908663ffffffff6114e916565b60006109613384846113a1565b604080516c010000000000000000000000003081026020808401919091527f6d6574615472616e7366657200000000000000000000000000000000000000006034840152600160a060020a03881690910282840152605482018690526074820185905260948083018590528351808403909101815260b49092019092528051910120600090610fc190611701565b60006110ad8585610954565b50600085600160a060020a03168484604051808383808284376040519201945060009350909150508083038183865af19150503d806000811461110c576040519150601f19603f3d011682016040523d82523d6000602084013e611111565b606091505b505090508061116a576040805160e560020a62461bcd02815260206004820152601d60248201527f5472616e73616374696f6e20686173206265656e207265766572746564000000604482015290519081900360640190fd5b50600195945050505050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600160a060020a0383166111e95760405160e560020a62461bcd0281526004018080602001828103825260248152602001806118ab6024913960400191505060405180910390fd5b600160a060020a0382166112315760405160e560020a62461bcd0281526004018080602001828103825260228152602001806118646022913960400191505060405180910390fd5b600160a060020a03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000806112a6868663ffffffff61175216565b9050600160a060020a038116611306576040805160e560020a62461bcd02815260206004820152601e60248201527f5a45524f5f414444524553532063616e206e6f74206265207369676e65720000604482015290519081900360640190fd5b600160a060020a0381166000908152600760205260409020548414611375576040805160e560020a62461bcd02815260206004820152601d60248201527f43616e206e6f742065786563757465207265706c61792061747461636b000000604482015290519081900360640190fd5b600160a060020a0381166000908152600760205260409020805460010190558215610fc157610fc18133855b600160a060020a0383166113e95760405160e560020a62461bcd0281526004018080602001828103825260258152602001806118866025913960400191505060405180910390fd5b600160a060020a0382166114315760405160e560020a62461bcd0281526004018080602001828103825260238152602001806118416023913960400191505060405180910390fd5b600160a060020a03831660009081526020819052604090205461145a908263ffffffff6114e916565b600160a060020a03808516600090815260208190526040808220939093559084168152205461148f908263ffffffff61169d16565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115611543576040805160e560020a62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008061155c888863ffffffff61175216565b9050828410156115a05760405160e560020a62461bcd0281526004018080602001828103825260228152602001806118cf6022913960400191505060405180910390fd5b600160a060020a0381166115fe576040805160e560020a62461bcd02815260206004820152601e60248201527f5a45524f5f414444524553532063616e206e6f74206265207369676e65720000604482015290519081900360640190fd5b600160a060020a038116600090815260076020526040902054861461166d576040805160e560020a62461bcd02815260206004820152601d60248201527f43616e206e6f742065786563757465207265706c61792061747461636b000000604482015290519081900360640190fd5b600160a060020a0381166000908152600760205260409020805460010190558415610dfb57610dfb8133876113a1565b6000828201838110156116fa576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461176557506000610965565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156117ab5760009350505050610965565b8060ff16601b141580156117c357508060ff16601c14155b156117d45760009350505050610965565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa15801561182b573d6000803e3d6000fd5b5050604051601f19015197965050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734e6f7420656e6f756768206761732070726f76696465642062792072656c61796572a165627a7a72305820e84c1fe95d275960e55c78e5a6f01f5ca3b47737baf5bb198c4daa7a1775b15f0029

Deployed Bytecode Sourcemap

18503:5082:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18503:5082:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18575:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18575:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9118:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9118:148:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20208:535;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20208:535:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20208:535:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20208:535:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20208:535:0;;-1:-1:-1;20208:535:0;-1:-1:-1;;;;;;20208:535:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8141:91::-;;;:::i;:::-;;;;;;;;;;;;;;;;9737:256;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9737:256:0;;;;;;;;;;;;;;;;;:::i;21529:546::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;21529:546:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;21529:546:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21529:546:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21529:546:0;;;;-1:-1:-1;;;;;21529:546:0;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;21529:546:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21529:546:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21529:546:0;;-1:-1:-1;21529:546:0;-1:-1:-1;21529:546:0;;;;;;;;;;;;:::i;18692:63::-;;;:::i;18657:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10402:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10402:206:0;;;;;;;;:::i;20749:325::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20749:325:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19563:377::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19563:377:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19563:377:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19563:377:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19563:377:0;;-1:-1:-1;19563:377:0;-1:-1:-1;;;;;;19563:377:0;;;;;;;;;;;;;;;;;;:::i;18884:47::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18884:47:0;-1:-1:-1;;;;;18884:47:0;;:::i;22081:354::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;22081:354:0;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;22081:354:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22081:354:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;22081:354:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;22081:354:0;;-1:-1:-1;;22081:354:0;;;-1:-1:-1;;;22081:354:0;;;;;;;;;:::i;8295:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8295:110:0;-1:-1:-1;;;;;8295:110:0;;:::i;18940:363::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18940:363:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;18940:363:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18940:363:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18940:363:0;;-1:-1:-1;18940:363:0;-1:-1:-1;;;;;;18940:363:0;;;;;;;;;;;;;;;;;;:::i;18620:28::-;;;:::i;21082:156::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21082:156:0;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;21082:156:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21082:156:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;21082:156:0;;-1:-1:-1;21082:156:0;-1:-1:-1;21082:156:0;:::i;:::-;;;;-1:-1:-1;;;;;21082:156:0;;;;;;;;;;;;;;19946:254;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19946:254:0;;;;;;;;;;;;;;;;;;:::i;11111:216::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11111:216:0;;;;;;;;:::i;8618:156::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8618:156:0;;;;;;;;:::i;19309:246::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19309:246:0;;;;;;;;;;;;;;;;;;:::i;21246:275::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;21246:275:0;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;21246:275:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21246:275:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;21246:275:0;;-1:-1:-1;21246:275:0;-1:-1:-1;21246:275:0;:::i;8837:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8837:134:0;;;;;;;;;;:::i;18575:36::-;;;;;;;;;;;;;;;-1:-1:-1;;18575:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9118:148::-;9183:4;9200:36;9209:10;9221:7;9230:5;9200:8;:36::i;:::-;-1:-1:-1;9254:4:0;9118:148;;;;;:::o;20208:535::-;20370:4;20392:16;20411:58;20432:6;20440:9;20450:5;20456;20462:6;20411:20;:58::i;:::-;20392:77;;20480:14;20497:62;20524:8;20534:9;;20497:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20545:5:0;;-1:-1:-1;20552:6:0;;-1:-1:-1;20497:26:0;;-1:-1:-1;20497:62:0:i;:::-;20480:79;;20570:15;20588:24;20598:6;20605;20588:9;:24::i;:::-;20570:42;;20623:35;20633:6;20641:9;20652:5;20623:9;:35::i;:::-;20669:44;20678:6;20686;20694:18;:7;20706:5;20694:18;:11;:18;:::i;:::-;20669:8;:44::i;:::-;-1:-1:-1;20731:4:0;;20208:535;-1:-1:-1;;;;;;;;;;20208:535:0:o;8141:91::-;8212:12;;8141:91;:::o;9737:256::-;9826:4;9843:36;9853:6;9861:9;9872:6;9843:9;:36::i;:::-;-1:-1:-1;;;;;9919:19:0;;;;;;:11;:19;;;;;;;;9907:10;9919:31;;;;;;;;;9890:73;;9899:6;;9919:43;;9955:6;9919:43;:35;:43;:::i;9890:73::-;-1:-1:-1;9981:4:0;9737:256;;;;;:::o;21529:546::-;21723:4;21740:16;21759:9;21740:28;;21779:16;21798:64;21821:6;21828;21835:4;;21798:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;21840:5:0;;-1:-1:-1;21846:6:0;;-1:-1:-1;21853:8:0;;-1:-1:-1;21798:22:0;:64::i;:::-;21779:83;;21873:14;21890:82;21917:8;21927:9;;21890:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;21938:5:0;;-1:-1:-1;21945:6:0;;-1:-1:-1;21953:8:0;;-1:-1:-1;21963:8:0;21890:26;:82::i;:::-;21873:99;;21983:32;21992:6;22000;22008;21983:8;:32::i;:::-;22026:6;-1:-1:-1;;;;;22026:11:0;22038:4;;22026:17;;;;;30:3:-1;22:6;14;1:33;22026:17:0;;45:16:-1;;;-1:-1;22026:17:0;;-1:-1:-1;22026:17:0;;-1:-1:-1;;22026:17:0;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;22061:4:0;;21529:546;-1:-1:-1;;;;;;;;;;;;;;;21529:546:0:o;18692:63::-;;;;:::o;18657:26::-;;;;;;:::o;10402:206::-;10508:10;10482:4;10529:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10529:32:0;;;;;;;;;;10482:4;;10499:79;;10520:7;;10529:48;;10566:10;10529:48;:36;:48;:::i;20749:325::-;20935:91;;;;20960:4;20935:91;;;;;;;;;;;;;;;-1:-1:-1;;;;;20935:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20935:91:0;;;;;;;20911:130;;;;;20885:7;;20911:155;;:153;:155::i;:::-;20904:162;20749:325;-1:-1:-1;;;;;;20749:325:0:o;19563:377::-;19696:4;19713:16;19732:43;19748:7;19756:5;19762;19768:6;19732:15;:43::i;:::-;19713:62;;19786:14;19803:62;19830:8;19840:9;;19803:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19851:5:0;;-1:-1:-1;19858:6:0;;-1:-1:-1;19803:26:0;;-1:-1:-1;19803:62:0:i;:::-;19786:79;;19876:32;19885:6;19893:7;19902:5;19876:8;:32::i;:::-;-1:-1:-1;19926:4:0;;19563:377;-1:-1:-1;;;;;;;;19563:377:0:o;18884:47::-;;;;;;;;;;;;;:::o;22081:354::-;22238:7;22264:163;22313:4;22341:6;22349;22357:4;22363:5;22370:6;22378:8;22288:99;;;;;;-1:-1:-1;;;;;22288:99:0;-1:-1:-1;;;;;22288:99:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22288:99:0;-1:-1:-1;;;;;22288:99:0;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;22288:99:0;;;;;-1:-1:-1;22288:99:0;;;;;;;-1:-1:-1;22288:99:0;;;;;;;;;;26:21:-1;;;22:32;;6:49;;22288:99:0;;;;;;22264:138;;;;;;-1:-1:-1;22264:161:0;;-1:-1:-1;;;22264:163:0:i;:::-;22257:170;22081:354;-1:-1:-1;;;;;;;22081:354:0:o;8295:110::-;-1:-1:-1;;;;;8379:18:0;8352:7;8379:18;;;;;;;;;;;;8295:110::o;18940:363::-;19069:4;19086:16;19105:39;19122:2;19125:5;19131;19137:6;19105:16;:39::i;:::-;19086:58;;19155:14;19172:62;19199:8;19209:9;;19172:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19220:5:0;;-1:-1:-1;19227:6:0;;-1:-1:-1;19172:26:0;;-1:-1:-1;19172:62:0:i;:::-;19155:79;;19245:28;19255:6;19263:2;19267:5;19245:9;:28::i;18620:::-;;;;;;;;;;;;;;;-1:-1:-1;;18620:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21082:156;21174:7;21200:30;21220:9;;21200:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;21200:11:0;;:30;-1:-1:-1;;21200:30:0;:19;:30;;-1:-1:-1;21200:30:0:i;:::-;21193:37;21082:156;-1:-1:-1;;;;21082:156:0:o;19946:254::-;20090:76;;;;20115:4;20090:76;;;;;;;;;;;;;;;-1:-1:-1;;;;;20090:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20090:76:0;;;;;;;20080:87;;;;;20054:7;;20080:112;;:110;:112::i;:::-;20073:119;19946:254;-1:-1:-1;;;;;19946:254:0:o;11111:216::-;11222:10;11196:4;11243:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11243:32:0;;;;;;;;;;11196:4;;11213:84;;11234:7;;11243:53;;11280:15;11243:53;:36;:53;:::i;8618:156::-;8687:4;8704:40;8714:10;8726:9;8737:6;8704:9;:40::i;19309:246::-;19449:72;;;;19474:4;19449:72;;;;;;;;;;;;;;;-1:-1:-1;;;;;19449:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19449:72:0;;;;;;;19439:83;;;;;19413:7;;19439:108;;:106;:108::i;21246:275::-;21340:4;21357:23;21365:6;21373;21357:7;:23::i;:::-;;21392:14;21412:6;-1:-1:-1;;;;;21412:11:0;21424:4;;21412:17;;;;;30:3:-1;22:6;14;1:33;21412:17:0;;45:16:-1;;;-1:-1;21412:17:0;;-1:-1:-1;21412:17:0;;-1:-1:-1;;21412:17:0;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;21391:38:0;;;21448:9;21440:51;;;;;-1:-1:-1;;;;;21440:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21509:4:0;;21246:275;-1:-1:-1;;;;;21246:275:0:o;8837:134::-;-1:-1:-1;;;;;8936:18:0;;;8909:7;8936:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8837:134::o;13913:335::-;-1:-1:-1;;;;;14006:19:0;;13998:68;;;;-1:-1:-1;;;;;13998:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14085:21:0;;14077:68;;;;-1:-1:-1;;;;;14077:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14158:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;14209:31;;;;;;;;;;;;;;;;;13913:335;;;:::o;23074:508::-;23211:7;;23248:27;:8;23265:9;23248:27;:16;:27;:::i;:::-;23231:44;-1:-1:-1;;;;;;23294:18:0;;23286:61;;;;;-1:-1:-1;;;;;23286:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23375:20:0;;;;;;:12;:20;;;;;;23366:29;;23358:71;;;;;-1:-1:-1;;;;;23358:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23440:20:0;;;;;;:12;:20;;;;;:22;;;;;;23476:8;;23473:76;;23500:37;23510:6;23518:10;23530:6;11817:429;-1:-1:-1;;;;;11915:20:0;;11907:70;;;;-1:-1:-1;;;;;11907:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11996:23:0;;11988:71;;;;-1:-1:-1;;;;;11988:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12092:17:0;;:9;:17;;;;;;;;;;;:29;;12114:6;12092:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;12072:17:0;;;:9;:17;;;;;;;;;;;:49;;;;12155:20;;;;;;;:32;;12180:6;12155:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;12132:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;12203:35;;;;;;;12132:20;;12203:35;;;;;;;;;;;;;11817:429;;;:::o;4256:184::-;4314:7;4347:1;4342;:6;;4334:49;;;;;-1:-1:-1;;;;;4334:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4406:5:0;;;4256:184::o;22441:625::-;22620:7;;22657:27;:8;22674:9;22657:27;:16;:27;:::i;:::-;22640:44;;22713:8;22703;:18;;22695:64;;;;-1:-1:-1;;;;;22695:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22778:18:0;;22770:61;;;;;-1:-1:-1;;;;;22770:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22859:20:0;;;;;;:12;:20;;;;;;22850:29;;22842:71;;;;;-1:-1:-1;;;;;22842:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22924:20:0;;;;;;:12;:20;;;;;:22;;;;;;22960:8;;22957:76;;22984:37;22994:6;23002:10;23014:6;22984:9;:37::i;3800:181::-;3858:7;3890:5;;;3914:6;;;;3906:46;;;;;-1:-1:-1;;;;;3906:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3972:1;3800:181;-1:-1:-1;;;3800:181:0:o;18157:269::-;18359:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18359:58:0;;;;;;;18349:69;;;;;;18157:269::o;15951:1930::-;16029:7;16092:9;:16;16112:2;16092:22;16088:74;;-1:-1:-1;16147:1:0;16131:19;;16088:74;16523:4;16508:20;;16502:27;16569:4;16554:20;;16548:27;16623:4;16608:20;;16602:27;16231:9;16594:36;17553:66;17540:79;;17536:129;;;17651:1;17636:17;;;;;;;17536:129;17681:1;:7;;17686:2;17681:7;;:18;;;;;17692:1;:7;;17697:2;17692:7;;17681:18;17677:68;;;17731:1;17716:17;;;;;;;17677:68;17849:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17849:24:0;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17849:24:0;;-1:-1:-1;;17849:24:0;;;15951:1930;-1:-1:-1;;;;;;;15951:1930:0:o

Swarm Source

bzzr://e84c1fe95d275960e55c78e5a6f01f5ca3b47737baf5bb198c4daa7a1775b15f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Colendi is decentralized credit scoring protocol and microcredit platform which uses blockchain technology to provide innovative credit scoring and a universal financial passport to serve as a bridge between lenders, merchants and microfinance borrowers globally.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.