Contract 0xB5C064F955D8e7F38fE0460C556a72987494eE17 12

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x52bc24724afed917d019e445807dbab5e299c141493c8390bfef36956d928656Approve482865432023-10-03 18:21:459 mins ago0x154a3a28a5e72d9f5313af380e708098af69ec4c IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.003829933733 81.745362714
0xf0248bfa8c902dd65fa359c83908fe3ce39f0dcacecfda0cde6e361580970c84Transfer482859692023-10-03 18:00:5530 mins agoBinance: Hot Wallet 2 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.004703321412 117.365908388
0x72809a1842027658e315fead258b87df87a4697697ccca68652afc2fa407e2aeApprove482859542023-10-03 18:00:2330 mins ago0x9cc62851e6ee0f5997204b08fc727decb206aa90 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.002977427791 119.729282277
0x66e5684763f2de7a88c928630fb9221efdd441b1e5541ec0759eedaa12e8725cTransfer482858972023-10-03 17:58:1632 mins ago0x464fc339add314932920d3e060745bd7ea3e92ad IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.004185451626104.443070974
0xdd5e4d41bb26760eb701b9792ccd9dbe80256565e4631f7db13c8a4df05e395bTransfer482848862023-10-03 17:20:521 hr 10 mins ago0xd292c50842fe5e52adfa20d9fe5dd18d00008fe5 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.0080148200
0xdbd222c7e66d60c547fefb16474ddda660739abe72a5e01b1521a05f5443ae3aTransfer482848162023-10-03 17:18:241 hr 12 mins ago0xd292c50842fe5e52adfa20d9fe5dd18d00008fe5 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.0080148200
0xd4f8aa821b8fe8d0f01606e7d18c1d517438c72ae2e9474b94024b899ffa759fApprove482846102023-10-03 17:11:061 hr 20 mins ago0xc05f19926bec6e2c7648d93b1343aafffadae479 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.005346847103 113.702224413
0x2cc604360ee21ff362e71d7920f9b8629b27282e141c7610bd506943aea4eacfApprove482844692023-10-03 17:05:341 hr 25 mins ago0x038cdcccc1077ac50335cf18feaa308a0e0546b7 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.004515583654 96.025170746
0x24a4f350bd744ffe5a1fe221d2a096ef3300d6bd7cf469b8f6aa7f1c2fbbaea2Transfer482843982023-10-03 17:03:021 hr 28 mins ago0xd292c50842fe5e52adfa20d9fe5dd18d00008fe5 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.0080148200
0x5a166dd9030cb9ed96e6eddfad0bc88d39a0bcb5067917455554d463c7dc9e95Transfer482843792023-10-03 17:02:221 hr 28 mins ago0x464fc339add314932920d3e060745bd7ea3e92ad IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.006041131425105.662214031
0x9fdf25d7d6970052645725d8481a08c055fb68e7c3b46903ceea7be01e450146Transfer482843422023-10-03 17:01:041 hr 30 mins ago0xc5e28eba970e258f888442affee28c4750504fce IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.004784302067 91.34880032
0x7b8b6960ab3cd5fbe18b9980e10ff9a30dcae5448021507c1db80ddcaa6f73c0Transfer482843372023-10-03 17:00:541 hr 30 mins ago0xd292c50842fe5e52adfa20d9fe5dd18d00008fe5 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.0114348200
0x223be7443ca3bea8c22e72e0465f8bb317e4491cc83c7cfdd1c6140ffb61301dTransfer482843362023-10-03 17:00:521 hr 30 mins ago0x4e24d36444102c519ba09e14402fa49d48533977 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.002695070592 76.403883673
0x747cef8ee28bef28765b6e8cc1aec8a0d940e92ca3a4189d96f14fc405f2a597Approve482840312023-10-03 16:49:301 hr 41 mins ago0x0728faad28ee38a10c3aa288f39a4a99226deec4 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.003933201359 83.906505658
0x1a0931cc3a754a4183fd8b181a212e7e1b4a4aff6c0f3a850eeaa21172a46649Approve482839362023-10-03 16:46:101 hr 45 mins ago0x14d421693fd8eca314ee008f6fc3c3896731513d IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.00424935 142
0x55a762f05b00f73f7194e06aaadc5744d6b54c5970a268d75c8890486e908c2bTransfer482838402023-10-03 16:42:461 hr 48 mins ago0xd292c50842fe5e52adfa20d9fe5dd18d00008fe5 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.0114348200
0xefb88ee6391edecfd54608a143cce2227876fef63968424b167403583723372aTransfer482837642023-10-03 16:40:041 hr 51 mins ago0x4e24d36444102c519ba09e14402fa49d48533977 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.003527677749 100.007874044
0x3e3cd4168f035a0723de9cee5b0fc83af21f2c8159f7bcc7f79b92a78997ef60Transfer482837132023-10-03 16:38:161 hr 52 mins ago0xd292c50842fe5e52adfa20d9fe5dd18d00008fe5 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.0114348200
0x80dfe4afa4d2c4e7b62d43108938ebfe5a7b016544c6f5bf4600bb037e9bf2efApprove482837022023-10-03 16:37:341 hr 53 mins ago0x14d421693fd8eca314ee008f6fc3c3896731513d IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.005682765 121
0x9690f9b3a84d8e18cba725e2ae92d907ad193245bb2361fada7c7252da29b760Transfer482829532023-10-03 16:10:162 hrs 20 mins agoBinance: Hot Wallet 2 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.007497912398 131.114475541
0x9370c779f4e49954f22f2c7611fe4b737c511ff754c416d3a5d50b79caee4371Approve482827512023-10-03 16:02:342 hrs 28 mins ago0xf75032b4e53c5287556424668da0cb5c99c2a1be IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.003993347566 85.189597373
0x734d338ffc71597518b7852ba38ff3262d590752ef9b1d58675f4a62fe60ac52Approve482821512023-10-03 15:40:462 hrs 50 mins ago0x131481ec44b9cbe07ec98ce35e94600ad1c000be IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.003673377512 78.115417592
0x2ab4536654cb39512fd9f16dcb6fe4edca135274859640bab6ccce69e9e1a1b2Transfer482821322023-10-03 15:40:062 hrs 51 mins ago0x4e24d36444102c519ba09e14402fa49d48533977 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.002552167616 72.352656803
0x2220f65be76256e601b8141af6142a5a243dc2092ac2ecfce05ba957d7fd72dcTransfer482819592023-10-03 15:33:262 hrs 57 mins ago0xd292c50842fe5e52adfa20d9fe5dd18d00008fe5 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.0080148200
0xd6f4d136cb9c4908cc7656e4f59c11f94e3fde83cd22a56ca34de81aa7f6dec4Transfer482819002023-10-03 15:31:202 hrs 59 mins ago0xd292c50842fe5e52adfa20d9fe5dd18d00008fe5 IN  0xb5c064f955d8e7f38fe0460c556a72987494ee170 MATIC0.0114348200
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Quick

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at PolygonScan.com on 2022-04-21
*/

