ETH Price: $3,106.05 (+5.27%)
Gas: 3 Gwei

Contract

0x086A6d9FD61758096CF4F394AE7C1F9B6b4EEC14
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Execute194191512024-03-12 12:58:4766 days ago1710248327IN
HORD: Hord Congress
0 ETH0.0057137944.24256365
Execute194185212024-03-12 10:52:2366 days ago1710240743IN
HORD: Hord Congress
0 ETH0.0123067943.9327411
Cast Vote194184192024-03-12 10:31:5966 days ago1710239519IN
HORD: Hord Congress
0 ETH0.0032744655.71857713
Cast Vote194183662024-03-12 10:21:2366 days ago1710238883IN
HORD: Hord Congress
0 ETH0.0029983951.02082047
Cast Vote194182232024-03-12 9:52:2366 days ago1710237143IN
HORD: Hord Congress
0 ETH0.0035999547.450292
Propose194182152024-03-12 9:50:4766 days ago1710237047IN
HORD: Hord Congress
0 ETH0.0304572246.2705561
Cast Vote194179422024-03-12 8:55:4766 days ago1710233747IN
HORD: Hord Congress
0 ETH0.003630147.84758256
Propose194179352024-03-12 8:54:2366 days ago1710233663IN
HORD: Hord Congress
0 ETH0.0183815350.64035933
Execute191613112024-02-05 9:54:11102 days ago1707126851IN
HORD: Hord Congress
0 ETH0.0014730613.88467224
Cast Vote191547872024-02-04 11:55:35103 days ago1707047735IN
HORD: Hord Congress
0 ETH0.0022416338.14387637
Cast Vote191424512024-02-02 18:18:59105 days ago1706897939IN
HORD: Hord Congress
0 ETH0.0013399917.6621985
Propose191424392024-02-02 18:16:23105 days ago1706897783IN
HORD: Hord Congress
0 ETH0.0058330517.78636753
Execute191200182024-01-30 14:47:47108 days ago1706626067IN
HORD: Hord Congress
0 ETH0.0056570743.78847082
Execute191185962024-01-30 10:01:47108 days ago1706608907IN
HORD: Hord Congress
0 ETH0.0030218324.08182556
Execute191185712024-01-30 9:56:47108 days ago1706608607IN
HORD: Hord Congress
0 ETH0.0041690821.42177008
Execute191184882024-01-30 9:40:11108 days ago1706607611IN
HORD: Hord Congress
0 ETH0.0059065424.42185957
Cast Vote191115872024-01-29 10:27:59109 days ago1706524079IN
HORD: Hord Congress
0 ETH0.0007261212.3557258
Cast Vote191110802024-01-29 8:46:11109 days ago1706517971IN
HORD: Hord Congress
0 ETH0.000713249.40111407
Propose191110502024-01-29 8:39:59109 days ago1706517599IN
HORD: Hord Congress
0 ETH0.003445999.2554113
Cast Vote190999342024-01-27 19:15:23111 days ago1706382923IN
HORD: Hord Congress
0 ETH0.0006943911.81590738
Cast Vote190999252024-01-27 19:13:35111 days ago1706382815IN
HORD: Hord Congress
0 ETH0.0007198712.24935599
Cast Vote190998002024-01-27 18:47:59111 days ago1706381279IN
HORD: Hord Congress
0 ETH0.0007023511.95134512
Cast Vote190911472024-01-26 13:42:47112 days ago1706276567IN
HORD: Hord Congress
0 ETH0.0017496423.06174945
Cast Vote190911442024-01-26 13:42:11112 days ago1706276531IN
HORD: Hord Congress
0 ETH0.0018255124.06174945
Cast Vote190911312024-01-26 13:39:35112 days ago1706276375IN
HORD: Hord Congress
0 ETH0.0016235421.39957906
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HordCongress

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-02-08
*/

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

// File contracts/interfaces/IHordCongressMembersRegistry.sol

pragma solidity 0.6.12;

/**
 * IHordCongressMembersRegistry contract.
 * @author Nikola Madjarevic
 * Date created: 21.3.21.
 * Github: madjarevicn
 */
interface IHordCongressMembersRegistry {
    function isMember(address _address) external view returns (bool);
    function getMinimalQuorum() external view returns (uint256);
}


// File contracts/libraries/SafeMath.sol

pragma solidity 0.6.12;


/**
 * @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, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

    /**
     * @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) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * 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) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}


// File contracts/governance/HordCongress.sol

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;


/**
 * HordCogress contract.
 * @author Nikola Madjarevic
 * Date created: 18.3.21.
 * Github: madjarevicn
 */
