ETH Price: $3,099.81 (+1.01%)
Gas: 8 Gwei

Contract

0x41e29EE7F23284369c1011c22863DB18EC1307D0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Withdraw139993512022-01-13 20:36:06908 days ago1642106166IN
0x41e29EE7...8EC1307D0
0 ETH0.00811663153.24534362
Withdraw139993422022-01-13 20:34:15908 days ago1642106055IN
0x41e29EE7...8EC1307D0
0 ETH0.0071693156.18710059
Withdraw137428672021-12-05 0:17:32948 days ago1638663452IN
0x41e29EE7...8EC1307D0
0 ETH0.00567773123.69256545
Withdraw137428452021-12-05 0:12:38948 days ago1638663158IN
0x41e29EE7...8EC1307D0
0 ETH0.00722201136.35442269
Withdraw135567132021-11-05 12:59:23978 days ago1636117163IN
0x41e29EE7...8EC1307D0
0 ETH0.0052169798.49851579
Withdraw135567002021-11-05 12:56:59978 days ago1636117019IN
0x41e29EE7...8EC1307D0
0 ETH0.00471973102.82193604

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
139993512022-01-13 20:36:06908 days ago1642106166
0x41e29EE7...8EC1307D0
0.27 ETH
139993422022-01-13 20:34:15908 days ago1642106055
0x41e29EE7...8EC1307D0
0.03 ETH
138349172021-12-19 10:05:25934 days ago1639908325
0x41e29EE7...8EC1307D0
0.05 ETH
137817652021-12-11 4:35:02942 days ago1639197302
0x41e29EE7...8EC1307D0
0.05 ETH
137814482021-12-11 3:29:38942 days ago1639193378
0x41e29EE7...8EC1307D0
0.05 ETH
137755112021-12-10 5:32:22943 days ago1639114342
0x41e29EE7...8EC1307D0
0.05 ETH
137733112021-12-09 21:02:45943 days ago1639083765
0x41e29EE7...8EC1307D0
0.1 ETH
137428672021-12-05 0:17:32948 days ago1638663452
0x41e29EE7...8EC1307D0
0.305 ETH
137428452021-12-05 0:12:38948 days ago1638663158
0x41e29EE7...8EC1307D0
2.745 ETH
136943292021-11-27 5:51:01956 days ago1637992261
0x41e29EE7...8EC1307D0
0.05 ETH
136898972021-11-26 13:06:07957 days ago1637931967
0x41e29EE7...8EC1307D0
0.05 ETH
136732592021-11-23 21:39:39959 days ago1637703579
0x41e29EE7...8EC1307D0
0.05 ETH
136632312021-11-22 7:41:35961 days ago1637566895
0x41e29EE7...8EC1307D0
0.05 ETH
136493832021-11-20 2:55:48963 days ago1637376948
0x41e29EE7...8EC1307D0
0.05 ETH
136469302021-11-19 17:37:35964 days ago1637343455
0x41e29EE7...8EC1307D0
0.05 ETH
136443762021-11-19 7:38:13964 days ago1637307493
0x41e29EE7...8EC1307D0
0.05 ETH
136172422021-11-15 0:41:59968 days ago1636936919
0x41e29EE7...8EC1307D0
0.1 ETH
136147652021-11-14 15:27:31969 days ago1636903651
0x41e29EE7...8EC1307D0
0.1 ETH
136138922021-11-14 12:09:52969 days ago1636891792
0x41e29EE7...8EC1307D0
0.1 ETH
136069452021-11-13 9:44:29970 days ago1636796669
0x41e29EE7...8EC1307D0
0.05 ETH
136056432021-11-13 4:47:56970 days ago1636778876
0x41e29EE7...8EC1307D0
0.05 ETH
136046592021-11-13 1:02:10970 days ago1636765330
0x41e29EE7...8EC1307D0
0.1 ETH
135917992021-11-11 0:46:55972 days ago1636591615
0x41e29EE7...8EC1307D0
0.05 ETH
135877752021-11-10 9:48:15973 days ago1636537695
0x41e29EE7...8EC1307D0
0.05 ETH
135865552021-11-10 5:08:08973 days ago1636520888
0x41e29EE7...8EC1307D0
0.05 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FlexPaymentDivider

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-10-25
*/

pragma solidity ^0.8.0;

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IVersion {
    /**
     * @dev Returns version based on semantic versioning format.
     */
    function version() external pure returns (string memory);
}