/**
 *Submitted for verification at Etherscan.io on 2020-09-16
*/

/**
 *Submitted for verification at Etherscan.io on 2020-09-15
*/

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

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

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

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

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

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 0; // QUICK

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

    address public gateway;

    /// @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 Quick token
     * @param gateway_ The gateway contract address
     */
    constructor(address gateway_) public {

        gateway = gateway_;
    }

    /**
     * @notice called when token is deposited on root chain
     * @dev Should be callable only by ChildChainManager
     * Should handle deposit by minting the required amount for user
     * Make sure minting is done only by this function
     * @param user user address for whom deposit is being done
     * @param depositData abi encoded amount
     */
    function deposit(address user, bytes calldata depositData)
        external
    {
        require(msg.sender == gateway,  "Invalid access");
        uint256 rawAmount = abi.decode(depositData, (uint256));
        uint96 amount = safe96(rawAmount, "Quick::deposit: amount exceeds 96 bits");

        _mint(user, amount);
    }

    /**
     * @notice called when user wants to withdraw tokens back to root chain
     * @dev Should burn user's tokens. This transaction will be verified when exiting on root chain
     * @param rawAmount amount of tokens to withdraw
     */
    function withdraw(uint256 rawAmount) external {
        uint96 amount = safe96(rawAmount, "Quick::withdraw: amount exceeds 96 bits");
        _burn(msg.sender, amount);
    }

    /**
     * @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, "Quick::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, "Quick::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), "Quick::permit: invalid signature");
        require(signatory == owner, "Quick::permit: unauthorized");
        require(now <= deadline, "Quick::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, "Quick::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, "Quick::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Quick::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), "Quick::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Quick::delegateBySig: invalid nonce");
        require(now <= expiry, "Quick::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, "Quick::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), "Quick::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Quick::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Quick::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Quick::_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, "Quick::_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, "Quick::_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, "Quick::_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;
    }

    function _mint(address dst, uint rawAmount) internal {
        require(dst != address(0), "Quick::mint: cannot transfer to the zero address");

        // mint the amount
        uint96 amount = safe96(rawAmount, "Quick::mint: amount exceeds 96 bits");
        totalSupply = safe96(SafeMath.add(totalSupply, amount), "Quick::mint: totalSupply exceeds 96 bits");

        // transfer the amount to the recipient
        balances[dst] = add96(balances[dst], amount, "Quick::mint: transfer amount overflows");
        emit Transfer(address(0), dst, amount);

    }

    function _burn(address account, uint96 amount) internal {
        require(account != address(0), "Quick:: burn from the zero address");

        balances[account] = sub96(balances[account], amount, "Quick:: burn amount exceeds balance");
        totalSupply = sub96(safe96(totalSupply, "Quick:: totalSupply exceeds 96 bits"), amount, "Quick:: burn amount exceeds total supply");
        emit Transfer(account, address(0), amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"gateway_","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":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gateway","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"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600080553480156200001557600080fd5b506040516200316538038062003165833981016040819052620000389162000071565b600780546001600160a01b0319166001600160a01b0392909216919091179055620000c6565b80516200006b81620000ac565b92915050565b6000602082840312156200008457600080fd5b60006200009284846200005e565b949350505050565b60006001600160a01b0382166200006b565b620000b7816200009a565b8114620000c357600080fd5b50565b61308f80620000d66000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806370a08231116100e3578063c3cda5201161008c578063dd62ed3e11610066578063dd62ed3e14610345578063e7a324dc14610358578063f1127ed81461036057610198565b8063c3cda5201461030c578063cf2c52cb1461031f578063d505accf1461033257610198565b806395d89b41116100bd57806395d89b41146102de578063a9059cbb146102e6578063b4b5ea57146102f957610198565b806370a0823114610298578063782d6fe1146102ab5780637ecebe00146102cb57610198565b80632e1a7d4d11610145578063587cde1e1161011f578063587cde1e146102525780635c19a95c146102655780636fcfff451461027857610198565b80632e1a7d4d1461022057806330adf81f14610235578063313ce5671461023d57610198565b806318160ddd1161017657806318160ddd146101f057806320606b701461020557806323b872dd1461020d57610198565b806306fdde031461019d578063095ea7b3146101bb578063116191b6146101db575b600080fd5b6101a5610381565b6040516101b29190612b47565b60405180910390f35b6101ce6101c9366004612299565b6103ba565b6040516101b29190612a43565b6101e36104df565b6040516101b29190612a35565b6101f86104fb565b6040516101b29190612a51565b6101f8610501565b6101ce61021b36600461215a565b610518565b61023361022e366004612380565b6106bc565b005b6101f86106f0565b6102456106fc565b6040516101b29190612c51565b6101e36102603660046120fa565b610701565b6102336102733660046120fa565b610729565b61028b6102863660046120fa565b610736565b6040516101b29190612c28565b6101f86102a63660046120fa565b61074e565b6102be6102b9366004612299565b610784565b6040516101b29190612c6d565b6101f86102d93660046120fa565b610a6f565b6101a5610a81565b6101ce6102f4366004612299565b610aba565b6102be6103073660046120fa565b610af6565b61023361031a3660046122c9565b610ba4565b61023361032d366004612243565b610e29565b6102336103403660046121a7565b610ecf565b6101f8610353366004612120565b611304565b6101f861134a565b61037361036e366004612350565b611356565b6040516101b2929190612c36565b6040518060400160405280600981526020017f517569636b53776170000000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561040c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610431565b61042e83604051806060016040528060268152602001612e2660269139611391565b90505b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104cb908590612c5f565b60405180910390a360019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60405161050d90612a1f565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083203380855290835281842054825160608101909352602680845291936bffffffffffffffffffffffff9091169285926105829288929190612e2690830139611391565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156105ce57506bffffffffffffffffffffffff82811614155b156106a25760006105f883836040518060600160405280603e8152602001612ef8603e91396113e3565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600160209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610698908590612c5f565b60405180910390a3505b6106ad878783611446565b600193505050505b9392505050565b60006106e082604051806060016040528060278152602001612dab60279139611391565b90506106ec33826116b2565b5050565b60405161050d90612a14565b601281565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6107333382611876565b50565b60056020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600260205260409020546bffffffffffffffffffffffff1690565b60004382106107c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612bc8565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205463ffffffff16806108035760009150506104d9565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601811685529252909120541683106108db5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff1690506104d9565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832083805290915290205463ffffffff168310156109235760009150506104d9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610a1757600282820363ffffffff1604810361097361206e565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260046020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152908714156109f2576020015194506104d99350505050565b805163ffffffff16871115610a0957819350610a10565b6001820392505b5050610949565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260046020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60066020526000908152604090205481565b6040518060400160405280600581526020017f515549434b00000000000000000000000000000000000000000000000000000081525081565b600080610adf83604051806060016040528060278152602001612ed160279139611391565b9050610aec338583611446565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205463ffffffff1680610b2e5760006106b5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610bb290612a1f565b60408051918290038220828201909152600982527f517569636b5377617000000000000000000000000000000000000000000000006020909201919091527f594d562b07e5639baeda43f9427a7d73488025602cf4b19cc0e4cec02e1718f8610c1961192a565b30604051602001610c2d9493929190612af7565b6040516020818303038152906040528051906020012090506000604051610c5390612a2a565b604051908190038120610c6e918a908a908a90602001612ab9565b60405160208183030381529060405280519060200120905060008282604051602001610c9b9291906129e3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610cd89493929190612b2c565b6020604051602081039080840390855afa158015610cfa573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610d72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612b78565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090208054600181019091558914610dd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612b98565b87421115610e12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612bb8565b610e1c818b611876565b505050505b505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610e7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612bf8565b6000610e8882840184612380565b90506000610eae8260405180606001604052806026815260200161302760269139611391565b9050610ec885826bffffffffffffffffffffffff1661192e565b5050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415610f2057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f45565b610f4286604051806060016040528060258152602001612fcb60259139611391565b90505b6000604051610f5390612a1f565b60408051918290038220828201909152600982527f517569636b5377617000000000000000000000000000000000000000000000006020909201919091527f594d562b07e5639baeda43f9427a7d73488025602cf4b19cc0e4cec02e1718f8610fba61192a565b30604051602001610fce9493929190612af7565b6040516020818303038152906040528051906020012090506000604051610ff490612a14565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d166000908152600660209081529290208054600181019091556110439391928e928e928e9290918e9101612a5f565b604051602081830303815290604052805190602001209050600082826040516020016110709291906129e3565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516110ad9493929190612b2c565b6020604051602081039080840390855afa1580156110cf573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612be8565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612ba8565b884211156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612b88565b84600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516112ee9190612c5f565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526001602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161050d90612a2a565b600460209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000816c0100000000000000000000000084106113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf9190612b47565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff161115829061143e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf9190612b47565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff8316611493576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612bd8565b73ffffffffffffffffffffffffffffffffffffffff82166114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612c08565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260409182902054825160608101909352603780845261153d936bffffffffffffffffffffffff9092169285929190612ff0908301396113e3565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff9687161790559286168252908290205482516060810190935260318084526115cf9491909116928592909190612dd290830139611ae1565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600260205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611666908590612c5f565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600360205260408082205485841683529120546116ad92918216911683611b3c565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612c18565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602090815260409182902054825160608101909352602380845261175c936bffffffffffffffffffffffff9092169285929190612fa8908301396113e3565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061180f6117f0600054604051806060016040528060238152602001612f8560239139611391565b82604051806060016040528060288152602001612e81602891396113e3565b6bffffffffffffffffffffffff16600090815560405173ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061186a908590612c5f565b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260036020818152604080842080546002845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611924828483611b3c565b50505050565b4690565b73ffffffffffffffffffffffffffffffffffffffff821661197b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612b58565b600061199f82604051806060016040528060238152602001612e0360239139611391565b90506119dc6119be600054836bffffffffffffffffffffffff16611d83565b604051806060016040528060288152602001612ea960289139611391565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff8516815260026020908152604091829020548251606081019093526026808452611a409491909116928592909190612f5f90830139611ae1565b73ffffffffffffffffffffffffffffffffffffffff841660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ad4908590612c5f565b60405180910390a3505050565b6000838301826bffffffffffffffffffffffff8087169083161015611b33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf9190612b47565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b8657506000816bffffffffffffffffffffffff16115b156116ad5773ffffffffffffffffffffffffffffffffffffffff831615611c895773ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604081205463ffffffff169081611be0576000611c50565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611c778285604051806060016040528060298152602001612f36602991396113e3565b9050611c8586848484611dc2565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156116ad5773ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604081205463ffffffff169081611cde576000611d4e565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d758285604051806060016040528060288152602001612d8360289139611ae1565b9050610e2185848484611dc2565b6000828201838110156106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90612b68565b6000611de643604051806060016040528060358152602001612e4c6035913961202c565b905060008463ffffffff16118015611e5a575073ffffffffffffffffffffffffffffffffffffffff8516600090815260046020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611ef95773ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055611fd5565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600483528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161201d929190612c7b565b60405180910390a25050505050565b60008164010000000084106113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf9190612b47565b604080518082019091526000808252602082015290565b80356104d981612d53565b80356104d981612d67565b60008083601f8401126120ad57600080fd5b50813567ffffffffffffffff8111156120c557600080fd5b6020830191508360018202830111156120dd57600080fd5b9250929050565b80356104d981612d70565b80356104d981612d79565b60006020828403121561210c57600080fd5b60006121188484612085565b949350505050565b6000806040838503121561213357600080fd5b600061213f8585612085565b925050602061215085828601612085565b9150509250929050565b60008060006060848603121561216f57600080fd5b600061217b8686612085565b935050602061218c86828701612085565b925050604061219d86828701612090565b9150509250925092565b600080600080600080600060e0888a0312156121c257600080fd5b60006121ce8a8a612085565b97505060206121df8a828b01612085565b96505060406121f08a828b01612090565b95505060606122018a828b01612090565b94505060806122128a828b016120ef565b93505060a06122238a828b01612090565b92505060c06122348a828b01612090565b91505092959891949750929550565b60008060006040848603121561225857600080fd5b60006122648686612085565b935050602084013567ffffffffffffffff81111561228157600080fd5b61228d8682870161209b565b92509250509250925092565b600080604083850312156122ac57600080fd5b60006122b88585612085565b925050602061215085828601612090565b60008060008060008060c087890312156122e257600080fd5b60006122ee8989612085565b96505060206122ff89828a01612090565b955050604061231089828a01612090565b945050606061232189828a016120ef565b935050608061233289828a01612090565b92505060a061234389828a01612090565b9150509295509295509295565b6000806040838503121561236357600080fd5b600061236f8585612085565b9250506020612150858286016120e4565b60006020828403121561239257600080fd5b60006121188484612090565b6123a781612ca8565b82525050565b6123a781612cb3565b6123a781612cb8565b6123a76123cb82612cb8565b612cb8565b60006123db82612c96565b6123e58185612c9a565b93506123f5818560208601612cff565b6123fe81612d2b565b9093019392505050565b6000612415603083612c9a565b7f517569636b3a3a6d696e743a2063616e6e6f74207472616e7366657220746f2081527f746865207a65726f206164647265737300000000000000000000000000000000602082015260400192915050565b6000612474600283612ca3565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006124ad601b83612c9a565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006124e6602783612c9a565b7f517569636b3a3a64656c656761746542795369673a20696e76616c696420736981527f676e617475726500000000000000000000000000000000000000000000000000602082015260400192915050565b6000612545602083612c9a565b7f517569636b3a3a7065726d69743a207369676e61747572652065787069726564815260200192915050565b600061257e602383612c9a565b7f517569636b3a3a64656c656761746542795369673a20696e76616c6964206e6f81527f6e63650000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006125dd601b83612c9a565b7f517569636b3a3a7065726d69743a20756e617574686f72697a65640000000000815260200192915050565b6000612616602783612c9a565b7f517569636b3a3a64656c656761746542795369673a207369676e61747572652081527f6578706972656400000000000000000000000000000000000000000000000000602082015260400192915050565b6000612675605283612ca3565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b60006126fa602883612c9a565b7f517569636b3a3a6765745072696f72566f7465733a206e6f742079657420646581527f7465726d696e6564000000000000000000000000000000000000000000000000602082015260400192915050565b6000612759604383612ca3565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b60006127de603d83612c9a565b7f517569636b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207481527f72616e736665722066726f6d20746865207a65726f2061646472657373000000602082015260400192915050565b600061283d602083612c9a565b7f517569636b3a3a7065726d69743a20696e76616c6964207369676e6174757265815260200192915050565b6000612876600e83612c9a565b7f496e76616c696420616363657373000000000000000000000000000000000000815260200192915050565b60006128af603b83612c9a565b7f517569636b3a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207481527f72616e7366657220746f20746865207a65726f20616464726573730000000000602082015260400192915050565b600061290e602283612c9a565b7f517569636b3a3a206275726e2066726f6d20746865207a65726f20616464726581527f7373000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061296d603a83612ca3565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6123a781612cd4565b6123a781612cdd565b6123a781612cf4565b6123a781612ce3565b60006129ee82612467565b91506129fa82856123bf565b602082019150612a0a82846123bf565b5060200192915050565b60006104d982612668565b60006104d98261274c565b60006104d982612960565b602081016104d9828461239e565b602081016104d982846123ad565b602081016104d982846123b6565b60c08101612a6d82896123b6565b612a7a602083018861239e565b612a87604083018761239e565b612a9460608301866123b6565b612aa160808301856123b6565b612aae60a08301846123b6565b979650505050505050565b60808101612ac782876123b6565b612ad4602083018661239e565b612ae160408301856123b6565b612aee60608301846123b6565b95945050505050565b60808101612b0582876123b6565b612b1260208301866123b6565b612b1f60408301856123b6565b612aee606083018461239e565b60808101612b3a82876123b6565b612ad460208301866129c8565b602080825281016106b581846123d0565b602080825281016104d981612408565b602080825281016104d9816124a0565b602080825281016104d9816124d9565b602080825281016104d981612538565b602080825281016104d981612571565b602080825281016104d9816125d0565b602080825281016104d981612609565b602080825281016104d9816126ed565b602080825281016104d9816127d1565b602080825281016104d981612830565b602080825281016104d981612869565b602080825281016104d9816128a2565b602080825281016104d981612901565b602081016104d982846129bf565b60408101612c4482856129bf565b6106b560208301846129da565b602081016104d982846129c8565b602081016104d982846129d1565b602081016104d982846129da565b60408101612c8982856129d1565b6106b560208301846129d1565b5190565b90815260200190565b919050565b60006104d982612cbb565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b60006104d982612ce3565b60005b83811015612d1a578181015183820152602001612d02565b838111156119245750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612d5c81612ca8565b811461073357600080fd5b612d5c81612cb8565b612d5c81612cd4565b612d5c81612cdd56fe517569636b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773517569636b3a3a77697468647261773a20616d6f756e7420657863656564732039362062697473517569636b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773517569636b3a3a6d696e743a20616d6f756e7420657863656564732039362062697473517569636b3a3a617070726f76653a20616d6f756e7420657863656564732039362062697473517569636b3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473517569636b3a3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c79517569636b3a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473517569636b3a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473517569636b3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365517569636b3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773517569636b3a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773517569636b3a3a20746f74616c537570706c7920657863656564732039362062697473517569636b3a3a206275726e20616d6f756e7420657863656564732062616c616e6365517569636b3a3a7065726d69743a20616d6f756e7420657863656564732039362062697473517569636b3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365517569636b3a3a6465706f7369743a20616d6f756e7420657863656564732039362062697473a365627a7a7231582004be273fa14404ba3c64be0b2176052ac3aa9bdff9c9aba20c652b582c3624f06c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa

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

000000000000000000000000a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa

-----Decoded View---------------
Arg [0] : gateway_ (address): 0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa

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


Deployed ByteCode Sourcemap

6777:16717:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6777:16717:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:41;;;:::i;:::-;;;;;;;;;;;;;;;;11682:420;;;;;;;;;:::i;:::-;;;;;;;;8742:22;;;:::i;:::-;;;;;;;;7152:27;;;:::i;:::-;;;;;;;;8053:122;;;:::i;14774:674::-;;;;;;;;;:::i;10587:177::-;;;;;;;;;:::i;:::-;;8476:137;;;:::i;7053:35::-;;;:::i;:::-;;;;;;;;7503:45;;;;;;;;;:::i;15596:102::-;;;;;;;;;:::i;7931:49::-;;;;;;;;;:::i;:::-;;;;;;;;13853:108;;;;;;;;;:::i;17778:1219::-;;;;;;;;;:::i;:::-;;;;;;;;8694:39;;;;;;;;;:::i;6951:::-;;;:::i;14225:239::-;;;;;;;;;:::i;17125:222::-;;;;;;;;;:::i;16132:792::-;;;;;;;;;:::i;9996:333::-;;;;;;;;;:::i;12592:1058::-;;;;;;;;;:::i;11068:136::-;;;;;;;;;:::i;8269:117::-;;;:::i;7792:70::-;;;;;;;;;:::i;:::-;;;;;;;;;6849:41;;;;;;;;;;;;;;;;;;;:::o;11682:420::-;11750:4;11767:13;11813:2;11795:9;:21;11791:174;;;-1:-1:-1;11849:2:0;11791:174;;;11894:59;11901:9;11894:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;11885:68;;11791:174;11988:10;11977:22;;;;:10;:22;;;;;;;;;:31;;;;;;;;;;;:40;;;;;;;;;;12035:37;;11977:31;;11988:10;12035:37;;;;11977:40;;12035:37;;;;;;;;;;12090:4;12083:11;;;11682:420;;;;;:::o;8742:22::-;;;;;;:::o;7152:27::-;;;;:::o;8053:122::-;8095:80;;;;;;;;;;;;;;8053:122;:::o;14774:674::-;14938:15;;;14856:4;14938:15;;;:10;:15;;;;;;;;14891:10;14938:24;;;;;;;;;;14989:59;;;;;;;;;;;;14891:10;;14938:24;;;;;14856:4;;14989:59;;14996:9;;14989:59;;;;;;;:6;:59::i;:::-;14973:75;;15076:3;15065:14;;:7;:14;;;;:48;;;;-1:-1:-1;15083:30:0;;;;;;15065:48;15061:312;;;15130:19;15152:97;15158:16;15176:6;15152:97;;;;;;;;;;;;;;;;;:5;:97::i;:::-;15264:15;;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;;;;;;;;15325:36;15264:39;;-1:-1:-1;15264:24:0;;15325:36;;;;15264:39;;15325:36;;;;;;;;;;15061:312;;15385:33;15401:3;15406;15411:6;15385:15;:33::i;:::-;15436:4;15429:11;;;;;14774:674;;;;;;:::o;10587:177::-;10644:13;10660:60;10667:9;10660:60;;;;;;;;;;;;;;;;;:6;:60::i;:::-;10644:76;;10731:25;10737:10;10749:6;10731:5;:25::i;:::-;10587:177;;:::o;8476:137::-;8518:95;;;;;;7053:35;7086:2;7053:35;:::o;7503:45::-;;;;;;;;;;;;;;;:::o;15596:102::-;15658:32;15668:10;15680:9;15658;:32::i;:::-;15596:102;:::o;7931:49::-;;;;;;;;;;;;;;;:::o;13853:108::-;13936:17;;13912:4;13936:17;;;:8;:17;;;;;;;;;13853:108::o;17778:1219::-;17857:6;17898:12;17884:11;:26;17876:79;;;;;;;;;;;;;;;;;;;;;;17990:23;;;17968:19;17990:23;;;:14;:23;;;;;;;;18028:17;18024:58;;18069:1;18062:8;;;;;18024:58;18142:20;;;;;;;:11;:20;;;;;;;;:38;18163:16;;;18142:38;;;;;;;;;:48;;:63;-1:-1:-1;18138:147:0;;18229:20;;;;;;;:11;:20;;;;;;;;18250:16;;;;;18229:38;;;;;;;;:44;;;;;;;-1:-1:-1;18222:51:0;;18138:147;18346:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;18342:88:0;;;18417:1;18410:8;;;;;18342:88;18442:12;18484:16;;;18511:428;18526:5;18518:13;;:5;:13;;;18511:428;;;18590:1;18573:13;;;18572:19;;;18564:27;;18633:20;;:::i;:::-;-1:-1:-1;18656:20:0;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;18633:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18703:27;;18699:229;;;18758:8;;;;-1:-1:-1;18751:15:0;;-1:-1:-1;;;;18751:15:0;18699:229;18792:12;;:26;;;-1:-1:-1;18788:140:0;;;18847:6;18839:14;;18788:140;;;18911:1;18902:6;:10;18894:18;;18788:140;18511:428;;;;;-1:-1:-1;18956:20:0;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;;;;;-1:-1:-1;;17778:1219:0;;;;:::o;8694:39::-;;;;;;;;;;;;;:::o;6951:::-;;;;;;;;;;;;;;;;;;;:::o;14225:239::-;14290:4;14307:13;14323:60;14330:9;14323:60;;;;;;;;;;;;;;;;;:6;:60::i;:::-;14307:76;;14394:40;14410:10;14422:3;14427:6;14394:15;:40::i;:::-;-1:-1:-1;14452:4:0;;14225:239;-1:-1:-1;;;14225:239:0:o;17125:222::-;17231:23;;;17190:6;17231:23;;;:14;:23;;;;;;;;17272:16;:67;;17338:1;17272:67;;;17291:20;;;;;;;:11;:20;;;;;;;;17312:16;;;17291:38;;;;;;;;;:44;;;;;;17265:74;17125:222;-1:-1:-1;;;17125:222:0:o;16132:792::-;16248:23;8095:80;;;;;;;;;;;;;;;;16328:4;;;;;;;;;;;;;;;;;;16312:22;16336:12;:10;:12::i;:::-;16358:4;16284:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16284:80:0;;;16274:91;;;;;;16248:117;;16376:18;8315:71;;;;;;;;;;;;;;;16407:57;;16439:9;;16450:5;;16457:6;;16407:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16407:57:0;;;16397:68;;;;;;16376:89;;16476:14;16532:15;16549:10;16503:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16503:57:0;;;16493:68;;;;;;16476:85;;16572:17;16592:26;16602:6;16610:1;16613;16616;16592:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16592:26:0;;;;;;-1:-1:-1;;16637:23:0;;;16629:75;;;;;;;;;;;;;;16732:17;;;;;;;:6;:17;;;;;:19;;;;;;;;16723:28;;16715:76;;;;;;;;;;;;;;16817:6;16810:3;:13;;16802:65;;;;;;;;;;;;;;16885:31;16895:9;16906;16885;:31::i;:::-;16878:38;;;;16132:792;;;;;;;:::o;9996:333::-;10111:7;;;;10097:10;:21;10089:49;;;;;;;;;;;;;;10149:17;10169:34;;;;10180:11;10169:34;;;10149:54;;10214:13;10230:59;10237:9;10230:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;10214:75;;10302:19;10308:4;10314:6;10302:19;;:5;:19::i;:::-;9996:333;;;;;:::o;12592:1058::-;12722:13;12768:2;12750:9;:21;12746:173;;;-1:-1:-1;12804:2:0;12746:173;;;12849:58;12856:9;12849:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;12840:67;;12746:173;12931:23;8095:80;;;;;;;;;;;;;;;;13011:4;;;;;;;;;;;;;;;;;;12995:22;13019:12;:10;:12::i;:::-;13041:4;12967:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12967:80:0;;;12957:91;;;;;;12931:117;;13059:18;8518:95;;;;;;;;;;;;;;;;13145:13;;;;;;;:6;:13;;;;;;;:15;;;;;;;;13090:81;;8518:95;;13118:5;;13125:7;;13134:9;;13145:15;;13162:8;;13090:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13090:81:0;;;13080:92;;;;;;13059:113;;13183:14;13239:15;13256:10;13210:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13210:57:0;;;13200:68;;;;;;13183:85;;13279:17;13299:26;13309:6;13317:1;13320;13323;13299:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13299:26:0;;;;;;-1:-1:-1;;13344:23:0;;;13336:68;;;;;;;;;;;;;;13436:5;13423:18;;:9;:18;;;13415:58;;;;;;;;;;;;;;13499:8;13492:3;:15;;13484:60;;;;;;;;;;;;;;13586:6;13557:10;:17;13568:5;13557:17;;;;;;;;;;;;;;;:26;13575:7;13557:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;13626:7;13610:32;;13619:5;13610:32;;;13635:6;13610:32;;;;;;;;;;;;;;;12592:1058;;;;;;;;;;;;:::o;11068:136::-;11168:19;;;;11144:4;11168:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;;;11068:136::o;8269:117::-;8315:71;;;;;;7792:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21770:161::-;21845:6;21883:12;21876:5;21872:9;;21864:32;;;;;;;;;;;;;;;-1:-1:-1;21921:1:0;;21770:161;-1:-1:-1;;21770:161:0:o;22135:165::-;22221:6;22253:1;22248:6;;:1;:6;;;;22256:12;22240:29;;;;;;;;;;;;;;;;-1:-1:-1;;;22287:5:0;;;22135:165::o;19388:618::-;19482:17;;;19474:91;;;;;;;;;;;;;;19584:17;;;19576:89;;;;;;;;;;;;;;19700:13;;;;;;;:8;:13;;;;;;;;;;19694:87;;;;;;;;;;;;;;19700:13;;;;;19715:6;;19694:87;;;;;;;:5;:87::i;:::-;19678:13;;;;;;;;:8;:13;;;;;;;;:103;;;;;;;;;;;19814:13;;;;;;;;;;19808:81;;;;;;;;;;;;;;19814:13;;;;;19829:6;;19808:81;;;;;;;;:5;:81::i;:::-;19792:13;;;;;;;;:8;:13;;;;;;;:97;;;;;;;;;;;;;;;;19905:26;;;;;;;;;;19924:6;;19905:26;;;;;;;;;;19959:14;;;;;;;;:9;:14;;;;;;;19975;;;;;;;;19944:54;;19959:14;;;;19975;19991:6;19944:14;:54::i;:::-;19388:618;;;:::o;23049:442::-;23124:21;;;23116:68;;;;;;;;;;;;;;23223:17;;;;;;;:8;:17;;;;;;;;;;23217:71;;;;;;;;;;;;;;23223:17;;;;;23242:6;;23217:71;;;;;;;:5;:71::i;:::-;23197:8;:17;23206:7;23197:17;;;;;;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;23313:117;23319:58;23326:11;;23319:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;23379:6;23313:117;;;;;;;;;;;;;;;;;:5;:117::i;:::-;23299:131;;:11;:131;;;23446:37;;;;;;;;;;23476:6;;23446:37;;;;;;;;;;23049:442;;:::o;19005:375::-;19108:20;;;;19082:23;19108:20;;;:9;:20;;;;;;;;;;19165:8;:19;;;;;;19195:20;;;;:32;;;;;;;;;;;19245:54;;19108:20;;;;;19165:19;;;;;19195:32;;19108:20;;;19245:54;;19082:23;19245:54;19312:60;19327:15;19344:9;19355:16;19312:14;:60::i;:::-;19005:375;;;;:::o;22308:153::-;22418:9;22308:153;:::o;22469:572::-;22541:17;;;22533:78;;;;;;;;;;;;;;22652:13;22668:56;22675:9;22668:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;22652:72;;22749:85;22756:33;22769:11;;22782:6;22756:33;;:12;:33::i;:::-;22749:85;;;;;;;;;;;;;;;;;:6;:85::i;:::-;22735:99;;;;:11;:99;;;22918:13;;;;;:8;:13;;;;;;;;;;22912:70;;;;;;;;;;;;;;22918:13;;;;;22933:6;;22912:70;;;;;;;;:5;:70::i;:::-;22896:13;;;;;;;:8;:13;;;;;;:86;;;;;;;;;;;;;;;;22998:33;;22896:13;;;22998:33;;;;23024:6;;22998:33;;;;;;;;;;22469:572;;;:::o;21939:188::-;22025:6;22055:5;;;22087:12;22079:6;;;;;;;;;22071:29;;;;;;;;;;;;;;;-1:-1:-1;22118:1:0;21939:188;-1:-1:-1;;;;21939:188:0:o;20014:941::-;20119:6;20109:16;;:6;:16;;;;:30;;;;;20138:1;20129:6;:10;;;20109:30;20105:843;;;20160:20;;;;20156:383;;20220:22;;;20201:16;20220:22;;;:14;:22;;;;;;;;;20280:13;:60;;20339:1;20280:60;;;20296:19;;;;;;;:11;:19;;;;;;;;20316:13;;;20296:34;;;;;;;;;:40;;;;;;20280:60;20261:79;;20359:16;20378:69;20384:9;20395:6;20378:69;;;;;;;;;;;;;;;;;:5;:69::i;:::-;20359:88;;20466:57;20483:6;20491:9;20502;20513;20466:16;:57::i;:::-;20156:383;;;;20559:20;;;;20555:382;;20619:22;;;20600:16;20619:22;;;:14;:22;;;;;;;;;20679:13;:60;;20738:1;20679:60;;;20695:19;;;;;;;:11;:19;;;;;;;;20715:13;;;20695:34;;;;;;;;;:40;;;;;;20679:60;20660:79;;20758:16;20777:68;20783:9;20794:6;20777:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;20758:87;;20864:57;20881:6;20889:9;20900;20911;20864:16;:57::i;1163:181::-;1221:7;1253:5;;;1277:6;;;;1269:46;;;;;;;;;;;;;20963:630;21081:18;21102:77;21109:12;21102:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;21081:98;;21209:1;21194:12;:16;;;:85;;;;-1:-1:-1;21214:22:0;;;;;;;:11;:22;;;;;;;;:65;21237:16;;;21214:40;;;;;;;;;:50;:65;;;:50;;:65;21194:85;21190:329;;;21294:22;;;;;;;:11;:22;;;;;;;;21317:16;;;21294:40;;;;;;;;;:57;;;;;;;;;;;;21190:329;;;21419:33;;;;;;;;;;;;;;;;;;;;;;;;;21380:22;;;-1:-1:-1;21380:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21465:25;;;:14;:25;;;;;;;:44;;21380:72;21493:16;;21465:44;;;;;;;;;;;;;21190:329;21555:9;21534:51;;;21566:8;21576;21534:51;;;;;;;;;;;;;;;;20963:630;;;;;:::o;21601:161::-;21676:6;21714:12;21707:5;21703:9;;21695:32;;;;;;;;;;;;;;6777:16717;;;;;;;;;;-1:-1:-1;6777:16717:0;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;293:336;;;407:3;400:4;392:6;388:17;384:27;374:2;;425:1;422;415:12;374:2;-1:-1;445:20;;485:18;474:30;;471:2;;;517:1;514;507:12;471:2;551:4;543:6;539:17;527:29;;602:3;594:4;586:6;582:17;572:8;568:32;565:41;562:2;;;619:1;616;609:12;562:2;367:262;;;;;;774:128;840:20;;865:32;840:20;865:32;;909:126;974:20;;999:31;974:20;999:31;;1042:241;;1146:2;1134:9;1125:7;1121:23;1117:32;1114:2;;;1162:1;1159;1152:12;1114:2;1197:1;1214:53;1259:7;1239:9;1214:53;;;1204:63;1108:175;-1:-1;;;;1108:175;1290:366;;;1411:2;1399:9;1390:7;1386:23;1382:32;1379:2;;;1427:1;1424;1417:12;1379:2;1462:1;1479:53;1524:7;1504:9;1479:53;;;1469:63;;1441:97;1569:2;1587:53;1632:7;1623:6;1612:9;1608:22;1587:53;;;1577:63;;1548:98;1373:283;;;;;;1663:491;;;;1801:2;1789:9;1780:7;1776:23;1772:32;1769:2;;;1817:1;1814;1807:12;1769:2;1852:1;1869:53;1914:7;1894:9;1869:53;;;1859:63;;1831:97;1959:2;1977:53;2022:7;2013:6;2002:9;1998:22;1977:53;;;1967:63;;1938:98;2067:2;2085:53;2130:7;2121:6;2110:9;2106:22;2085:53;;;2075:63;;2046:98;1763:391;;;;;;2161:991;;;;;;;;2365:3;2353:9;2344:7;2340:23;2336:33;2333:2;;;2382:1;2379;2372:12;2333:2;2417:1;2434:53;2479:7;2459:9;2434:53;;;2424:63;;2396:97;2524:2;2542:53;2587:7;2578:6;2567:9;2563:22;2542:53;;;2532:63;;2503:98;2632:2;2650:53;2695:7;2686:6;2675:9;2671:22;2650:53;;;2640:63;;2611:98;2740:2;2758:53;2803:7;2794:6;2783:9;2779:22;2758:53;;;2748:63;;2719:98;2848:3;2867:51;2910:7;2901:6;2890:9;2886:22;2867:51;;;2857:61;;2827:97;2955:3;2974:53;3019:7;3010:6;2999:9;2995:22;2974:53;;;2964:63;;2934:99;3064:3;3083:53;3128:7;3119:6;3108:9;3104:22;3083:53;;;3073:63;;3043:99;2327:825;;;;;;;;;;;3159:490;;;;3299:2;3287:9;3278:7;3274:23;3270:32;3267:2;;;3315:1;3312;3305:12;3267:2;3350:1;3367:53;3412:7;3392:9;3367:53;;;3357:63;;3329:97;3485:2;3474:9;3470:18;3457:32;3509:18;3501:6;3498:30;3495:2;;;3541:1;3538;3531:12;3495:2;3569:64;3625:7;3616:6;3605:9;3601:22;3569:64;;;3559:74;;;;3436:203;3261:388;;;;;;3656:366;;;3777:2;3765:9;3756:7;3752:23;3748:32;3745:2;;;3793:1;3790;3783:12;3745:2;3828:1;3845:53;3890:7;3870:9;3845:53;;;3835:63;;3807:97;3935:2;3953:53;3998:7;3989:6;3978:9;3974:22;3953:53;;4029:865;;;;;;;4216:3;4204:9;4195:7;4191:23;4187:33;4184:2;;;4233:1;4230;4223:12;4184:2;4268:1;4285:53;4330:7;4310:9;4285:53;;;4275:63;;4247:97;4375:2;4393:53;4438:7;4429:6;4418:9;4414:22;4393:53;;;4383:63;;4354:98;4483:2;4501:53;4546:7;4537:6;4526:9;4522:22;4501:53;;;4491:63;;4462:98;4591:2;4609:51;4652:7;4643:6;4632:9;4628:22;4609:51;;;4599:61;;4570:96;4697:3;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;;;4706:63;;4676:99;4806:3;4825:53;4870:7;4861:6;4850:9;4846:22;4825:53;;;4815:63;;4785:99;4178:716;;;;;;;;;4901:364;;;5021:2;5009:9;5000:7;4996:23;4992:32;4989:2;;;5037:1;5034;5027:12;4989:2;5072:1;5089:53;5134:7;5114:9;5089:53;;;5079:63;;5051:97;5179:2;5197:52;5241:7;5232:6;5221:9;5217:22;5197:52;;5272:241;;5376:2;5364:9;5355:7;5351:23;5347:32;5344:2;;;5392:1;5389;5382:12;5344:2;5427:1;5444:53;5489:7;5469:9;5444:53;;5520:113;5603:24;5621:5;5603:24;;;5598:3;5591:37;5585:48;;;5640:104;5717:21;5732:5;5717:21;;5751:113;5834:24;5852:5;5834:24;;5871:152;5972:45;5992:24;6010:5;5992:24;;;5972:45;;6030:347;;6142:39;6175:5;6142:39;;;6193:71;6257:6;6252:3;6193:71;;;6186:78;;6269:52;6314:6;6309:3;6302:4;6295:5;6291:16;6269:52;;;6342:29;6364:6;6342:29;;;6333:39;;;;6122:255;-1:-1;;;6122:255;6731:385;;6891:67;6955:2;6950:3;6891:67;;;6991:34;6971:55;;7060:18;7055:2;7046:12;;7039:40;7107:2;7098:12;;6877:239;-1:-1;;6877:239;7125:398;;7303:84;7385:1;7380:3;7303:84;;;7420:66;7400:87;;7515:1;7506:11;;7289:234;-1:-1;;7289:234;7532:327;;7692:67;7756:2;7751:3;7692:67;;;7792:29;7772:50;;7850:2;7841:12;;7678:181;-1:-1;;7678:181;7868:376;;8028:67;8092:2;8087:3;8028:67;;;8128:34;8108:55;;8197:9;8192:2;8183:12;;8176:31;8235:2;8226:12;;8014:230;-1:-1;;8014:230;8253:332;;8413:67;8477:2;8472:3;8413:67;;;8513:34;8493:55;;8576:2;8567:12;;8399:186;-1:-1;;8399:186;8594:372;;8754:67;8818:2;8813:3;8754:67;;;8854:34;8834:55;;8923:5;8918:2;8909:12;;8902:27;8957:2;8948:12;;8740:226;-1:-1;;8740:226;8975:327;;9135:67;9199:2;9194:3;9135:67;;;9235:29;9215:50;;9293:2;9284:12;;9121:181;-1:-1;;9121:181;9311:376;;9471:67;9535:2;9530:3;9471:67;;;9571:34;9551:55;;9640:9;9635:2;9626:12;;9619:31;9678:2;9669:12;;9457:230;-1:-1;;9457:230;9696:492;;9874:85;9956:2;9951:3;9874:85;;;9992:34;9972:55;;10061:34;10056:2;10047:12;;10040:56;10130:20;10125:2;10116:12;;10109:42;10179:2;10170:12;;9860:328;-1:-1;;9860:328;10197:377;;10357:67;10421:2;10416:3;10357:67;;;10457:34;10437:55;;10526:10;10521:2;10512:12;;10505:32;10565:2;10556:12;;10343:231;-1:-1;;10343:231;10583:477;;10761:85;10843:2;10838:3;10761:85;;;10879:34;10859:55;;10948:34;10943:2;10934:12;;10927:56;11017:5;11012:2;11003:12;;10996:27;11051:2;11042:12;;10747:313;-1:-1;;10747:313;11069:398;;11229:67;11293:2;11288:3;11229:67;;;11329:34;11309:55;;11398:31;11393:2;11384:12;;11377:53;11458:2;11449:12;;11215:252;-1:-1;;11215:252;11476:332;;11636:67;11700:2;11695:3;11636:67;;;11736:34;11716:55;;11799:2;11790:12;;11622:186;-1:-1;;11622:186;11817:314;;11977:67;12041:2;12036:3;11977:67;;;12077:16;12057:37;;12122:2;12113:12;;11963:168;-1:-1;;11963:168;12140:396;;12300:67;12364:2;12359:3;12300:67;;;12400:34;12380:55;;12469:29;12464:2;12455:12;;12448:51;12527:2;12518:12;;12286:250;-1:-1;;12286:250;12545:371;;12705:67;12769:2;12764:3;12705:67;;;12805:34;12785:55;;12874:4;12869:2;12860:12;;12853:26;12907:2;12898:12;;12691:225;-1:-1;;12691:225;12925:431;;13103:85;13185:2;13180:3;13103:85;;;13221:34;13201:55;;13290:28;13285:2;13276:12;;13269:50;13347:2;13338:12;;13089:267;-1:-1;;13089:267;13484:110;13565:23;13582:5;13565:23;;13601:107;13680:22;13696:5;13680:22;;13715:124;13797:36;13827:5;13797:36;;13846:110;13927:23;13944:5;13927:23;;13963:650;;14218:148;14362:3;14218:148;;;14211:155;;14377:75;14448:3;14439:6;14377:75;;;14474:2;14469:3;14465:12;14458:19;;14488:75;14559:3;14550:6;14488:75;;;-1:-1;14585:2;14576:12;;14199:414;-1:-1;;14199:414;14620:372;;14819:148;14963:3;14819:148;;14999:372;;15198:148;15342:3;15198:148;;15378:372;;15577:148;15721:3;15577:148;;15757:213;15875:2;15860:18;;15889:71;15864:9;15933:6;15889:71;;15977:201;16089:2;16074:18;;16103:65;16078:9;16141:6;16103:65;;16185:213;16303:2;16288:18;;16317:71;16292:9;16361:6;16317:71;;16405:771;16663:3;16648:19;;16678:71;16652:9;16722:6;16678:71;;;16760:72;16828:2;16817:9;16813:18;16804:6;16760:72;;;16843;16911:2;16900:9;16896:18;16887:6;16843:72;;;16926;16994:2;16983:9;16979:18;16970:6;16926:72;;;17009:73;17077:3;17066:9;17062:19;17053:6;17009:73;;;17093;17161:3;17150:9;17146:19;17137:6;17093:73;;;16634:542;;;;;;;;;;17183:547;17385:3;17370:19;;17400:71;17374:9;17444:6;17400:71;;;17482:72;17550:2;17539:9;17535:18;17526:6;17482:72;;;17565;17633:2;17622:9;17618:18;17609:6;17565:72;;;17648;17716:2;17705:9;17701:18;17692:6;17648:72;;;17356:374;;;;;;;;17737:547;17939:3;17924:19;;17954:71;17928:9;17998:6;17954:71;;;18036:72;18104:2;18093:9;18089:18;18080:6;18036:72;;;18119;18187:2;18176:9;18172:18;18163:6;18119:72;;;18202;18270:2;18259:9;18255:18;18246:6;18202:72;;18291:539;18489:3;18474:19;;18504:71;18478:9;18548:6;18504:71;;;18586:68;18650:2;18639:9;18635:18;18626:6;18586:68;;18837:293;18971:2;18985:47;;;18956:18;;19046:74;18956:18;19106:6;19046:74;;19445:407;19636:2;19650:47;;;19621:18;;19711:131;19621:18;19711:131;;19859:407;20050:2;20064:47;;;20035:18;;20125:131;20035:18;20125:131;;20273:407;20464:2;20478:47;;;20449:18;;20539:131;20449:18;20539:131;;20687:407;20878:2;20892:47;;;20863:18;;20953:131;20863:18;20953:131;;21101:407;21292:2;21306:47;;;21277:18;;21367:131;21277:18;21367:131;;21515:407;21706:2;21720:47;;;21691:18;;21781:131;21691:18;21781:131;;21929:407;22120:2;22134:47;;;22105:18;;22195:131;22105:18;22195:131;;22343:407;22534:2;22548:47;;;22519:18;;22609:131;22519:18;22609:131;;22757:407;22948:2;22962:47;;;22933:18;;23023:131;22933:18;23023:131;;23171:407;23362:2;23376:47;;;23347:18;;23437:131;23347:18;23437:131;;23585:407;23776:2;23790:47;;;23761:18;;23851:131;23761:18;23851:131;;23999:407;24190:2;24204:47;;;24175:18;;24265:131;24175:18;24265:131;;24413:407;24604:2;24618:47;;;24589:18;;24679:131;24589:18;24679:131;;25047:209;25163:2;25148:18;;25177:69;25152:9;25219:6;25177:69;;25263:316;25405:2;25390:18;;25419:69;25394:9;25461:6;25419:69;;;25499:70;25565:2;25554:9;25550:18;25541:6;25499:70;;25586:205;25700:2;25685:18;;25714:67;25689:9;25754:6;25714:67;;25798:211;25915:2;25900:18;;25929:70;25904:9;25972:6;25929:70;;26016:209;26132:2;26117:18;;26146:69;26121:9;26188:6;26146:69;;26232:320;26376:2;26361:18;;26390:70;26365:9;26433:6;26390:70;;;26471:71;26538:2;26527:9;26523:18;26514:6;26471:71;;26559:118;26643:12;;26614:63;26814:163;26917:19;;;26966:4;26957:14;;26910:67;26986:145;27122:3;27100:31;-1:-1;27100:31;27139:91;;27201:24;27219:5;27201:24;;27237:85;27303:13;27296:21;;27279:43;27329:72;27391:5;27374:27;27408:121;27481:42;27470:54;;27453:76;27615:88;27687:10;27676:22;;27659:44;27710:81;27781:4;27770:16;;27753:38;27798:104;27870:26;27859:38;;27842:60;27909:106;;27987:23;28004:5;27987:23;;28023:268;28088:1;28095:101;28109:6;28106:1;28103:13;28095:101;;;28176:11;;;28170:18;28157:11;;;28150:39;28131:2;28124:10;28095:101;;;28211:6;28208:1;28205:13;28202:2;;;-1:-1;;28276:1;28258:16;;28251:27;28072:219;28380:97;28468:2;28448:14;28464:7;28444:28;;28428:49;28485:117;28554:24;28572:5;28554:24;;;28547:5;28544:35;28534:2;;28593:1;28590;28583:12;28609:117;28678:24;28696:5;28678:24;;28857:115;28925:23;28942:5;28925:23;;28979:113;29046:22;29062:5;29046:22;

Swarm Source

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