ETH Price: $3,221.87 (-0.68%)

Contract

0x78BdD33e95ECbcAC16745FB28DB0FFb703344026
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Propose112717092020-11-16 22:48:291520 days ago1605566909IN
0x78BdD33e...703344026
0 ETH0.0501625839
Execute112439122020-11-12 16:40:171524 days ago1605199217IN
0x78BdD33e...703344026
0 ETH0.026955945
Queue112377922020-11-11 17:55:471525 days ago1605117347IN
0x78BdD33e...703344026
0 ETH0.0200442440
Cast Vote112333772020-11-11 1:40:261526 days ago1605058826IN
0x78BdD33e...703344026
0 ETH0.003854744
Cast Vote112315672020-11-10 19:05:591526 days ago1605035159IN
0x78BdD33e...703344026
0 ETH0.0031538536
Cast Vote112311292020-11-10 17:27:451526 days ago1605029265IN
0x78BdD33e...703344026
0 ETH0.0030989430
Cast Vote112309932020-11-10 17:00:471526 days ago1605027647IN
0x78BdD33e...703344026
0 ETH0.0033290638
Cast Vote112292142020-11-10 10:19:451526 days ago1605003585IN
0x78BdD33e...703344026
0 ETH0.0045643252.1
Cast Vote112290302020-11-10 9:34:271527 days ago1605000867IN
0x78BdD33e...703344026
0 ETH0.0067457377
Cast Vote112289982020-11-10 9:26:571527 days ago1605000417IN
0x78BdD33e...703344026
0 ETH0.0042051348
Cast Vote112287002020-11-10 8:16:311527 days ago1604996191IN
0x78BdD33e...703344026
0 ETH0.004637244
Cast Vote112282002020-11-10 6:19:301527 days ago1604989170IN
0x78BdD33e...703344026
0 ETH0.0012264914.00000145
Cast Vote112281832020-11-10 6:16:431527 days ago1604989003IN
0x78BdD33e...703344026
0 ETH0.0022777826.00000145
Cast Vote112281762020-11-10 6:15:281527 days ago1604988928IN
0x78BdD33e...703344026
0 ETH0.0022777826.00000145
Cast Vote112281692020-11-10 6:14:141527 days ago1604988854IN
0x78BdD33e...703344026
0 ETH0.0026282130
Cast Vote112277592020-11-10 4:45:041527 days ago1604983504IN
0x78BdD33e...703344026
0 ETH0.0029786334
Cast Vote112270492020-11-10 2:13:051527 days ago1604974385IN
0x78BdD33e...703344026
0 ETH0.0023653827
Cast Vote112267942020-11-10 1:18:261527 days ago1604971106IN
0x78BdD33e...703344026
0 ETH0.0027697927.00000145
Cast Vote112260572020-11-09 22:37:051527 days ago1604961425IN
0x78BdD33e...703344026
0 ETH0.001314115
Cast Vote112259342020-11-09 22:11:421527 days ago1604959902IN
0x78BdD33e...703344026
0 ETH0.0012352514.1
Cast Vote112253352020-11-09 19:58:011527 days ago1604951881IN
0x78BdD33e...703344026
0 ETH0.0017521420
Cast Vote112250982020-11-09 19:03:361527 days ago1604948616IN
0x78BdD33e...703344026
0 ETH0.0021346523
Cast Vote112245142020-11-09 16:56:081527 days ago1604940968IN
0x78BdD33e...703344026
0 ETH0.0023653827
Cast Vote112244472020-11-09 16:42:351527 days ago1604940155IN
0x78BdD33e...703344026
0 ETH0.0025055628.6000016
Cast Vote112243312020-11-09 16:19:581527 days ago1604938798IN
0x78BdD33e...703344026
0 ETH0.005951258.00000156
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:
GovernorAlpha

Compiler Version
v0.5.15+commit.6a57276f

Optimization Enabled:
Yes with 50000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

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

pragma solidity 0.5.15;
pragma experimental ABIEncoderV2;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * 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);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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


interface TimelockInterface {
    function delay() external view returns (uint256);
    function GRACE_PERIOD() external view returns (uint256);
    function acceptAdmin() external;
    function queuedTransactions(bytes32 hash) external view returns (bool);
    function queueTransaction(address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta) external returns (bytes32);
    function cancelTransaction(address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta) external;
    function executeTransaction(address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta) external payable returns (bytes memory);
}

interface YAMInterface {
    function getPriorVotes(address account, uint256 blockNumber) external view returns (uint256);
    function _acceptGov() external;
}