contract FlexPaymentDivider is Ownable, IVersion {
    using Address for address payable;

    uint256 private _recipientCount;
    mapping(uint256 => address payable) private _recipientsById;
    mapping(address => uint256) private _percentagesByRecipient;
    mapping(address => uint256) private _balancesByRecipient;
    mapping(address => uint256) private _changeByRecipient;
    // 0 = false, 1 = true
    mapping(address => uint8) private _isWithdrawingByAccount;

    /**
     * @notice Sets recipients and the percentage of each deposit sent to them.
     * @dev {_setupRecipients} is only used once--here, upon deployment.
     * @param recipients_ Accounts to receive percentage of deposits.
     * @param percentages_ Percentage of deposit each account should receive.
     * Order matters.
     */
    constructor(
        address payable[] memory recipients_,
        uint256[] memory percentages_
    ) {
        _setupRecipients(recipients_, percentages_);
    }

    function version() external pure override returns (string memory) {
        return "1.0.0";
    }

    /**
     * @notice Returns the number of recipients each deposit is divided by.
     * @return Number of recipients.
     */
    function recipientCount() public view returns (uint256) {
        return _recipientCount;
    }

    /**
     * @notice Returns recipient with the given id.
     * @param id Integer.
     * @return Ethereum account address.
     */
    function recipientById(uint256 id) public view returns (address) {
        return _recipientsById[id];
    }

    /**
     * @notice Returns the percentage of each deposit the recipient receives.
     * @param recipient Ethereum account address.
     * @return Amount of 100.
     */
    function percentage(address recipient) public view returns (uint256) {
        return _percentagesByRecipient[recipient];
    }

    /**
     * @notice Returns the balance the recipient has accumulated.
     * @param recipient Ethereum account address.
     * @return Amount of wei.
     */
    function accumulatedBalance(address recipient) public view returns (uint256) {
        return _balancesByRecipient[recipient];
    }

    /**
     * @notice Returns the amount of change the recipient has accumulated.
     * @param recipient Ethereum account address.
     * @return Fraction of wei as an amount out of 100.
     */
    function accumulatedChange(address recipient) public view returns (uint256) {
        return _changeByRecipient[recipient];
    }

    /**
     * @notice Increases balance for each recipient by their designated
     * percenatage of the Ether sent with this call.
     * @custom:require Caller must be owner.
     * @custom:require Message value must be greater than 0.
     * @dev Solidity rounds towards zero so we accumulate change here that is
     * transferred once it exceeds a fractional amount of wei.
     *
     * @custom:warning
     * ===============
     * Forwarding all gas opens the door to reentrancy vulnerabilities. Make
     * sure you trust the recipient, or are either following the
     * checks-effects-interactions pattern or using {ReentrancyGuard}.
     */
    function deposit() public payable onlyOwner {
        require(
            msg.value > 0,
            "FlexPaymentDivider: Insufficient message value"
        );
        for (uint256 i = 0; i < _recipientCount; i++) {
            address payable recipient = _recipientsById[i];
            uint256 change = (msg.value * _percentagesByRecipient[recipient]) % 100;
            uint256 amount = (msg.value * _percentagesByRecipient[recipient]) / 100;
            uint256 totalChange = _changeByRecipient[recipient] + change;
            _changeByRecipient[recipient] = totalChange;
            if (totalChange >= 100) {
                _changeByRecipient[recipient] = totalChange % 100;
                amount += (totalChange / 100);
            }
            _balancesByRecipient[recipient] += amount;
        }
    }

    /**
     * @notice Transfers to each recipient their designated percenatage of the
     * Ether held by this contract.
     * @custom:require Caller must be owner.
     *
     * @custom:warning
     * ===============
     * A denial of service attack is possible if any of the recipients revert.
     * The {withdraw} method can be used in the event of this attack.
     *
     * @custom:warning
     * ===============
     * Forwarding all gas opens the door to reentrancy vulnerabilities. Make
     * sure you trust the recipient, or are either following the
     * checks-effects-interactions pattern or using {ReentrancyGuard}.
     */
    function disperse() public onlyOwner {
        for (uint256 i = 0; i < _recipientCount; i++) {
            address payable recipient = _recipientsById[i];
            withdraw(recipient);
        }
    }

    /**
     * @notice Transfers to recipient their designated percentage of the Ether
     * held in this contract.
     * @custom:require Caller must not already be withdrawing.
     * @custom:require Balance to withdraw must be above 0.
     *
     * @custom:warning
     * ===============
     * Forwarding all gas opens the door to reentrancy vulnerabilities. Make
     * sure you trust the recipient, or are either following the
     * checks-effects-interactions pattern or using {ReentrancyGuard}.
     */
    function withdraw(address payable recipient) public {
        require(
            !isWithdrawing(_msgSender()),
            "FlexPaymentDivider: Can not reenter"
        );
        _isWithdrawingByAccount[_msgSender()] = 1;

        uint256 amount = _balancesByRecipient[recipient];
        // IMPORTANT: Do not revert here so `disperse` can not have DoS when a
        // recipient does not yet have a balance to withdraw.
        if (amount > 0) {
            _balancesByRecipient[recipient] = 0;
            recipient.sendValue(amount);
        }

        _isWithdrawingByAccount[_msgSender()] = 0;
    }

    /* INTERNAL */

    /**
     * @dev Sets mappings for recipients and respective percentages.
     * This method is only used once in the constructor. Recipients and
     * percentages can not be modified after deployment.
     * @custom:require Input lengths must be equal. Order matters.
     * @custom:require Each percentage must be above 0 and below 100.
     * @custom:require The sum of all percentages must be 100.
     * @param recipients_ Account addresses receiving a percentage of deposited
     * funds.
     * @param percentages_ Amounts for accounts at the same index in the
     * {recipients} parameter to allocate from deposited funds.
     *
     * @custom:warning
     * ===============
     * Recipient accounts should be trusted.
     */
    function _setupRecipients(
        address payable[] memory recipients_,
        uint256[] memory percentages_
    ) internal {
        require(
            recipients_.length == percentages_.length,
            "FlexPaymentDivider: Unequal input lengths"
        );
        uint256 sum = 0;
        for (uint256 i = 0; i < recipients_.length; i++) {
            require(
                percentages_[i] > 0,
                "FlexPaymentDivider: Percentage must exceed 0"
            );
            require(
                percentages_[i] <= 100,
                "FlexPaymentDivider: Percentage must not exceed 100"
            );
            sum += percentages_[i];
            _recipientCount += 1;
            _recipientsById[i] = recipients_[i];
            _percentagesByRecipient[_recipientsById[i]] = percentages_[i];
        }
        require(sum == 100, "FlexPaymentDivider: Percentages must sum to 100");
    }

    function isWithdrawing(address account) internal view returns (bool) {
        return _isWithdrawingByAccount[account] == 1;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable[]","name":"recipients_","type":"address[]"},{"internalType":"uint256[]","name":"percentages_","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"accumulatedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"accumulatedChange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"disperse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"percentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"recipientById","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recipientCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200209438038062002094833981810160405281019062000037919062000590565b620000576200004b6200007160201b60201c565b6200007960201b60201c565b6200006982826200013d60201b60201c565b505062000b12565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b805182511462000184576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017b90620006d3565b60405180910390fd5b6000805b8351811015620003ba576000838281518110620001aa57620001a96200091f565b5b602002602001015111620001f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ec90620006b1565b60405180910390fd5b60648382815181106200020d576200020c6200091f565b5b6020026020010151111562000259576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002509062000717565b60405180910390fd5b8281815181106200026f576200026e6200091f565b5b602002602001015182620002849190620007d1565b915060018060008282546200029a9190620007d1565b92505081905550838181518110620002b757620002b66200091f565b5b60200260200101516002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508281815181106200032657620003256200091f565b5b6020026020010151600360006002600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080620003b190620008a2565b91505062000188565b506064811462000401576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003f890620006f5565b60405180910390fd5b505050565b60006200041d620004178462000762565b62000739565b9050808382526020820190508285602086028201111562000443576200044262000982565b5b60005b858110156200047757816200045c8882620004fc565b84526020840193506020830192505060018101905062000446565b5050509392505050565b600062000498620004928462000791565b62000739565b90508083825260208201905082856020860282011115620004be57620004bd62000982565b5b60005b85811015620004f25781620004d7888262000579565b845260208401935060208301925050600181019050620004c1565b5050509392505050565b6000815190506200050d8162000ade565b92915050565b600082601f8301126200052b576200052a6200097d565b5b81516200053d84826020860162000406565b91505092915050565b600082601f8301126200055e576200055d6200097d565b5b81516200057084826020860162000481565b91505092915050565b6000815190506200058a8162000af8565b92915050565b60008060408385031215620005aa57620005a96200098c565b5b600083015167ffffffffffffffff811115620005cb57620005ca62000987565b5b620005d98582860162000513565b925050602083015167ffffffffffffffff811115620005fd57620005fc62000987565b5b6200060b8582860162000546565b9150509250929050565b600062000624602c83620007c0565b91506200063182620009a2565b604082019050919050565b60006200064b602983620007c0565b91506200065882620009f1565b604082019050919050565b600062000672602f83620007c0565b91506200067f8262000a40565b604082019050919050565b600062000699603283620007c0565b9150620006a68262000a8f565b604082019050919050565b60006020820190508181036000830152620006cc8162000615565b9050919050565b60006020820190508181036000830152620006ee816200063c565b9050919050565b60006020820190508181036000830152620007108162000663565b9050919050565b6000602082019050818103600083015262000732816200068a565b9050919050565b60006200074562000758565b90506200075382826200086c565b919050565b6000604051905090565b600067ffffffffffffffff82111562000780576200077f6200094e565b5b602082029050602081019050919050565b600067ffffffffffffffff821115620007af57620007ae6200094e565b5b602082029050602081019050919050565b600082825260208201905092915050565b6000620007de8262000862565b9150620007eb8362000862565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008235762000822620008f0565b5b828201905092915050565b60006200083b8262000842565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620008778262000991565b810181811067ffffffffffffffff821117156200089957620008986200094e565b5b80604052505050565b6000620008af8262000862565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620008e557620008e4620008f0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f466c65785061796d656e74446976696465723a2050657263656e74616765206d60008201527f7573742065786365656420300000000000000000000000000000000000000000602082015250565b7f466c65785061796d656e74446976696465723a20556e657175616c20696e707560008201527f74206c656e677468730000000000000000000000000000000000000000000000602082015250565b7f466c65785061796d656e74446976696465723a2050657263656e74616765732060008201527f6d7573742073756d20746f203130300000000000000000000000000000000000602082015250565b7f466c65785061796d656e74446976696465723a2050657263656e74616765206d60008201527f757374206e6f7420657863656564203130300000000000000000000000000000602082015250565b62000ae9816200082e565b811462000af557600080fd5b50565b62000b038162000862565b811462000b0f57600080fd5b50565b6115728062000b226000396000f3fe6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b14610196578063a7b7b087146101c1578063d0e30db0146101fe578063e8478d4414610208578063f2fde38b14610245578063f3bdbc521461026e576100a7565b806322eabb8e146100ac5780632eb7cdb2146100d757806351cff8d91461011457806354fd4d501461013d578063715018a61461016857806388b6ff9c1461017f575b600080fd5b3480156100b857600080fd5b506100c16102ab565b6040516100ce91906110d4565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610def565b6102b5565b60405161010b91906110d4565b60405180910390f35b34801561012057600080fd5b5061013b60048036038101906101369190610e1c565b6102fe565b005b34801561014957600080fd5b506101526104ce565b60405161015f9190610ff2565b60405180910390f35b34801561017457600080fd5b5061017d61050b565b005b34801561018b57600080fd5b50610194610593565b005b3480156101a257600080fd5b506101ab610674565b6040516101b89190610fd7565b60405180910390f35b3480156101cd57600080fd5b506101e860048036038101906101e39190610def565b61069d565b6040516101f591906110d4565b60405180910390f35b6102066106e6565b005b34801561021457600080fd5b5061022f600480360381019061022a9190610def565b610a16565b60405161023c91906110d4565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190610def565b610a5f565b005b34801561027a57600080fd5b5061029560048036038101906102909190610e49565b610b57565b6040516102a29190610fd7565b60405180910390f35b6000600154905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61030e610309610b94565b610b9c565b1561034e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034590611014565b60405180910390fd5b60016006600061035c610b94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561046a576000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610469818373ffffffffffffffffffffffffffffffffffffffff16610bf890919063ffffffff16565b5b600060066000610478610b94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b610513610b94565b73ffffffffffffffffffffffffffffffffffffffff16610531610674565b73ffffffffffffffffffffffffffffffffffffffff1614610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057e906110b4565b60405180910390fd5b6105916000610cec565b565b61059b610b94565b73ffffffffffffffffffffffffffffffffffffffff166105b9610674565b73ffffffffffffffffffffffffffffffffffffffff161461060f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610606906110b4565b60405180910390fd5b60005b6001548110156106715760006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061065d816102fe565b50808061066990611278565b915050610612565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ee610b94565b73ffffffffffffffffffffffffffffffffffffffff1661070c610674565b73ffffffffffffffffffffffffffffffffffffffff1614610762576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610759906110b4565b60405180910390fd5b600034116107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c90611094565b60405180910390fd5b60005b600154811015610a135760006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006064600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434610839919061119d565b61084391906112c1565b905060006064600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434610894919061119d565b61089e919061116c565b9050600082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108ed9190611116565b905080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550606481106109a65760648161094891906112c1565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550606481610998919061116c565b826109a39190611116565b91505b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109f59190611116565b92505081905550505050508080610a0b90611278565b9150506107a8565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a67610b94565b73ffffffffffffffffffffffffffffffffffffffff16610a85610674565b73ffffffffffffffffffffffffffffffffffffffff1614610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad2906110b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4290611034565b60405180910390fd5b610b5481610cec565b50565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b60006001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16149050919050565b80471015610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290611074565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610c6190610fc2565b60006040518083038185875af1925050503d8060008114610c9e576040519150601f19603f3d011682016040523d82523d6000602084013e610ca3565b606091505b5050905080610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90611054565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081359050610dbf816114f7565b92915050565b600081359050610dd48161150e565b92915050565b600081359050610de981611525565b92915050565b600060208284031215610e0557610e04611350565b5b6000610e1384828501610db0565b91505092915050565b600060208284031215610e3257610e31611350565b5b6000610e4084828501610dc5565b91505092915050565b600060208284031215610e5f57610e5e611350565b5b6000610e6d84828501610dda565b91505092915050565b610e7f816111f7565b82525050565b6000610e90826110ef565b610e9a8185611105565b9350610eaa818560208601611245565b610eb381611355565b840191505092915050565b6000610ecb602383611105565b9150610ed682611366565b604082019050919050565b6000610eee602683611105565b9150610ef9826113b5565b604082019050919050565b6000610f11603a83611105565b9150610f1c82611404565b604082019050919050565b6000610f34601d83611105565b9150610f3f82611453565b602082019050919050565b6000610f57602e83611105565b9150610f628261147c565b604082019050919050565b6000610f7a602083611105565b9150610f85826114cb565b602082019050919050565b6000610f9d6000836110fa565b9150610fa8826114f4565b600082019050919050565b610fbc8161123b565b82525050565b6000610fcd82610f90565b9150819050919050565b6000602082019050610fec6000830184610e76565b92915050565b6000602082019050818103600083015261100c8184610e85565b905092915050565b6000602082019050818103600083015261102d81610ebe565b9050919050565b6000602082019050818103600083015261104d81610ee1565b9050919050565b6000602082019050818103600083015261106d81610f04565b9050919050565b6000602082019050818103600083015261108d81610f27565b9050919050565b600060208201905081810360008301526110ad81610f4a565b9050919050565b600060208201905081810360008301526110cd81610f6d565b9050919050565b60006020820190506110e96000830184610fb3565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006111218261123b565b915061112c8361123b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611161576111606112f2565b5b828201905092915050565b60006111778261123b565b91506111828361123b565b92508261119257611191611321565b5b828204905092915050565b60006111a88261123b565b91506111b38361123b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111ec576111eb6112f2565b5b828202905092915050565b60006112028261121b565b9050919050565b60006112148261121b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611263578082015181840152602081019050611248565b83811115611272576000848401525b50505050565b60006112838261123b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112b6576112b56112f2565b5b600182019050919050565b60006112cc8261123b565b91506112d78361123b565b9250826112e7576112e6611321565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f466c65785061796d656e74446976696465723a2043616e206e6f74207265656e60008201527f7465720000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f466c65785061796d656e74446976696465723a20496e73756666696369656e7460008201527f206d6573736167652076616c7565000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b611500816111f7565b811461150b57600080fd5b50565b61151781611209565b811461152257600080fd5b50565b61152e8161123b565b811461153957600080fd5b5056fea2646970667358221220f266f3fe04b0d61f6ea4386db0d3e2aa8bdf2a84f3d25fe034a0b53b397a8b4b64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f8f3b85602dd8b4effd5868c881305ec305c590c00000000000000000000000037df9c15af093878a22fda7a4d0a2b721838bdf30000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000000a

Deployed Bytecode

0x6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b14610196578063a7b7b087146101c1578063d0e30db0146101fe578063e8478d4414610208578063f2fde38b14610245578063f3bdbc521461026e576100a7565b806322eabb8e146100ac5780632eb7cdb2146100d757806351cff8d91461011457806354fd4d501461013d578063715018a61461016857806388b6ff9c1461017f575b600080fd5b3480156100b857600080fd5b506100c16102ab565b6040516100ce91906110d4565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610def565b6102b5565b60405161010b91906110d4565b60405180910390f35b34801561012057600080fd5b5061013b60048036038101906101369190610e1c565b6102fe565b005b34801561014957600080fd5b506101526104ce565b60405161015f9190610ff2565b60405180910390f35b34801561017457600080fd5b5061017d61050b565b005b34801561018b57600080fd5b50610194610593565b005b3480156101a257600080fd5b506101ab610674565b6040516101b89190610fd7565b60405180910390f35b3480156101cd57600080fd5b506101e860048036038101906101e39190610def565b61069d565b6040516101f591906110d4565b60405180910390f35b6102066106e6565b005b34801561021457600080fd5b5061022f600480360381019061022a9190610def565b610a16565b60405161023c91906110d4565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190610def565b610a5f565b005b34801561027a57600080fd5b5061029560048036038101906102909190610e49565b610b57565b6040516102a29190610fd7565b60405180910390f35b6000600154905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61030e610309610b94565b610b9c565b1561034e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034590611014565b60405180910390fd5b60016006600061035c610b94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561046a576000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610469818373ffffffffffffffffffffffffffffffffffffffff16610bf890919063ffffffff16565b5b600060066000610478610b94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b610513610b94565b73ffffffffffffffffffffffffffffffffffffffff16610531610674565b73ffffffffffffffffffffffffffffffffffffffff1614610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057e906110b4565b60405180910390fd5b6105916000610cec565b565b61059b610b94565b73ffffffffffffffffffffffffffffffffffffffff166105b9610674565b73ffffffffffffffffffffffffffffffffffffffff161461060f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610606906110b4565b60405180910390fd5b60005b6001548110156106715760006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061065d816102fe565b50808061066990611278565b915050610612565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ee610b94565b73ffffffffffffffffffffffffffffffffffffffff1661070c610674565b73ffffffffffffffffffffffffffffffffffffffff1614610762576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610759906110b4565b60405180910390fd5b600034116107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c90611094565b60405180910390fd5b60005b600154811015610a135760006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006064600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434610839919061119d565b61084391906112c1565b905060006064600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434610894919061119d565b61089e919061116c565b9050600082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108ed9190611116565b905080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550606481106109a65760648161094891906112c1565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550606481610998919061116c565b826109a39190611116565b91505b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109f59190611116565b92505081905550505050508080610a0b90611278565b9150506107a8565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a67610b94565b73ffffffffffffffffffffffffffffffffffffffff16610a85610674565b73ffffffffffffffffffffffffffffffffffffffff1614610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad2906110b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4290611034565b60405180910390fd5b610b5481610cec565b50565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b60006001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16149050919050565b80471015610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290611074565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610c6190610fc2565b60006040518083038185875af1925050503d8060008114610c9e576040519150601f19603f3d011682016040523d82523d6000602084013e610ca3565b606091505b5050905080610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90611054565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081359050610dbf816114f7565b92915050565b600081359050610dd48161150e565b92915050565b600081359050610de981611525565b92915050565b600060208284031215610e0557610e04611350565b5b6000610e1384828501610db0565b91505092915050565b600060208284031215610e3257610e31611350565b5b6000610e4084828501610dc5565b91505092915050565b600060208284031215610e5f57610e5e611350565b5b6000610e6d84828501610dda565b91505092915050565b610e7f816111f7565b82525050565b6000610e90826110ef565b610e9a8185611105565b9350610eaa818560208601611245565b610eb381611355565b840191505092915050565b6000610ecb602383611105565b9150610ed682611366565b604082019050919050565b6000610eee602683611105565b9150610ef9826113b5565b604082019050919050565b6000610f11603a83611105565b9150610f1c82611404565b604082019050919050565b6000610f34601d83611105565b9150610f3f82611453565b602082019050919050565b6000610f57602e83611105565b9150610f628261147c565b604082019050919050565b6000610f7a602083611105565b9150610f85826114cb565b602082019050919050565b6000610f9d6000836110fa565b9150610fa8826114f4565b600082019050919050565b610fbc8161123b565b82525050565b6000610fcd82610f90565b9150819050919050565b6000602082019050610fec6000830184610e76565b92915050565b6000602082019050818103600083015261100c8184610e85565b905092915050565b6000602082019050818103600083015261102d81610ebe565b9050919050565b6000602082019050818103600083015261104d81610ee1565b9050919050565b6000602082019050818103600083015261106d81610f04565b9050919050565b6000602082019050818103600083015261108d81610f27565b9050919050565b600060208201905081810360008301526110ad81610f4a565b9050919050565b600060208201905081810360008301526110cd81610f6d565b9050919050565b60006020820190506110e96000830184610fb3565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006111218261123b565b915061112c8361123b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611161576111606112f2565b5b828201905092915050565b60006111778261123b565b91506111828361123b565b92508261119257611191611321565b5b828204905092915050565b60006111a88261123b565b91506111b38361123b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156111ec576111eb6112f2565b5b828202905092915050565b60006112028261121b565b9050919050565b60006112148261121b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611263578082015181840152602081019050611248565b83811115611272576000848401525b50505050565b60006112838261123b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112b6576112b56112f2565b5b600182019050919050565b60006112cc8261123b565b91506112d78361123b565b9250826112e7576112e6611321565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f466c65785061796d656e74446976696465723a2043616e206e6f74207265656e60008201527f7465720000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f466c65785061796d656e74446976696465723a20496e73756666696369656e7460008201527f206d6573736167652076616c7565000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b611500816111f7565b811461150b57600080fd5b50565b61151781611209565b811461152257600080fd5b50565b61152e8161123b565b811461153957600080fd5b5056fea2646970667358221220f266f3fe04b0d61f6ea4386db0d3e2aa8bdf2a84f3d25fe034a0b53b397a8b4b64736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f8f3b85602dd8b4effd5868c881305ec305c590c00000000000000000000000037df9c15af093878a22fda7a4d0a2b721838bdf30000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000000a

-----Decoded View---------------
Arg [0] : recipients_ (address[]): 0xf8f3B85602DD8b4EFFd5868c881305eC305C590c,0x37Df9c15af093878A22FDa7A4d0a2B721838BDf3
Arg [1] : percentages_ (uint256[]): 90,10

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [3] : 000000000000000000000000f8f3b85602dd8b4effd5868c881305ec305c590c
Arg [4] : 00000000000000000000000037df9c15af093878a22fda7a4d0a2b721838bdf3
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 000000000000000000000000000000000000000000000000000000000000005a
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000a


Deployed Bytecode Sourcemap

10072:7988:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11320:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12510:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15559:624;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11080:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9269:94;;;;;;;;;;;;;:::i;:::-;;14817:208;;;;;;;;;;;;;:::i;:::-;;8618:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11862:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13317:832;;;:::i;:::-;;12166:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9518:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11565:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11320:97;11367:7;11394:15;;11387:22;;11320:97;:::o;12510:131::-;12577:7;12604:18;:29;12623:9;12604:29;;;;;;;;;;;;;;;;12597:36;;12510:131;;;:::o;15559:624::-;15645:27;15659:12;:10;:12::i;:::-;15645:13;:27::i;:::-;15644:28;15622:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;15786:1;15746:23;:37;15770:12;:10;:12::i;:::-;15746:37;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15800:14;15817:20;:31;15838:9;15817:31;;;;;;;;;;;;;;;;15800:48;;16015:1;16006:6;:10;16002:120;;;16067:1;16033:20;:31;16054:9;16033:31;;;;;;;;;;;;;;;:35;;;;16083:27;16103:6;16083:9;:19;;;;:27;;;;:::i;:::-;16002:120;16174:1;16134:23;:37;16158:12;:10;:12::i;:::-;16134:37;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15611:572;15559:624;:::o;11080:99::-;11131:13;11157:14;;;;;;;;;;;;;;;;;;;11080:99;:::o;9269:94::-;8849:12;:10;:12::i;:::-;8838:23;;:7;:5;:7::i;:::-;:23;;;8830:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9334:21:::1;9352:1;9334:9;:21::i;:::-;9269:94::o:0;14817:208::-;8849:12;:10;:12::i;:::-;8838:23;;:7;:5;:7::i;:::-;:23;;;8830:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14870:9:::1;14865:153;14889:15;;14885:1;:19;14865:153;;;14926:25;14954:15;:18;14970:1;14954:18;;;;;;;;;;;;;;;;;;;;;14926:46;;14987:19;14996:9;14987:8;:19::i;:::-;14911:107;14906:3;;;;;:::i;:::-;;;;14865:153;;;;14817:208::o:0;8618:87::-;8664:7;8691:6;;;;;;;;;;;8684:13;;8618:87;:::o;11862:129::-;11922:7;11949:23;:34;11973:9;11949:34;;;;;;;;;;;;;;;;11942:41;;11862:129;;;:::o;13317:832::-;8849:12;:10;:12::i;:::-;8838:23;;:7;:5;:7::i;:::-;:23;;;8830:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13406:1:::1;13394:9;:13;13372:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13497:9;13492:650;13516:15;;13512:1;:19;13492:650;;;13553:25;13581:15;:18;13597:1;13581:18;;;;;;;;;;;;;;;;;;;;;13553:46;;13614:14;13682:3;13644:23;:34;13668:9;13644:34;;;;;;;;;;;;;;;;13632:9;:46;;;;:::i;:::-;13631:54;;;;:::i;:::-;13614:71;;13700:14;13768:3;13730:23;:34;13754:9;13730:34;;;;;;;;;;;;;;;;13718:9;:46;;;;:::i;:::-;13717:54;;;;:::i;:::-;13700:71;;13786:19;13840:6;13808:18;:29;13827:9;13808:29;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;13786:60;;13893:11;13861:18;:29;13880:9;13861:29;;;;;;;;;;;;;;;:43;;;;13938:3;13923:11;:18;13919:156;;14008:3;13994:11;:17;;;;:::i;:::-;13962:18;:29;13981:9;13962:29;;;;;;;;;;;;;;;:49;;;;14055:3;14041:11;:17;;;;:::i;:::-;14030:29;;;;;:::i;:::-;;;13919:156;14124:6;14089:20;:31;14110:9;14089:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;13538:604;;;;13533:3;;;;;:::i;:::-;;;;13492:650;;;;13317:832::o:0;12166:134::-;12234:7;12261:20;:31;12282:9;12261:31;;;;;;;;;;;;;;;;12254:38;;12166:134;;;:::o;9518:192::-;8849:12;:10;:12::i;:::-;8838:23;;:7;:5;:7::i;:::-;:23;;;8830:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9627:1:::1;9607:22;;:8;:22;;;;9599:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9683:19;9693:8;9683:9;:19::i;:::-;9518:192:::0;:::o;11565:110::-;11621:7;11648:15;:19;11664:2;11648:19;;;;;;;;;;;;;;;;;;;;;11641:26;;11565:110;;;:::o;8001:98::-;8054:7;8081:10;8074:17;;8001:98;:::o;17925:132::-;17988:4;18048:1;18012:23;:32;18036:7;18012:32;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;18005:44;;17925:132;;;:::o;1959:317::-;2074:6;2049:21;:31;;2041:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2128:12;2146:9;:14;;2168:6;2146:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2127:52;;;2198:7;2190:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;2030:246;1959:317;;:::o;9718:173::-;9774:16;9793:6;;;;;;;;;;;9774:25;;9819:8;9810:6;;:17;;;;;;;;;;;;;;;;;;9874:8;9843:40;;9864:8;9843:40;;;;;;;;;;;;9763:128;9718:173;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;152:155;;;;:::o;313:139::-;359:5;397:6;384:20;375:29;;413:33;440:5;413:33;:::i;:::-;313:139;;;;:::o;458:329::-;517:6;566:2;554:9;545:7;541:23;537:32;534:119;;;572:79;;:::i;:::-;534:119;692:1;717:53;762:7;753:6;742:9;738:22;717:53;:::i;:::-;707:63;;663:117;458:329;;;;:::o;793:345::-;860:6;909:2;897:9;888:7;884:23;880:32;877:119;;;915:79;;:::i;:::-;877:119;1035:1;1060:61;1113:7;1104:6;1093:9;1089:22;1060:61;:::i;:::-;1050:71;;1006:125;793:345;;;;:::o;1144:329::-;1203:6;1252:2;1240:9;1231:7;1227:23;1223:32;1220:119;;;1258:79;;:::i;:::-;1220:119;1378:1;1403:53;1448:7;1439:6;1428:9;1424:22;1403:53;:::i;:::-;1393:63;;1349:117;1144:329;;;;:::o;1479:118::-;1566:24;1584:5;1566:24;:::i;:::-;1561:3;1554:37;1479:118;;:::o;1603:364::-;1691:3;1719:39;1752:5;1719:39;:::i;:::-;1774:71;1838:6;1833:3;1774:71;:::i;:::-;1767:78;;1854:52;1899:6;1894:3;1887:4;1880:5;1876:16;1854:52;:::i;:::-;1931:29;1953:6;1931:29;:::i;:::-;1926:3;1922:39;1915:46;;1695:272;1603:364;;;;:::o;1973:366::-;2115:3;2136:67;2200:2;2195:3;2136:67;:::i;:::-;2129:74;;2212:93;2301:3;2212:93;:::i;:::-;2330:2;2325:3;2321:12;2314:19;;1973:366;;;:::o;2345:::-;2487:3;2508:67;2572:2;2567:3;2508:67;:::i;:::-;2501:74;;2584:93;2673:3;2584:93;:::i;:::-;2702:2;2697:3;2693:12;2686:19;;2345:366;;;:::o;2717:::-;2859:3;2880:67;2944:2;2939:3;2880:67;:::i;:::-;2873:74;;2956:93;3045:3;2956:93;:::i;:::-;3074:2;3069:3;3065:12;3058:19;;2717:366;;;:::o;3089:::-;3231:3;3252:67;3316:2;3311:3;3252:67;:::i;:::-;3245:74;;3328:93;3417:3;3328:93;:::i;:::-;3446:2;3441:3;3437:12;3430:19;;3089:366;;;:::o;3461:::-;3603:3;3624:67;3688:2;3683:3;3624:67;:::i;:::-;3617:74;;3700:93;3789:3;3700:93;:::i;:::-;3818:2;3813:3;3809:12;3802:19;;3461:366;;;:::o;3833:::-;3975:3;3996:67;4060:2;4055:3;3996:67;:::i;:::-;3989:74;;4072:93;4161:3;4072:93;:::i;:::-;4190:2;4185:3;4181:12;4174:19;;3833:366;;;:::o;4205:398::-;4364:3;4385:83;4466:1;4461:3;4385:83;:::i;:::-;4378:90;;4477:93;4566:3;4477:93;:::i;:::-;4595:1;4590:3;4586:11;4579:18;;4205:398;;;:::o;4609:118::-;4696:24;4714:5;4696:24;:::i;:::-;4691:3;4684:37;4609:118;;:::o;4733:379::-;4917:3;4939:147;5082:3;4939:147;:::i;:::-;4932:154;;5103:3;5096:10;;4733:379;;;:::o;5118:222::-;5211:4;5249:2;5238:9;5234:18;5226:26;;5262:71;5330:1;5319:9;5315:17;5306:6;5262:71;:::i;:::-;5118:222;;;;:::o;5346:313::-;5459:4;5497:2;5486:9;5482:18;5474:26;;5546:9;5540:4;5536:20;5532:1;5521:9;5517:17;5510:47;5574:78;5647:4;5638:6;5574:78;:::i;:::-;5566:86;;5346:313;;;;:::o;5665:419::-;5831:4;5869:2;5858:9;5854:18;5846:26;;5918:9;5912:4;5908:20;5904:1;5893:9;5889:17;5882:47;5946:131;6072:4;5946:131;:::i;:::-;5938:139;;5665:419;;;:::o;6090:::-;6256:4;6294:2;6283:9;6279:18;6271:26;;6343:9;6337:4;6333:20;6329:1;6318:9;6314:17;6307:47;6371:131;6497:4;6371:131;:::i;:::-;6363:139;;6090:419;;;:::o;6515:::-;6681:4;6719:2;6708:9;6704:18;6696:26;;6768:9;6762:4;6758:20;6754:1;6743:9;6739:17;6732:47;6796:131;6922:4;6796:131;:::i;:::-;6788:139;;6515:419;;;:::o;6940:::-;7106:4;7144:2;7133:9;7129:18;7121:26;;7193:9;7187:4;7183:20;7179:1;7168:9;7164:17;7157:47;7221:131;7347:4;7221:131;:::i;:::-;7213:139;;6940:419;;;:::o;7365:::-;7531:4;7569:2;7558:9;7554:18;7546:26;;7618:9;7612:4;7608:20;7604:1;7593:9;7589:17;7582:47;7646:131;7772:4;7646:131;:::i;:::-;7638:139;;7365:419;;;:::o;7790:::-;7956:4;7994:2;7983:9;7979:18;7971:26;;8043:9;8037:4;8033:20;8029:1;8018:9;8014:17;8007:47;8071:131;8197:4;8071:131;:::i;:::-;8063:139;;7790:419;;;:::o;8215:222::-;8308:4;8346:2;8335:9;8331:18;8323:26;;8359:71;8427:1;8416:9;8412:17;8403:6;8359:71;:::i;:::-;8215:222;;;;:::o;8524:99::-;8576:6;8610:5;8604:12;8594:22;;8524:99;;;:::o;8629:147::-;8730:11;8767:3;8752:18;;8629:147;;;;:::o;8782:169::-;8866:11;8900:6;8895:3;8888:19;8940:4;8935:3;8931:14;8916:29;;8782:169;;;;:::o;8957:305::-;8997:3;9016:20;9034:1;9016:20;:::i;:::-;9011:25;;9050:20;9068:1;9050:20;:::i;:::-;9045:25;;9204:1;9136:66;9132:74;9129:1;9126:81;9123:107;;;9210:18;;:::i;:::-;9123:107;9254:1;9251;9247:9;9240:16;;8957:305;;;;:::o;9268:185::-;9308:1;9325:20;9343:1;9325:20;:::i;:::-;9320:25;;9359:20;9377:1;9359:20;:::i;:::-;9354:25;;9398:1;9388:35;;9403:18;;:::i;:::-;9388:35;9445:1;9442;9438:9;9433:14;;9268:185;;;;:::o;9459:348::-;9499:7;9522:20;9540:1;9522:20;:::i;:::-;9517:25;;9556:20;9574:1;9556:20;:::i;:::-;9551:25;;9744:1;9676:66;9672:74;9669:1;9666:81;9661:1;9654:9;9647:17;9643:105;9640:131;;;9751:18;;:::i;:::-;9640:131;9799:1;9796;9792:9;9781:20;;9459:348;;;;:::o;9813:96::-;9850:7;9879:24;9897:5;9879:24;:::i;:::-;9868:35;;9813:96;;;:::o;9915:104::-;9960:7;9989:24;10007:5;9989:24;:::i;:::-;9978:35;;9915:104;;;:::o;10025:126::-;10062:7;10102:42;10095:5;10091:54;10080:65;;10025:126;;;:::o;10157:77::-;10194:7;10223:5;10212:16;;10157:77;;;:::o;10240:307::-;10308:1;10318:113;10332:6;10329:1;10326:13;10318:113;;;10417:1;10412:3;10408:11;10402:18;10398:1;10393:3;10389:11;10382:39;10354:2;10351:1;10347:10;10342:15;;10318:113;;;10449:6;10446:1;10443:13;10440:101;;;10529:1;10520:6;10515:3;10511:16;10504:27;10440:101;10289:258;10240:307;;;:::o;10553:233::-;10592:3;10615:24;10633:5;10615:24;:::i;:::-;10606:33;;10661:66;10654:5;10651:77;10648:103;;;10731:18;;:::i;:::-;10648:103;10778:1;10771:5;10767:13;10760:20;;10553:233;;;:::o;10792:176::-;10824:1;10841:20;10859:1;10841:20;:::i;:::-;10836:25;;10875:20;10893:1;10875:20;:::i;:::-;10870:25;;10914:1;10904:35;;10919:18;;:::i;:::-;10904:35;10960:1;10957;10953:9;10948:14;;10792:176;;;;:::o;10974:180::-;11022:77;11019:1;11012:88;11119:4;11116:1;11109:15;11143:4;11140:1;11133:15;11160:180;11208:77;11205:1;11198:88;11305:4;11302:1;11295:15;11329:4;11326:1;11319:15;11469:117;11578:1;11575;11568:12;11592:102;11633:6;11684:2;11680:7;11675:2;11668:5;11664:14;11660:28;11650:38;;11592:102;;;:::o;11700:222::-;11840:34;11836:1;11828:6;11824:14;11817:58;11909:5;11904:2;11896:6;11892:15;11885:30;11700:222;:::o;11928:225::-;12068:34;12064:1;12056:6;12052:14;12045:58;12137:8;12132:2;12124:6;12120:15;12113:33;11928:225;:::o;12159:245::-;12299:34;12295:1;12287:6;12283:14;12276:58;12368:28;12363:2;12355:6;12351:15;12344:53;12159:245;:::o;12410:179::-;12550:31;12546:1;12538:6;12534:14;12527:55;12410:179;:::o;12595:233::-;12735:34;12731:1;12723:6;12719:14;12712:58;12804:16;12799:2;12791:6;12787:15;12780:41;12595:233;:::o;12834:182::-;12974:34;12970:1;12962:6;12958:14;12951:58;12834:182;:::o;13022:114::-;;:::o;13142:122::-;13215:24;13233:5;13215:24;:::i;:::-;13208:5;13205:35;13195:63;;13254:1;13251;13244:12;13195:63;13142:122;:::o;13270:138::-;13351:32;13377:5;13351:32;:::i;:::-;13344:5;13341:43;13331:71;;13398:1;13395;13388:12;13331:71;13270:138;:::o;13414:122::-;13487:24;13505:5;13487:24;:::i;:::-;13480:5;13477:35;13467:63;;13526:1;13523;13516:12;13467:63;13414:122;:::o

Swarm Source

ipfs://f266f3fe04b0d61f6ea4386db0d3e2aa8bdf2a84f3d25fe034a0b53b397a8b4b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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