contract HordCongress {
    // Use SafeMath library
    using SafeMath for *;

    /// @notice The name of this contract
    string public constant name = "HordCongress";

    // Members registry contract
    IHordCongressMembersRegistry membersRegistry;

    /// @notice The total number of proposals
    uint public proposalCount;

    struct Proposal {
        // Unique id for looking up a proposal
        uint id;

        // Creator of the proposal
        address proposer;

        // the ordered list of target addresses for calls to be made
        address[] targets;

        // The ordered list of values (i.e. msg.value) to be passed to the calls to be made
        uint[] values;

        // The ordered list of function signatures to be called
        string[] signatures;

        // The ordered list of calldata to be passed to each call
        bytes[] calldatas;

        // Current number of votes in favor of this proposal
        uint forVotes;

        // Current number of votes in opposition to this proposal
        uint againstVotes;

        // Flag marking whether the proposal has been canceled
        bool canceled;

        // Flag marking whether the proposal has been executed
        bool executed;

        // Timestamp when proposal is created
        uint timestamp;

        // Receipts of ballots for the entire set of voters
        mapping (address => Receipt) receipts;
    }

    /// @notice Ballot receipt record for a voter
    struct Receipt {
        // Whether or not a vote has been cast
        bool hasVoted;

        // Whether or not the voter supports the proposal
        bool support;
    }

    /// @notice The official record of all proposals ever proposed
    mapping (uint => Proposal) public proposals;

    /// @notice An event emitted when a new proposal is created
    event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, string description);

    /// @notice An event emitted when a vote has been cast on a proposal
    event VoteCast(address voter, uint proposalId, bool support);

    /// @notice An event emitted when a proposal has been canceled
    event ProposalCanceled(uint id);

    /// @notice An event emitted when a proposal has been executed
    event ProposalExecuted(uint id);

    /// @notice An event emitted everytime ether is received
    event ReceivedEther(address sender, uint amount);

    /// @notice Event which will fire every time transaction is executed
    event ExecuteTransaction(address indexed target, uint value, string signature,  bytes data);

    modifier onlyMember {
        require(membersRegistry.isMember(msg.sender) == true, "Only HordCongress member can call this function");
        _;
    }

    /// One time call function to set members registry contract
    function setMembersRegistry(
        address _membersRegistry
    )
    external
    {
        require(address(membersRegistry) == address(0x0));
        membersRegistry = IHordCongressMembersRegistry(_membersRegistry);
    }

    function propose(
        address[] memory targets,
        uint[] memory values,
        string[] memory signatures,
        bytes[] memory calldatas,
        string memory description
    )
    external
    onlyMember
    returns (uint)
    {
        require(
            targets.length == values.length &&
            targets.length == signatures.length &&
            targets.length == calldatas.length,
            "HordCongress::propose: proposal function information arity mismatch"
        );

        require(targets.length != 0, "HordCongress::propose: must provide actions");

        proposalCount++;

        Proposal memory newProposal = Proposal({
            id: proposalCount,
            proposer: msg.sender,
            targets: targets,
            values: values,
            signatures: signatures,
            calldatas: calldatas,
            forVotes: 0,
            againstVotes: 0,
            canceled: false,
            executed: false,
            timestamp: block.timestamp
        });

        proposals[newProposal.id] = newProposal;

        emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, description);
        return newProposal.id;
    }


    function castVote(
        uint proposalId,
        bool support
    )
    external
    onlyMember
    {
        return _castVote(msg.sender, proposalId, support);
    }


    function execute(
        uint proposalId
    )
    external
    onlyMember
    payable
    {
        // load the proposal
        Proposal storage proposal = proposals[proposalId];
        // Require that proposal is not previously executed neither cancelled
        require(proposal.executed == false && proposal.canceled == false);
        // Mark that proposal is executed
        proposal.executed = true;
        // Require that votes in favor of proposal are greater or equal to minimalQuorum
        require(proposal.forVotes >= membersRegistry.getMinimalQuorum());

        for (uint i = 0; i < proposal.targets.length; i++) {
            bytes memory callData;

            if (bytes(proposal.signatures[i]).length == 0) {
                callData = proposal.calldatas[i];
            } else {
                callData = abi.encodePacked(bytes4(keccak256(bytes(proposal.signatures[i]))), proposal.calldatas[i]);
            }

            // solium-disable-next-line security/no-call-value
            (bool success,) = proposal.targets[i].call.value(proposal.values[i])(callData);

            // Require that transaction went through
            require(success, "HordCongress::executeTransaction: Transaction execution reverted.");

            // Emit event that transaction is being executed
            emit ExecuteTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i]);
        }

        // Emit event that proposal executed
        emit ProposalExecuted(proposalId);
    }

    function cancel(uint proposalId) external onlyMember {
        Proposal storage proposal = proposals[proposalId];
        // Require that proposal is not previously executed neither cancelled
        require(proposal.executed == false && proposal.canceled == false);
        // 3 days before proposal can get cancelled
        require(block.timestamp >= proposal.timestamp + 259200);
        // Proposal with reached minimalQuorum cant be cancelled
        require(proposal.forVotes < membersRegistry.getMinimalQuorum(), "HordCongress:cancel: Proposal already reached quorum");
        // Set that proposal is cancelled
        proposal.canceled = true;
        // Emit event
        emit ProposalCanceled(proposalId);
    }

    function _castVote(address voter, uint proposalId, bool support) internal {
        Proposal storage proposal = proposals[proposalId];
        Receipt storage receipt = proposal.receipts[voter];
        require(receipt.hasVoted == false, "HordCongress::_castVote: voter already voted");

        if (support) {
            proposal.forVotes = proposal.forVotes.add(1);
        } else {
            proposal.againstVotes = proposal.againstVotes.sub(1);
        }

        receipt.hasVoted = true;
        receipt.support = support;

        emit VoteCast(voter, proposalId, support);
    }

    function getActions(uint proposalId) external view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) {
        Proposal storage p = proposals[proposalId];
        return (p.targets, p.values, p.signatures, p.calldatas);
    }

    function getMembersRegistry()
    external
    view
    returns (address)
    {
        return address(membersRegistry);
    }

    receive() external payable {
        emit ReceivedEther(msg.sender, msg.value);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReceivedEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"}],"name":"VoteCast","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMembersRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_membersRegistry","type":"address"}],"name":"setMembersRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50611de8806100206000396000f3fe6080604052600436106100955760003560e01c806340e58ee51161005957806340e58ee5146101aa5780635f6afd15146101ca578063da35c664146101ec578063da95691a1461020e578063fe0d94c11461022e576100d5565b8063013cf08b146100da57806306fdde031461011657806315373e3d14610138578063328dd9821461015a5780633482cafe1461018a576100d5565b366100d5577fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf133346040516100cb929190611901565b60405180910390a1005b600080fd5b3480156100e657600080fd5b506100fa6100f536600461165f565b610241565b60405161010d9796959493929190611caf565b60405180910390f35b34801561012257600080fd5b5061012b61028d565b60405161010d9190611995565b34801561014457600080fd5b5061015861015336600461168f565b6102b5565b005b34801561016657600080fd5b5061017a61017536600461165f565b61036e565b60405161010d949392919061193d565b34801561019657600080fd5b506101586101a5366004611555565b6105fd565b3480156101b657600080fd5b506101586101c536600461165f565b610635565b3480156101d657600080fd5b506101df610813565b60405161010d91906118ed565b3480156101f857600080fd5b50610201610822565b60405161010d9190611c20565b34801561021a57600080fd5b50610201610229366004611577565b610828565b61015861023c36600461165f565b610ad0565b60026020526000908152604090208054600182015460068301546007840154600885015460099095015493946001600160a01b03909316939192909160ff808316926101009004169087565b6040518060400160405280600c81526020016b486f7264436f6e677265737360a01b81525081565b60005460405163288c314960e21b81526001600160a01b039091169063a230c524906102e59033906004016118ed565b60206040518083038186803b1580156102fd57600080fd5b505afa158015610311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103359190611643565b151560011461035f5760405162461bcd60e51b815260040161035690611b85565b60405180910390fd5b61036a338383610f38565b5050565b606080606080600060026000878152602001908152602001600020905080600201816003018260040183600501838054806020026020016040519081016040528092919081815260200182805480156103f057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103d2575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561044257602002820191906000526020600020905b81548152602001906001019080831161042e575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156105155760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105015780601f106104d657610100808354040283529160200191610501565b820191906000526020600020905b8154815290600101906020018083116104e457829003601f168201915b50505050508152602001906001019061046a565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156105e75760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105d35780601f106105a8576101008083540402835291602001916105d3565b820191906000526020600020905b8154815290600101906020018083116105b657829003601f168201915b50505050508152602001906001019061053c565b5050505090509450945094509450509193509193565b6000546001600160a01b03161561061357600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60005460405163288c314960e21b81526001600160a01b039091169063a230c524906106659033906004016118ed565b60206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b59190611643565b15156001146106d65760405162461bcd60e51b815260040161035690611b85565b60008181526002602052604090206008810154610100900460ff161580156107035750600881015460ff16155b61070c57600080fd5b80600901546203f4800142101561072257600080fd5b60008054906101000a90046001600160a01b03166001600160a01b031663ab0d8a3f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076e57600080fd5b505afa158015610782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a69190611677565b8160060154106107c85760405162461bcd60e51b815260040161035690611a7f565b60088101805460ff191660011790556040517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610807908490611c20565b60405180910390a15050565b6000546001600160a01b031690565b60015481565b6000805460405163288c314960e21b81526001600160a01b039091169063a230c524906108599033906004016118ed565b60206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190611643565b15156001146108ca5760405162461bcd60e51b815260040161035690611b85565b845186511480156108dc575083518651145b80156108e9575082518651145b6109055760405162461bcd60e51b815260040161035690611a16565b85516109235760405162461bcd60e51b815260040161035690611b3a565b600180548101905561093361106a565b506040805161016081018252600180548083523360208085019182528486018c8152606086018c9052608086018b905260a086018a9052600060c0870181905260e08701819052610100870181905261012087018190524261014088015293845260028083529690932085518155915193820180546001600160a01b0319166001600160a01b0390951694909417909355905180519394859492936109dd939185019201906110d1565b50606082015180516109f9916003840191602090910190611136565b5060808201518051610a1591600484019160209091019061117d565b5060a08201518051610a319160058401916020909101906111d6565b5060c0820151600682015560e082015160078201556101008083015160088301805461012086015160ff199091169215159290921761ff0019169115159092021790556101409091015160099091015580516040517fbaab6dcd2ae57433cc1372e25bc5139c3bd664075695546fde8821591a226e3891610abd9133908b908b908b908b908b90611c29565b60405180910390a1519695505050505050565b60005460405163288c314960e21b81526001600160a01b039091169063a230c52490610b009033906004016118ed565b60206040518083038186803b158015610b1857600080fd5b505afa158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b509190611643565b1515600114610b715760405162461bcd60e51b815260040161035690611b85565b60008181526002602052604090206008810154610100900460ff16158015610b9e5750600881015460ff16155b610ba757600080fd5b60088101805461ff0019166101001790556000546040805163ab0d8a3f60e01b815290516001600160a01b039092169163ab0d8a3f91600480820192602092909190829003018186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190611677565b81600601541015610c4557600080fd5b60005b6002820154811015610f08576060826004018281548110610c6557fe5b60009182526020909120015460026000196101006001841615020190911604610d3157826005018281548110610c9757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610d255780601f10610cfa57610100808354040283529160200191610d25565b820191906000526020600020905b815481529060010190602001808311610d0857829003601f168201915b50505050509050610d9b565b826004018281548110610d4057fe5b90600052602060002001604051610d5791906118e1565b6040518091039020836005018381548110610d6e57fe5b90600052602060002001604051602001610d899291906118a1565b60405160208183030381529060405290505b6000836002018381548110610dac57fe5b6000918252602090912001546003850180546001600160a01b039092169185908110610dd457fe5b906000526020600020015483604051610ded91906118c5565b60006040518083038185875af1925050503d8060008114610e2a576040519150601f19603f3d011682016040523d82523d6000602084013e610e2f565b606091505b5050905080610e505760405162461bcd60e51b815260040161035690611ad3565b836002018381548110610e5f57fe5b6000918252602090912001546003850180546001600160a01b03909216917f88405ca50016c636e025868e263efe5a9f63bf11cc45404f7616394c7dc389d0919086908110610eaa57fe5b9060005260206000200154866004018681548110610ec457fe5b90600052602060002001876005018781548110610edd57fe5b90600052602060002001604051610ef693929190611cec565b60405180910390a25050600101610c48565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516108079190611c20565b60008281526002602090815260408083206001600160a01b0387168452600a8101909252909120805460ff1615610f815760405162461bcd60e51b815260040161035690611bd4565b8215610fa1576006820154610f97906001611014565b6006830155610fb7565b6007820154610fb1906001611042565b60078301555b8054600160ff199091161761ff001916610100841515021781556040517fd356173ae8eeea8691aee4c1be712c314a975a3d43ebc48b08ca54d0dac91228906110059087908790879061191a565b60405180910390a15050505050565b6000828201838110156110395760405162461bcd60e51b8152600401610356906119a8565b90505b92915050565b6000828211156110645760405162461bcd60e51b8152600401610356906119df565b50900390565b6040518061016001604052806000815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600015158152602001600015158152602001600081525090565b828054828255906000526020600020908101928215611126579160200282015b8281111561112657825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906110f1565b5061113292915061122f565b5090565b828054828255906000526020600020908101928215611171579160200282015b82811115611171578251825591602001919060010190611156565b5061113292915061124e565b8280548282559060005260206000209081019282156111ca579160200282015b828111156111ca57825180516111ba918491602090910190611263565b509160200191906001019061119d565b506111329291506112d0565b828054828255906000526020600020908101928215611223579160200282015b828111156112235782518051611213918491602090910190611263565b50916020019190600101906111f6565b506111329291506112ed565b5b808211156111325780546001600160a01b0319168155600101611230565b5b80821115611132576000815560010161124f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112a457805160ff1916838001178555611171565b828001600101855582156111715791820182811115611171578251825591602001919060010190611156565b808211156111325760006112e4828261130a565b506001016112d0565b80821115611132576000611301828261130a565b506001016112ed565b50805460018160011615610100020316600290046000825580601f10611330575061134e565b601f01602090049060005260206000209081019061134e919061124e565b50565b80356001600160a01b038116811461103c57600080fd5b600082601f830112611378578081fd5b813561138b61138682611d48565b611d21565b8181529150602080830190848101818402860182018710156113ac57600080fd5b60005b848110156113d3576113c18883611351565b845292820192908201906001016113af565b505050505092915050565b600082601f8301126113ee578081fd5b81356113fc61138682611d48565b818152915060208083019084810160005b848110156113d357611424888484358a01016114ec565b8452928201929082019060010161140d565b600082601f830112611446578081fd5b813561145461138682611d48565b818152915060208083019084810160005b848110156113d35761147c888484358a01016114ec565b84529282019290820190600101611465565b600082601f83011261149e578081fd5b81356114ac61138682611d48565b8181529150602080830190848101818402860182018710156114cd57600080fd5b60005b848110156113d3578135845292820192908201906001016114d0565b600082601f8301126114fc578081fd5b813567ffffffffffffffff811115611512578182fd5b611525601f8201601f1916602001611d21565b915080825283602082850101111561153c57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215611566578081fd5b6115708383611351565b9392505050565b600080600080600060a0868803121561158e578081fd5b853567ffffffffffffffff808211156115a5578283fd5b6115b189838a01611368565b965060208801359150808211156115c6578283fd5b6115d289838a0161148e565b955060408801359150808211156115e7578283fd5b6115f389838a01611436565b94506060880135915080821115611608578283fd5b61161489838a016113de565b93506080880135915080821115611629578283fd5b50611636888289016114ec565b9150509295509295909350565b600060208284031215611654578081fd5b815161103981611da4565b600060208284031215611670578081fd5b5035919050565b600060208284031215611688578081fd5b5051919050565b600080604083850312156116a1578182fd5b8235915060208301356116b381611da4565b809150509250929050565b6000815180845260208085019450808401835b838110156116f65781516001600160a01b0316875295820195908201906001016116d1565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015611747578284038952611735848351611783565b9885019893509084019060010161171d565b5091979650505050505050565b6000815180845260208085019450808401835b838110156116f657815187529582019590820190600101611767565b6000815180845261179b816020860160208601611d74565b601f01601f19169290920160200192915050565b600081546001808216600081146117cd57600181146117e457611816565b60ff198316865260028304607f1686019350611816565b600283048560005260208060002060005b8381101561180e5781548a8201529085019082016117f5565b505050860193505b50505092915050565b6000815460018082166000811461183d576001811461185b57611816565b60028304607f16865260ff1983166020870152604086019350611816565b6002830480875261186b86611d68565b60005b8281101561188f5781546020828b010152848201915060208101905061186e565b88016020019550505050505092915050565b6001600160e01b03198316815260006118bd60048301846117af565b949350505050565b600082516118d7818460208701611d74565b9190910192915050565b600061157082846117af565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b60006080825261195060808301876116be565b82810360208401526119628187611754565b905082810360408401526119768186611701565b9050828103606084015261198a8185611701565b979650505050505050565b6000602082526115706020830184611783565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526043908201527f486f7264436f6e67726573733a3a70726f706f73653a2070726f706f73616c2060408201527f66756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d616060820152620e8c6d60eb1b608082015260a00190565b60208082526034908201527f486f7264436f6e67726573733a63616e63656c3a2050726f706f73616c20616c604082015273726561647920726561636865642071756f72756d60601b606082015260800190565b60208082526041908201527f486f7264436f6e67726573733a3a657865637574655472616e73616374696f6e60408201527f3a205472616e73616374696f6e20657865637574696f6e2072657665727465646060820152601760f91b608082015260a00190565b6020808252602b908201527f486f7264436f6e67726573733a3a70726f706f73653a206d7573742070726f7660408201526a69646520616374696f6e7360a81b606082015260800190565b6020808252602f908201527f4f6e6c7920486f7264436f6e6772657373206d656d6265722063616e2063616c60408201526e36103a3434b990333ab731ba34b7b760891b606082015260800190565b6020808252602c908201527f486f7264436f6e67726573733a3a5f63617374566f74653a20766f746572206160408201526b1b1c9958591e481d9bdd195960a21b606082015260800190565b90815260200190565b8781526001600160a01b038716602082015260e060408201819052600090611c53908301886116be565b8281036060840152611c658188611754565b90508281036080840152611c798187611701565b905082810360a0840152611c8d8186611701565b905082810360c0840152611ca18185611783565b9a9950505050505050505050565b9687526001600160a01b039590951660208701526040860193909352606085019190915215156080840152151560a083015260c082015260e00190565b600084825260606020830152611d05606083018561181f565b8281036040840152611d17818561181f565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611d4057600080fd5b604052919050565b600067ffffffffffffffff821115611d5e578081fd5b5060209081020190565b60009081526020902090565b60005b83811015611d8f578181015183820152602001611d77565b83811115611d9e576000848401525b50505050565b801515811461134e57600080fdfea26469706673582212206bc501bc89d58b45fe68e6e5f171c4630a82be226305741c8fdb33157d6852d764736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106100955760003560e01c806340e58ee51161005957806340e58ee5146101aa5780635f6afd15146101ca578063da35c664146101ec578063da95691a1461020e578063fe0d94c11461022e576100d5565b8063013cf08b146100da57806306fdde031461011657806315373e3d14610138578063328dd9821461015a5780633482cafe1461018a576100d5565b366100d5577fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf133346040516100cb929190611901565b60405180910390a1005b600080fd5b3480156100e657600080fd5b506100fa6100f536600461165f565b610241565b60405161010d9796959493929190611caf565b60405180910390f35b34801561012257600080fd5b5061012b61028d565b60405161010d9190611995565b34801561014457600080fd5b5061015861015336600461168f565b6102b5565b005b34801561016657600080fd5b5061017a61017536600461165f565b61036e565b60405161010d949392919061193d565b34801561019657600080fd5b506101586101a5366004611555565b6105fd565b3480156101b657600080fd5b506101586101c536600461165f565b610635565b3480156101d657600080fd5b506101df610813565b60405161010d91906118ed565b3480156101f857600080fd5b50610201610822565b60405161010d9190611c20565b34801561021a57600080fd5b50610201610229366004611577565b610828565b61015861023c36600461165f565b610ad0565b60026020526000908152604090208054600182015460068301546007840154600885015460099095015493946001600160a01b03909316939192909160ff808316926101009004169087565b6040518060400160405280600c81526020016b486f7264436f6e677265737360a01b81525081565b60005460405163288c314960e21b81526001600160a01b039091169063a230c524906102e59033906004016118ed565b60206040518083038186803b1580156102fd57600080fd5b505afa158015610311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103359190611643565b151560011461035f5760405162461bcd60e51b815260040161035690611b85565b60405180910390fd5b61036a338383610f38565b5050565b606080606080600060026000878152602001908152602001600020905080600201816003018260040183600501838054806020026020016040519081016040528092919081815260200182805480156103f057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103d2575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561044257602002820191906000526020600020905b81548152602001906001019080831161042e575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156105155760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105015780601f106104d657610100808354040283529160200191610501565b820191906000526020600020905b8154815290600101906020018083116104e457829003601f168201915b50505050508152602001906001019061046a565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156105e75760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105d35780601f106105a8576101008083540402835291602001916105d3565b820191906000526020600020905b8154815290600101906020018083116105b657829003601f168201915b50505050508152602001906001019061053c565b5050505090509450945094509450509193509193565b6000546001600160a01b03161561061357600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60005460405163288c314960e21b81526001600160a01b039091169063a230c524906106659033906004016118ed565b60206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b59190611643565b15156001146106d65760405162461bcd60e51b815260040161035690611b85565b60008181526002602052604090206008810154610100900460ff161580156107035750600881015460ff16155b61070c57600080fd5b80600901546203f4800142101561072257600080fd5b60008054906101000a90046001600160a01b03166001600160a01b031663ab0d8a3f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076e57600080fd5b505afa158015610782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a69190611677565b8160060154106107c85760405162461bcd60e51b815260040161035690611a7f565b60088101805460ff191660011790556040517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610807908490611c20565b60405180910390a15050565b6000546001600160a01b031690565b60015481565b6000805460405163288c314960e21b81526001600160a01b039091169063a230c524906108599033906004016118ed565b60206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190611643565b15156001146108ca5760405162461bcd60e51b815260040161035690611b85565b845186511480156108dc575083518651145b80156108e9575082518651145b6109055760405162461bcd60e51b815260040161035690611a16565b85516109235760405162461bcd60e51b815260040161035690611b3a565b600180548101905561093361106a565b506040805161016081018252600180548083523360208085019182528486018c8152606086018c9052608086018b905260a086018a9052600060c0870181905260e08701819052610100870181905261012087018190524261014088015293845260028083529690932085518155915193820180546001600160a01b0319166001600160a01b0390951694909417909355905180519394859492936109dd939185019201906110d1565b50606082015180516109f9916003840191602090910190611136565b5060808201518051610a1591600484019160209091019061117d565b5060a08201518051610a319160058401916020909101906111d6565b5060c0820151600682015560e082015160078201556101008083015160088301805461012086015160ff199091169215159290921761ff0019169115159092021790556101409091015160099091015580516040517fbaab6dcd2ae57433cc1372e25bc5139c3bd664075695546fde8821591a226e3891610abd9133908b908b908b908b908b90611c29565b60405180910390a1519695505050505050565b60005460405163288c314960e21b81526001600160a01b039091169063a230c52490610b009033906004016118ed565b60206040518083038186803b158015610b1857600080fd5b505afa158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b509190611643565b1515600114610b715760405162461bcd60e51b815260040161035690611b85565b60008181526002602052604090206008810154610100900460ff16158015610b9e5750600881015460ff16155b610ba757600080fd5b60088101805461ff0019166101001790556000546040805163ab0d8a3f60e01b815290516001600160a01b039092169163ab0d8a3f91600480820192602092909190829003018186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190611677565b81600601541015610c4557600080fd5b60005b6002820154811015610f08576060826004018281548110610c6557fe5b60009182526020909120015460026000196101006001841615020190911604610d3157826005018281548110610c9757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610d255780601f10610cfa57610100808354040283529160200191610d25565b820191906000526020600020905b815481529060010190602001808311610d0857829003601f168201915b50505050509050610d9b565b826004018281548110610d4057fe5b90600052602060002001604051610d5791906118e1565b6040518091039020836005018381548110610d6e57fe5b90600052602060002001604051602001610d899291906118a1565b60405160208183030381529060405290505b6000836002018381548110610dac57fe5b6000918252602090912001546003850180546001600160a01b039092169185908110610dd457fe5b906000526020600020015483604051610ded91906118c5565b60006040518083038185875af1925050503d8060008114610e2a576040519150601f19603f3d011682016040523d82523d6000602084013e610e2f565b606091505b5050905080610e505760405162461bcd60e51b815260040161035690611ad3565b836002018381548110610e5f57fe5b6000918252602090912001546003850180546001600160a01b03909216917f88405ca50016c636e025868e263efe5a9f63bf11cc45404f7616394c7dc389d0919086908110610eaa57fe5b9060005260206000200154866004018681548110610ec457fe5b90600052602060002001876005018781548110610edd57fe5b90600052602060002001604051610ef693929190611cec565b60405180910390a25050600101610c48565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516108079190611c20565b60008281526002602090815260408083206001600160a01b0387168452600a8101909252909120805460ff1615610f815760405162461bcd60e51b815260040161035690611bd4565b8215610fa1576006820154610f97906001611014565b6006830155610fb7565b6007820154610fb1906001611042565b60078301555b8054600160ff199091161761ff001916610100841515021781556040517fd356173ae8eeea8691aee4c1be712c314a975a3d43ebc48b08ca54d0dac91228906110059087908790879061191a565b60405180910390a15050505050565b6000828201838110156110395760405162461bcd60e51b8152600401610356906119a8565b90505b92915050565b6000828211156110645760405162461bcd60e51b8152600401610356906119df565b50900390565b6040518061016001604052806000815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600015158152602001600015158152602001600081525090565b828054828255906000526020600020908101928215611126579160200282015b8281111561112657825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906110f1565b5061113292915061122f565b5090565b828054828255906000526020600020908101928215611171579160200282015b82811115611171578251825591602001919060010190611156565b5061113292915061124e565b8280548282559060005260206000209081019282156111ca579160200282015b828111156111ca57825180516111ba918491602090910190611263565b509160200191906001019061119d565b506111329291506112d0565b828054828255906000526020600020908101928215611223579160200282015b828111156112235782518051611213918491602090910190611263565b50916020019190600101906111f6565b506111329291506112ed565b5b808211156111325780546001600160a01b0319168155600101611230565b5b80821115611132576000815560010161124f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112a457805160ff1916838001178555611171565b828001600101855582156111715791820182811115611171578251825591602001919060010190611156565b808211156111325760006112e4828261130a565b506001016112d0565b80821115611132576000611301828261130a565b506001016112ed565b50805460018160011615610100020316600290046000825580601f10611330575061134e565b601f01602090049060005260206000209081019061134e919061124e565b50565b80356001600160a01b038116811461103c57600080fd5b600082601f830112611378578081fd5b813561138b61138682611d48565b611d21565b8181529150602080830190848101818402860182018710156113ac57600080fd5b60005b848110156113d3576113c18883611351565b845292820192908201906001016113af565b505050505092915050565b600082601f8301126113ee578081fd5b81356113fc61138682611d48565b818152915060208083019084810160005b848110156113d357611424888484358a01016114ec565b8452928201929082019060010161140d565b600082601f830112611446578081fd5b813561145461138682611d48565b818152915060208083019084810160005b848110156113d35761147c888484358a01016114ec565b84529282019290820190600101611465565b600082601f83011261149e578081fd5b81356114ac61138682611d48565b8181529150602080830190848101818402860182018710156114cd57600080fd5b60005b848110156113d3578135845292820192908201906001016114d0565b600082601f8301126114fc578081fd5b813567ffffffffffffffff811115611512578182fd5b611525601f8201601f1916602001611d21565b915080825283602082850101111561153c57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215611566578081fd5b6115708383611351565b9392505050565b600080600080600060a0868803121561158e578081fd5b853567ffffffffffffffff808211156115a5578283fd5b6115b189838a01611368565b965060208801359150808211156115c6578283fd5b6115d289838a0161148e565b955060408801359150808211156115e7578283fd5b6115f389838a01611436565b94506060880135915080821115611608578283fd5b61161489838a016113de565b93506080880135915080821115611629578283fd5b50611636888289016114ec565b9150509295509295909350565b600060208284031215611654578081fd5b815161103981611da4565b600060208284031215611670578081fd5b5035919050565b600060208284031215611688578081fd5b5051919050565b600080604083850312156116a1578182fd5b8235915060208301356116b381611da4565b809150509250929050565b6000815180845260208085019450808401835b838110156116f65781516001600160a01b0316875295820195908201906001016116d1565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015611747578284038952611735848351611783565b9885019893509084019060010161171d565b5091979650505050505050565b6000815180845260208085019450808401835b838110156116f657815187529582019590820190600101611767565b6000815180845261179b816020860160208601611d74565b601f01601f19169290920160200192915050565b600081546001808216600081146117cd57600181146117e457611816565b60ff198316865260028304607f1686019350611816565b600283048560005260208060002060005b8381101561180e5781548a8201529085019082016117f5565b505050860193505b50505092915050565b6000815460018082166000811461183d576001811461185b57611816565b60028304607f16865260ff1983166020870152604086019350611816565b6002830480875261186b86611d68565b60005b8281101561188f5781546020828b010152848201915060208101905061186e565b88016020019550505050505092915050565b6001600160e01b03198316815260006118bd60048301846117af565b949350505050565b600082516118d7818460208701611d74565b9190910192915050565b600061157082846117af565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b60006080825261195060808301876116be565b82810360208401526119628187611754565b905082810360408401526119768186611701565b9050828103606084015261198a8185611701565b979650505050505050565b6000602082526115706020830184611783565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526043908201527f486f7264436f6e67726573733a3a70726f706f73653a2070726f706f73616c2060408201527f66756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d616060820152620e8c6d60eb1b608082015260a00190565b60208082526034908201527f486f7264436f6e67726573733a63616e63656c3a2050726f706f73616c20616c604082015273726561647920726561636865642071756f72756d60601b606082015260800190565b60208082526041908201527f486f7264436f6e67726573733a3a657865637574655472616e73616374696f6e60408201527f3a205472616e73616374696f6e20657865637574696f6e2072657665727465646060820152601760f91b608082015260a00190565b6020808252602b908201527f486f7264436f6e67726573733a3a70726f706f73653a206d7573742070726f7660408201526a69646520616374696f6e7360a81b606082015260800190565b6020808252602f908201527f4f6e6c7920486f7264436f6e6772657373206d656d6265722063616e2063616c60408201526e36103a3434b990333ab731ba34b7b760891b606082015260800190565b6020808252602c908201527f486f7264436f6e67726573733a3a5f63617374566f74653a20766f746572206160408201526b1b1c9958591e481d9bdd195960a21b606082015260800190565b90815260200190565b8781526001600160a01b038716602082015260e060408201819052600090611c53908301886116be565b8281036060840152611c658188611754565b90508281036080840152611c798187611701565b905082810360a0840152611c8d8186611701565b905082810360c0840152611ca18185611783565b9a9950505050505050505050565b9687526001600160a01b039590951660208701526040860193909352606085019190915215156080840152151560a083015260c082015260e00190565b600084825260606020830152611d05606083018561181f565b8281036040840152611d17818561181f565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611d4057600080fd5b604052919050565b600067ffffffffffffffff821115611d5e578081fd5b5060209081020190565b60009081526020902090565b60005b83811015611d8f578181015183820152602001611d77565b83811115611d9e576000848401525b50505050565b801515811461134e57600080fdfea26469706673582212206bc501bc89d58b45fe68e6e5f171c4630a82be226305741c8fdb33157d6852d764736f6c634300060c0033

Deployed Bytecode Sourcemap

8153:8088:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16194:36;16208:10;16220:9;16194:36;;;;;;;:::i;:::-;;;;;;;;8153:8088;;;;;9936:43;;;;;;;;;;-1:-1:-1;9936:43:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;8283:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12591:177::-;;;;;;;;;;-1:-1:-1;12591:177:0;;;;;:::i;:::-;;:::i;:::-;;15714:289;;;;;;;;;;-1:-1:-1;15714:289:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;11084:232::-;;;;;;;;;;-1:-1:-1;11084:232:0;;;;;:::i;:::-;;:::i;14359:736::-;;;;;;;;;;-1:-1:-1;14359:736:0;;;;;:::i;:::-;;:::i;16011:132::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8470:25::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11324:1257::-;;;;;;;;;;-1:-1:-1;11324:1257:0;;;;;:::i;:::-;;:::i;12778:1573::-;;;;;;:::i;:::-;;:::i;9936:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9936:43:0;;;;;;;;;;;;;;;;;;;:::o;8283:44::-;;;;;;;;;;;;;;-1:-1:-1;;;8283:44:0;;;;:::o;12591:177::-;10895:15;;:36;;-1:-1:-1;;;10895:36:0;;-1:-1:-1;;;;;10895:15:0;;;;:24;;:36;;10920:10;;10895:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10935:4;10895:44;10887:104;;;;-1:-1:-1;;;10887:104:0;;;;;;;:::i;:::-;;;;;;;;;12718:42:::1;12728:10;12740;12752:7;12718:9;:42::i;:::-;12591:177:::0;;:::o;15714:289::-;15774:24;15800:20;15822:26;15850:24;15887:18;15908:9;:21;15918:10;15908:21;;;;;;;;;;;15887:42;;15948:1;:9;;15959:1;:8;;15969:1;:12;;15983:1;:11;;15940:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15940:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15940:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15940:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15714:289;;;;;:::o;11084:232::-;11228:3;11200:15;-1:-1:-1;;;;;11200:15:0;11192:40;11184:49;;;;;;11244:15;:64;;-1:-1:-1;;;;;;11244:64:0;-1:-1:-1;;;;;11244:64:0;;;;;;;;;;11084:232::o;14359:736::-;10895:15;;:36;;-1:-1:-1;;;10895:36:0;;-1:-1:-1;;;;;10895:15:0;;;;:24;;:36;;10920:10;;10895:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10935:4;10895:44;10887:104;;;;-1:-1:-1;;;10887:104:0;;;;;;;:::i;:::-;14423:25:::1;14451:21:::0;;;:9:::1;:21;::::0;;;;14570:17:::1;::::0;::::1;::::0;::::1;::::0;::::1;;;:26;::::0;::::1;:56;;-1:-1:-1::0;14600:17:0::1;::::0;::::1;::::0;::::1;;:26;14570:56;14562:65;;;::::0;::::1;;14718:8;:18;;;14739:6;14718:27;14699:15;:46;;14691:55;;;::::0;::::1;;14851:15;::::0;::::1;;;;;;-1:-1:-1::0;;;;;14851:15:0::1;-1:-1:-1::0;;;;;14851:32:0::1;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14831:8;:17;;;:54;14823:119;;;;-1:-1:-1::0;;;14823:119:0::1;;;;;;;:::i;:::-;14996:17;::::0;::::1;:24:::0;;-1:-1:-1;;14996:24:0::1;15016:4;14996:24;::::0;;15059:28:::1;::::0;::::1;::::0;::::1;::::0;15076:10;;15059:28:::1;:::i;:::-;;;;;;;;11002:1;14359:736:::0;:::o;16011:132::-;16079:7;16119:15;-1:-1:-1;;;;;16119:15:0;16011:132;:::o;8470:25::-;;;;:::o;11324:1257::-;11566:4;10895:15;;:36;;-1:-1:-1;;;10895:36:0;;-1:-1:-1;;;;;10895:15:0;;;;:24;;:36;;10920:10;;10895:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10935:4;10895:44;10887:104;;;;-1:-1:-1;;;10887:104:0;;;;;;;:::i;:::-;11628:6:::1;:13;11610:7;:14;:31;:83;;;;;11676:10;:17;11658:7;:14;:35;11610:83;:134;;;;;11728:9;:16;11710:7;:14;:34;11610:134;11588:251;;;;-1:-1:-1::0;;;11588:251:0::1;;;;;;;:::i;:::-;11860:14:::0;;11852:75:::1;;;;-1:-1:-1::0;;;11852:75:0::1;;;;;;;:::i;:::-;11940:13;:15:::0;;;::::1;::::0;;11968:27:::1;;:::i;:::-;-1:-1:-1::0;11998:377:0::1;::::0;;::::1;::::0;::::1;::::0;;12026:13:::1;::::0;;11998:377;;;12064:10:::1;11998:377;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11998:377:0;;;;;;;;;;;;;;;;;;;;;;;;12348:15:::1;11998:377:::0;;;;12388:25;;;:9:::1;:25:::0;;;;;;;:39;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;12388:39:0::1;-1:-1:-1::0;;;;;12388:39:0;;::::1;::::0;;;::::1;::::0;;;;;;;11998:377;;;;12388:25;;:39:::1;::::0;;;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12388:39:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12388:39:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12388:39:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12388:39:0::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;-1:-1:-1;;12388:39:0;;::::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;12388:39:0::1;::::0;::::1;;::::0;;::::1;;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;12461:14;;12445:96:::1;::::0;::::1;::::0;::::1;::::0;12477:10:::1;::::0;12489:7;;12498:6;;12506:10;;12518:9;;12529:11;;12445:96:::1;:::i;:::-;;;;;;;;12559:14:::0;;11324:1257;-1:-1:-1;;;;;;11324:1257:0:o;12778:1573::-;10895:15;;:36;;-1:-1:-1;;;10895:36:0;;-1:-1:-1;;;;;10895:15:0;;;;:24;;:36;;10920:10;;10895:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10935:4;10895:44;10887:104;;;;-1:-1:-1;;;10887:104:0;;;;;;;:::i;:::-;12917:25:::1;12945:21:::0;;;:9:::1;:21;::::0;;;;13064:17:::1;::::0;::::1;::::0;::::1;::::0;::::1;;;:26;::::0;::::1;:56;;-1:-1:-1::0;13094:17:0::1;::::0;::::1;::::0;::::1;;:26;13064:56;13056:65;;;::::0;::::1;;13175:17;::::0;::::1;:24:::0;;-1:-1:-1;;13175:24:0::1;;;::::0;;;13329:15;:34:::1;::::0;;-1:-1:-1;;;13329:34:0;;;;-1:-1:-1;;;;;13329:15:0;;::::1;::::0;:32:::1;::::0;:34:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:15;:34;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13308:8;:17;;;:55;;13300:64;;;::::0;::::1;;13382:6;13377:875;13398:16;::::0;::::1;:23:::0;13394:27;::::1;13377:875;;;13443:21;13491:8;:19;;13511:1;13491:22;;;;;;;;;::::0;;;::::1;::::0;;;::::1;13485:36:::0;::::1;-1:-1:-1::0;;13485:36:0::1;;::::0;::::1;;;::::0;;;::::1;;13481:255;;13558:8;:18;;13577:1;13558:21;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;13547:32:::0;;::::1;::::0;;::::1;;-1:-1:-1::0;;13547:32:0::1;;::::0;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;13558:21:::0;13547:32;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13481:255;;;13671:8;:19;;13691:1;13671:22;;;;;;;;;;;;;;;13655:40;;;;;;:::i;:::-;;;;;;;;13698:8;:18;;13717:1;13698:21;;;;;;;;;;;;;;;13631:89;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13620:100;;13481:255;13817:12;13834:8;:16;;13851:1;13834:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;13865:15:::1;::::0;::::1;:18:::0;;-1:-1:-1;;;;;13834:19:0;;::::1;::::0;13881:1;;13865:18;::::1;;;;;;;;;;;;;13885:8;13834:60;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13816:78;;;13973:7;13965:85;;;;-1:-1:-1::0;;;13965:85:0::1;;;;;;;:::i;:::-;14153:8;:16;;14170:1;14153:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;14174:15:::1;::::0;::::1;:18:::0;;-1:-1:-1;;;;;14153:19:0;;::::1;::::0;14134:106:::1;::::0;14174:15;14190:1;;14174:18;::::1;;;;;;;;;;;;;14194:8;:19;;14214:1;14194:22;;;;;;;;;;;;;;;14218:8;:18;;14237:1;14218:21;;;;;;;;;;;;;;;14134:106;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;13423:3:0::1;;13377:875;;;;14315:28;14332:10;14315:28;;;;;;:::i;15103:603::-:0;15188:25;15216:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15274:24:0;;;;:17;;;:24;;;;;;15317:16;;;;:25;15309:82;;;;-1:-1:-1;;;15309:82:0;;;;;;;:::i;:::-;15408:7;15404:169;;;15452:17;;;;:24;;15474:1;15452:21;:24::i;:::-;15432:17;;;:44;15404:169;;;15533:21;;;;:28;;15559:1;15533:25;:28::i;:::-;15509:21;;;:52;15404:169;15585:23;;15604:4;-1:-1:-1;;15585:23:0;;;;-1:-1:-1;;15619:25:0;15585:23;15619:25;;;;;;;15662:36;;;;;;15671:5;;15678:10;;15619:25;;15662:36;:::i;:::-;;;;;;;;15103:603;;;;;:::o;3253:179::-;3311:7;3343:5;;;3367:6;;;;3359:46;;;;-1:-1:-1;;;3359:46:0;;;;;;;:::i;:::-;3423:1;-1:-1:-1;3253:179:0;;;;;:::o;3715:158::-;3773:7;3806:1;3801;:6;;3793:49;;;;-1:-1:-1;;;3793:49:0;;;;;;;:::i;:::-;-1:-1:-1;3860:5:0;;;3715:158::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130::-;72:20;;-1:-1;;;;;37625:54;;38824:35;;38814:2;;38873:1;;38863:12;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;-1:-1;;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;462:21;;;345:89;-1:-1;506:4;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;645:1;;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;760:37;793:3;781:10;760:37;:::i;:::-;748:50;;812:14;;;;840;;;;702:1;695:9;655:206;;;659:14;;;;;237:630;;;;:::o;891:705::-;;1017:3;1010:4;1002:6;998:17;994:27;984:2;;-1:-1;;1025:12;984:2;1072:6;1059:20;1094:89;1109:73;1175:6;1109:73;:::i;1094:89::-;1211:21;;;1085:98;-1:-1;1255:4;1268:14;;;;1243:17;;;1363:1;1348:242;1373:6;1370:1;1367:13;1348:242;;;1480:46;1522:3;1255:4;1456:3;1443:17;1247:6;1431:30;;1480:46;:::i;:::-;1468:59;;1541:14;;;;1569;;;;1395:1;1388:9;1348:242;;1621:708;;1748:3;1741:4;1733:6;1729:17;1725:27;1715:2;;-1:-1;;1756:12;1715:2;1803:6;1790:20;1825:90;1840:74;1907:6;1840:74;:::i;1825:90::-;1943:21;;;1816:99;-1:-1;1987:4;2000:14;;;;1975:17;;;2095:1;2080:243;2105:6;2102:1;2099:13;2080:243;;;2212:47;2255:3;1987:4;2188:3;2175:17;1979:6;2163:30;;2212:47;:::i;:::-;2200:60;;2274:14;;;;2302;;;;2127:1;2120:9;2080:243;;2355:707;;2472:3;2465:4;2457:6;2453:17;2449:27;2439:2;;-1:-1;;2480:12;2439:2;2527:6;2514:20;2549:80;2564:64;2621:6;2564:64;:::i;2549:80::-;2657:21;;;2540:89;-1:-1;2701:4;2714:14;;;;2689:17;;;2803;;;2794:27;;;;2791:36;-1:-1;2788:2;;;2840:1;;2830:12;2788:2;2865:1;2850:206;2875:6;2872:1;2869:13;2850:206;;;4303:20;;2943:50;;3007:14;;;;3035;;;;2897:1;2890:9;2850:206;;3337:440;;3438:3;3431:4;3423:6;3419:17;3415:27;3405:2;;-1:-1;;3446:12;3405:2;3493:6;3480:20;32643:18;32635:6;32632:30;32629:2;;;-1:-1;;32665:12;32629:2;3515:64;32738:9;32719:17;;-1:-1;;32715:33;32806:4;32796:15;3515:64;:::i;:::-;3506:73;;3599:6;3592:5;3585:21;3703:3;32806:4;3694:6;3627;3685:16;;3682:25;3679:2;;;3720:1;;3710:12;3679:2;38231:6;32806:4;3627:6;3623:17;32806:4;3661:5;3657:16;38208:30;38287:1;38269:16;;;32806:4;38269:16;38262:27;3661:5;3398:379;-1:-1;;3398:379::o;4514:241::-;;4618:2;4606:9;4597:7;4593:23;4589:32;4586:2;;;-1:-1;;4624:12;4586:2;4686:53;4731:7;4707:22;4686:53;:::i;:::-;4676:63;4580:175;-1:-1;;;4580:175::o;4762:1431::-;;;;;;5063:3;5051:9;5042:7;5038:23;5034:33;5031:2;;;-1:-1;;5070:12;5031:2;5128:17;5115:31;5166:18;;5158:6;5155:30;5152:2;;;-1:-1;;5188:12;5152:2;5218:78;5288:7;5279:6;5268:9;5264:22;5218:78;:::i;:::-;5208:88;;5361:2;5350:9;5346:18;5333:32;5319:46;;5166:18;5377:6;5374:30;5371:2;;;-1:-1;;5407:12;5371:2;5437:78;5507:7;5498:6;5487:9;5483:22;5437:78;:::i;:::-;5427:88;;5580:2;5569:9;5565:18;5552:32;5538:46;;5166:18;5596:6;5593:30;5590:2;;;-1:-1;;5626:12;5590:2;5656:88;5736:7;5727:6;5716:9;5712:22;5656:88;:::i;:::-;5646:98;;5809:2;5798:9;5794:18;5781:32;5767:46;;5166:18;5825:6;5822:30;5819:2;;;-1:-1;;5855:12;5819:2;5885:87;5964:7;5955:6;5944:9;5940:22;5885:87;:::i;:::-;5875:97;;6037:3;6026:9;6022:19;6009:33;5995:47;;5166:18;6054:6;6051:30;6048:2;;;-1:-1;;6084:12;6048:2;;6114:63;6169:7;6160:6;6149:9;6145:22;6114:63;:::i;:::-;6104:73;;;5025:1168;;;;;;;;:::o;6200:257::-;;6312:2;6300:9;6291:7;6287:23;6283:32;6280:2;;;-1:-1;;6318:12;6280:2;3282:6;3276:13;3294:30;3318:5;3294:30;:::i;6464:241::-;;6568:2;6556:9;6547:7;6543:23;6539:32;6536:2;;;-1:-1;;6574:12;6536:2;-1:-1;4303:20;;6530:175;-1:-1;6530:175::o;6712:263::-;;6827:2;6815:9;6806:7;6802:23;6798:32;6795:2;;;-1:-1;;6833:12;6795:2;-1:-1;4451:13;;6789:186;-1:-1;6789:186::o;6982:360::-;;;7100:2;7088:9;7079:7;7075:23;7071:32;7068:2;;;-1:-1;;7106:12;7068:2;4316:6;4303:20;7158:63;;7258:2;7298:9;7294:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;7266:60;;;;7062:280;;;;;:::o;8523:690::-;;8716:5;34408:12;35767:6;35762:3;35755:19;35804:4;;35799:3;35795:14;8728:93;;35804:4;8892:5;33272:14;-1:-1;8931:260;8956:6;8953:1;8950:13;8931:260;;;9017:13;;-1:-1;;;;;37625:54;8323:37;;7503:14;;;;35246;;;;37636:42;8971:9;8931:260;;;-1:-1;9197:10;;8647:566;-1:-1;;;;;8647:566::o;9248:920::-;;9468:5;34408:12;35767:6;35762:3;35755:19;35804:4;;35799:3;35795:14;9480:102;;;;35804:4;9639:6;9635:17;9630:3;9626:27;9614:39;;35804:4;9733:5;33272:14;-1:-1;9772:357;9797:6;9794:1;9791:13;9772:357;;;9859:9;9853:4;9849:20;9844:3;9837:33;7651:64;7711:3;9904:6;9898:13;7651:64;:::i;:::-;10108:14;;;;9918:90;-1:-1;35246:14;;;;9819:1;9812:9;9772:357;;;-1:-1;10152:10;;9390:778;-1:-1;;;;;;;9390:778::o;11172:690::-;;11365:5;34408:12;35767:6;35762:3;35755:19;35804:4;;35799:3;35795:14;11377:93;;35804:4;11541:5;33272:14;-1:-1;11580:260;11605:6;11602:1;11599:13;11580:260;;;11666:13;;20254:37;;8085:14;;;;35246;;;;11627:1;11620:9;11580:260;;12136:323;;12268:5;34408:12;35767:6;35762:3;35755:19;12351:52;12396:6;35804:4;35799:3;35795:14;35804:4;12377:5;12373:16;12351:52;:::i;:::-;32738:9;38728:14;-1:-1;;38724:28;12415:39;;;;35804:4;12415:39;;12216:243;-1:-1;;12216:243::o;12852:887::-;;12991:5;12985:12;13025:1;;13014:9;13010:17;13038:1;13033:267;;;;13311:1;13306:427;;;;13003:730;;13033:267;-1:-1;;13237:25;;13225:38;;13107:1;13092:17;;13111:4;13088:28;13277:16;;;-1:-1;13033:267;;13306:427;13375:1;13364:9;13360:17;33912:3;-1:-1;33902:14;33944:4;;-1:-1;33931:18;-1:-1;13566:130;13580:6;13577:1;13574:13;13566:130;;;13639:14;;13626:11;;;13619:35;13673:15;;;;13595:12;;13566:130;;;-1:-1;;;13710:16;;;-1:-1;13003:730;;;;12961:778;;;;:::o;13770:818::-;;13887:5;13881:12;13921:1;;13910:9;13906:17;13934:1;13929:247;;;;14187:1;14182:400;;;;13899:683;;13929:247;14003:1;13988:17;;14007:4;13984:28;35755:19;;-1:-1;;14115:25;;35804:4;35795:14;;14103:38;14155:14;;;;-1:-1;13929:247;;14182:400;14251:1;14240:9;14236:17;35767:6;35762:3;35755:19;14359:37;14390:5;14359:37;:::i;:::-;-1:-1;14420:130;14434:6;14431:1;14428:13;14420:130;;;14499:7;14493:14;35804:4;14489:1;35799:3;14480:11;;14473:35;13921:1;14531:7;14527:15;14516:26;;35804:4;14453:1;14449:12;14444:17;;14420:130;;;14564:11;;35804:4;14564:11;;-1:-1;;;13899:683;;;13857:731;;;;:::o;20423:399::-;-1:-1;;;;;;37473:78;;12068:56;;20423:399;20707:90;20687:1;20678:11;;20784:6;20707:90;:::i;:::-;20807:10;20580:242;-1:-1;;;;20580:242::o;20829:271::-;;12626:5;34408:12;12737:52;12782:6;12777:3;12770:4;12763:5;12759:16;12737:52;:::i;:::-;12801:16;;;;;20963:137;-1:-1;;20963:137::o;21107:273::-;;21261:94;21351:3;21342:6;21261:94;:::i;21387:222::-;-1:-1;;;;;37625:54;;;;8323:37;;21514:2;21499:18;;21485:124::o;21861:349::-;-1:-1;;;;;37625:54;;;;8192:58;;22196:2;22181:18;;20254:37;22024:2;22009:18;;21995:215::o;22217:432::-;-1:-1;;;;;37625:54;;;;8323:37;;22558:2;22543:18;;20254:37;;;;37386:13;37379:21;22635:2;22620:18;;11935:34;22394:2;22379:18;;22365:284::o;22656:1224::-;;23105:3;23127:17;23120:47;23181:108;23105:3;23094:9;23090:19;23275:6;23181:108;:::i;:::-;23337:9;23331:4;23327:20;23322:2;23311:9;23307:18;23300:48;23362:108;23465:4;23456:6;23362:108;:::i;:::-;23354:116;;23518:9;23512:4;23508:20;23503:2;23492:9;23488:18;23481:48;23543:128;23666:4;23657:6;23543:128;:::i;:::-;23535:136;;23719:9;23713:4;23709:20;23704:2;23693:9;23689:18;23682:48;23744:126;23865:4;23856:6;23744:126;:::i;:::-;23736:134;23076:804;-1:-1;;;;;;;23076:804::o;23887:310::-;;24034:2;24055:17;24048:47;24109:78;24034:2;24023:9;24019:18;24173:6;24109:78;:::i;24204:416::-;24404:2;24418:47;;;17275:2;24389:18;;;35755:19;17311:29;35795:14;;;17291:50;17360:12;;;24375:245::o;24627:416::-;24827:2;24841:47;;;17611:2;24812:18;;;35755:19;17647:32;35795:14;;;17627:53;17699:12;;;24798:245::o;25050:416::-;25250:2;25264:47;;;17950:2;25235:18;;;35755:19;17986:34;35795:14;;;17966:55;18055:34;18041:12;;;18034:56;-1:-1;;;18110:12;;;18103:27;18149:12;;;25221:245::o;25473:416::-;25673:2;25687:47;;;18400:2;25658:18;;;35755:19;18436:34;35795:14;;;18416:55;-1:-1;;;18491:12;;;18484:44;18547:12;;;25644:245::o;25896:416::-;26096:2;26110:47;;;18798:2;26081:18;;;35755:19;18834:34;35795:14;;;18814:55;18903:34;18889:12;;;18882:56;-1:-1;;;18958:12;;;18951:25;18995:12;;;26067:245::o;26319:416::-;26519:2;26533:47;;;19246:2;26504:18;;;35755:19;19282:34;35795:14;;;19262:55;-1:-1;;;19337:12;;;19330:35;19384:12;;;26490:245::o;26742:416::-;26942:2;26956:47;;;19635:2;26927:18;;;35755:19;19671:34;35795:14;;;19651:55;-1:-1;;;19726:12;;;19719:39;19777:12;;;26913:245::o;27165:416::-;27365:2;27379:47;;;20028:2;27350:18;;;35755:19;20064:34;35795:14;;;20044:55;-1:-1;;;20119:12;;;20112:36;20167:12;;;27336:245::o;27588:222::-;20254:37;;;27715:2;27700:18;;27686:124::o;27817:1664::-;20254:37;;;-1:-1;;;;;37625:54;;28551:2;28536:18;;8192:58;28378:3;28588:2;28573:18;;28566:48;;;27817:1664;;28628:108;;28363:19;;28722:6;28628:108;:::i;:::-;28784:9;28778:4;28774:20;28769:2;28758:9;28754:18;28747:48;28809:108;28912:4;28903:6;28809:108;:::i;:::-;28801:116;;28966:9;28960:4;28956:20;28950:3;28939:9;28935:19;28928:49;28991:128;29114:4;29105:6;28991:128;:::i;:::-;28983:136;;29168:9;29162:4;29158:20;29152:3;29141:9;29137:19;29130:49;29193:126;29314:4;29305:6;29193:126;:::i;:::-;29185:134;;29368:9;29362:4;29358:20;29352:3;29341:9;29337:19;29330:49;29393:78;29466:4;29457:6;29393:78;:::i;:::-;29385:86;28349:1132;-1:-1;;;;;;;;;;28349:1132::o;29488:868::-;20254:37;;;-1:-1;;;;;37625:54;;;;29936:2;29921:18;;8323:37;30019:2;30004:18;;20254:37;;;;30102:2;30087:18;;20254:37;;;;37386:13;37379:21;30179:3;30164:19;;11935:34;37386:13;37379:21;37636:42;30242:19;;11935:34;30341:3;30326:19;;20254:37;29771:3;29756:19;;29742:614::o;30363:604::-;;20284:5;20261:3;20254:37;30578:2;30696;30685:9;30681:18;30674:48;30736:75;30578:2;30567:9;30563:18;30797:6;30736:75;:::i;:::-;30859:9;30853:4;30849:20;30844:2;30833:9;30829:18;30822:48;30884:73;30952:4;30943:6;30884:73;:::i;:::-;30876:81;30549:418;-1:-1;;;;;;30549:418::o;30974:256::-;31036:2;31030:9;31062:17;;;31137:18;31122:34;;31158:22;;;31119:62;31116:2;;;31194:1;;31184:12;31116:2;31036;31203:22;31014:216;;-1:-1;31014:216::o;31237:304::-;;31396:18;31388:6;31385:30;31382:2;;;-1:-1;;31418:12;31382:2;-1:-1;31463:4;31451:17;;;31516:15;;31319:222::o;33808:157::-;;33902:14;;;33944:4;33931:18;;;33861:104::o;38304:268::-;38369:1;38376:101;38390:6;38387:1;38384:13;38376:101;;;38457:11;;;38451:18;38438:11;;;38431:39;38412:2;38405:10;38376:101;;;38492:6;38489:1;38486:13;38483:2;;;38369:1;38548:6;38543:3;38539:16;38532:27;38483:2;;38353:219;;;:::o;38889:111::-;38970:5;37386:13;37379:21;38948:5;38945:32;38935:2;;38991:1;;38981:12

Swarm Source

ipfs://6bc501bc89d58b45fe68e6e5f171c4630a82be226305741c8fdb33157d6852d7

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  ]

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.