contract GovernorAlpha {
    /// @notice The name of this contract
    string public constant name = "YAM Governor Alpha";

    /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
    function quorumVotes() public view returns (uint256) { return 200000 * 10**24; } // 4% of YAM

    /// @notice The number of votes required in order for a voter to become a proposer
    function proposalThreshold() public view returns (uint256) { return 50000 * 10**24; } // 1% of YAM

    /// @notice The maximum number of actions that can be included in a proposal
    function proposalMaxOperations() public pure returns (uint256) { return 10; } // 10 actions

    /// @notice The delay before voting on a proposal may take place, once proposed
    function votingDelay() public pure returns (uint256) { return 1; } // 1 block

    /// @notice The duration of voting on a proposal, in blocks
    function votingPeriod() public pure returns (uint256) { return 12345; } // ~2 days in blocks (assuming 14s blocks)

    /// @notice The address of the Compound Protocol Timelock
    TimelockInterface public timelock;

    /// @notice The address of the Compound governance token
    YAMInterface public yam;

    /// @notice The address of the Governor Guardian
    address public guardian;

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

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

        // Creator of the proposal
        address proposer;

        // The timestamp that the proposal will be available for execution, set once the vote succeeds
        uint256 eta;

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

        // The block at which voting begins: holders must delegate their votes prior to this block
        uint256 startBlock;

        // The block at which voting ends: votes must be cast prior to this block
        uint256 endBlock;

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

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

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

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

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

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

        // The number of votes the voter had, which were cast
        uint256 votes;
    }

    // Possible states that a proposal may be in
    enum ProposalState {
        Pending,
        Active,
        Canceled,
        Defeated,
        Succeeded,
        Queued,
        Expired,
        Executed
    }

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

    /// @notice The latest proposal for each proposer
    mapping (address => uint256) public latestProposalIds;

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

    /// @notice The EIP-712 typehash for the ballot struct used by the contract
    bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)");

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

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

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

    /// @notice An event emitted when a proposal has been queued in the Timelock
    event ProposalQueued(uint256 id, uint256 eta);

    /// @notice An event emitted when a proposal has been executed in the Timelock
    event ProposalExecuted(uint256 id);

    constructor(address timelock_, address yam_) public {
        timelock = TimelockInterface(timelock_);
        yam = YAMInterface(yam_);
        guardian = msg.sender;
    }

    function propose(
        address[] memory targets,
        uint[] memory values,
        string[] memory signatures,
        bytes[] memory calldatas,
        string memory description
    )
        public
        returns (uint256)
    {
        require(yam.getPriorVotes(msg.sender, sub256(block.number, 1)) >= proposalThreshold(), "GovernorAlpha::propose: proposer votes below proposal threshold");
        require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "GovernorAlpha::propose: proposal function information arity mismatch");
        require(targets.length != 0, "GovernorAlpha::propose: must provide actions");
        require(targets.length <= proposalMaxOperations(), "GovernorAlpha::propose: too many actions");

        uint256 latestProposalId = latestProposalIds[msg.sender];
        if (latestProposalId != 0) {
          ProposalState proposersLatestProposalState = state(latestProposalId);
          require(proposersLatestProposalState != ProposalState.Active, "GovernorAlpha::propose: one live proposal per proposer, found an already active proposal");
          require(proposersLatestProposalState != ProposalState.Pending, "GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal");
        }

        uint256 startBlock = add256(block.number, votingDelay());
        uint256 endBlock = add256(startBlock, votingPeriod());

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

        proposals[newProposal.id] = newProposal;
        latestProposalIds[newProposal.proposer] = newProposal.id;

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

    function queue(uint256 proposalId)
        public
    {
        require(state(proposalId) == ProposalState.Succeeded, "GovernorAlpha::queue: proposal can only be queued if it is succeeded");
        Proposal storage proposal = proposals[proposalId];
        uint256 eta = add256(block.timestamp, timelock.delay());
        for (uint256 i = 0; i < proposal.targets.length; i++) {
            _queueOrRevert(
                proposal.targets[i],
                proposal.values[i],
                proposal.signatures[i],
                proposal.calldatas[i],
                eta
            );
        }
        proposal.eta = eta;
        emit ProposalQueued(proposalId, eta);
    }

    function _queueOrRevert(
        address target,
        uint256 value,
        string memory signature,
        bytes memory data,
        uint256 eta
    )
        internal
    {
        require(!timelock.queuedTransactions(
              keccak256(
                  abi.encode(
                      target,
                      value,
                      signature,
                      data,
                      eta
                  )
              )
          ),
          "GovernorAlpha::_queueOrRevert: proposal action already queued at eta"
        );

        timelock.queueTransaction(target, value, signature, data, eta);
    }

    function execute(uint256 proposalId)
        public
        payable
    {
        require(state(proposalId) == ProposalState.Queued, "GovernorAlpha::execute: proposal can only be executed if it is queued");
        Proposal storage proposal = proposals[proposalId];
        proposal.executed = true;
        for (uint256 i = 0; i < proposal.targets.length; i++) {
            timelock.executeTransaction.value(proposal.values[i])(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
        }
        emit ProposalExecuted(proposalId);
    }

    function cancel(uint256 proposalId)
        public
    {
        ProposalState state = state(proposalId);
        require(state != ProposalState.Executed, "GovernorAlpha::cancel: cannot cancel executed proposal");

        Proposal storage proposal = proposals[proposalId];
        require(msg.sender == guardian || yam.getPriorVotes(proposal.proposer, sub256(block.number, 1)) < proposalThreshold(), "GovernorAlpha::cancel: proposer above threshold");

        proposal.canceled = true;
        for (uint256 i = 0; i < proposal.targets.length; i++) {
            timelock.cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
        }

        emit ProposalCanceled(proposalId);
    }

    function getActions(uint256 proposalId)
        public
        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 getReceipt(uint256 proposalId, address voter)
        public
        view
        returns (Receipt memory)
    {
        return proposals[proposalId].receipts[voter];
    }

    function state(uint256 proposalId)
        public
        view
        returns (ProposalState)
    {
        require(proposalCount >= proposalId && proposalId > 0, "GovernorAlpha::state: invalid proposal id");
        Proposal storage proposal = proposals[proposalId];
        if (proposal.canceled) {
            return ProposalState.Canceled;
        } else if (block.number <= proposal.startBlock) {
            return ProposalState.Pending;
        } else if (block.number <= proposal.endBlock) {
            return ProposalState.Active;
        } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes()) {
            return ProposalState.Defeated;
        } else if (proposal.eta == 0) {
            return ProposalState.Succeeded;
        } else if (proposal.executed) {
            return ProposalState.Executed;
        } else if (block.timestamp >= add256(proposal.eta, timelock.GRACE_PERIOD())) {
            return ProposalState.Expired;
        } else {
            return ProposalState.Queued;
        }
    }

    function castVote(uint256 proposalId, bool support)
        public
    {
        return _castVote(msg.sender, proposalId, support);
    }

    function castVoteBySig(
        uint256 proposalId,
        bool support,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
        public
    {
        bytes32 domainSeparator = keccak256(
            abi.encode(
                DOMAIN_TYPEHASH,
                keccak256(bytes(name)),
                getChainId(),
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                BALLOT_TYPEHASH,
                proposalId,
                support
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                "\x19\x01",
                domainSeparator,
                structHash
            )
        );

        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "GovernorAlpha::castVoteBySig: invalid signature");
        return _castVote(signatory, proposalId, support);
    }

    function _castVote(
        address voter,
        uint256 proposalId,
        bool support
    )
        internal
    {
        require(state(proposalId) == ProposalState.Active, "GovernorAlpha::_castVote: voting is closed");
        Proposal storage proposal = proposals[proposalId];
        Receipt storage receipt = proposal.receipts[voter];
        require(receipt.hasVoted == false, "GovernorAlpha::_castVote: voter already voted");
        uint256 votes = yam.getPriorVotes(voter, proposal.startBlock);

        if (support) {
            proposal.forVotes = add256(proposal.forVotes, votes);
        } else {
            proposal.againstVotes = add256(proposal.againstVotes, votes);
        }

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

        emit VoteCast(voter, proposalId, support, votes);
    }

    function __acceptAdmin()
        public
    {
        require(msg.sender == guardian, "GovernorAlpha::__acceptAdmin: sender must be gov guardian");
        timelock.acceptAdmin();
    }

    function __abdicate()
        public
    {
        require(msg.sender == guardian, "GovernorAlpha::__abdicate: sender must be gov guardian");
        guardian = address(0);
    }

    function add256(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "addition overflow");
        return c;
    }

    function sub256(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "subtraction underflow");
        return a - b;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"timelock_","type":"address"},{"internalType":"address","name":"yam_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"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":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","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"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"constant":true,"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"__abdicate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"__acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"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[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct GovernorAlpha.Receipt","name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum GovernorAlpha.ProposalState","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timelock","outputs":[{"internalType":"contract TimelockInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"yam","outputs":[{"internalType":"contract YAMInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162003bbc38038062003bbc833981016040819052620000349162000089565b600080546001600160a01b039384166001600160a01b0319918216179091556001805492909316918116919091179091556002805490911633179055620000f4565b80516200008381620000da565b92915050565b600080604083850312156200009d57600080fd5b6000620000ab858562000076565b9250506020620000be8582860162000076565b9150509250929050565b60006001600160a01b03821662000083565b620000e581620000c8565b8114620000f157600080fd5b50565b613ab880620001046000396000f3fe6080604052600436106101965760003560e01c8063452a9320116100e1578063d33219b41161008a578063ddf0b00911610064578063ddf0b0091461041d578063deaaa7cc1461043d578063e23a9a5214610452578063fe0d94c11461047f57610196565b8063d33219b4146103d3578063da35c664146103e8578063da95691a146103fd57610196565b80637bdbe4d0116100bb5780637bdbe4d014610394578063b58131b0146103a9578063b9a61961146103be57610196565b8063452a93201461033d5780634634c61f1461035f578063760fbc131461037f57610196565b806320606b70116101435780633932abb11161011d5780633932abb1146102db5780633e4f49e6146102f057806340e58ee51461031d57610196565b806320606b701461028157806324bc1a6414610296578063328dd982146102ab57610196565b8063071c033211610174578063071c03321461021d57806315373e3d1461023f57806317977c611461026157610196565b8063013cf08b1461019b57806302a251a3146101d957806306fdde03146101fb575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612743565b610492565b6040516101d099989796959493929190613845565b60405180910390f35b3480156101e557600080fd5b506101ee6104f8565b6040516101d0919061359f565b34801561020757600080fd5b506102106104ff565b6040516101d0919061364e565b34801561022957600080fd5b50610232610538565b6040516101d09190613632565b34801561024b57600080fd5b5061025f61025a36600461279b565b610554565b005b34801561026d57600080fd5b506101ee61027c3660046125c0565b610563565b34801561028d57600080fd5b506101ee610575565b3480156102a257600080fd5b506101ee61058c565b3480156102b757600080fd5b506102cb6102c6366004612743565b61059d565b6040516101d09493929190613552565b3480156102e757600080fd5b506101ee610875565b3480156102fc57600080fd5b5061031061030b366004612743565b61087a565b6040516101d09190613640565b34801561032957600080fd5b5061025f610338366004612743565b610a45565b34801561034957600080fd5b50610352610d2b565b6040516101d0919061344b565b34801561036b57600080fd5b5061025f61037a3660046127cb565b610d47565b34801561038b57600080fd5b5061025f610f29565b3480156103a057600080fd5b506101ee610fa4565b3480156103b557600080fd5b506101ee610fa9565b3480156103ca57600080fd5b5061025f610fb9565b3480156103df57600080fd5b5061023261108b565b3480156103f457600080fd5b506101ee6110a7565b34801561040957600080fd5b506101ee6104183660046125e6565b6110ad565b34801561042957600080fd5b5061025f610438366004612743565b6115b1565b34801561044957600080fd5b506101ee6118a4565b34801561045e57600080fd5b5061047261046d366004612761565b6118b0565b6040516101d0919061378f565b61025f61048d366004612743565b611921565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b6130395b90565b6040518060400160405280601281526020017f59414d20476f7665726e6f7220416c706861000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b61055f338383611b55565b5050565b60056020526000908152604090205481565b60405161058190613435565b604051809103902081565b6c02863c1f5cdae42f954000000090565b6060806060806000600460008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561062c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610601575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561067e57602002820191906000526020600020905b81548152602001906001019080831161066a575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561076f5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b5050505050815260200190600101906106a6565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561085f5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561084b5780601f106108205761010080835404028352916020019161084b565b820191906000526020600020905b81548152906001019060200180831161082e57829003601f168201915b505050505081526020019060010190610796565b5050505090509450945094509450509193509193565b600190565b6000816003541015801561088e5750600082115b6108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061368f565b60405180910390fd5b6000828152600460205260409020600b81015460ff16156108f2576002915050610a40565b80600701544311610907576000915050610a40565b8060080154431161091c576001915050610a40565b80600a0154816009015411158061093d575061093661058c565b8160090154105b1561094c576003915050610a40565b600281015461095f576004915050610a40565b600b810154610100900460ff161561097b576007915050610a40565b6002810154600054604080517fc1a287e20000000000000000000000000000000000000000000000000000000081529051610a2a939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b1580156109ed57600080fd5b505afa158015610a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2591908101906126f0565b611d93565b4210610a3a576006915050610a40565b60059150505b919050565b6000610a508261087a565b90506007816007811115610a6057fe5b1415610a98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061374f565b600082815260046020526040902060025473ffffffffffffffffffffffffffffffffffffffff16331480610b745750610acf610fa9565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610b05904390611dd9565b6040518363ffffffff1660e01b8152600401610b22929190613474565b60206040518083038186803b158015610b3a57600080fd5b505afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b7291908101906126f0565b105b610baa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136ef565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610cee5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610c1957fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610c4e57fe5b9060005260206000200154856005018581548110610c6857fe5b90600052602060002001866006018681548110610c8157fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610cb0959493929190613511565b600060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b505060019092019150610bda9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d1e919061359f565b60405180910390a1505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000604051610d5590613435565b60408051918290038220828201909152601282527f59414d20476f7665726e6f7220416c70686100000000000000000000000000006020909201919091527f63e44b07eb663d132f3b867c12624d91b2a07d728ab5358df3bb5d0d12341eb9610dbc611e1b565b30604051602001610dd094939291906135ad565b6040516020818303038152906040528051906020012090506000604051610df690613440565b604051908190038120610e0f91899089906020016135e2565b60405160208183030381529060405280519060200120905060008282604051602001610e3c929190613404565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610e79949392919061360a565b6020604051602081039080840390855afa158015610e9b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061372f565b610f1e818a8a611b55565b505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610f7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061377f565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600a90565b6ba18f07d736b90be55000000090565b60025473ffffffffffffffffffffffffffffffffffffffff16331461100a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061365f565b60008054604080517f0e18b681000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630e18b6819260048084019382900301818387803b15801561107157600080fd5b505af1158015611085573d6000803e3d6000fd5b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60006110b7610fa9565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe19033906110e5904390611dd9565b6040518363ffffffff1660e01b8152600401611102929190613459565b60206040518083038186803b15801561111a57600080fd5b505afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061115291908101906126f0565b101561118a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061371f565b8451865114801561119c575083518651145b80156111a9575082518651145b6111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136df565b8551611217576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061370f565b61121f610fa4565b86511115611259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136bf565b33600090815260056020526040902054801561130a57600061127a8261087a565b9050600181600781111561128a57fe5b14156112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061373f565b60008160078111156112d057fe5b1415611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136af565b505b600061131843610a25610875565b9050600061132882610a256104f8565b600380546001019055905061133b611fcb565b604051806101a0016040528060035481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301908051906020019061144592919061204d565b50608082015180516114619160048401916020909101906120d7565b5060a0820151805161147d91600584019160209091019061211e565b5060c08201518051611499916006840191602090910190612177565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160056000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e6040516115999998979695949392919061379d565b60405180910390a15193505050505b95945050505050565b60046115bc8261087a565b60078111156115c757fe5b146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061366f565b6000818152600460208181526040808420845482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191959461167994429473ffffffffffffffffffffffffffffffffffffffff90931693636a42b8f8938084019390829003018186803b1580156109ed57600080fd5b905060005b600383015481101561186a5761186283600301828154811061169c57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106116d157fe5b90600052602060002001548560050184815481106116eb57fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156117975780601f1061176c57610100808354040283529160200191611797565b820191906000526020600020905b81548152906001019060200180831161177a57829003601f168201915b50505050508660060185815481106117ab57fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156118575780601f1061182c57610100808354040283529160200191611857565b820191906000526020600020905b81548152906001019060200180831161183a57829003601f168201915b505050505086611e1f565b60010161167e565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610d1e90859084906138cb565b60405161058190613440565b6118b86121d0565b50600082815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b600561192c8261087a565b600781111561193757fe5b1461196e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061367f565b6000818152600460205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b6003820154811015611b195760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f9190849081106119eb57fe5b9060005260206000200154846003018481548110611a0557fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff9092169186908110611a3a57fe5b9060005260206000200154866005018681548110611a5457fe5b90600052602060002001876006018781548110611a6d57fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401611a9c959493929190613511565b6000604051808303818588803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b10919081019061270e565b506001016119ac565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611b49919061359f565b60405180910390a15050565b6001611b608361087a565b6007811115611b6b57fe5b14611ba2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061375f565b600082815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611c12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061369f565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611c6e918a91600401613474565b60206040518083038186803b158015611c8657600080fd5b505afa158015611c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cbe91908101906126f0565b90508315611cde57611cd4836009015482611d93565b6009840155611cf2565b611cec83600a015482611d93565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611d83908890889088908690613482565b60405180910390a1505050505050565b600082820183811015611dd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136cf565b9392505050565b600082821115611e15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061376f565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611e5a90889088908890889088906020016134b7565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611e8c919061359f565b60206040518083038186803b158015611ea457600080fd5b505afa158015611eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611edc91908101906126d2565b15611f13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136ff565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611f7190889088908890889088906004016134b7565b602060405180830381600087803b158015611f8b57600080fd5b505af1158015611f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fc391908101906126f0565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8280548282559060005260206000209081019282156120c7579160200282015b828111156120c757825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061206d565b506120d39291506121f0565b5090565b828054828255906000526020600020908101928215612112579160200282015b828111156121125782518255916020019190600101906120f7565b506120d392915061222c565b82805482825590600052602060002090810192821561216b579160200282015b8281111561216b578251805161215b918491602090910190612246565b509160200191906001019061213e565b506120d39291506122b3565b8280548282559060005260206000209081019282156121c4579160200282015b828111156121c457825180516121b4918491602090910190612246565b5091602001919060010190612197565b506120d39291506122d6565b604080516060810182526000808252602082018190529181019190915290565b6104fc91905b808211156120d35780547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001016121f6565b6104fc91905b808211156120d35760008155600101612232565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061228757805160ff1916838001178555612112565b8280016001018555821561211257918201828111156121125782518255916020019190600101906120f7565b6104fc91905b808211156120d35760006122cd82826122f9565b506001016122b9565b6104fc91905b808211156120d35760006122f082826122f9565b506001016122dc565b50805460018160011615610100020316600290046000825580601f1061231f575061233d565b601f01602090049060005260206000209081019061233d919061222c565b50565b803561191b81613a46565b600082601f83011261235c57600080fd5b813561236f61236a82613900565b6138d9565b9150818183526020840193506020810190508385602084028201111561239457600080fd5b60005b838110156123c057816123aa8882612340565b8452506020928301929190910190600101612397565b5050505092915050565b600082601f8301126123db57600080fd5b81356123e961236a82613900565b81815260209384019390925082018360005b838110156123c057813586016124118882612520565b84525060209283019291909101906001016123fb565b600082601f83011261243857600080fd5b813561244661236a82613900565b81815260209384019390925082018360005b838110156123c0578135860161246e8882612520565b8452506020928301929190910190600101612458565b600082601f83011261249557600080fd5b81356124a361236a82613900565b915081818352602084019350602081019050838560208402820111156124c857600080fd5b60005b838110156123c057816124de888261250a565b84525060209283019291909101906001016124cb565b803561191b81613a5a565b805161191b81613a5a565b803561191b81613a63565b805161191b81613a63565b600082601f83011261253157600080fd5b813561253f61236a82613921565b9150808252602083016020830185838301111561255b57600080fd5b6125668382846139dc565b50505092915050565b600082601f83011261258057600080fd5b815161258e61236a82613921565b915080825260208301602083018583830111156125aa57600080fd5b6125668382846139e8565b803561191b81613a6c565b6000602082840312156125d257600080fd5b60006125de8484612340565b949350505050565b600080600080600060a086880312156125fe57600080fd5b853567ffffffffffffffff81111561261557600080fd5b6126218882890161234b565b955050602086013567ffffffffffffffff81111561263e57600080fd5b61264a88828901612484565b945050604086013567ffffffffffffffff81111561266757600080fd5b61267388828901612427565b935050606086013567ffffffffffffffff81111561269057600080fd5b61269c888289016123ca565b925050608086013567ffffffffffffffff8111156126b957600080fd5b6126c588828901612520565b9150509295509295909350565b6000602082840312156126e457600080fd5b60006125de84846124ff565b60006020828403121561270257600080fd5b60006125de8484612515565b60006020828403121561272057600080fd5b815167ffffffffffffffff81111561273757600080fd5b6125de8482850161256f565b60006020828403121561275557600080fd5b60006125de848461250a565b6000806040838503121561277457600080fd5b6000612780858561250a565b925050602061279185828601612340565b9150509250929050565b600080604083850312156127ae57600080fd5b60006127ba858561250a565b9250506020612791858286016124f4565b600080600080600060a086880312156127e357600080fd5b60006127ef888861250a565b9550506020612800888289016124f4565b9450506040612811888289016125b5565b93505060606128228882890161250a565b92505060806126c58882890161250a565b600061283f838361286e565b505060200190565b6000611dd28383612a10565b600061283f83836129f6565b612868816139bf565b82525050565b61286881613986565b600061288282613979565b61288c818561397d565b935061289783613967565b8060005b838110156128c55781516128af8882612833565b97506128ba83613967565b92505060010161289b565b509495945050505050565b60006128db82613979565b6128e5818561397d565b9350836020820285016128f785613967565b8060005b8581101561293157848403895281516129148582612847565b945061291f83613967565b60209a909a01999250506001016128fb565b5091979650505050505050565b600061294982613979565b612953818561397d565b93508360208202850161296585613967565b8060005b8581101561293157848403895281516129828582612847565b945061298d83613967565b60209a909a0199925050600101612969565b60006129aa82613979565b6129b4818561397d565b93506129bf83613967565b8060005b838110156128c55781516129d78882612853565b97506129e283613967565b9250506001016129c3565b61286881613991565b612868816104fc565b612868612a0b826104fc565b6104fc565b6000612a1b82613979565b612a25818561397d565b9350612a358185602086016139e8565b612a3e81613a14565b9093019392505050565b600081546001811660008114612a655760018114612aa957612ae8565b607f6002830416612a76818761397d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612ae8565b60028204612ab7818761397d565b9550612ac28561396d565b60005b82811015612ae157815488820152600190910190602001612ac5565b8701945050505b505092915050565b612868816139c6565b612868816139d1565b6000612b0f60398361397d565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b6000612b6e60448361397d565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612bf360458361397d565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612c78600283610a40565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612cb160298361397d565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612d10602d8361397d565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612d6f60598361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612df460288361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612e5360118361397d565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612e8c604383610a40565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612f11602783610a40565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612f7060448361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ff5602f8361397d565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b600061305460448361397d565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b60006130d9602c8361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000613138603f8361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000613197602f8361397d565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b60006131f660588361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b600061327b60368361397d565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b60006132da602a8361397d565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b600061333960158361397d565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b600061337260368361397d565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646581527f72206d75737420626520676f7620677561726469616e00000000000000000000602082015260400192915050565b805160608301906133d584826129ed565b5060208201516133e860208501826129ed565b50604082015161108560408501826129f6565b612868816139b9565b600061340f82612c6b565b915061341b82856129ff565b60208201915061342b82846129ff565b5060200192915050565b600061191b82612e7f565b600061191b82612f04565b6020810161191b828461286e565b60408101613467828561285f565b611dd260208301846129f6565b60408101613467828561286e565b60808101613490828761286e565b61349d60208301866129f6565b6134aa60408301856129ed565b6115a860608301846129f6565b60a081016134c5828861286e565b6134d260208301876129f6565b81810360408301526134e48186612a10565b905081810360608301526134f88185612a10565b905061350760808301846129f6565b9695505050505050565b60a0810161351f828861286e565b61352c60208301876129f6565b818103604083015261353e8186612a48565b905081810360608301526134f88185612a48565b608080825281016135638187612877565b90508181036020830152613577818661299f565b9050818103604083015261358b818561293e565b9050818103606083015261350781846128d0565b6020810161191b82846129f6565b608081016135bb82876129f6565b6135c860208301866129f6565b6135d560408301856129f6565b6115a8606083018461286e565b606081016135f082866129f6565b6135fd60208301856129f6565b6125de60408301846129ed565b6080810161361882876129f6565b61362560208301866133fb565b6134aa60408301856129f6565b6020810161191b8284612af0565b6020810161191b8284612af9565b60208082528101611dd28184612a10565b6020808252810161191b81612b02565b6020808252810161191b81612b61565b6020808252810161191b81612be6565b6020808252810161191b81612ca4565b6020808252810161191b81612d03565b6020808252810161191b81612d62565b6020808252810161191b81612de7565b6020808252810161191b81612e46565b6020808252810161191b81612f63565b6020808252810161191b81612fe8565b6020808252810161191b81613047565b6020808252810161191b816130cc565b6020808252810161191b8161312b565b6020808252810161191b8161318a565b6020808252810161191b816131e9565b6020808252810161191b8161326e565b6020808252810161191b816132cd565b6020808252810161191b8161332c565b6020808252810161191b81613365565b6060810161191b82846133c4565b61012081016137ac828c6129f6565b6137b9602083018b61285f565b81810360408301526137cb818a612877565b905081810360608301526137df818961299f565b905081810360808301526137f3818861293e565b905081810360a083015261380781876128d0565b905061381660c08301866129f6565b61382360e08301856129f6565b8181036101008301526138368184612a10565b9b9a5050505050505050505050565b6101208101613854828c6129f6565b613861602083018b61286e565b61386e604083018a6129f6565b61387b60608301896129f6565b61388860808301886129f6565b61389560a08301876129f6565b6138a260c08301866129f6565b6138af60e08301856129ed565b6138bd6101008301846129ed565b9a9950505050505050505050565b6040810161346782856129f6565b60405181810167ffffffffffffffff811182821017156138f857600080fd5b604052919050565b600067ffffffffffffffff82111561391757600080fd5b5060209081020190565b600067ffffffffffffffff82111561393857600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061191b826139a0565b151590565b80610a4081613a3c565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b600061191b825b600061191b82613986565b600061191b82613996565b82818337506000910152565b60005b83811015613a035781810151838201526020016139eb565b838111156110855750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6008811061233d57fe5b613a4f81613986565b811461233d57600080fd5b613a4f81613991565b613a4f816104fc565b613a4f816139b956fea365627a7a72315820218303ef2386f1fa91ee7e37e29da31238edade3024766d08759a8cc5fa211396c6578706572696d656e74616cf564736f6c634300050f00400000000000000000000000008b4f1616751117c38a0f84f9a146cca191ea3ec50000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d8521

Deployed Bytecode

0x6080604052600436106101965760003560e01c8063452a9320116100e1578063d33219b41161008a578063ddf0b00911610064578063ddf0b0091461041d578063deaaa7cc1461043d578063e23a9a5214610452578063fe0d94c11461047f57610196565b8063d33219b4146103d3578063da35c664146103e8578063da95691a146103fd57610196565b80637bdbe4d0116100bb5780637bdbe4d014610394578063b58131b0146103a9578063b9a61961146103be57610196565b8063452a93201461033d5780634634c61f1461035f578063760fbc131461037f57610196565b806320606b70116101435780633932abb11161011d5780633932abb1146102db5780633e4f49e6146102f057806340e58ee51461031d57610196565b806320606b701461028157806324bc1a6414610296578063328dd982146102ab57610196565b8063071c033211610174578063071c03321461021d57806315373e3d1461023f57806317977c611461026157610196565b8063013cf08b1461019b57806302a251a3146101d957806306fdde03146101fb575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612743565b610492565b6040516101d099989796959493929190613845565b60405180910390f35b3480156101e557600080fd5b506101ee6104f8565b6040516101d0919061359f565b34801561020757600080fd5b506102106104ff565b6040516101d0919061364e565b34801561022957600080fd5b50610232610538565b6040516101d09190613632565b34801561024b57600080fd5b5061025f61025a36600461279b565b610554565b005b34801561026d57600080fd5b506101ee61027c3660046125c0565b610563565b34801561028d57600080fd5b506101ee610575565b3480156102a257600080fd5b506101ee61058c565b3480156102b757600080fd5b506102cb6102c6366004612743565b61059d565b6040516101d09493929190613552565b3480156102e757600080fd5b506101ee610875565b3480156102fc57600080fd5b5061031061030b366004612743565b61087a565b6040516101d09190613640565b34801561032957600080fd5b5061025f610338366004612743565b610a45565b34801561034957600080fd5b50610352610d2b565b6040516101d0919061344b565b34801561036b57600080fd5b5061025f61037a3660046127cb565b610d47565b34801561038b57600080fd5b5061025f610f29565b3480156103a057600080fd5b506101ee610fa4565b3480156103b557600080fd5b506101ee610fa9565b3480156103ca57600080fd5b5061025f610fb9565b3480156103df57600080fd5b5061023261108b565b3480156103f457600080fd5b506101ee6110a7565b34801561040957600080fd5b506101ee6104183660046125e6565b6110ad565b34801561042957600080fd5b5061025f610438366004612743565b6115b1565b34801561044957600080fd5b506101ee6118a4565b34801561045e57600080fd5b5061047261046d366004612761565b6118b0565b6040516101d0919061378f565b61025f61048d366004612743565b611921565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b6130395b90565b6040518060400160405280601281526020017f59414d20476f7665726e6f7220416c706861000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b61055f338383611b55565b5050565b60056020526000908152604090205481565b60405161058190613435565b604051809103902081565b6c02863c1f5cdae42f954000000090565b6060806060806000600460008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561062c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610601575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561067e57602002820191906000526020600020905b81548152602001906001019080831161066a575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561076f5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b5050505050815260200190600101906106a6565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561085f5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561084b5780601f106108205761010080835404028352916020019161084b565b820191906000526020600020905b81548152906001019060200180831161082e57829003601f168201915b505050505081526020019060010190610796565b5050505090509450945094509450509193509193565b600190565b6000816003541015801561088e5750600082115b6108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061368f565b60405180910390fd5b6000828152600460205260409020600b81015460ff16156108f2576002915050610a40565b80600701544311610907576000915050610a40565b8060080154431161091c576001915050610a40565b80600a0154816009015411158061093d575061093661058c565b8160090154105b1561094c576003915050610a40565b600281015461095f576004915050610a40565b600b810154610100900460ff161561097b576007915050610a40565b6002810154600054604080517fc1a287e20000000000000000000000000000000000000000000000000000000081529051610a2a939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b1580156109ed57600080fd5b505afa158015610a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2591908101906126f0565b611d93565b4210610a3a576006915050610a40565b60059150505b919050565b6000610a508261087a565b90506007816007811115610a6057fe5b1415610a98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061374f565b600082815260046020526040902060025473ffffffffffffffffffffffffffffffffffffffff16331480610b745750610acf610fa9565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610b05904390611dd9565b6040518363ffffffff1660e01b8152600401610b22929190613474565b60206040518083038186803b158015610b3a57600080fd5b505afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b7291908101906126f0565b105b610baa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136ef565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610cee5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610c1957fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610c4e57fe5b9060005260206000200154856005018581548110610c6857fe5b90600052602060002001866006018681548110610c8157fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610cb0959493929190613511565b600060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b505060019092019150610bda9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d1e919061359f565b60405180910390a1505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000604051610d5590613435565b60408051918290038220828201909152601282527f59414d20476f7665726e6f7220416c70686100000000000000000000000000006020909201919091527f63e44b07eb663d132f3b867c12624d91b2a07d728ab5358df3bb5d0d12341eb9610dbc611e1b565b30604051602001610dd094939291906135ad565b6040516020818303038152906040528051906020012090506000604051610df690613440565b604051908190038120610e0f91899089906020016135e2565b60405160208183030381529060405280519060200120905060008282604051602001610e3c929190613404565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610e79949392919061360a565b6020604051602081039080840390855afa158015610e9b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610f13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061372f565b610f1e818a8a611b55565b505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610f7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061377f565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600a90565b6ba18f07d736b90be55000000090565b60025473ffffffffffffffffffffffffffffffffffffffff16331461100a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061365f565b60008054604080517f0e18b681000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630e18b6819260048084019382900301818387803b15801561107157600080fd5b505af1158015611085573d6000803e3d6000fd5b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60006110b7610fa9565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe19033906110e5904390611dd9565b6040518363ffffffff1660e01b8152600401611102929190613459565b60206040518083038186803b15801561111a57600080fd5b505afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061115291908101906126f0565b101561118a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061371f565b8451865114801561119c575083518651145b80156111a9575082518651145b6111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136df565b8551611217576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061370f565b61121f610fa4565b86511115611259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136bf565b33600090815260056020526040902054801561130a57600061127a8261087a565b9050600181600781111561128a57fe5b14156112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061373f565b60008160078111156112d057fe5b1415611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136af565b505b600061131843610a25610875565b9050600061132882610a256104f8565b600380546001019055905061133b611fcb565b604051806101a0016040528060035481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301908051906020019061144592919061204d565b50608082015180516114619160048401916020909101906120d7565b5060a0820151805161147d91600584019160209091019061211e565b5060c08201518051611499916006840191602090910190612177565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160056000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e6040516115999998979695949392919061379d565b60405180910390a15193505050505b95945050505050565b60046115bc8261087a565b60078111156115c757fe5b146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061366f565b6000818152600460208181526040808420845482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191959461167994429473ffffffffffffffffffffffffffffffffffffffff90931693636a42b8f8938084019390829003018186803b1580156109ed57600080fd5b905060005b600383015481101561186a5761186283600301828154811061169c57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106116d157fe5b90600052602060002001548560050184815481106116eb57fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156117975780601f1061176c57610100808354040283529160200191611797565b820191906000526020600020905b81548152906001019060200180831161177a57829003601f168201915b50505050508660060185815481106117ab57fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156118575780601f1061182c57610100808354040283529160200191611857565b820191906000526020600020905b81548152906001019060200180831161183a57829003601f168201915b505050505086611e1f565b60010161167e565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610d1e90859084906138cb565b60405161058190613440565b6118b86121d0565b50600082815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b600561192c8261087a565b600781111561193757fe5b1461196e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061367f565b6000818152600460205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b6003820154811015611b195760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f9190849081106119eb57fe5b9060005260206000200154846003018481548110611a0557fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff9092169186908110611a3a57fe5b9060005260206000200154866005018681548110611a5457fe5b90600052602060002001876006018781548110611a6d57fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401611a9c959493929190613511565b6000604051808303818588803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b10919081019061270e565b506001016119ac565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611b49919061359f565b60405180910390a15050565b6001611b608361087a565b6007811115611b6b57fe5b14611ba2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061375f565b600082815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611c12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061369f565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611c6e918a91600401613474565b60206040518083038186803b158015611c8657600080fd5b505afa158015611c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cbe91908101906126f0565b90508315611cde57611cd4836009015482611d93565b6009840155611cf2565b611cec83600a015482611d93565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611d83908890889088908690613482565b60405180910390a1505050505050565b600082820183811015611dd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136cf565b9392505050565b600082821115611e15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061376f565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611e5a90889088908890889088906020016134b7565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611e8c919061359f565b60206040518083038186803b158015611ea457600080fd5b505afa158015611eb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611edc91908101906126d2565b15611f13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c4906136ff565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611f7190889088908890889088906004016134b7565b602060405180830381600087803b158015611f8b57600080fd5b505af1158015611f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fc391908101906126f0565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8280548282559060005260206000209081019282156120c7579160200282015b828111156120c757825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061206d565b506120d39291506121f0565b5090565b828054828255906000526020600020908101928215612112579160200282015b828111156121125782518255916020019190600101906120f7565b506120d392915061222c565b82805482825590600052602060002090810192821561216b579160200282015b8281111561216b578251805161215b918491602090910190612246565b509160200191906001019061213e565b506120d39291506122b3565b8280548282559060005260206000209081019282156121c4579160200282015b828111156121c457825180516121b4918491602090910190612246565b5091602001919060010190612197565b506120d39291506122d6565b604080516060810182526000808252602082018190529181019190915290565b6104fc91905b808211156120d35780547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001016121f6565b6104fc91905b808211156120d35760008155600101612232565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061228757805160ff1916838001178555612112565b8280016001018555821561211257918201828111156121125782518255916020019190600101906120f7565b6104fc91905b808211156120d35760006122cd82826122f9565b506001016122b9565b6104fc91905b808211156120d35760006122f082826122f9565b506001016122dc565b50805460018160011615610100020316600290046000825580601f1061231f575061233d565b601f01602090049060005260206000209081019061233d919061222c565b50565b803561191b81613a46565b600082601f83011261235c57600080fd5b813561236f61236a82613900565b6138d9565b9150818183526020840193506020810190508385602084028201111561239457600080fd5b60005b838110156123c057816123aa8882612340565b8452506020928301929190910190600101612397565b5050505092915050565b600082601f8301126123db57600080fd5b81356123e961236a82613900565b81815260209384019390925082018360005b838110156123c057813586016124118882612520565b84525060209283019291909101906001016123fb565b600082601f83011261243857600080fd5b813561244661236a82613900565b81815260209384019390925082018360005b838110156123c0578135860161246e8882612520565b8452506020928301929190910190600101612458565b600082601f83011261249557600080fd5b81356124a361236a82613900565b915081818352602084019350602081019050838560208402820111156124c857600080fd5b60005b838110156123c057816124de888261250a565b84525060209283019291909101906001016124cb565b803561191b81613a5a565b805161191b81613a5a565b803561191b81613a63565b805161191b81613a63565b600082601f83011261253157600080fd5b813561253f61236a82613921565b9150808252602083016020830185838301111561255b57600080fd5b6125668382846139dc565b50505092915050565b600082601f83011261258057600080fd5b815161258e61236a82613921565b915080825260208301602083018583830111156125aa57600080fd5b6125668382846139e8565b803561191b81613a6c565b6000602082840312156125d257600080fd5b60006125de8484612340565b949350505050565b600080600080600060a086880312156125fe57600080fd5b853567ffffffffffffffff81111561261557600080fd5b6126218882890161234b565b955050602086013567ffffffffffffffff81111561263e57600080fd5b61264a88828901612484565b945050604086013567ffffffffffffffff81111561266757600080fd5b61267388828901612427565b935050606086013567ffffffffffffffff81111561269057600080fd5b61269c888289016123ca565b925050608086013567ffffffffffffffff8111156126b957600080fd5b6126c588828901612520565b9150509295509295909350565b6000602082840312156126e457600080fd5b60006125de84846124ff565b60006020828403121561270257600080fd5b60006125de8484612515565b60006020828403121561272057600080fd5b815167ffffffffffffffff81111561273757600080fd5b6125de8482850161256f565b60006020828403121561275557600080fd5b60006125de848461250a565b6000806040838503121561277457600080fd5b6000612780858561250a565b925050602061279185828601612340565b9150509250929050565b600080604083850312156127ae57600080fd5b60006127ba858561250a565b9250506020612791858286016124f4565b600080600080600060a086880312156127e357600080fd5b60006127ef888861250a565b9550506020612800888289016124f4565b9450506040612811888289016125b5565b93505060606128228882890161250a565b92505060806126c58882890161250a565b600061283f838361286e565b505060200190565b6000611dd28383612a10565b600061283f83836129f6565b612868816139bf565b82525050565b61286881613986565b600061288282613979565b61288c818561397d565b935061289783613967565b8060005b838110156128c55781516128af8882612833565b97506128ba83613967565b92505060010161289b565b509495945050505050565b60006128db82613979565b6128e5818561397d565b9350836020820285016128f785613967565b8060005b8581101561293157848403895281516129148582612847565b945061291f83613967565b60209a909a01999250506001016128fb565b5091979650505050505050565b600061294982613979565b612953818561397d565b93508360208202850161296585613967565b8060005b8581101561293157848403895281516129828582612847565b945061298d83613967565b60209a909a0199925050600101612969565b60006129aa82613979565b6129b4818561397d565b93506129bf83613967565b8060005b838110156128c55781516129d78882612853565b97506129e283613967565b9250506001016129c3565b61286881613991565b612868816104fc565b612868612a0b826104fc565b6104fc565b6000612a1b82613979565b612a25818561397d565b9350612a358185602086016139e8565b612a3e81613a14565b9093019392505050565b600081546001811660008114612a655760018114612aa957612ae8565b607f6002830416612a76818761397d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612ae8565b60028204612ab7818761397d565b9550612ac28561396d565b60005b82811015612ae157815488820152600190910190602001612ac5565b8701945050505b505092915050565b612868816139c6565b612868816139d1565b6000612b0f60398361397d565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b6000612b6e60448361397d565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612bf360458361397d565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612c78600283610a40565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612cb160298361397d565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612d10602d8361397d565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612d6f60598361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612df460288361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612e5360118361397d565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612e8c604383610a40565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612f11602783610a40565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612f7060448361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ff5602f8361397d565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b600061305460448361397d565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b60006130d9602c8361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000613138603f8361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000613197602f8361397d565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b60006131f660588361397d565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b600061327b60368361397d565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b60006132da602a8361397d565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b600061333960158361397d565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b600061337260368361397d565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646581527f72206d75737420626520676f7620677561726469616e00000000000000000000602082015260400192915050565b805160608301906133d584826129ed565b5060208201516133e860208501826129ed565b50604082015161108560408501826129f6565b612868816139b9565b600061340f82612c6b565b915061341b82856129ff565b60208201915061342b82846129ff565b5060200192915050565b600061191b82612e7f565b600061191b82612f04565b6020810161191b828461286e565b60408101613467828561285f565b611dd260208301846129f6565b60408101613467828561286e565b60808101613490828761286e565b61349d60208301866129f6565b6134aa60408301856129ed565b6115a860608301846129f6565b60a081016134c5828861286e565b6134d260208301876129f6565b81810360408301526134e48186612a10565b905081810360608301526134f88185612a10565b905061350760808301846129f6565b9695505050505050565b60a0810161351f828861286e565b61352c60208301876129f6565b818103604083015261353e8186612a48565b905081810360608301526134f88185612a48565b608080825281016135638187612877565b90508181036020830152613577818661299f565b9050818103604083015261358b818561293e565b9050818103606083015261350781846128d0565b6020810161191b82846129f6565b608081016135bb82876129f6565b6135c860208301866129f6565b6135d560408301856129f6565b6115a8606083018461286e565b606081016135f082866129f6565b6135fd60208301856129f6565b6125de60408301846129ed565b6080810161361882876129f6565b61362560208301866133fb565b6134aa60408301856129f6565b6020810161191b8284612af0565b6020810161191b8284612af9565b60208082528101611dd28184612a10565b6020808252810161191b81612b02565b6020808252810161191b81612b61565b6020808252810161191b81612be6565b6020808252810161191b81612ca4565b6020808252810161191b81612d03565b6020808252810161191b81612d62565b6020808252810161191b81612de7565b6020808252810161191b81612e46565b6020808252810161191b81612f63565b6020808252810161191b81612fe8565b6020808252810161191b81613047565b6020808252810161191b816130cc565b6020808252810161191b8161312b565b6020808252810161191b8161318a565b6020808252810161191b816131e9565b6020808252810161191b8161326e565b6020808252810161191b816132cd565b6020808252810161191b8161332c565b6020808252810161191b81613365565b6060810161191b82846133c4565b61012081016137ac828c6129f6565b6137b9602083018b61285f565b81810360408301526137cb818a612877565b905081810360608301526137df818961299f565b905081810360808301526137f3818861293e565b905081810360a083015261380781876128d0565b905061381660c08301866129f6565b61382360e08301856129f6565b8181036101008301526138368184612a10565b9b9a5050505050505050505050565b6101208101613854828c6129f6565b613861602083018b61286e565b61386e604083018a6129f6565b61387b60608301896129f6565b61388860808301886129f6565b61389560a08301876129f6565b6138a260c08301866129f6565b6138af60e08301856129ed565b6138bd6101008301846129ed565b9a9950505050505050505050565b6040810161346782856129f6565b60405181810167ffffffffffffffff811182821017156138f857600080fd5b604052919050565b600067ffffffffffffffff82111561391757600080fd5b5060209081020190565b600067ffffffffffffffff82111561393857600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061191b826139a0565b151590565b80610a4081613a3c565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b600061191b825b600061191b82613986565b600061191b82613996565b82818337506000910152565b60005b83811015613a035781810151838201526020016139eb565b838111156110855750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6008811061233d57fe5b613a4f81613986565b811461233d57600080fd5b613a4f81613991565b613a4f816104fc565b613a4f816139b956fea365627a7a72315820218303ef2386f1fa91ee7e37e29da31238edade3024766d08759a8cc5fa211396c6578706572696d656e74616cf564736f6c634300050f0040

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

0000000000000000000000008b4f1616751117c38a0f84f9a146cca191ea3ec50000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d8521

-----Decoded View---------------
Arg [0] : timelock_ (address): 0x8b4f1616751117C38a0f84F9A146cca191ea3EC5
Arg [1] : yam_ (address): 0x0AaCfbeC6a24756c20D41914F2caba817C0d8521

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008b4f1616751117c38a0f84f9a146cca191ea3ec5
Arg [1] : 0000000000000000000000000aacfbec6a24756c20d41914f2caba817c0d8521


Deployed Bytecode Sourcemap

6254:14817:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9770:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9770:46:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;7230:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7230:71:0;;;:::i;:::-;;;;;;;;6327:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6327:50:0;;;:::i;:::-;;;;;;;;7519:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7519:23:0;;;:::i;:::-;;;;;;;;18142:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18142:141:0;;;;;;;;:::i;:::-;;9880:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9880:53:0;;;;;;;;:::i;10006:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10006:122:0;;;:::i;6519:80::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6519:80:0;;;:::i;16466:385::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16466:385:0;;;;;;;;:::i;:::-;;;;;;;;;;;7080:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7080:66:0;;;:::i;17054:1080::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17054:1080:0;;;;;;;;:::i;:::-;;;;;;;;15690:768;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15690:768:0;;;;;;;;:::i;7605:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7605:23:0;;;:::i;:::-;;;;;;;;18291:987;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18291:987:0;;;;;;;;:::i;20381:183::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20381:183:0;;;:::i;6896:77::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6896:77:0;;;:::i;6708:85::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6708:85:0;;;:::i;20183:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20183:190:0;;;:::i;7415:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7415:33:0;;;:::i;7684:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7684:28:0;;;:::i;11298:2387::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11298:2387:0;;;;;;;;:::i;13693:700::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13693:700:0;;;;;;;;:::i;10218:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10218:94:0;;;:::i;16859:187::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16859:187:0;;;;;;;;:::i;:::-;;;;;;;;15080:602;;;;;;;;;:::i;9770:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7230:71::-;7293:5;7230:71;;:::o;6327:50::-;;;;;;;;;;;;;;;;;;;:::o;7519:23::-;;;;;;:::o;18142:141::-;18233:42;18243:10;18255;18267:7;18233:9;:42::i;:::-;18142:141;;:::o;9880:53::-;;;;;;;;;;;;;:::o;10006:122::-;10048:80;;;;;;;;;;;;;;10006:122;:::o;6519:80::-;6581:15;6519:80;:::o;16466:385::-;16568:24;16607:20;16642:26;16683:24;16735:18;16756:9;:21;16766:10;16756:21;;;;;;;;;;;16735:42;;16796:1;:9;;16807:1;:8;;16817:1;:12;;16831:1;:11;;16788:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16466:385;;;;;:::o;7080:66::-;7142:1;7080:66;:::o;17054:1080::-;17137:13;17193:10;17176:13;;:27;;:45;;;;;17220:1;17207:10;:14;17176:45;17168:99;;;;;;;;;;;;;;;;;;;;;;17278:25;17306:21;;;:9;:21;;;;;17342:17;;;;;;17338:789;;;17383:22;17376:29;;;;;17338:789;17443:8;:19;;;17427:12;:35;17423:704;;17486:21;17479:28;;;;;17423:704;17545:8;:17;;;17529:12;:33;17525:602;;17586:20;17579:27;;;;;17525:602;17649:8;:21;;;17628:8;:17;;;:42;;:79;;;;17694:13;:11;:13::i;:::-;17674:8;:17;;;:33;17628:79;17624:503;;;17731:22;17724:29;;;;;17624:503;17775:12;;;;17771:356;;17816:23;17809:30;;;;;17771:356;17861:17;;;;;;;;;17857:270;;;17902:22;17895:29;;;;;17857:270;17972:12;;;;17986:8;;:23;;;;;;;;17965:45;;17972:12;17986:8;;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;17986:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17986:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17986:23:0;;;;;;;;;17965:6;:45::i;:::-;17946:15;:64;17942:185;;18034:21;18027:28;;;;;17942:185;18095:20;18088:27;;;17054:1080;;;;:::o;15690:768::-;15758:19;15780:17;15786:10;15780:5;:17::i;:::-;15758:39;-1:-1:-1;15825:22:0;15816:5;:31;;;;;;;;;;15808:98;;;;;;;;;;;;;;15919:25;15947:21;;;:9;:21;;;;;16001:8;;;;15987:10;:22;;:109;;;16077:19;:17;:19::i;:::-;16013:3;;;16031:17;;;;16013:3;;;;;:17;;16031;;;;16050:23;;16057:12;;16050:6;:23::i;:::-;16013:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16013:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16013:61:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16013:61:0;;;;;;;;;:83;15987:109;15979:169;;;;;;;;;;;;;;16161:17;;;:24;;;;16181:4;16161:24;;;:17;16196:209;16220:16;;;:23;16216:27;;16196:209;;;16265:8;;16292:16;;;:19;;16265:8;;;;;:26;;16292:16;16309:1;;16292:19;;;;;;;;;;;;;;;;16313:15;;;:18;;16292:19;;;;;16329:1;;16313:18;;;;;;;;;;;;;;16333:8;:19;;16353:1;16333:22;;;;;;;;;;;;;;;16357:8;:18;;16376:1;16357:21;;;;;;;;;;;;;;;16380:8;:12;;;16265:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16265:128:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16245:3:0;;;;;-1:-1:-1;16196:209:0;;-1:-1:-1;16196:209:0;;;16422:28;16439:10;16422:28;;;;;;;;;;;;;;;15690:768;;;:::o;7605:23::-;;;;;;:::o;18291:987::-;18463:23;10048:80;;;;;;;;;;;;;;;;18592:4;;;;;;;;;;;;;;;;;;18576:22;18617:12;:10;:12::i;:::-;18656:4;18513:163;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18513:163:0;;;18489:198;;;;;;18463:224;;18700:18;10260:52;;;;;;;;;;;;;;;18745:114;;18808:10;;18837:7;;18745:114;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18745:114:0;;;18721:149;;;;;;18700:170;;18883:14;18988:15;19022:10;18924:123;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18924:123:0;;;18900:158;;;;;;18883:175;;19071:17;19091:26;19101:6;19109:1;19112;19115;19091:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;19091:26:0;;;;;;-1:-1:-1;;19136:23:0;;;19128:83;;;;;;;;;;;;;;19229:41;19239:9;19250:10;19262:7;19229:9;:41::i;:::-;19222:48;;;;18291:987;;;;;:::o;20381:183::-;20457:8;;;;20443:10;:22;20435:89;;;;;;;;;;;;;;20535:8;:21;;;;;;20381:183::o;6896:77::-;6968:2;6896:77;:::o;6708:85::-;6776:14;6708:85;:::o;20183:190::-;20262:8;;;;20248:10;:22;20240:92;;;;;;;;;;;;;;20343:8;;;:22;;;;;;;;:8;;;;;:20;;:22;;;;;;;;;;:8;;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;20343:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20343:22:0;;;;20183:190::o;7415:33::-;;;;;;:::o;7684:28::-;;;;:::o;11298:2387::-;11530:7;11621:19;:17;:19::i;:::-;11563:3;;;;;;:17;;11581:10;;11593:23;;11600:12;;11593:6;:23::i;:::-;11563:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11563:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11563:54:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11563:54:0;;;;;;;;;:77;;11555:153;;;;;;;;;;;;;;11745:6;:13;11727:7;:14;:31;:70;;;;;11780:10;:17;11762:7;:14;:35;11727:70;:108;;;;;11819:9;:16;11801:7;:14;:34;11727:108;11719:189;;;;;;;;;;;;;;11927:14;;11919:76;;;;;;;;;;;;;;12032:23;:21;:23::i;:::-;12014:7;:14;:41;;12006:94;;;;;;;;;;;;;;12158:10;12113:24;12140:29;;;:17;:29;;;;;;12184:21;;12180:454;;12220:42;12265:23;12271:16;12265:5;:23::i;:::-;12220:68;-1:-1:-1;12341:20:0;12309:28;:52;;;;;;;;;;12301:153;;;;;;;;;;;;;;12507:21;12475:28;:53;;;;;;;;;;12467:155;;;;;;;;;;;;;;12180:454;;12646:18;12667:35;12674:12;12688:13;:11;:13::i;12667:35::-;12646:56;;12713:16;12732:34;12739:10;12751:14;:12;:14::i;12732:34::-;12779:13;:15;;;;;;12713:53;-1:-1:-1;12805:27:0;;:::i;:::-;12835:427;;;;;;;;12863:13;;12835:427;;;;12901:10;12835:427;;;;;;12931:1;12835:427;;;;12956:7;12835:427;;;;12986:6;12835:427;;;;13019:10;12835:427;;;;13055:9;12835:427;;;;13091:10;12835:427;;;;13126:8;12835:427;;;;13159:1;12835:427;;;;13189:1;12835:427;;;;13215:5;12835:427;;;;;;13245:5;12835:427;;;;;12805:457;;13303:11;13275:9;:25;13285:11;:14;;;13275:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13275:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13275:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13275:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13367:11;:14;;;13325:17;:39;13343:11;:20;;;13325:39;;;;;;;;;;;;;;;:56;;;;13399:246;13429:11;:14;;;13458:10;13483:7;13505:6;13526:10;13551:9;13575:10;13600:8;13623:11;13399:246;;;;;;;;;;;;;;;;;;;;;;;13663:14;;-1:-1:-1;;;;11298:2387:0;;;;;;;;:::o;13693:700::-;13789:23;13768:17;13774:10;13768:5;:17::i;:::-;:44;;;;;;;;;13760:125;;;;;;;;;;;;;;13896:25;13924:21;;;:9;:21;;;;;;;;13994:8;;:16;;;;;;;13924:21;;13896:25;13970:41;;13977:15;;13994:8;;;;;:14;;:16;;;;;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;13970:41:0;13956:55;-1:-1:-1;14027:9:0;14022:288;14046:16;;;:23;14042:27;;14022:288;;;14091:207;14124:8;:16;;14141:1;14124:19;;;;;;;;;;;;;;;;;;14162:15;;;:18;;14124:19;;;;;14178:1;;14162:18;;;;;;;;;;;;;;14199:8;:19;;14219:1;14199:22;;;;;;;;;;;;;;;;;;14091:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14199:22;14091:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14240:8;:18;;14259:1;14240:21;;;;;;;;;;;;;;;;;;14091:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14240:21;14091:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14280:3;14091:14;:207::i;:::-;14071:3;;14022:288;;;-1:-1:-1;14320:12:0;;;:18;;;14354:31;;;;;;14369:10;;14335:3;;14354:31;;10218:94;10260:52;;;;;;16859:187;16962:14;;:::i;:::-;-1:-1:-1;17001:21:0;;;;:9;:21;;;;;;;;:37;;;;;:30;;:37;;;;;;16994:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16859:187;;;;;:::o;15080:602::-;15195:20;15174:17;15180:10;15174:5;:17::i;:::-;:41;;;;;;;;;15166:123;;;;;;;;;;;;;;15300:25;15328:21;;;:9;:21;;;;;15360:17;;;:24;;;;;;;;15328:21;15395:236;15419:16;;;:23;15415:27;;15395:236;;;15464:8;;15498:15;;;:18;;15464:8;;;;;:27;;15498:15;15514:1;;15498:18;;;;;;;;;;;;;;15518:8;:16;;15535:1;15518:19;;;;;;;;;;;;;;;;;;15539:15;;;:18;;15518:19;;;;;15555:1;;15539:18;;;;;;;;;;;;;;15559:8;:19;;15579:1;15559:22;;;;;;;;;;;;;;;15583:8;:18;;15602:1;15583:21;;;;;;;;;;;;;;;15606:8;:12;;;15464:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15464:155:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15464:155:0;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;15464:155:0;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;15464:155:0;;;;;;;;;-1:-1:-1;15444:3:0;;15395:236;;;;15646:28;15663:10;15646:28;;;;;;;;;;;;;;;15080:602;;:::o;19286:889::-;19451:20;19430:17;19436:10;19430:5;:17::i;:::-;:41;;;;;;;;;19422:96;;;;;;;;;;;;;;19529:25;19557:21;;;:9;:21;;;;;;;;19615:24;;;;;:17;;;:24;;;;;;19658:16;;;;:25;19650:83;;;;;;;;;;;;;;19760:3;;19785:19;;;;19760:45;;;;;19744:13;;19760:3;;;:17;;:45;;19778:5;;19760:45;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19760:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19760:45:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;19760:45:0;;;;;;;;;19744:61;;19822:7;19818:185;;;19866:32;19873:8;:17;;;19892:5;19866:6;:32::i;:::-;19846:17;;;:52;19818:185;;;19955:36;19962:8;:21;;;19985:5;19955:6;:36::i;:::-;19931:21;;;:60;19818:185;20015:23;;20034:4;20015:23;;;;;;20049:25;;20015:23;20049:25;;;;;;;20085:13;;:21;;;20124:43;;;;;;20133:5;;20140:10;;20049:25;;20085:21;;20124:43;;;;;;;;;;19286:889;;;;;;:::o;20572:172::-;20633:7;20665:5;;;20689:6;;;;20681:36;;;;;;;;;;;;;;20735:1;20572:172;-1:-1:-1;;;20572:172:0:o;20752:152::-;20813:7;20846:1;20841;:6;;20833:40;;;;;;;;;;;;;;-1:-1:-1;20891:5:0;;;20752:152::o;20912:156::-;21025:9;20912:156;:::o;14401:671::-;14608:8;;14682:183;;14608:8;;;;;:27;;14682:183;;14717:6;;14748:5;;14778:9;;14812:4;;14841:3;;14682:183;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14682:183:0;;;14652:230;;;;;;14608:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14608:287:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14608:287:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14608:287:0;;;;;;;;;14607:288;14599:390;;;;;;;;;;;;;;15002:8;;:62;;;;;:8;;;;;:25;;:62;;15028:6;;15036:5;;15043:9;;15054:4;;15060:3;;15002:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15002:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15002:62:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15002:62:0;;;;;;;;;;14401:671;;;;;:::o;6254:14817::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6254:14817:0;;;;;;;-1:-1:-1;6254:14817:0;;;-1:-1:-1;6254:14817:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6254:14817:0;;;-1:-1:-1;6254:14817:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;6254:14817:0;;;-1:-1:-1;6254:14817:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;6254:14817:0;;;-1:-1:-1;6254:14817:0;:::i;:::-;;;;;;;;;-1:-1:-1;6254:14817:0;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1609:696;;1732:3;1725:4;1717:6;1713:17;1709:27;1699:2;;1750:1;1747;1740:12;1699:2;1787:6;1774:20;1809:86;1824:70;1887:6;1824:70;;1809:86;1923:21;;;1967:4;1955:17;;;;1800:95;;-1:-1;1980:14;;1955:17;2075:1;2060:239;2085:6;2082:1;2079:13;2060:239;;;2168:3;2155:17;2147:6;2143:30;2192:43;2231:3;2219:10;2192:43;;;2180:56;;-1:-1;2259:4;2250:14;;;;2278;;;;;2107:1;2100:9;2060:239;;2331:707;;2448:3;2441:4;2433:6;2429:17;2425:27;2415:2;;2466:1;2463;2456:12;2415:2;2503:6;2490:20;2525:80;2540:64;2597:6;2540:64;;2525:80;2516:89;;2622:5;2647:6;2640:5;2633:21;2677:4;2669:6;2665:17;2655:27;;2699:4;2694:3;2690:14;2683:21;;2752:6;2799:3;2791:4;2783:6;2779:17;2774:3;2770:27;2767:36;2764:2;;;2816:1;2813;2806:12;2764:2;2841:1;2826:206;2851:6;2848:1;2845:13;2826:206;;;2909:3;2931:37;2964:3;2952:10;2931:37;;;2919:50;;-1:-1;2992:4;2983:14;;;;3011;;;;;2873:1;2866:9;2826:206;;3046:124;3110:20;;3135:30;3110:20;3135:30;;3177:128;3252:13;;3270:30;3252:13;3270:30;;3312:130;3379:20;;3404:33;3379:20;3404:33;;3449:134;3527:13;;3545:33;3527:13;3545:33;;3591:432;;3688:3;3681:4;3673:6;3669:17;3665:27;3655:2;;3706:1;3703;3696:12;3655:2;3743:6;3730:20;3765:60;3780:44;3817:6;3780:44;;3765:60;3756:69;;3845:6;3838:5;3831:21;3881:4;3873:6;3869:17;3914:4;3907:5;3903:16;3949:3;3940:6;3935:3;3931:16;3928:25;3925:2;;;3966:1;3963;3956:12;3925:2;3976:41;4010:6;4005:3;4000;3976:41;;;3648:375;;;;;;;;4032:442;;4144:3;4137:4;4129:6;4125:17;4121:27;4111:2;;4162:1;4159;4152:12;4111:2;4192:6;4186:13;4214:64;4229:48;4270:6;4229:48;;4214:64;4205:73;;4298:6;4291:5;4284:21;4334:4;4326:6;4322:17;4367:4;4360:5;4356:16;4402:3;4393:6;4388:3;4384:16;4381:25;4378:2;;;4419:1;4416;4409:12;4378:2;4429:39;4461:6;4456:3;4451;4429:39;;5654:126;5719:20;;5744:31;5719:20;5744:31;;5787:241;;5891:2;5879:9;5870:7;5866:23;5862:32;5859:2;;;5907:1;5904;5897:12;5859:2;5942:1;5959:53;6004:7;5984:9;5959:53;;;5949:63;5853:175;-1:-1;;;;5853:175;6035:1415;;;;;;6328:3;6316:9;6307:7;6303:23;6299:33;6296:2;;;6345:1;6342;6335:12;6296:2;6380:31;;6431:18;6420:30;;6417:2;;;6463:1;6460;6453:12;6417:2;6483:78;6553:7;6544:6;6533:9;6529:22;6483:78;;;6473:88;;6359:208;6626:2;6615:9;6611:18;6598:32;6650:18;6642:6;6639:30;6636:2;;;6682:1;6679;6672:12;6636:2;6702:78;6772:7;6763:6;6752:9;6748:22;6702:78;;;6692:88;;6577:209;6845:2;6834:9;6830:18;6817:32;6869:18;6861:6;6858:30;6855:2;;;6901:1;6898;6891:12;6855:2;6921:84;6997:7;6988:6;6977:9;6973:22;6921:84;;;6911:94;;6796:215;7070:2;7059:9;7055:18;7042:32;7094:18;7086:6;7083:30;7080:2;;;7126:1;7123;7116:12;7080:2;7146:83;7221:7;7212:6;7201:9;7197:22;7146:83;;;7136:93;;7021:214;7294:3;7283:9;7279:19;7266:33;7319:18;7311:6;7308:30;7305:2;;;7351:1;7348;7341:12;7305:2;7371:63;7426:7;7417:6;7406:9;7402:22;7371:63;;;7361:73;;7245:195;6290:1160;;;;;;;;;7457:257;;7569:2;7557:9;7548:7;7544:23;7540:32;7537:2;;;7585:1;7582;7575:12;7537:2;7620:1;7637:61;7690:7;7670:9;7637:61;;7721:263;;7836:2;7824:9;7815:7;7811:23;7807:32;7804:2;;;7852:1;7849;7842:12;7804:2;7887:1;7904:64;7960:7;7940:9;7904:64;;7991:360;;8115:2;8103:9;8094:7;8090:23;8086:32;8083:2;;;8131:1;8128;8121:12;8083:2;8166:24;;8210:18;8199:30;;8196:2;;;8242:1;8239;8232:12;8196:2;8262:73;8327:7;8318:6;8307:9;8303:22;8262:73;;8358:241;;8462:2;8450:9;8441:7;8437:23;8433:32;8430:2;;;8478:1;8475;8468:12;8430:2;8513:1;8530:53;8575:7;8555:9;8530:53;;8876:366;;;8997:2;8985:9;8976:7;8972:23;8968:32;8965:2;;;9013:1;9010;9003:12;8965:2;9048:1;9065:53;9110:7;9090:9;9065:53;;;9055:63;;9027:97;9155:2;9173:53;9218:7;9209:6;9198:9;9194:22;9173:53;;;9163:63;;9134:98;8959:283;;;;;;9249:360;;;9367:2;9355:9;9346:7;9342:23;9338:32;9335:2;;;9383:1;9380;9373:12;9335:2;9418:1;9435:53;9480:7;9460:9;9435:53;;;9425:63;;9397:97;9525:2;9543:50;9585:7;9576:6;9565:9;9561:22;9543:50;;9616:733;;;;;;9783:3;9771:9;9762:7;9758:23;9754:33;9751:2;;;9800:1;9797;9790:12;9751:2;9835:1;9852:53;9897:7;9877:9;9852:53;;;9842:63;;9814:97;9942:2;9960:50;10002:7;9993:6;9982:9;9978:22;9960:50;;;9950:60;;9921:95;10047:2;10065:51;10108:7;10099:6;10088:9;10084:22;10065:51;;;10055:61;;10026:96;10153:2;10171:53;10216:7;10207:6;10196:9;10192:22;10171:53;;;10161:63;;10132:98;10261:3;10280:53;10325:7;10316:6;10305:9;10301:22;10280:53;;10357:173;;10444:46;10486:3;10478:6;10444:46;;;-1:-1;;10519:4;10510:14;;10437:93;10539:177;;10650:60;10706:3;10698:6;10650:60;;10915:173;;11002:46;11044:3;11036:6;11002:46;;11096:142;11187:45;11226:5;11187:45;;;11182:3;11175:58;11169:69;;;11245:103;11318:24;11336:5;11318:24;;11506:690;;11651:54;11699:5;11651:54;;;11718:86;11797:6;11792:3;11718:86;;;11711:93;;11825:56;11875:5;11825:56;;;11901:7;11929:1;11914:260;11939:6;11936:1;11933:13;11914:260;;;12006:6;12000:13;12027:63;12086:3;12071:13;12027:63;;;12020:70;;12107:60;12160:6;12107:60;;;12097:70;-1:-1;;11961:1;11954:9;11914:260;;;-1:-1;12187:3;;11630:566;-1:-1;;;;;11630:566;12231:888;;12386:59;12439:5;12386:59;;;12458:91;12542:6;12537:3;12458:91;;;12451:98;;12572:3;12614:4;12606:6;12602:17;12597:3;12593:27;12641:61;12696:5;12641:61;;;12722:7;12750:1;12735:345;12760:6;12757:1;12754:13;12735:345;;;12822:9;12816:4;12812:20;12807:3;12800:33;12867:6;12861:13;12889:74;12958:4;12943:13;12889:74;;;12881:82;;12980:65;13038:6;12980:65;;;13068:4;13059:14;;;;;12970:75;-1:-1;;12782:1;12775:9;12735:345;;;-1:-1;13093:4;;12365:754;-1:-1;;;;;;;12365:754;13156:896;;13313:60;13367:5;13313:60;;;13386:92;13471:6;13466:3;13386:92;;;13379:99;;13501:3;13543:4;13535:6;13531:17;13526:3;13522:27;13570:62;13626:5;13570:62;;;13652:7;13680:1;13665:348;13690:6;13687:1;13684:13;13665:348;;;13752:9;13746:4;13742:20;13737:3;13730:33;13797:6;13791:13;13819:76;13890:4;13875:13;13819:76;;;13811:84;;13912:66;13971:6;13912:66;;;14001:4;13992:14;;;;;13902:76;-1:-1;;13712:1;13705:9;13665:348;;14091:690;;14236:54;14284:5;14236:54;;;14303:86;14382:6;14377:3;14303:86;;;14296:93;;14410:56;14460:5;14410:56;;;14486:7;14514:1;14499:260;14524:6;14521:1;14518:13;14499:260;;;14591:6;14585:13;14612:63;14671:3;14656:13;14612:63;;;14605:70;;14692:60;14745:6;14692:60;;;14682:70;-1:-1;;14546:1;14539:9;14499:260;;14789:94;14856:21;14871:5;14856:21;;15001:113;15084:24;15102:5;15084:24;;15121:152;15222:45;15242:24;15260:5;15242:24;;;15222:45;;15280:343;;15390:38;15422:5;15390:38;;;15440:70;15503:6;15498:3;15440:70;;;15433:77;;15515:52;15560:6;15555:3;15548:4;15541:5;15537:16;15515:52;;;15588:29;15610:6;15588:29;;;15579:39;;;;15370:253;-1:-1;;;15370:253;15975:818;;16092:5;16086:12;16126:1;16115:9;16111:17;16139:1;16134:247;;;;16392:1;16387:400;;;;16104:683;;16134:247;16212:4;16208:1;16197:9;16193:17;16189:28;16231:70;16294:6;16289:3;16231:70;;;16335:9;16320:25;;16308:38;;16224:77;-1:-1;;16369:4;16360:14;;;-1:-1;16134:247;;16387:400;16456:1;16445:9;16441:17;16472:70;16535:6;16530:3;16472:70;;;16465:77;;16564:37;16595:5;16564:37;;;16617:1;16625:130;16639:6;16636:1;16633:13;16625:130;;;16698:14;;16685:11;;;16678:35;16745:1;16732:15;;;;16661:4;16654:12;16625:130;;;16769:11;;;-1:-1;;;16104:683;;16062:731;;;;;;16801:176;16909:62;16965:5;16909:62;;17157:156;17255:52;17301:5;17255:52;;19203:394;;19363:67;19427:2;19422:3;19363:67;;;19463:34;19443:55;;19532:27;19527:2;19518:12;;19511:49;19588:2;19579:12;;19349:248;-1:-1;;19349:248;19606:442;;19766:67;19830:2;19825:3;19766:67;;;19866:34;19846:55;;19935:34;19930:2;19921:12;;19914:56;20004:6;19999:2;19990:12;;19983:28;20039:2;20030:12;;19752:296;-1:-1;;19752:296;20057:443;;20217:67;20281:2;20276:3;20217:67;;;20317:34;20297:55;;20386:34;20381:2;20372:12;;20365:56;20455:7;20450:2;20441:12;;20434:29;20491:2;20482:12;;20203:297;-1:-1;;20203:297;20509:398;;20687:84;20769:1;20764:3;20687:84;;;20804:66;20784:87;;20899:1;20890:11;;20673:234;-1:-1;;20673:234;20916:378;;21076:67;21140:2;21135:3;21076:67;;;21176:34;21156:55;;21245:11;21240:2;21231:12;;21224:33;21285:2;21276:12;;21062:232;-1:-1;;21062:232;21303:382;;21463:67;21527:2;21522:3;21463:67;;;21563:34;21543:55;;21632:15;21627:2;21618:12;;21611:37;21676:2;21667:12;;21449:236;-1:-1;;21449:236;21694:463;;21854:67;21918:2;21913:3;21854:67;;;21954:34;21934:55;;22023:34;22018:2;22009:12;;22002:56;22092:27;22087:2;22078:12;;22071:49;22148:2;22139:12;;21840:317;-1:-1;;21840:317;22166:377;;22326:67;22390:2;22385:3;22326:67;;;22426:34;22406:55;;22495:10;22490:2;22481:12;;22474:32;22534:2;22525:12;;22312:231;-1:-1;;22312:231;22552:317;;22712:67;22776:2;22771:3;22712:67;;;22812:19;22792:40;;22860:2;22851:12;;22698:171;-1:-1;;22698:171;22878:477;;23056:85;23138:2;23133:3;23056:85;;;23174:34;23154:55;;23243:34;23238:2;23229:12;;23222:56;23312:5;23307:2;23298:12;;23291:27;23346:2;23337:12;;23042:313;-1:-1;;23042:313;23364:412;;23542:85;23624:2;23619:3;23542:85;;;23660:34;23640:55;;23729:9;23724:2;23715:12;;23708:31;23767:2;23758:12;;23528:248;-1:-1;;23528:248;23785:442;;23945:67;24009:2;24004:3;23945:67;;;24045:34;24025:55;;24114:34;24109:2;24100:12;;24093:56;24183:6;24178:2;24169:12;;24162:28;24218:2;24209:12;;23931:296;-1:-1;;23931:296;24236:384;;24396:67;24460:2;24455:3;24396:67;;;24496:34;24476:55;;24565:17;24560:2;24551:12;;24544:39;24611:2;24602:12;;24382:238;-1:-1;;24382:238;24629:442;;24789:67;24853:2;24848:3;24789:67;;;24889:34;24869:55;;24958:34;24953:2;24944:12;;24937:56;25027:6;25022:2;25013:12;;25006:28;25062:2;25053:12;;24775:296;-1:-1;;24775:296;25080:381;;25240:67;25304:2;25299:3;25240:67;;;25340:34;25320:55;;25409:14;25404:2;25395:12;;25388:36;25452:2;25443:12;;25226:235;-1:-1;;25226:235;25470:400;;25630:67;25694:2;25689:3;25630:67;;;25730:34;25710:55;;25799:33;25794:2;25785:12;;25778:55;25861:2;25852:12;;25616:254;-1:-1;;25616:254;25879:384;;26039:67;26103:2;26098:3;26039:67;;;26139:34;26119:55;;26208:17;26203:2;26194:12;;26187:39;26254:2;26245:12;;26025:238;-1:-1;;26025:238;26272:462;;26432:67;26496:2;26491:3;26432:67;;;26532:34;26512:55;;26601:34;26596:2;26587:12;;26580:56;26670:26;26665:2;26656:12;;26649:48;26725:2;26716:12;;26418:316;-1:-1;;26418:316;26743:391;;26903:67;26967:2;26962:3;26903:67;;;27003:34;26983:55;;27072:24;27067:2;27058:12;;27051:46;27125:2;27116:12;;26889:245;-1:-1;;26889:245;27143:379;;27303:67;27367:2;27362:3;27303:67;;;27403:34;27383:55;;27472:12;27467:2;27458:12;;27451:34;27513:2;27504:12;;27289:233;-1:-1;;27289:233;27531:321;;27691:67;27755:2;27750:3;27691:67;;;27791:23;27771:44;;27843:2;27834:12;;27677:175;-1:-1;;27677:175;27861:391;;28021:67;28085:2;28080:3;28021:67;;;28121:34;28101:55;;28190:24;28185:2;28176:12;;28169:46;28243:2;28234:12;;28007:245;-1:-1;;28007:245;28327:624;28538:23;;28468:4;28459:14;;;28567:57;28463:3;28538:23;28567:57;;;28488:142;28706:4;28699:5;28695:16;28689:23;28718:57;28769:4;28764:3;28760:14;28746:12;28718:57;;;28640:141;28855:4;28848:5;28844:16;28838:23;28867:63;28924:4;28919:3;28915:14;28901:12;28867:63;;29188:107;29267:22;29283:5;29267:22;;29302:650;;29557:148;29701:3;29557:148;;;29550:155;;29716:75;29787:3;29778:6;29716:75;;;29813:2;29808:3;29804:12;29797:19;;29827:75;29898:3;29889:6;29827:75;;;-1:-1;29924:2;29915:12;;29538:414;-1:-1;;29538:414;29959:372;;30158:148;30302:3;30158:148;;30338:372;;30537:148;30681:3;30537:148;;30717:213;30835:2;30820:18;;30849:71;30824:9;30893:6;30849:71;;30937:340;31091:2;31076:18;;31105:79;31080:9;31157:6;31105:79;;;31195:72;31263:2;31252:9;31248:18;31239:6;31195:72;;31284:324;31430:2;31415:18;;31444:71;31419:9;31488:6;31444:71;;31615:535;31811:3;31796:19;;31826:71;31800:9;31870:6;31826:71;;;31908:72;31976:2;31965:9;31961:18;31952:6;31908:72;;;31991:66;32053:2;32042:9;32038:18;32029:6;31991:66;;;32068:72;32136:2;32125:9;32121:18;32112:6;32068:72;;32157:831;32425:3;32410:19;;32440:71;32414:9;32484:6;32440:71;;;32522:72;32590:2;32579:9;32575:18;32566:6;32522:72;;;32642:9;32636:4;32632:20;32627:2;32616:9;32612:18;32605:48;32667:78;32740:4;32731:6;32667:78;;;32659:86;;32793:9;32787:4;32783:20;32778:2;32767:9;32763:18;32756:48;32818:76;32889:4;32880:6;32818:76;;;32810:84;;32905:73;32973:3;32962:9;32958:19;32949:6;32905:73;;;32396:592;;;;;;;;;32995:819;33257:3;33242:19;;33272:71;33246:9;33316:6;33272:71;;;33354:72;33422:2;33411:9;33407:18;33398:6;33354:72;;;33474:9;33468:4;33464:20;33459:2;33448:9;33444:18;33437:48;33499:75;33569:4;33560:6;33499:75;;;33491:83;;33622:9;33616:4;33612:20;33607:2;33596:9;33592:18;33585:48;33647:73;33715:4;33706:6;33647:73;;33821:1183;34245:3;34260:47;;;34230:19;;34321:108;34230:19;34415:6;34321:108;;;34313:116;;34477:9;34471:4;34467:20;34462:2;34451:9;34447:18;34440:48;34502:108;34605:4;34596:6;34502:108;;;34494:116;;34658:9;34652:4;34648:20;34643:2;34632:9;34628:18;34621:48;34683:120;34798:4;34789:6;34683:120;;;34675:128;;34851:9;34845:4;34841:20;34836:2;34825:9;34821:18;34814:48;34876:118;34989:4;34980:6;34876:118;;35011:213;35129:2;35114:18;;35143:71;35118:9;35187:6;35143:71;;35231:547;35433:3;35418:19;;35448:71;35422:9;35492:6;35448:71;;;35530:72;35598:2;35587:9;35583:18;35574:6;35530:72;;;35613;35681:2;35670:9;35666:18;35657:6;35613:72;;;35696;35764:2;35753:9;35749:18;35740:6;35696:72;;35785:423;35953:2;35938:18;;35967:71;35942:9;36011:6;35967:71;;;36049:72;36117:2;36106:9;36102:18;36093:6;36049:72;;;36132:66;36194:2;36183:9;36179:18;36170:6;36132:66;;36215:539;36413:3;36398:19;;36428:71;36402:9;36472:6;36428:71;;;36510:68;36574:2;36563:9;36559:18;36550:6;36510:68;;;36589:72;36657:2;36646:9;36642:18;36633:6;36589:72;;36761:263;36904:2;36889:18;;36918:96;36893:9;36987:6;36918:96;;37291:243;37424:2;37409:18;;37438:86;37413:9;37497:6;37438:86;;37541:293;37675:2;37689:47;;;37660:18;;37750:74;37660:18;37810:6;37750:74;;37841:407;38032:2;38046:47;;;38017:18;;38107:131;38017:18;38107:131;;38255:407;38446:2;38460:47;;;38431:18;;38521:131;38431:18;38521:131;;38669:407;38860:2;38874:47;;;38845:18;;38935:131;38845:18;38935:131;;39083:407;39274:2;39288:47;;;39259:18;;39349:131;39259:18;39349:131;;39497:407;39688:2;39702:47;;;39673:18;;39763:131;39673:18;39763:131;;39911:407;40102:2;40116:47;;;40087:18;;40177:131;40087:18;40177:131;;40325:407;40516:2;40530:47;;;40501:18;;40591:131;40501:18;40591:131;;40739:407;40930:2;40944:47;;;40915:18;;41005:131;40915:18;41005:131;;41153:407;41344:2;41358:47;;;41329:18;;41419:131;41329:18;41419:131;;41567:407;41758:2;41772:47;;;41743:18;;41833:131;41743:18;41833:131;;41981:407;42172:2;42186:47;;;42157:18;;42247:131;42157:18;42247:131;;42395:407;42586:2;42600:47;;;42571:18;;42661:131;42571:18;42661:131;;42809:407;43000:2;43014:47;;;42985:18;;43075:131;42985:18;43075:131;;43223:407;43414:2;43428:47;;;43399:18;;43489:131;43399:18;43489:131;;43637:407;43828:2;43842:47;;;43813:18;;43903:131;43813:18;43903:131;;44051:407;44242:2;44256:47;;;44227:18;;44317:131;44227:18;44317:131;;44465:407;44656:2;44670:47;;;44641:18;;44731:131;44641:18;44731:131;;44879:407;45070:2;45084:47;;;45055:18;;45145:131;45055:18;45145:131;;45293:407;45484:2;45498:47;;;45469:18;;45559:131;45469:18;45559:131;;45707:309;45873:2;45858:18;;45887:119;45862:9;45979:6;45887:119;;46243:1847;46835:3;46820:19;;46850:71;46824:9;46894:6;46850:71;;;46932:80;47008:2;46997:9;46993:18;46984:6;46932:80;;;47060:9;47054:4;47050:20;47045:2;47034:9;47030:18;47023:48;47085:108;47188:4;47179:6;47085:108;;;47077:116;;47241:9;47235:4;47231:20;47226:2;47215:9;47211:18;47204:48;47266:108;47369:4;47360:6;47266:108;;;47258:116;;47423:9;47417:4;47413:20;47407:3;47396:9;47392:19;47385:49;47448:120;47563:4;47554:6;47448:120;;;47440:128;;47617:9;47611:4;47607:20;47601:3;47590:9;47586:19;47579:49;47642:118;47755:4;47746:6;47642:118;;;47634:126;;47771:73;47839:3;47828:9;47824:19;47815:6;47771:73;;;47855;47923:3;47912:9;47908:19;47899:6;47855:73;;;47977:9;47971:4;47967:20;47961:3;47950:9;47946:19;47939:49;48002:78;48075:4;48066:6;48002:78;;;47994:86;46806:1284;-1:-1;;;;;;;;;;;46806:1284;48097:1083;48427:3;48412:19;;48442:71;48416:9;48486:6;48442:71;;;48524:72;48592:2;48581:9;48577:18;48568:6;48524:72;;;48607;48675:2;48664:9;48660:18;48651:6;48607:72;;;48690;48758:2;48747:9;48743:18;48734:6;48690:72;;;48773:73;48841:3;48830:9;48826:19;48817:6;48773:73;;;48857;48925:3;48914:9;48910:19;48901:6;48857:73;;;48941;49009:3;48998:9;48994:19;48985:6;48941:73;;;49025:67;49087:3;49076:9;49072:19;49063:6;49025:67;;;49103;49165:3;49154:9;49150:19;49141:6;49103:67;;;48398:782;;;;;;;;;;;;;49187:324;49333:2;49318:18;;49347:71;49322:9;49391:6;49347:71;;49518:256;49580:2;49574:9;49606:17;;;49681:18;49666:34;;49702:22;;;49663:62;49660:2;;;49738:1;49735;49728:12;49660:2;49754;49747:22;49558:216;;-1:-1;49558:216;49781:304;;49940:18;49932:6;49929:30;49926:2;;;49972:1;49969;49962:12;49926:2;-1:-1;50007:4;49995:17;;;50060:15;;49863:222;51036:317;;51175:18;51167:6;51164:30;51161:2;;;51207:1;51204;51197:12;51161:2;-1:-1;51338:4;51274;51251:17;;;;51270:9;51247:33;51328:15;;51098:255;52342:151;52466:4;52457:14;;52414:79;52985:157;;53079:14;;;53121:4;53108:18;;;53038:104;53314:137;53417:12;;53388:63;54879:178;54997:19;;;55046:4;55037:14;;54990:67;56457:91;;56519:24;56537:5;56519:24;;56555:85;56621:13;56614:21;;56597:43;56726:140;56805:5;56811:50;56805:5;56811:50;;56873:121;56946:42;56935:54;;56918:76;57080:81;57151:4;57140:16;;57123:38;57168:129;;57255:37;57286:5;57304:171;;57408:62;57464:5;57408:62;;57925:140;;58019:41;58054:5;58019:41;;58316:145;58397:6;58392:3;58387;58374:30;-1:-1;58453:1;58435:16;;58428:27;58367:94;58470:268;58535:1;58542:101;58556:6;58553:1;58550:13;58542:101;;;58623:11;;;58617:18;58604:11;;;58597:39;58578:2;58571:10;58542:101;;;58658:6;58655:1;58652:13;58649:2;;;-1:-1;;58723:1;58705:16;;58698:27;58519:219;58827:97;58915:2;58895:14;58911:7;58891:28;;58875:49;58932:108;59018:1;59011:5;59008:12;58998:2;;59024:9;59047:117;59116:24;59134:5;59116:24;;;59109:5;59106:35;59096:2;;59155:1;59152;59145:12;59171:111;59237:21;59252:5;59237:21;;59289:117;59358:24;59376:5;59358:24;;59537:113;59604:22;59620:5;59604:22;

Swarm Source

bzzr://218303ef2386f1fa91ee7e37e29da31238edade3024766d08759a8cc5fa21139

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.