Contract 0xE1C8f3d529BEa8E3fA1FAC5B416335a2f998EE1C 7

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xcb05add09fef49fb62de1842653971dfec4adb5d39db7f8b64376a76f6a205cfApprove197631652021-10-22 13:44:3112 hrs 49 mins ago0x18b0046ef6ee3fd03ba91a190e37e7ae72b89d8b IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.010508580317
0xf6c933d297506b43c1d2e8827c7c255eb04baf54dc793422fafb0d0a4f902db2Approve197269022021-10-22 2:44:2023 hrs 49 mins ago0x90bf1e866a1b4681e1a82c377b4839859f97dab7 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007148737972
0x2b41158dd0904d2551aca43dbfbe796d8ce90ba159f8b1f7aac23c18b10f8f84Approve196251052021-10-20 22:21:402 days 4 hrs ago0xbff9b11aa720564d146e60a03fb14fd38266890f IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.006970019707
0x54649f0966864642eca715628e49ed8b88b280f9eab7b404d00ed96ded120887Approve196234462021-10-20 21:55:322 days 4 hrs ago0x9992e717677fe655c522dbc38103ca1a24862c25 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.006449016763
0xd1c08957cfb075c4129649c7ecc348b14535c167cbe26b02893483afe5cfa122Approve194983982021-10-19 11:38:063 days 14 hrs ago0xce6357c9366e884d9c97210c6d5256c4dba0061c IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.010389921795
0xdb31b1876f0f8bd5396d855610e7f6a6080c4719b14ef02389166ab869fd8825Approve194950742021-10-19 10:39:123 days 15 hrs ago0x7ddab91082a34aac3d1e99c051d1c71b0c9e85a8 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.008631592226
0x86ab298599a488c7d908ae2a105ddb40f10eed2f4d098112a44b51248be98b3dApprove194631542021-10-19 1:32:424 days 1 hr ago0x44a09272b8a2d2c0ecbeb8ebbb632ea88cafeb5b IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.005232947
0x7d213b6491dae507c11abb24a4a0c72f3a77f69baa77f3d09952b864d5361fd5Approve194123912021-10-18 11:33:104 days 15 hrs ago0x1702f2d0df7c99011a690461c34e51bd81cbab48 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.006004356097
0x9bfcbf5bd9d5d9f6477a1b843e5258d08eb25b9a686f770dc9a746b1b2e362dcApprove194070642021-10-18 9:58:424 days 16 hrs ago0xc5cf8d4bef8c4897bb596c8e2a671767ad691964 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.005942183137
0x5e302c59326a12934d1d3eebc343782988b8899164957958b33a4a28fcee6888Approve193801352021-10-18 2:12:485 days 21 mins ago0x6cc029b230dfb4a1c075c96b380e356f4815eea1 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007639493238
0xdd195fbc6a7ba5ae7e7a1749943f36a10e97f94b17276ee2825df253195f104bApprove192702862021-10-16 19:43:146 days 6 hrs ago0x527b60471a432ae0a62dac24c654e85c9b00c6c7 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.006301882686
0x4ea03df6e0a10649e315cda62527d129e870c67e5a2d1c390dbe4681c421ea3eApprove192285942021-10-16 7:54:476 days 18 hrs ago0x5638f545c240e52920f49c035ba6e85846d229d6 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.003483411974
0xb4821065a0ee8c5ff3c29172d155451eaffac6b7f93125436a6f52c44296cb53Approve192251792021-10-16 6:58:266 days 19 hrs ago0x5638f545c240e52920f49c035ba6e85846d229d6 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.005590977896
0x49c89d90f3e4fa340d3c5c9046a405103cf2a3814b0a64add1667805e6bc659fApprove192251032021-10-16 6:57:046 days 19 hrs ago0x5638f545c240e52920f49c035ba6e85846d229d6 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.002014446233
0xd8c488125f4e6e1ffe7bcc3e24eaabee66c97910d449a3745afb0c544e7b59e2Approve191880322021-10-15 20:40:057 days 5 hrs ago0xf662cabf1dff43c0101ae21d691cfe753865bcb7 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.011400520758
0x047969c6bbbfd70fb6d0204998efa8b8892bcf74993f288c060282eb14445295Approve191878122021-10-15 20:36:577 days 5 hrs ago0xf662cabf1dff43c0101ae21d691cfe753865bcb7 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007628500837
0xdf2d7fd24a442bd6da0da03e935db899883c83922f610b94210fd1639ca560faApprove191072672021-10-14 21:29:148 days 5 hrs ago0xc80debeceda447dd2434ff6b7d64a1a9eb1e1896 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.0086081472
0x8647e909218e43ae4e2f0c8a72c97c62a497dd487e0b8823c3361826390203f5Approve190411692021-10-14 1:32:369 days 1 hr ago0x527b60471a432ae0a62dac24c654e85c9b00c6c7 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.012303924164
0x64815f7d87f0ae6af0c05caafe96afb830b7b0bae75998aa8d92a9e05e8975a0Approve190298742021-10-13 22:16:589 days 4 hrs ago0xa2d88a6c6d397c515adde537e43abd6633ff8b9d IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.017223703827
0xcc7a5140fa4df96dce5954678fa66107014fda290fc5f91d5332fe321a9ff174Approve190296632021-10-13 22:12:499 days 4 hrs ago0x1212503603aaa0fc26a90f77515d2a51c998866c IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.009234187238
0x653e39c063a41b5229e4db8076f8ad970f8080020ab18958f854b246113c0da1Approve190295782021-10-13 22:11:029 days 4 hrs ago0x47ea0ab486f9d00f16d9f248e3388586e061f7f8 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.007209557136
0x9b780ebe9f7bbb5d17e3d8850a1e1008686a87bb52b861f5df740f66ce18cc24Approve188571032021-10-11 19:55:1511 days 6 hrs ago0xa06c4b981dae1e0e8945eb61380431d83f68bf39 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.011113282173
0xa95c5eef541a93f1cb678dd10936fdcf02d83c2cd5e0fca6f83a318d61b2c6ceApprove188570582021-10-11 19:54:2211 days 6 hrs ago0xa06c4b981dae1e0e8945eb61380431d83f68bf39 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.011270497311
0xaa82abbdc7495e8d696d53d9b0c357d6c777269f85a2589245d1915297fffb68Approve187678782021-10-10 17:37:2512 days 8 hrs ago0x4a91f5ce1c88b30ea61ed5223ed72251b79fa467 IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.016253586487
0xace712e22e3f3c50a20e3b0134958feeb79764a3e5aa5e141c32c37ea2eb8781Approve186713252021-10-09 12:19:2213 days 14 hrs ago0x533d01a9c2bc36034623407be7d28ac0c705899b IN  0xe1c8f3d529bea8e3fa1fac5b416335a2f998ee1c0 FTM0.003994768335
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x323c7ab63427819ddac828d160841b0dc9e5318412304c22b6d7c672bde45ff068072992021-05-18 10:14:57157 days 16 hrs ago 0xc20752024c3288efafda4d93f5dbd0df25eb0631  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Elk

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at FtmScan.com on 2021-05-28
*/

// Sources flattened with hardhat v2.1.1 https://hardhat.org

// File contracts/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.5.16;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @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 addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        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-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        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, string memory errorMessage) 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-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        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) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        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) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


// File contracts/Elk.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

contract Elk {
    /// @notice EIP-20 token name for this token
    string public constant name = "Elk";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "ELK";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 4_242_424e18; // 4.2 million ELK

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new ELK token
     * @param account The initial account to grant all the tokens
     */
    constructor(address account) public {
        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "ELK::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "ELK::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "ELK::permit: invalid signature");
        require(signatory == owner, "ELK::permit: unauthorized");
        require(now <= deadline, "ELK::permit: signature expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "ELK::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "ELK::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "ELK::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "ELK::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "ELK::delegateBySig: invalid nonce");
        require(now <= expiry, "ELK::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "ELK::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "ELK::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "ELK::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "ELK::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "ELK::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "ELK::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "ELK::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "ELK::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526a03825e4410125034e000006000553480156200002057600080fd5b50604051620022a8380380620022a88339810160408190526200004391620000d3565b600080546001600160a01b0383168083526002602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000b191906200010d565b60405180910390a3506200014c565b8051620000cd8162000132565b92915050565b600060208284031215620000e657600080fd5b6000620000f48484620000c0565b949350505050565b62000107816200012f565b82525050565b60208101620000cd8284620000fc565b60006001600160a01b038216620000cd565b90565b6200013d816200011d565b81146200014957600080fd5b50565b61214c806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063b4b5ea571161008c578063dd62ed3e11610066578063dd62ed3e146102f6578063e7a324dc14610309578063f1127ed81461031157610177565b8063b4b5ea57146102bd578063c3cda520146102d0578063d505accf146102e357610177565b80637ecebe00116100bd5780637ecebe001461028f57806395d89b41146102a2578063a9059cbb146102aa57610177565b806370a082311461025c578063782d6fe11461026f57610177565b806330adf81f1161012f578063587cde1e11610114578063587cde1e146102075780635c19a95c146102275780636fcfff451461023c57610177565b806330adf81f146101ea578063313ce567146101f257610177565b806318160ddd1161016057806318160ddd146101ba57806320606b70146101cf57806323b872dd146101d757610177565b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610332565b6040516101919190611db2565b60405180910390f35b6101ad6101a8366004611652565b610351565b6040516101919190611cae565b6101c2610415565b6040516101919190611cbc565b6101c261041b565b6101ad6101e5366004611569565b610432565b6101c2610580565b6101fa61058c565b6040516101919190611e7c565b61021a610215366004611509565b610591565b6040516101919190611ca0565b61023a610235366004611509565b6105ac565b005b61024f61024a366004611509565b6105b9565b6040516101919190611e53565b6101c261026a366004611509565b6105d1565b61028261027d366004611652565b6105f5565b6040516101919190611e98565b6101c261029d366004611509565b61080f565b610184610821565b6101ad6102b8366004611652565b61085a565b6102826102cb366004611509565b610896565b61023a6102de366004611682565b610907565b61023a6102f13660046115b6565b610aec565b6101c261030436600461152f565b610dd3565b6101c2610e07565b61032461031f366004611709565b610e13565b604051610191929190611e61565b60405180604001604052806003815260200162456c6b60e81b81525081565b600080600019831415610367575060001961038c565b6103898360405180606001604052806024815260200161206660249139610e49565b90505b3360008181526001602090815260408083206001600160a01b03891680855292529182902080546bffffffffffffffffffffffff19166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610401908590611e8a565b60405180910390a360019150505b92915050565b60005481565b60405161042790611c8a565b604051809103902081565b6001600160a01b03831660009081526001602090815260408083203380855290835281842054825160608101909352602480845291936001600160601b0390911692859261048a928892919061206690830139610e49565b9050866001600160a01b0316836001600160a01b0316141580156104b757506001600160601b0382811614155b156105665760006104e183836040518060600160405280603c8152602001611f7e603c9139610e81565b6001600160a01b038981166000818152600160209081526040808320948a16808452949091529081902080546bffffffffffffffffffffffff19166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061055c908590611e8a565b60405180910390a3505b610571878783610ec0565b600193505050505b9392505050565b60405161042790611c7f565b601281565b6003602052600090815260409020546001600160a01b031681565b6105b63382611075565b50565b60056020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600260205260409020546001600160601b031690565b600043821061061f5760405162461bcd60e51b815260040161061690611de3565b60405180910390fd5b6001600160a01b03831660009081526005602052604090205463ffffffff168061064d57600091505061040f565b6001600160a01b038416600090815260046020908152604080832063ffffffff6000198601811685529252909120541683106106ca576001600160a01b03841660009081526004602090815260408083206000199490940163ffffffff168352929052205464010000000090046001600160601b0316905061040f565b6001600160a01b038416600090815260046020908152604080832083805290915290205463ffffffff1683101561070557600091505061040f565b600060001982015b8163ffffffff168163ffffffff1611156107c957600282820363ffffffff160481036107376114c6565b506001600160a01b038716600090815260046020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046001600160601b031691810191909152908714156107a45760200151945061040f9350505050565b805163ffffffff168711156107bb578193506107c2565b6001820392505b505061070d565b506001600160a01b038516600090815260046020908152604080832063ffffffff909416835292905220546001600160601b036401000000009091041691505092915050565b60066020526000908152604090205481565b6040518060400160405280600381526020017f454c4b000000000000000000000000000000000000000000000000000000000081525081565b60008061087f8360405180606001604052806025815260200161204160259139610e49565b905061088c338583610ec0565b5060019392505050565b6001600160a01b03811660009081526005602052604081205463ffffffff16806108c1576000610579565b6001600160a01b0383166000908152600460209081526040808320600019850163ffffffff16845290915290205464010000000090046001600160601b03169392505050565b600060405161091590611c8a565b604080519182900382208282019091526003825262456c6b60e81b6020909201919091527f23f5c44ca2b306f4e83d6b0757f1e134ea5717fa5e929cb430b57243cf456c60610962611117565b306040516020016109769493929190611d62565b604051602081830303815290604052805190602001209050600060405161099c90611c95565b6040519081900381206109b7918a908a908a90602001611d24565b604051602081830303815290604052805190602001209050600082826040516020016109e4929190611c4e565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610a219493929190611d97565b6020604051602081039080840390855afa158015610a43573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610a765760405162461bcd60e51b815260040161061690611e13565b6001600160a01b03811660009081526006602052604090208054600181019091558914610ab55760405162461bcd60e51b815260040161061690611e33565b87421115610ad55760405162461bcd60e51b815260040161061690611e43565b610adf818b611075565b505050505b505050505050565b6000600019861415610b015750600019610b26565b610b238660405180606001604052806023815260200161201e60239139610e49565b90505b6000604051610b3490611c8a565b604080519182900382208282019091526003825262456c6b60e81b6020909201919091527f23f5c44ca2b306f4e83d6b0757f1e134ea5717fa5e929cb430b57243cf456c60610b81611117565b30604051602001610b959493929190611d62565b6040516020818303038152906040528051906020012090506000604051610bbb90611c7f565b604080519182900382206001600160a01b038d16600090815260066020908152929020805460018101909155610bfd9391928e928e928e9290918e9101611cca565b60405160208183030381529060405280519060200120905060008282604051602001610c2a929190611c4e565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610c679493929190611d97565b6020604051602081039080840390855afa158015610c89573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cbc5760405162461bcd60e51b815260040161061690611e03565b8b6001600160a01b0316816001600160a01b031614610ced5760405162461bcd60e51b815260040161061690611dc3565b88421115610d0d5760405162461bcd60e51b815260040161061690611df3565b84600160008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610dbd9190611e8a565b60405180910390a3505050505050505050505050565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160601b031690565b60405161042790611c95565b600460209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b6000816c010000000000000000000000008410610e795760405162461bcd60e51b81526004016106169190611db2565b509192915050565b6000836001600160601b0316836001600160601b031611158290610eb85760405162461bcd60e51b81526004016106169190611db2565b505050900390565b6001600160a01b038316610ee65760405162461bcd60e51b815260040161061690611dd3565b6001600160a01b038216610f0c5760405162461bcd60e51b815260040161061690611e23565b6001600160a01b038316600090815260026020908152604091829020548251606081019093526035808452610f57936001600160601b039092169285929190611fe990830139610e81565b6001600160a01b03848116600090815260026020908152604080832080546bffffffffffffffffffffffff19166001600160601b0396871617905592861682529082902054825160608101909352602f808452610fc49491909116928592909190611fba9083013961111b565b6001600160a01b038381166000818152600260205260409081902080546bffffffffffffffffffffffff19166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611036908590611e8a565b60405180910390a36001600160a01b0380841660009081526003602052604080822054858416835291205461107092918216911683611157565b505050565b6001600160a01b03808316600081815260036020818152604080842080546002845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611111828483611157565b50505050565b4690565b6000838301826001600160601b03808716908316101561114e5760405162461bcd60e51b81526004016106169190611db2565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561118257506000816001600160601b0316115b15611070576001600160a01b0383161561123b576001600160a01b03831660009081526005602052604081205463ffffffff1690816111c2576000611202565b6001600160a01b0385166000908152600460209081526040808320600019860163ffffffff16845290915290205464010000000090046001600160601b03165b90506000611229828560405180606001604052806027815260200161208a60279139610e81565b9050611237868484846112e7565b5050505b6001600160a01b03821615611070576001600160a01b03821660009081526005602052604081205463ffffffff1690816112765760006112b6565b6001600160a01b0384166000908152600460209081526040808320600019860163ffffffff16845290915290205464010000000090046001600160601b03165b905060006112dd82856040518060600160405280602681526020016120e46026913961111b565b9050610ae4858484845b600061130b436040518060600160405280603381526020016120b16033913961149e565b905060008463ffffffff1611801561135457506001600160a01b038516600090815260046020908152604080832063ffffffff6000198901811685529252909120548282169116145b156113b4576001600160a01b0385166000908152600460209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff0000000019166401000000006001600160601b03851602179055611454565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600483528781208c871682528352878120965187549451909516640100000000026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161148f929190611ea6565b60405180910390a25050505050565b6000816401000000008410610e795760405162461bcd60e51b81526004016106169190611db2565b604080518082019091526000808252602082015290565b803561040f81611f4e565b803561040f81611f62565b803561040f81611f6b565b803561040f81611f74565b60006020828403121561151b57600080fd5b600061152784846114dd565b949350505050565b6000806040838503121561154257600080fd5b600061154e85856114dd565b925050602061155f858286016114dd565b9150509250929050565b60008060006060848603121561157e57600080fd5b600061158a86866114dd565b935050602061159b868287016114dd565b92505060406115ac868287016114e8565b9150509250925092565b600080600080600080600060e0888a0312156115d157600080fd5b60006115dd8a8a6114dd565b97505060206115ee8a828b016114dd565b96505060406115ff8a828b016114e8565b95505060606116108a828b016114e8565b94505060806116218a828b016114fe565b93505060a06116328a828b016114e8565b92505060c06116438a828b016114e8565b91505092959891949750929550565b6000806040838503121561166557600080fd5b600061167185856114dd565b925050602061155f858286016114e8565b60008060008060008060c0878903121561169b57600080fd5b60006116a789896114dd565b96505060206116b889828a016114e8565b95505060406116c989828a016114e8565b94505060606116da89828a016114fe565b93505060806116eb89828a016114e8565b92505060a06116fc89828a016114e8565b9150509295509295509295565b6000806040838503121561171c57600080fd5b600061172885856114dd565b925050602061155f858286016114f3565b61174281611ed3565b82525050565b61174281611ede565b61174281611ee3565b61174261176682611ee3565b611ee3565b600061177682611ec1565b6117808185611ec5565b9350611790818560208601611f18565b61179981611f44565b9093019392505050565b60006117b0601983611ec5565b7f454c4b3a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b60006117e9600283611ece565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000611822603b83611ec5565b7f454c4b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b6000611881602683611ec5565b7f454c4b3a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b60006118e0601e83611ec5565b7f454c4b3a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000611919605283611ece565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061199e601e83611ec5565b7f454c4b3a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b60006119d7602583611ec5565b7f454c4b3a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611a36604383611ece565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000611abb603983611ec5565b7f454c4b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b6000611b1a602183611ec5565b7f454c4b3a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611b79602583611ec5565b7f454c4b3a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611bd8603a83611ece565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b61174281611ef2565b61174281611efb565b61174281611f0d565b61174281611f01565b6000611c59826117dc565b9150611c65828561175a565b602082019150611c75828461175a565b5060200192915050565b600061040f8261190c565b600061040f82611a29565b600061040f82611bcb565b6020810161040f8284611739565b6020810161040f8284611748565b6020810161040f8284611751565b60c08101611cd88289611751565b611ce56020830188611739565b611cf26040830187611739565b611cff6060830186611751565b611d0c6080830185611751565b611d1960a0830184611751565b979650505050505050565b60808101611d328287611751565b611d3f6020830186611739565b611d4c6040830185611751565b611d596060830184611751565b95945050505050565b60808101611d708287611751565b611d7d6020830186611751565b611d8a6040830185611751565b611d596060830184611739565b60808101611da58287611751565b611d3f6020830186611c33565b60208082528101610579818461176b565b6020808252810161040f816117a3565b6020808252810161040f81611815565b6020808252810161040f81611874565b6020808252810161040f816118d3565b6020808252810161040f81611991565b6020808252810161040f816119ca565b6020808252810161040f81611aae565b6020808252810161040f81611b0d565b6020808252810161040f81611b6c565b6020810161040f8284611c2a565b60408101611e6f8285611c2a565b6105796020830184611c45565b6020810161040f8284611c33565b6020810161040f8284611c3c565b6020810161040f8284611c45565b60408101611eb48285611c3c565b6105796020830184611c3c565b5190565b90815260200190565b919050565b600061040f82611ee6565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061040f82611f01565b60005b83811015611f33578181015183820152602001611f1b565b838111156111115750506000910152565b601f01601f191690565b611f5781611ed3565b81146105b657600080fd5b611f5781611ee3565b611f5781611ef2565b611f5781611efb56fe454c4b3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365454c4b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773454c4b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365454c4b3a3a7065726d69743a20616d6f756e7420657863656564732039362062697473454c4b3a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473454c4b3a3a617070726f76653a20616d6f756e7420657863656564732039362062697473454c4b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773454c4b3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473454c4b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773a365627a7a723158202e190004b516e0e505766c2711f223067444f31660b8c09006a532cb6ab629fe6c6578706572696d656e74616cf564736f6c63430005110040000000000000000000000000c20752024c3288efafda4d93f5dbd0df25eb0631

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

000000000000000000000000c20752024c3288efafda4d93f5dbd0df25eb0631

-----Decoded View---------------
Arg [0] : account (address): 0xc20752024c3288efafda4d93f5dbd0df25eb0631

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c20752024c3288efafda4d93f5dbd0df25eb0631


Deployed ByteCode Sourcemap

6862:14568:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6862:14568:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6932:35;;;:::i;:::-;;;;;;;;;;;;;;;;10686:418;;;;;;;;;:::i;:::-;;;;;;;;7227:38;;;:::i;:::-;;;;;;;;8149:122;;;:::i;13766:670::-;;;;;;;;;:::i;8572:137::-;;;:::i;7128:35::-;;;:::i;:::-;;;;;;;;7599:45;;;;;;;;;:::i;:::-;;;;;;;;14584:102;;;;;;;;;:::i;:::-;;8027:49;;;;;;;;;:::i;:::-;;;;;;;;12847:108;;;;;;;;;:::i;16760:1217::-;;;;;;;;;:::i;:::-;;;;;;;;8790:39;;;;;;;;;:::i;7028:37::-;;;:::i;13219:237::-;;;;;;;;;:::i;16107:222::-;;;;;;;;;:::i;15120:786::-;;;;;;;;;:::i;11594:1050::-;;;;;;;;;:::i;10072:136::-;;;;;;;;;:::i;8365:117::-;;;:::i;7888:70::-;;;;;;;;;:::i;:::-;;;;;;;;;6932:35;;;;;;;;;;;;;;-1:-1:-1;;;6932:35:0;;;;:::o;10686:418::-;10754:4;10771:13;-1:-1:-1;;10799:9:0;:21;10795:172;;;-1:-1:-1;;;10795:172:0;;;10898:57;10905:9;10898:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;10889:66;;10795:172;10990:10;10979:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;10979:31:0;;;;;;;;;;;:40;;-1:-1:-1;;10979:40:0;-1:-1:-1;;;;;10979:40:0;;;;;11037:37;;10979:31;;10990:10;11037:37;;;;10979:40;;11037:37;;;;;;;;;;11092:4;11085:11;;;10686:418;;;;;:::o;7227:38::-;;;;:::o;8149:122::-;8191:80;;;;;;;;;;;;;;8149:122;:::o;13766:670::-;-1:-1:-1;;;;;13930:15:0;;13848:4;13930:15;;;:10;:15;;;;;;;;13883:10;13930:24;;;;;;;;;;13981:57;;;;;;;;;;;;13883:10;;-1:-1:-1;;;;;13930:24:0;;;;13848:4;;13981:57;;13988:9;;13981:57;;;;;;;:6;:57::i;:::-;13965:73;;14066:3;-1:-1:-1;;;;;14055:14:0;:7;-1:-1:-1;;;;;14055:14:0;;;:48;;;;-1:-1:-1;;;;;;14073:30:0;;;;;14055:48;14051:310;;;14120:19;14142:95;14148:16;14166:6;14142:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;-1:-1:-1;;;;;14252:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;-1:-1:-1;;14252:39:0;-1:-1:-1;;;;;14252:39:0;;;;;14313:36;14252:39;;-1:-1:-1;14252:24:0;;14313:36;;;;14252:39;;14313:36;;;;;;;;;;14051:310;;14373:33;14389:3;14394;14399:6;14373:15;:33::i;:::-;14424:4;14417:11;;;;;13766:670;;;;;;:::o;8572:137::-;8614:95;;;;;;7128:35;7161:2;7128:35;:::o;7599:45::-;;;;;;;;;;;;-1:-1:-1;;;;;7599:45:0;;:::o;14584:102::-;14646:32;14656:10;14668:9;14646;:32::i;:::-;14584:102;:::o;8027:49::-;;;;;;;;;;;;;;;:::o;12847:108::-;-1:-1:-1;;;;;12930:17:0;12906:4;12930:17;;;:8;:17;;;;;;-1:-1:-1;;;;;12930:17:0;;12847:108::o;16760:1217::-;16839:6;16880:12;16866:11;:26;16858:77;;;;-1:-1:-1;;;16858:77:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16970:23:0;;16948:19;16970:23;;;:14;:23;;;;;;;;17008:17;17004:58;;17049:1;17042:8;;;;;17004:58;-1:-1:-1;;;;;17122:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;17143:16:0;;17122:38;;;;;;;;;:48;;:63;-1:-1:-1;17118:147:0;;-1:-1:-1;;;;;17209:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;17230:16:0;;;;17209:38;;;;;;;;:44;;;;-1:-1:-1;;;;;17209:44:0;;-1:-1:-1;17202:51:0;;17118:147;-1:-1:-1;;;;;17326:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;17322:88:0;;;17397:1;17390:8;;;;;17322:88;17422:12;-1:-1:-1;;17464:16:0;;17491:428;17506:5;17498:13;;:5;:13;;;17491:428;;;17570:1;17553:13;;;17552:19;;;17544:27;;17613:20;;:::i;:::-;-1:-1:-1;;;;;;17636:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;17613:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17613:51:0;;;;;;;;;17683:27;;17679:229;;;17738:8;;;;-1:-1:-1;17731:15:0;;-1:-1:-1;;;;17731:15:0;17679:229;17772:12;;:26;;;-1:-1:-1;17768:140:0;;;17827:6;17819:14;;17768:140;;;17891:1;17882:6;:10;17874:18;;17768:140;17491:428;;;;;-1:-1:-1;;;;;;17936:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;17936:33:0;;;;;;-1:-1:-1;;16760:1217:0;;;;:::o;8790:39::-;;;;;;;;;;;;;:::o;7028:37::-;;;;;;;;;;;;;;;;;;;:::o;13219:237::-;13284:4;13301:13;13317:58;13324:9;13317:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;13301:74;;13386:40;13402:10;13414:3;13419:6;13386:15;:40::i;:::-;-1:-1:-1;13444:4:0;;13219:237;-1:-1:-1;;;13219:237:0:o;16107:222::-;-1:-1:-1;;;;;16213:23:0;;16172:6;16213:23;;;:14;:23;;;;;;;;16254:16;:67;;16320:1;16254:67;;;-1:-1:-1;;;;;16273:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;16294:16:0;;16273:38;;;;;;;;;:44;;;;-1:-1:-1;;;;;16273:44:0;16247:74;16107:222;-1:-1:-1;;;16107:222:0:o;15120:786::-;15236:23;8191:80;;;;;;;;;;;;;;;;15316:4;;;;;;;;;-1:-1:-1;;;15316:4:0;;;;;;;;15300:22;15324:12;:10;:12::i;:::-;15346:4;15272:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15272:80:0;;;15262:91;;;;;;15236:117;;15364:18;8411:71;;;;;;;;;;;;;;;15395:57;;15427:9;;15438:5;;15445:6;;15395:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15395:57:0;;;15385:68;;;;;;15364:89;;15464:14;15520:15;15537:10;15491:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15491:57:0;;;15481:68;;;;;;15464:85;;15560:17;15580:26;15590:6;15598:1;15601;15604;15580:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15580:26:0;;-1:-1:-1;;15580:26:0;;;-1:-1:-1;;;;;;;15625:23:0;;15617:73;;;;-1:-1:-1;;;15617:73:0;;;;;;;;;-1:-1:-1;;;;;15718:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;15709:28;;15701:74;;;;-1:-1:-1;;;15701:74:0;;;;;;;;;15801:6;15794:3;:13;;15786:63;;;;-1:-1:-1;;;15786:63:0;;;;;;;;;15867:31;15877:9;15888;15867;:31::i;:::-;15860:38;;;;15120:786;;;;;;;:::o;11594:1050::-;11724:13;-1:-1:-1;;11752:9:0;:21;11748:171;;;-1:-1:-1;;;11748:171:0;;;11851:56;11858:9;11851:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;11842:65;;11748:171;11931:23;8191:80;;;;;;;;;;;;;;;;12011:4;;;;;;;;;-1:-1:-1;;;12011:4:0;;;;;;;;11995:22;12019:12;:10;:12::i;:::-;12041:4;11967:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11967:80:0;;;11957:91;;;;;;11931:117;;12059:18;8614:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12145:13:0;;;;;;:6;:13;;;;;;;:15;;;;;;;;12090:81;;8614:95;;12118:5;;12125:7;;12134:9;;12145:15;;12162:8;;12090:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12090:81:0;;;12080:92;;;;;;12059:113;;12183:14;12239:15;12256:10;12210:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12210:57:0;;;12200:68;;;;;;12183:85;;12279:17;12299:26;12309:6;12317:1;12320;12323;12299:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12299:26:0;;-1:-1:-1;;12299:26:0;;;-1:-1:-1;;;;;;;12344:23:0;;12336:66;;;;-1:-1:-1;;;12336:66:0;;;;;;;;;12434:5;-1:-1:-1;;;;;12421:18:0;:9;-1:-1:-1;;;;;12421:18:0;;12413:56;;;;-1:-1:-1;;;12413:56:0;;;;;;;;;12495:8;12488:3;:15;;12480:58;;;;-1:-1:-1;;;12480:58:0;;;;;;;;;12580:6;12551:10;:17;12562:5;-1:-1:-1;;;;;12551:17:0;-1:-1:-1;;;;;12551:17:0;;;;;;;;;;;;:26;12569:7;-1:-1:-1;;;;;12551:26:0;-1:-1:-1;;;;;12551:26:0;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;;;;12551:35:0;;;;;-1:-1:-1;;;;;12551:35:0;;;;;;12620:7;-1:-1:-1;;;;;12604:32:0;12613:5;-1:-1:-1;;;;;12604:32:0;;12629:6;12604:32;;;;;;;;;;;;;;;11594:1050;;;;;;;;;;;;:::o;10072:136::-;-1:-1:-1;;;;;10172:19:0;;;10148:4;10172:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;10172:28:0;;10072:136::o;8365:117::-;8411:71;;;;;;7888:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7888:70:0;;:::o;20736:161::-;20811:6;20849:12;20842:5;20838:9;;20830:32;;;;-1:-1:-1;;;20830:32:0;;;;;;;;;;-1:-1:-1;20887:1:0;;20736:161;-1:-1:-1;;20736:161:0:o;21101:165::-;21187:6;21219:1;-1:-1:-1;;;;;21214:6:0;:1;-1:-1:-1;;;;;21214:6:0;;;21222:12;21206:29;;;;;-1:-1:-1;;;21206:29:0;;;;;;;;;;-1:-1:-1;;;21253:5:0;;;21101:165::o;18368:610::-;-1:-1:-1;;;;;18462:17:0;;18454:89;;;;-1:-1:-1;;;18454:89:0;;;;;;;;;-1:-1:-1;;;;;18562:17:0;;18554:87;;;;-1:-1:-1;;;18554:87:0;;;;;;;;;-1:-1:-1;;;;;18676:13:0;;;;;;:8;:13;;;;;;;;;;18670:85;;;;;;;;;;;;;;-1:-1:-1;;;;;18676:13:0;;;;18691:6;;18670:85;;;;;;;:5;:85::i;:::-;-1:-1:-1;;;;;18654:13:0;;;;;;;:8;:13;;;;;;;;:101;;-1:-1:-1;;18654:101:0;-1:-1:-1;;;;;18654:101:0;;;;;;18788:13;;;;;;;;;;18782:79;;;;;;;;;;;;;;18788:13;;;;;18803:6;;18782:79;;;;;;;;:5;:79::i;:::-;-1:-1:-1;;;;;18766:13:0;;;;;;;:8;:13;;;;;;;:95;;-1:-1:-1;;18766:95:0;-1:-1:-1;;;;;18766:95:0;;;;;;;;;;;18877:26;;;;;;;;;;18896:6;;18877:26;;;;;;;;;;-1:-1:-1;;;;;18931:14:0;;;;;;;:9;:14;;;;;;;18947;;;;;;;;18916:54;;18931:14;;;;18947;18963:6;18916:14;:54::i;:::-;18368:610;;;:::o;17985:375::-;-1:-1:-1;;;;;18088:20:0;;;18062:23;18088:20;;;:9;:20;;;;;;;;;;18145:8;:19;;;;;;18175:20;;;;:32;;;;;;;;;;;18225:54;;18088:20;;;;;-1:-1:-1;;;;;18145:19:0;;;;18175:32;;18088:20;;;18225:54;;18062:23;18225:54;18292:60;18307:15;18324:9;18335:16;18292:14;:60::i;:::-;17985:375;;;;:::o;21274:153::-;21384:9;21274:153;:::o;20905:188::-;20991:6;21021:5;;;21053:12;-1:-1:-1;;;;;21045:6:0;;;;;;;;21037:29;;;;-1:-1:-1;;;21037:29:0;;;;;;;;;;-1:-1:-1;21084:1:0;20905:188;-1:-1:-1;;;;20905:188:0:o;18986:937::-;19091:6;-1:-1:-1;;;;;19081:16:0;:6;-1:-1:-1;;;;;19081:16:0;;;:30;;;;;19110:1;19101:6;-1:-1:-1;;;;;19101:10:0;;19081:30;19077:839;;;-1:-1:-1;;;;;19132:20:0;;;19128:381;;-1:-1:-1;;;;;19192:22:0;;19173:16;19192:22;;;:14;:22;;;;;;;;;19252:13;:60;;19311:1;19252:60;;;-1:-1:-1;;;;;19268:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;19288:13:0;;19268:34;;;;;;;;;:40;;;;-1:-1:-1;;;;;19268:40:0;19252:60;19233:79;;19331:16;19350:67;19356:9;19367:6;19350:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;19331:86;;19436:57;19453:6;19461:9;19472;19483;19436:16;:57::i;:::-;19128:381;;;;-1:-1:-1;;;;;19529:20:0;;;19525:380;;-1:-1:-1;;;;;19589:22:0;;19570:16;19589:22;;;:14;:22;;;;;;;;;19649:13;:60;;19708:1;19649:60;;;-1:-1:-1;;;;;19665:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;19685:13:0;;19665:34;;;;;;;;;:40;;;;-1:-1:-1;;;;;19665:40:0;19649:60;19630:79;;19728:16;19747:66;19753:9;19764:6;19747:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;19728:85;;19832:57;19849:6;19857:9;19868;19879;19931:628;20049:18;20070:75;20077:12;20070:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;20049:96;;20175:1;20160:12;:16;;;:85;;;;-1:-1:-1;;;;;;20180:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;20203:16:0;;20180:40;;;;;;;;;:50;:65;;;:50;;:65;20160:85;20156:329;;;-1:-1:-1;;;;;20260:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;20283:16:0;;20260:40;;;;;;;;;:57;;-1:-1:-1;;20260:57:0;;-1:-1:-1;;;;;20260:57:0;;;;;;20156:329;;;20385:33;;;;;;;;;;;;;;-1:-1:-1;;;;;20385:33:0;;;;;;;;;;-1:-1:-1;;;;;20346:22:0;;-1:-1:-1;20346:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;-1:-1:-1;;20346:72:0;;;-1:-1:-1;;20346:72:0;;;;;;;;;;;;;;;20431:25;;;:14;:25;;;;;;;:44;;20346:72;20459:16;;20431:44;;;;;;;;;;;;;20156:329;20521:9;-1:-1:-1;;;;;20500:51:0;;20532:8;20542;20500:51;;;;;;;;;;;;;;;;19931:628;;;;;:::o;20567:161::-;20642:6;20680:12;20673:5;20669:9;;20661:32;;;;-1:-1:-1;;;20661:32:0;;;;;;;;;6862:14568;;;;;;;;;;-1:-1:-1;6862:14568:0;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3015:9;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;4648:113;4731:24;4749:5;4731:24;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5230:39;;;;5019:255;-1:-1;;;5019:255;5628:325;;5788:67;5852:2;5847:3;5788:67;;;5888:27;5868:48;;5944:2;5935:12;;5774:179;-1:-1;;5774:179;5962:398;;6140:84;6222:1;6217:3;6140:84;;;6257:66;6237:87;;6352:1;6343:11;;6126:234;-1:-1;;6126:234;6369:396;;6529:67;6593:2;6588:3;6529:67;;;6629:34;6609:55;;6698:29;6693:2;6684:12;;6677:51;6756:2;6747:12;;6515:250;-1:-1;;6515:250;6774:375;;6934:67;6998:2;6993:3;6934:67;;;7034:34;7014:55;;7103:8;7098:2;7089:12;;7082:30;7140:2;7131:12;;6920:229;-1:-1;;6920:229;7158:330;;7318:67;7382:2;7377:3;7318:67;;;7418:32;7398:53;;7479:2;7470:12;;7304:184;-1:-1;;7304:184;7497:492;;7675:85;7757:2;7752:3;7675:85;;;7793:34;7773:55;;7862:34;7857:2;7848:12;;7841:56;7931:20;7926:2;7917:12;;7910:42;7980:2;7971:12;;7661:328;-1:-1;;7661:328;7998:330;;8158:67;8222:2;8217:3;8158:67;;;8258:32;8238:53;;8319:2;8310:12;;8144:184;-1:-1;;8144:184;8337:374;;8497:67;8561:2;8556:3;8497:67;;;8597:34;8577:55;;8666:7;8661:2;8652:12;;8645:29;8702:2;8693:12;;8483:228;-1:-1;;8483:228;8720:477;;8898:85;8980:2;8975:3;8898:85;;;9016:34;8996:55;;9085:34;9080:2;9071:12;;9064:56;9154:5;9149:2;9140:12;;9133:27;9188:2;9179:12;;8884:313;-1:-1;;8884:313;9206:394;;9366:67;9430:2;9425:3;9366:67;;;9466:34;9446:55;;9535:27;9530:2;9521:12;;9514:49;9591:2;9582:12;;9352:248;-1:-1;;9352:248;9609:370;;9769:67;9833:2;9828:3;9769:67;;;9869:34;9849:55;;9938:3;9933:2;9924:12;;9917:25;9970:2;9961:12;;9755:224;-1:-1;;9755:224;9988:374;;10148:67;10212:2;10207:3;10148:67;;;10248:34;10228:55;;10317:7;10312:2;10303:12;;10296:29;10353:2;10344:12;;10134:228;-1:-1;;10134:228;10371:431;;10549:85;10631:2;10626:3;10549:85;;;10667:34;10647:55;;10736:28;10731:2;10722:12;;10715:50;10793:2;10784:12;;10535:267;-1:-1;;10535:267;10930:110;11011:23;11028:5;11011:23;;11047:107;11126:22;11142:5;11126:22;;11161:124;11243:36;11273:5;11243:36;;11292:110;11373:23;11390:5;11373:23;;11409:650;;11664:148;11808:3;11664:148;;;11657:155;;11823:75;11894:3;11885:6;11823:75;;;11920:2;11915:3;11911:12;11904:19;;11934:75;12005:3;11996:6;11934:75;;;-1:-1;12031:2;12022:12;;11645:414;-1:-1;;11645:414;12066:372;;12265:148;12409:3;12265:148;;12445:372;;12644:148;12788:3;12644:148;;12824:372;;13023:148;13167:3;13023:148;;13203:213;13321:2;13306:18;;13335:71;13310:9;13379:6;13335:71;;13423:201;13535:2;13520:18;;13549:65;13524:9;13587:6;13549:65;;13631:213;13749:2;13734:18;;13763:71;13738:9;13807:6;13763:71;;13851:771;14109:3;14094:19;;14124:71;14098:9;14168:6;14124:71;;;14206:72;14274:2;14263:9;14259:18;14250:6;14206:72;;;14289;14357:2;14346:9;14342:18;14333:6;14289:72;;;14372;14440:2;14429:9;14425:18;14416:6;14372:72;;;14455:73;14523:3;14512:9;14508:19;14499:6;14455:73;;;14539;14607:3;14596:9;14592:19;14583:6;14539:73;;;14080:542;;;;;;;;;;14629:547;14831:3;14816:19;;14846:71;14820:9;14890:6;14846:71;;;14928:72;14996:2;14985:9;14981:18;14972:6;14928:72;;;15011;15079:2;15068:9;15064:18;15055:6;15011:72;;;15094;15162:2;15151:9;15147:18;15138:6;15094:72;;;14802:374;;;;;;;;15183:547;15385:3;15370:19;;15400:71;15374:9;15444:6;15400:71;;;15482:72;15550:2;15539:9;15535:18;15526:6;15482:72;;;15565;15633:2;15622:9;15618:18;15609:6;15565:72;;;15648;15716:2;15705:9;15701:18;15692:6;15648:72;;15737:539;15935:3;15920:19;;15950:71;15924:9;15994:6;15950:71;;;16032:68;16096:2;16085:9;16081:18;16072:6;16032:68;;16283:293;16417:2;16431:47;;;16402:18;;16492:74;16402:18;16552:6;16492:74;;16891:407;17082:2;17096:47;;;17067:18;;17157:131;17067:18;17157:131;;17305:407;17496:2;17510:47;;;17481:18;;17571:131;17481:18;17571:131;;17719:407;17910:2;17924:47;;;17895:18;;17985:131;17895:18;17985:131;;18133:407;18324:2;18338:47;;;18309:18;;18399:131;18309:18;18399:131;;18547:407;18738:2;18752:47;;;18723:18;;18813:131;18723:18;18813:131;;18961:407;19152:2;19166:47;;;19137:18;;19227:131;19137:18;19227:131;;19375:407;19566:2;19580:47;;;19551:18;;19641:131;19551:18;19641:131;;19789:407;19980:2;19994:47;;;19965:18;;20055:131;19965:18;20055:131;;20203:407;20394:2;20408:47;;;20379:18;;20469:131;20379:18;20469:131;;20837:209;20953:2;20938:18;;20967:69;20942:9;21009:6;20967:69;;21053:316;21195:2;21180:18;;21209:69;21184:9;21251:6;21209:69;;;21289:70;21355:2;21344:9;21340:18;21331:6;21289:70;;21376:205;21490:2;21475:18;;21504:67;21479:9;21544:6;21504:67;;21588:211;21705:2;21690:18;;21719:70;21694:9;21762:6;21719:70;;21806:209;21922:2;21907:18;;21936:69;21911:9;21978:6;21936:69;;22022:320;22166:2;22151:18;;22180:70;22155:9;22223:6;22180:70;;;22261:71;22328:2;22317:9;22313:18;22304:6;22261:71;;22349:118;22433:12;;22404:63;22604:163;22707:19;;;22756:4;22747:14;;22700:67;22776:145;22912:3;22890:31;-1:-1;22890:31;22929:91;;22991:24;23009:5;22991:24;;23027:85;23093:13;23086:21;;23069:43;23119:72;23181:5;23164:27;23198:121;-1:-1;;;;;23260:54;;23243:76;23405:88;23477:10;23466:22;;23449:44;23500:81;23571:4;23560:16;;23543:38;23588:104;-1:-1;;;;;23649:38;;23632:60;23699:106;;23777:23;23794:5;23777:23;;23813:268;23878:1;23885:101;23899:6;23896:1;23893:13;23885:101;;;23966:11;;;23960:18;23947:11;;;23940:39;23921:2;23914:10;23885:101;;;24001:6;23998:1;23995:13;23992:2;;;-1:-1;;24066:1;24048:16;;24041:27;23862:219;24170:97;24258:2;24238:14;-1:-1;;24234:28;;24218:49;24275:117;24344:24;24362:5;24344:24;;;24337:5;24334:35;24324:2;;24383:1;24380;24373:12;24399:117;24468:24;24486:5;24468:24;;24647:115;24715:23;24732:5;24715:23;;24769:113;24836:22;24852:5;24836:22;

Swarm Source

bzzr://2e190004b516e0e505766c2711f223067444f31660b8c09006a532cb6ab629fe
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.