ETH Price: $3,315.04 (-3.46%)
Gas: 17 Gwei

Contract

0x5e4be8Bc9637f0EAA1A755019e06A68ce081D58F
 
Transaction Hash
Method
Block
From
To
Value
Transfer184161622023-10-23 23:10:59253 days ago1698102659IN
Uniswap V2: UNI Governance Contract
0.000001 ETH0.0016648179.27707504
Transfer184161552023-10-23 23:09:35253 days ago1698102575IN
Uniswap V2: UNI Governance Contract
0.00099999 ETH0.0015272872.72795683
Execute161034132022-12-03 9:31:59578 days ago1670059919IN
Uniswap V2: UNI Governance Contract
0 ETH0.0004469112
Cast Vote160622272022-11-27 15:29:59583 days ago1669562999IN
Uniswap V2: UNI Governance Contract
0 ETH0.0003023410.6084544
Cast Vote126542362021-06-17 20:56:461111 days ago1623963406IN
Uniswap V2: UNI Governance Contract
0 ETH0.0007959612
Cast Vote126506062021-06-17 7:26:541112 days ago1623914814IN
Uniswap V2: UNI Governance Contract
0 ETH0.0007089710
Cast Vote126474072021-06-16 19:26:521112 days ago1623871612IN
Uniswap V2: UNI Governance Contract
0 ETH0.0019235729
Cast Vote126472512021-06-16 18:49:561112 days ago1623869396IN
Uniswap V2: UNI Governance Contract
0 ETH0.0009286214
Cast Vote126460322021-06-16 14:29:561112 days ago1623853796IN
Uniswap V2: UNI Governance Contract
0 ETH0.0005969718
Cast Vote126460322021-06-16 14:29:561112 days ago1623853796IN
Uniswap V2: UNI Governance Contract
0 ETH0.0011276117
Cast Vote126454282021-06-16 12:14:511113 days ago1623845691IN
Uniswap V2: UNI Governance Contract
0 ETH0.0008622913.00000145
Cast Vote126452552021-06-16 11:33:561113 days ago1623843236IN
Uniswap V2: UNI Governance Contract
0 ETH0.00078811.88000216
Cast Vote126438252021-06-16 6:11:351113 days ago1623823895IN
Uniswap V2: UNI Governance Contract
0 ETH0.0003316510
Cast Vote126438242021-06-16 6:11:031113 days ago1623823863IN
Uniswap V2: UNI Governance Contract
0 ETH0.0006889710
Cast Vote126288582021-06-13 22:37:181115 days ago1623623838IN
Uniswap V2: UNI Governance Contract
0 ETH0.0006964610.5
Cast Vote126286312021-06-13 21:47:411115 days ago1623620861IN
Uniswap V2: UNI Governance Contract
0 ETH0.0006898320.8
Cast Vote126286282021-06-13 21:46:371115 days ago1623620797IN
Uniswap V2: UNI Governance Contract
0 ETH0.0013929321
Cast Vote126281462021-06-13 19:58:311115 days ago1623614311IN
Uniswap V2: UNI Governance Contract
0 ETH0.0013923915
Cast Vote126278532021-06-13 18:49:171115 days ago1623610157IN
Uniswap V2: UNI Governance Contract
0 ETH0.000645259
Cast Vote126277862021-06-13 18:34:561115 days ago1623609296IN
Uniswap V2: UNI Governance Contract
0 ETH0.0014195619.8
Cast Vote126274922021-06-13 17:27:551115 days ago1623605275IN
Uniswap V2: UNI Governance Contract
0 ETH0.000788411.00000145
Cast Vote126272002021-06-13 16:25:051115 days ago1623601505IN
Uniswap V2: UNI Governance Contract
0 ETH0.0010037314
Cast Vote126269402021-06-13 15:29:411115 days ago1623598181IN
Uniswap V2: UNI Governance Contract
0 ETH0.0007527910.5
Cast Vote126269272021-06-13 15:25:161115 days ago1623597916IN
Uniswap V2: UNI Governance Contract
0 ETH0.0007527910.5
Cast Vote126269242021-06-13 15:24:521115 days ago1623597892IN
Uniswap V2: UNI Governance Contract
0 ETH0.0007527910.5
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.16+commit.9c3226ce

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-09-16
*/

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

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

contract GovernorAlpha {
    /// @notice The name of this contract
    string public constant name = "Uniswap 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 pure returns (uint) { return 40_000_000e18; } // 4% of Uni

    /// @notice The number of votes required in order for a voter to become a proposer
    function proposalThreshold() public pure returns (uint) { return 10_000_000e18; } // 1% of Uni

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

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

    /// @notice The duration of voting on a proposal, in blocks
    function votingPeriod() public pure returns (uint) { return 40_320; } // ~7 days in blocks (assuming 15s blocks)

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

    /// @notice The address of the Uniswap governance token
    UniInterface public uni;

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

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

        /// @notice Creator of the proposal
        address proposer;

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

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

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

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

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

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

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

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

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

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

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

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

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

        /// @notice Whether or not the voter supports the proposal
        bool support;

        /// @notice The number of votes the voter had, which were cast
        uint96 votes;
    }

    /// @notice 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 (uint => Proposal) public proposals;

    /// @notice The latest proposal for each proposer
    mapping (address => uint) 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(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startBlock, uint endBlock, string description);

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

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

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

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

    constructor(address timelock_, address uni_) public {
        timelock = TimelockInterface(timelock_);
        uni = UniInterface(uni_);
    }

    function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) {
        require(uni.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");

        uint 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");
        }

        uint startBlock = add256(block.number, votingDelay());
        uint 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(uint proposalId) public {
        require(state(proposalId) == ProposalState.Succeeded, "GovernorAlpha::queue: proposal can only be queued if it is succeeded");
        Proposal storage proposal = proposals[proposalId];
        uint eta = add256(block.timestamp, timelock.delay());
        for (uint 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, uint value, string memory signature, bytes memory data, uint 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(uint 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 (uint 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(uint proposalId) public {
        ProposalState state = state(proposalId);
        require(state != ProposalState.Executed, "GovernorAlpha::cancel: cannot cancel executed proposal");

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

        proposal.canceled = true;
        for (uint 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(uint 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(uint proposalId, address voter) public view returns (Receipt memory) {
        return proposals[proposalId].receipts[voter];
    }

    function state(uint 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(uint proposalId, bool support) public {
        return _castVote(msg.sender, proposalId, support);
    }

    function castVoteBySig(uint 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, uint 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");
        uint96 votes = uni.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 add256(uint256 a, uint256 b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "addition overflow");
        return c;
    }

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

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

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

interface UniInterface {
    function getPriorVotes(address account, uint blockNumber) external view returns (uint96);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"timelock_","type":"address"},{"internalType":"address","name":"uni_","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":[{"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":"uint96","name":"votes","type":"uint96"}],"internalType":"struct GovernorAlpha.Receipt","name":"","type":"tuple"}],"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":"pure","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":"pure","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":"uni","outputs":[{"internalType":"contract UniInterface","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"}]

60806040523480156200001157600080fd5b50604051620039b4380380620039b4833981016040819052620000349162000079565b600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055620000e4565b80516200007381620000ca565b92915050565b600080604083850312156200008d57600080fd5b60006200009b858562000066565b9250506020620000ae8582860162000066565b9150509250929050565b60006001600160a01b03821662000073565b620000d581620000b8565b8114620000e157600080fd5b50565b6138c080620000f46000396000f3fe6080604052600436106101755760003560e01c80634634c61f116100cb578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103d0578063edc9af95146103fd578063fe0d94c11461041257610175565b8063da95691a1461037b578063ddf0b0091461039b578063deaaa7cc146103bb57610175565b8063b58131b0116100b0578063b58131b01461032f578063d33219b414610344578063da35c6641461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a6101953660046125cf565b610425565b6040516101af99989796959493929190613628565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af9190613395565b3480156101e657600080fd5b506101ef610492565b6040516101af9190613451565b34801561020857600080fd5b5061021c610217366004612627565b6104cb565b005b34801561022a57600080fd5b506101cd61023936600461244c565b6104da565b34801561024a57600080fd5b506101cd6104ec565b34801561025f57600080fd5b506101cd610503565b34801561027457600080fd5b506102886102833660046125cf565b610512565b6040516101af9493929190613348565b3480156102a457600080fd5b506101cd6107ea565b3480156102b957600080fd5b506102cd6102c83660046125cf565b6107ef565b6040516101af9190613443565b3480156102e657600080fd5b5061021c6102f53660046125cf565b6109ba565b34801561030657600080fd5b5061021c610315366004612657565b610c8c565b34801561032657600080fd5b506101cd610e6e565b34801561033b57600080fd5b506101cd610e73565b34801561035057600080fd5b50610359610e82565b6040516101af9190613435565b34801561037257600080fd5b506101cd610e9e565b34801561038757600080fd5b506101cd610396366004612472565b610ea4565b3480156103a757600080fd5b5061021c6103b63660046125cf565b6113b5565b3480156103c757600080fd5b506101cd6116ac565b3480156103dc57600080fd5b506103f06103eb3660046125ed565b6116b8565b6040516101af9190613572565b34801561040957600080fd5b50610359611739565b61021c6104203660046125cf565b611755565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104d6338383611989565b5050565b60046020526000908152604090205481565b6040516104f890613239565b604051809103902081565b6a211654585005212800000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610576575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f357602002820191906000526020600020905b8154815260200190600101908083116105df575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b820191906000526020600020905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001906001019061061b565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b50505050508152602001906001019061070b565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108035750600082115b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613482565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108675760029150506109b5565b8060070154431161087c5760009150506109b5565b806008015443116108915760019150506109b5565b80600a015481600901541115806108b257506108ab610503565b8160090154105b156108c15760039150506109b5565b60028101546108d45760049150506109b5565b600b810154610100900460ff16156108f05760079150506109b5565b6002810154600054604080517fc1a287e2000000000000000000000000000000000000000000000000000000008152905161099f939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099a919081019061257c565b611c14565b42106109af5760069150506109b5565b60059150505b919050565b60006109c5826107ef565b905060078160078111156109d557fe5b1415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613542565b6000828152600360205260409020610a23610e73565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a59904390611c5a565b6040518363ffffffff1660e01b8152600401610a7692919061326a565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac691908101906126bf565b6bffffffffffffffffffffffff1610610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134e2565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c4f5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b7a57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610baf57fe5b9060005260206000200154856005018581548110610bc957fe5b90600052602060002001866006018681548110610be257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c11959493929190613307565b600060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505060019092019150610b3b9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7f9190613395565b60405180910390a1505050565b6000604051610c9a90613239565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d01611c9c565b30604051602001610d1594939291906133a3565b6040516020818303038152906040528051906020012090506000604051610d3b90613244565b604051908190038120610d5491899089906020016133d8565b60405160208183030381529060405280519060200120905060008282604051602001610d81929190613208565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dbe9493929190613400565b6020604051602081039080840390855afa158015610de0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613522565b610e63818a8a611989565b505050505050505050565b600a90565b6a084595161401484a00000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610eae610e73565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610edc904390611c5a565b6040518363ffffffff1660e01b8152600401610ef992919061324f565b60206040518083038186803b158015610f1157600080fd5b505afa158015610f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4991908101906126bf565b6bffffffffffffffffffffffff1611610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613512565b84518651148015610fa0575083518651145b8015610fad575082518651145b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134d2565b855161101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613502565b611023610e6e565b8651111561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134b2565b33600090815260046020526040902054801561110e57600061107e826107ef565b9050600181600781111561108e57fe5b14156110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613532565b60008160078111156110d457fe5b141561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134a2565b505b600061111c4361099a6107ea565b9050600061112c8261099a61048b565b600280546001019055905061113f611e4c565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611249929190611ece565b5060808201518051611265916004840191602090910190611f58565b5060a08201518051611281916005840191602090910190611f9f565b5060c0820151805161129d916006840191602090910190611ff8565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161139d99989796959493929190613580565b60405180910390a15193505050505b95945050505050565b60046113c0826107ef565b60078111156113cb57fe5b14611402576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613462565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148193429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096257600080fd5b905060005b60038301548110156116725761166a8360030182815481106114a457fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114d957fe5b90600052602060002001548560050184815481106114f357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b50505050508660060185815481106115b357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b505050505086611ca0565b600101611486565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7f90859084906136ae565b6040516104f890613244565b6116c0612051565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6005611760826107ef565b600781111561176b57fe5b146117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613472565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b600382015481101561194d5760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f91908490811061181f57fe5b906000526020600020015484600301848154811061183957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061186e57fe5b906000526020600020015486600501868154811061188857fe5b906000526020600020018760060187815481106118a157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118d0959493929190613307565b6000604051808303818588803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611944919081019061259a565b506001016117e0565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161197d9190613395565b60405180910390a15050565b6001611994836107ef565b600781111561199f57fe5b146119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613552565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613492565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611aa2918a9160040161326a565b60206040518083038186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af291908101906126bf565b90508315611b2057611b168360090154826bffffffffffffffffffffffff16611c14565b6009840155611b42565b611b3c83600a0154826bffffffffffffffffffffffff16611c14565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c04908890889088908690613278565b60405180910390a1505050505050565b600082820183811015611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134c2565b9392505050565b600082821115611c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613562565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611cdb90889088908890889088906020016132ad565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611d0d9190613395565b60206040518083038186803b158015611d2557600080fd5b505afa158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5d919081019061255e565b15611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134f2565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611df290889088908890889088906004016132ad565b602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e44919081019061257c565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611f48579160200282015b82811115611f4857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611eee565b50611f54929150612071565b5090565b828054828255906000526020600020908101928215611f93579160200282015b82811115611f93578251825591602001919060010190611f78565b50611f549291506120ad565b828054828255906000526020600020908101928215611fec579160200282015b82811115611fec5782518051611fdc9184916020909101906120c7565b5091602001919060010190611fbf565b50611f54929150612134565b828054828255906000526020600020908101928215612045579160200282015b8281111561204557825180516120359184916020909101906120c7565b5091602001919060010190612018565b50611f54929150612157565b604080516060810182526000808252602082018190529181019190915290565b61048f91905b80821115611f545780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612077565b61048f91905b80821115611f5457600081556001016120b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210857805160ff1916838001178555611f93565b82800160010185558215611f935791820182811115611f93578251825591602001919060010190611f78565b61048f91905b80821115611f5457600061214e828261217a565b5060010161213a565b61048f91905b80821115611f54576000612171828261217a565b5060010161215d565b50805460018160011615610100020316600290046000825580601f106121a057506121be565b601f0160209004906000526020600020908101906121be91906120ad565b50565b803561173381613845565b600082601f8301126121dd57600080fd5b81356121f06121eb826136e3565b6136bc565b9150818183526020840193506020810190508385602084028201111561221557600080fd5b60005b83811015612241578161222b88826121c1565b8452506020928301929190910190600101612218565b5050505092915050565b600082601f83011261225c57600080fd5b813561226a6121eb826136e3565b81815260209384019390925082018360005b83811015612241578135860161229288826123a1565b845250602092830192919091019060010161227c565b600082601f8301126122b957600080fd5b81356122c76121eb826136e3565b81815260209384019390925082018360005b8381101561224157813586016122ef88826123a1565b84525060209283019291909101906001016122d9565b600082601f83011261231657600080fd5b81356123246121eb826136e3565b9150818183526020840193506020810190508385602084028201111561234957600080fd5b60005b83811015612241578161235f888261238b565b845250602092830192919091019060010161234c565b803561173381613859565b805161173381613859565b803561173381613862565b805161173381613862565b600082601f8301126123b257600080fd5b81356123c06121eb82613704565b915080825260208301602083018583830111156123dc57600080fd5b6123e78382846137db565b50505092915050565b600082601f83011261240157600080fd5b815161240f6121eb82613704565b9150808252602083016020830185838301111561242b57600080fd5b6123e78382846137e7565b80356117338161386b565b805161173381613874565b60006020828403121561245e57600080fd5b600061246a84846121c1565b949350505050565b600080600080600060a0868803121561248a57600080fd5b853567ffffffffffffffff8111156124a157600080fd5b6124ad888289016121cc565b955050602086013567ffffffffffffffff8111156124ca57600080fd5b6124d688828901612305565b945050604086013567ffffffffffffffff8111156124f357600080fd5b6124ff888289016122a8565b935050606086013567ffffffffffffffff81111561251c57600080fd5b6125288882890161224b565b925050608086013567ffffffffffffffff81111561254557600080fd5b612551888289016123a1565b9150509295509295909350565b60006020828403121561257057600080fd5b600061246a8484612380565b60006020828403121561258e57600080fd5b600061246a8484612396565b6000602082840312156125ac57600080fd5b815167ffffffffffffffff8111156125c357600080fd5b61246a848285016123f0565b6000602082840312156125e157600080fd5b600061246a848461238b565b6000806040838503121561260057600080fd5b600061260c858561238b565b925050602061261d858286016121c1565b9150509250929050565b6000806040838503121561263a57600080fd5b6000612646858561238b565b925050602061261d85828601612375565b600080600080600060a0868803121561266f57600080fd5b600061267b888861238b565b955050602061268c88828901612375565b945050604061269d88828901612436565b93505060606126ae8882890161238b565b92505060806125518882890161238b565b6000602082840312156126d157600080fd5b600061246a8484612441565b60006126e98383612718565b505060200190565b6000611c5383836128ba565b60006126e983836128a0565b612712816137b3565b82525050565b61271281613769565b600061272c8261375c565b6127368185613760565b93506127418361374a565b8060005b8381101561276f57815161275988826126dd565b97506127648361374a565b925050600101612745565b509495945050505050565b60006127858261375c565b61278f8185613760565b9350836020820285016127a18561374a565b8060005b858110156127db57848403895281516127be85826126f1565b94506127c98361374a565b60209a909a01999250506001016127a5565b5091979650505050505050565b60006127f38261375c565b6127fd8185613760565b93508360208202850161280f8561374a565b8060005b858110156127db578484038952815161282c85826126f1565b94506128378361374a565b60209a909a0199925050600101612813565b60006128548261375c565b61285e8185613760565b93506128698361374a565b8060005b8381101561276f57815161288188826126fd565b975061288c8361374a565b92505060010161286d565b61271281613774565b6127128161048f565b6127126128b58261048f565b61048f565b60006128c58261375c565b6128cf8185613760565b93506128df8185602086016137e7565b6128e881613813565b9093019392505050565b60008154600181166000811461290f576001811461295357612992565b607f60028304166129208187613760565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612992565b600282046129618187613760565b955061296c85613750565b60005b8281101561298b5781548882015260019091019060200161296f565b8701945050505b505092915050565b612712816137ba565b612712816137c5565b60006129b9604483613760565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a3e604583613760565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ac36002836109b5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612afc602983613760565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612b5b602d83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612bba605983613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612c3f602883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612c9e601183613760565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612cd76043836109b5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612d5c6027836109b5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612dbb604483613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e40602f83613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e9f604483613760565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f24602c83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612f83603f83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612fe2602f83613760565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000613041605883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130c6603683613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613125602a83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613184601583613760565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b805160608301906131c18482612897565b5060208201516131d46020850182612897565b5060408201516131e760408501826131ff565b50505050565b6127128161379c565b612712816137d0565b612712816137a2565b600061321382612ab6565b915061321f82856128a9565b60208201915061322f82846128a9565b5060200192915050565b600061173382612cca565b600061173382612d4f565b6040810161325d8285612709565b611c5360208301846128a0565b6040810161325d8285612718565b608081016132868287612718565b61329360208301866128a0565b6132a06040830185612897565b6113ac60608301846131f6565b60a081016132bb8288612718565b6132c860208301876128a0565b81810360408301526132da81866128ba565b905081810360608301526132ee81856128ba565b90506132fd60808301846128a0565b9695505050505050565b60a081016133158288612718565b61332260208301876128a0565b818103604083015261333481866128f2565b905081810360608301526132ee81856128f2565b608080825281016133598187612721565b9050818103602083015261336d8186612849565b9050818103604083015261338181856127e8565b905081810360608301526132fd818461277a565b6020810161173382846128a0565b608081016133b182876128a0565b6133be60208301866128a0565b6133cb60408301856128a0565b6113ac6060830184612718565b606081016133e682866128a0565b6133f360208301856128a0565b61246a6040830184612897565b6080810161340e82876128a0565b61341b60208301866131ed565b61342860408301856128a0565b6113ac60608301846128a0565b60208101611733828461299a565b6020810161173382846129a3565b60208082528101611c5381846128ba565b60208082528101611733816129ac565b6020808252810161173381612a31565b6020808252810161173381612aef565b6020808252810161173381612b4e565b6020808252810161173381612bad565b6020808252810161173381612c32565b6020808252810161173381612c91565b6020808252810161173381612dae565b6020808252810161173381612e33565b6020808252810161173381612e92565b6020808252810161173381612f17565b6020808252810161173381612f76565b6020808252810161173381612fd5565b6020808252810161173381613034565b60208082528101611733816130b9565b6020808252810161173381613118565b6020808252810161173381613177565b6060810161173382846131b0565b610120810161358f828c6128a0565b61359c602083018b612709565b81810360408301526135ae818a612721565b905081810360608301526135c28189612849565b905081810360808301526135d681886127e8565b905081810360a08301526135ea818761277a565b90506135f960c08301866128a0565b61360660e08301856128a0565b81810361010083015261361981846128ba565b9b9a5050505050505050505050565b6101208101613637828c6128a0565b613644602083018b612718565b613651604083018a6128a0565b61365e60608301896128a0565b61366b60808301886128a0565b61367860a08301876128a0565b61368560c08301866128a0565b61369260e0830185612897565b6136a0610100830184612897565b9a9950505050505050505050565b6040810161325d82856128a0565b60405181810167ffffffffffffffff811182821017156136db57600080fd5b604052919050565b600067ffffffffffffffff8211156136fa57600080fd5b5060209081020190565b600067ffffffffffffffff82111561371b57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061173382613783565b151590565b806109b58161383b565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b6000611733825b600061173382613769565b600061173382613779565b6000611733826137a2565b82818337506000910152565b60005b838110156138025781810151838201526020016137ea565b838111156131e75750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106121be57fe5b61384e81613769565b81146121be57600080fd5b61384e81613774565b61384e8161048f565b61384e8161379c565b61384e816137a256fea365627a7a72315820fcd721abe2aa9d32a54b8b6db4c3188bc96b0bdc66fb78c5b96751886549abb26c6578706572696d656e74616cf564736f6c634300051000400000000000000000000000001a9c8182c09f50c8318d769245bea52c32be35bc0000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984

Deployed Bytecode

0x6080604052600436106101755760003560e01c80634634c61f116100cb578063da95691a1161007f578063e23a9a5211610059578063e23a9a52146103d0578063edc9af95146103fd578063fe0d94c11461041257610175565b8063da95691a1461037b578063ddf0b0091461039b578063deaaa7cc146103bb57610175565b8063b58131b0116100b0578063b58131b01461032f578063d33219b414610344578063da35c6641461036657610175565b80634634c61f146102fa5780637bdbe4d01461031a57610175565b806320606b701161012d5780633932abb1116101075780633932abb1146102985780633e4f49e6146102ad57806340e58ee5146102da57610175565b806320606b701461023e57806324bc1a6414610253578063328dd9821461026857610175565b806306fdde031161015e57806306fdde03146101da57806315373e3d146101fc57806317977c611461021e57610175565b8063013cf08b1461017a57806302a251a3146101b8575b600080fd5b34801561018657600080fd5b5061019a6101953660046125cf565b610425565b6040516101af99989796959493929190613628565b60405180910390f35b3480156101c457600080fd5b506101cd61048b565b6040516101af9190613395565b3480156101e657600080fd5b506101ef610492565b6040516101af9190613451565b34801561020857600080fd5b5061021c610217366004612627565b6104cb565b005b34801561022a57600080fd5b506101cd61023936600461244c565b6104da565b34801561024a57600080fd5b506101cd6104ec565b34801561025f57600080fd5b506101cd610503565b34801561027457600080fd5b506102886102833660046125cf565b610512565b6040516101af9493929190613348565b3480156102a457600080fd5b506101cd6107ea565b3480156102b957600080fd5b506102cd6102c83660046125cf565b6107ef565b6040516101af9190613443565b3480156102e657600080fd5b5061021c6102f53660046125cf565b6109ba565b34801561030657600080fd5b5061021c610315366004612657565b610c8c565b34801561032657600080fd5b506101cd610e6e565b34801561033b57600080fd5b506101cd610e73565b34801561035057600080fd5b50610359610e82565b6040516101af9190613435565b34801561037257600080fd5b506101cd610e9e565b34801561038757600080fd5b506101cd610396366004612472565b610ea4565b3480156103a757600080fd5b5061021c6103b63660046125cf565b6113b5565b3480156103c757600080fd5b506101cd6116ac565b3480156103dc57600080fd5b506103f06103eb3660046125ed565b6116b8565b6040516101af9190613572565b34801561040957600080fd5b50610359611739565b61021c6104203660046125cf565b611755565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b619d805b90565b6040518060400160405280601681526020017f556e697377617020476f7665726e6f7220416c7068610000000000000000000081525081565b6104d6338383611989565b5050565b60046020526000908152604090205481565b6040516104f890613239565b604051809103902081565b6a211654585005212800000090565b606080606080600060036000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156105a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610576575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156105f357602002820191906000526020600020905b8154815260200190600101908083116105df575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156106e45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156106d05780601f106106a5576101008083540402835291602001916106d0565b820191906000526020600020905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001906001019061061b565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156107d45760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b50505050508152602001906001019061070b565b5050505090509450945094509450509193509193565b600190565b600081600254101580156108035750600082115b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613482565b60405180910390fd5b6000828152600360205260409020600b81015460ff16156108675760029150506109b5565b8060070154431161087c5760009150506109b5565b806008015443116108915760019150506109b5565b80600a015481600901541115806108b257506108ab610503565b8160090154105b156108c15760039150506109b5565b60028101546108d45760049150506109b5565b600b810154610100900460ff16156108f05760079150506109b5565b6002810154600054604080517fc1a287e2000000000000000000000000000000000000000000000000000000008152905161099f939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061099a919081019061257c565b611c14565b42106109af5760069150506109b5565b60059150505b919050565b60006109c5826107ef565b905060078160078111156109d557fe5b1415610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613542565b6000828152600360205260409020610a23610e73565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610a59904390611c5a565b6040518363ffffffff1660e01b8152600401610a7692919061326a565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac691908101906126bf565b6bffffffffffffffffffffffff1610610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134e2565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610c4f5760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610b7a57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610baf57fe5b9060005260206000200154856005018581548110610bc957fe5b90600052602060002001866006018681548110610be257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610c11959493929190613307565b600060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505060019092019150610b3b9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610c7f9190613395565b60405180910390a1505050565b6000604051610c9a90613239565b60408051918290038220828201909152601682527f556e697377617020476f7665726e6f7220416c706861000000000000000000006020909201919091527fa5e0cfcfbed4e8af9bbb6c62a3dcbd52dedb58a723ee69f4d714b41681f2c447610d01611c9c565b30604051602001610d1594939291906133a3565b6040516020818303038152906040528051906020012090506000604051610d3b90613244565b604051908190038120610d5491899089906020016133d8565b60405160208183030381529060405280519060200120905060008282604051602001610d81929190613208565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dbe9493929190613400565b6020604051602081039080840390855afa158015610de0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613522565b610e63818a8a611989565b505050505050505050565b600a90565b6a084595161401484a00000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610eae610e73565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390610edc904390611c5a565b6040518363ffffffff1660e01b8152600401610ef992919061324f565b60206040518083038186803b158015610f1157600080fd5b505afa158015610f25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f4991908101906126bf565b6bffffffffffffffffffffffff1611610f8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613512565b84518651148015610fa0575083518651145b8015610fad575082518651145b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134d2565b855161101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613502565b611023610e6e565b8651111561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134b2565b33600090815260046020526040902054801561110e57600061107e826107ef565b9050600181600781111561108e57fe5b14156110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613532565b60008160078111156110d457fe5b141561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134a2565b505b600061111c4361099a6107ea565b9050600061112c8261099a61048b565b600280546001019055905061113f611e4c565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611249929190611ece565b5060808201518051611265916004840191602090910190611f58565b5060a08201518051611281916005840191602090910190611f9f565b5060c0820151805161129d916006840191602090910190611ff8565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161139d99989796959493929190613580565b60405180910390a15193505050505b95945050505050565b60046113c0826107ef565b60078111156113cb57fe5b14611402576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613462565b6000818152600360209081526040808320835482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191949361148193429373ffffffffffffffffffffffffffffffffffffffff90931692636a42b8f892600480840193919291829003018186803b15801561096257600080fd5b905060005b60038301548110156116725761166a8360030182815481106114a457fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff90921691849081106114d957fe5b90600052602060002001548560050184815481106114f357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b50505050508660060185815481106115b357fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018716150201909416939093049283018590048502810185019091528181529283018282801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b505050505086611ca0565b600101611486565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610c7f90859084906136ae565b6040516104f890613244565b6116c0612051565b50600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046bffffffffffffffffffffffff16918101919091525b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6005611760826107ef565b600781111561176b57fe5b146117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613472565b6000818152600360205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b600382015481101561194d5760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f91908490811061181f57fe5b906000526020600020015484600301848154811061183957fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff909216918690811061186e57fe5b906000526020600020015486600501868154811061188857fe5b906000526020600020018760060187815481106118a157fe5b9060005260206000200188600201546040518763ffffffff1660e01b81526004016118d0959493929190613307565b6000604051808303818588803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611944919081019061259a565b506001016117e0565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f8260405161197d9190613395565b60405180910390a15050565b6001611994836107ef565b600781111561199f57fe5b146119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613552565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613492565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611aa2918a9160040161326a565b60206040518083038186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611af291908101906126bf565b90508315611b2057611b168360090154826bffffffffffffffffffffffff16611c14565b6009840155611b42565b611b3c83600a0154826bffffffffffffffffffffffff16611c14565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010085151502177fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff16620100006bffffffffffffffffffffffff8316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611c04908890889088908690613278565b60405180910390a1505050505050565b600082820183811015611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134c2565b9392505050565b600082821115611c96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990613562565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b0653790611cdb90889088908890889088906020016132ad565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611d0d9190613395565b60206040518083038186803b158015611d2557600080fd5b505afa158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d5d919081019061255e565b15611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610839906134f2565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f90190611df290889088908890889088906004016132ad565b602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e44919081019061257c565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215611f48579160200282015b82811115611f4857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611eee565b50611f54929150612071565b5090565b828054828255906000526020600020908101928215611f93579160200282015b82811115611f93578251825591602001919060010190611f78565b50611f549291506120ad565b828054828255906000526020600020908101928215611fec579160200282015b82811115611fec5782518051611fdc9184916020909101906120c7565b5091602001919060010190611fbf565b50611f54929150612134565b828054828255906000526020600020908101928215612045579160200282015b8281111561204557825180516120359184916020909101906120c7565b5091602001919060010190612018565b50611f54929150612157565b604080516060810182526000808252602082018190529181019190915290565b61048f91905b80821115611f545780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612077565b61048f91905b80821115611f5457600081556001016120b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210857805160ff1916838001178555611f93565b82800160010185558215611f935791820182811115611f93578251825591602001919060010190611f78565b61048f91905b80821115611f5457600061214e828261217a565b5060010161213a565b61048f91905b80821115611f54576000612171828261217a565b5060010161215d565b50805460018160011615610100020316600290046000825580601f106121a057506121be565b601f0160209004906000526020600020908101906121be91906120ad565b50565b803561173381613845565b600082601f8301126121dd57600080fd5b81356121f06121eb826136e3565b6136bc565b9150818183526020840193506020810190508385602084028201111561221557600080fd5b60005b83811015612241578161222b88826121c1565b8452506020928301929190910190600101612218565b5050505092915050565b600082601f83011261225c57600080fd5b813561226a6121eb826136e3565b81815260209384019390925082018360005b83811015612241578135860161229288826123a1565b845250602092830192919091019060010161227c565b600082601f8301126122b957600080fd5b81356122c76121eb826136e3565b81815260209384019390925082018360005b8381101561224157813586016122ef88826123a1565b84525060209283019291909101906001016122d9565b600082601f83011261231657600080fd5b81356123246121eb826136e3565b9150818183526020840193506020810190508385602084028201111561234957600080fd5b60005b83811015612241578161235f888261238b565b845250602092830192919091019060010161234c565b803561173381613859565b805161173381613859565b803561173381613862565b805161173381613862565b600082601f8301126123b257600080fd5b81356123c06121eb82613704565b915080825260208301602083018583830111156123dc57600080fd5b6123e78382846137db565b50505092915050565b600082601f83011261240157600080fd5b815161240f6121eb82613704565b9150808252602083016020830185838301111561242b57600080fd5b6123e78382846137e7565b80356117338161386b565b805161173381613874565b60006020828403121561245e57600080fd5b600061246a84846121c1565b949350505050565b600080600080600060a0868803121561248a57600080fd5b853567ffffffffffffffff8111156124a157600080fd5b6124ad888289016121cc565b955050602086013567ffffffffffffffff8111156124ca57600080fd5b6124d688828901612305565b945050604086013567ffffffffffffffff8111156124f357600080fd5b6124ff888289016122a8565b935050606086013567ffffffffffffffff81111561251c57600080fd5b6125288882890161224b565b925050608086013567ffffffffffffffff81111561254557600080fd5b612551888289016123a1565b9150509295509295909350565b60006020828403121561257057600080fd5b600061246a8484612380565b60006020828403121561258e57600080fd5b600061246a8484612396565b6000602082840312156125ac57600080fd5b815167ffffffffffffffff8111156125c357600080fd5b61246a848285016123f0565b6000602082840312156125e157600080fd5b600061246a848461238b565b6000806040838503121561260057600080fd5b600061260c858561238b565b925050602061261d858286016121c1565b9150509250929050565b6000806040838503121561263a57600080fd5b6000612646858561238b565b925050602061261d85828601612375565b600080600080600060a0868803121561266f57600080fd5b600061267b888861238b565b955050602061268c88828901612375565b945050604061269d88828901612436565b93505060606126ae8882890161238b565b92505060806125518882890161238b565b6000602082840312156126d157600080fd5b600061246a8484612441565b60006126e98383612718565b505060200190565b6000611c5383836128ba565b60006126e983836128a0565b612712816137b3565b82525050565b61271281613769565b600061272c8261375c565b6127368185613760565b93506127418361374a565b8060005b8381101561276f57815161275988826126dd565b97506127648361374a565b925050600101612745565b509495945050505050565b60006127858261375c565b61278f8185613760565b9350836020820285016127a18561374a565b8060005b858110156127db57848403895281516127be85826126f1565b94506127c98361374a565b60209a909a01999250506001016127a5565b5091979650505050505050565b60006127f38261375c565b6127fd8185613760565b93508360208202850161280f8561374a565b8060005b858110156127db578484038952815161282c85826126f1565b94506128378361374a565b60209a909a0199925050600101612813565b60006128548261375c565b61285e8185613760565b93506128698361374a565b8060005b8381101561276f57815161288188826126fd565b975061288c8361374a565b92505060010161286d565b61271281613774565b6127128161048f565b6127126128b58261048f565b61048f565b60006128c58261375c565b6128cf8185613760565b93506128df8185602086016137e7565b6128e881613813565b9093019392505050565b60008154600181166000811461290f576001811461295357612992565b607f60028304166129208187613760565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612992565b600282046129618187613760565b955061296c85613750565b60005b8281101561298b5781548882015260019091019060200161296f565b8701945050505b505092915050565b612712816137ba565b612712816137c5565b60006129b9604483613760565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612a3e604583613760565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612ac36002836109b5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612afc602983613760565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000612b5b602d83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b6000612bba605983613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000612c3f602883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b6000612c9e601183613760565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000612cd76043836109b5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b6000612d5c6027836109b5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000612dbb604483613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612e40602f83613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b6000612e9f604483613760565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f24602c83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000612f83603f83613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b6000612fe2602f83613760565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b6000613041605883613760565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b60006130c6603683613760565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b6000613125602a83613760565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613184601583613760565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b805160608301906131c18482612897565b5060208201516131d46020850182612897565b5060408201516131e760408501826131ff565b50505050565b6127128161379c565b612712816137d0565b612712816137a2565b600061321382612ab6565b915061321f82856128a9565b60208201915061322f82846128a9565b5060200192915050565b600061173382612cca565b600061173382612d4f565b6040810161325d8285612709565b611c5360208301846128a0565b6040810161325d8285612718565b608081016132868287612718565b61329360208301866128a0565b6132a06040830185612897565b6113ac60608301846131f6565b60a081016132bb8288612718565b6132c860208301876128a0565b81810360408301526132da81866128ba565b905081810360608301526132ee81856128ba565b90506132fd60808301846128a0565b9695505050505050565b60a081016133158288612718565b61332260208301876128a0565b818103604083015261333481866128f2565b905081810360608301526132ee81856128f2565b608080825281016133598187612721565b9050818103602083015261336d8186612849565b9050818103604083015261338181856127e8565b905081810360608301526132fd818461277a565b6020810161173382846128a0565b608081016133b182876128a0565b6133be60208301866128a0565b6133cb60408301856128a0565b6113ac6060830184612718565b606081016133e682866128a0565b6133f360208301856128a0565b61246a6040830184612897565b6080810161340e82876128a0565b61341b60208301866131ed565b61342860408301856128a0565b6113ac60608301846128a0565b60208101611733828461299a565b6020810161173382846129a3565b60208082528101611c5381846128ba565b60208082528101611733816129ac565b6020808252810161173381612a31565b6020808252810161173381612aef565b6020808252810161173381612b4e565b6020808252810161173381612bad565b6020808252810161173381612c32565b6020808252810161173381612c91565b6020808252810161173381612dae565b6020808252810161173381612e33565b6020808252810161173381612e92565b6020808252810161173381612f17565b6020808252810161173381612f76565b6020808252810161173381612fd5565b6020808252810161173381613034565b60208082528101611733816130b9565b6020808252810161173381613118565b6020808252810161173381613177565b6060810161173382846131b0565b610120810161358f828c6128a0565b61359c602083018b612709565b81810360408301526135ae818a612721565b905081810360608301526135c28189612849565b905081810360808301526135d681886127e8565b905081810360a08301526135ea818761277a565b90506135f960c08301866128a0565b61360660e08301856128a0565b81810361010083015261361981846128ba565b9b9a5050505050505050505050565b6101208101613637828c6128a0565b613644602083018b612718565b613651604083018a6128a0565b61365e60608301896128a0565b61366b60808301886128a0565b61367860a08301876128a0565b61368560c08301866128a0565b61369260e0830185612897565b6136a0610100830184612897565b9a9950505050505050505050565b6040810161325d82856128a0565b60405181810167ffffffffffffffff811182821017156136db57600080fd5b604052919050565b600067ffffffffffffffff8211156136fa57600080fd5b5060209081020190565b600067ffffffffffffffff82111561371b57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b600061173382613783565b151590565b806109b58161383b565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b6000611733825b600061173382613769565b600061173382613779565b6000611733826137a2565b82818337506000910152565b60005b838110156138025781810151838201526020016137ea565b838111156131e75750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106121be57fe5b61384e81613769565b81146121be57600080fd5b61384e81613774565b61384e8161048f565b61384e8161379c565b61384e816137a256fea365627a7a72315820fcd721abe2aa9d32a54b8b6db4c3188bc96b0bdc66fb78c5b96751886549abb26c6578706572696d656e74616cf564736f6c63430005100040

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

0000000000000000000000001a9c8182c09f50c8318d769245bea52c32be35bc0000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984

-----Decoded View---------------
Arg [0] : timelock_ (address): 0x1a9C8182C09F50C8318d769245beA52c32BE35BC
Arg [1] : uni_ (address): 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001a9c8182c09f50c8318d769245bea52c32be35bc
Arg [1] : 0000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984


Deployed Bytecode Sourcemap

134:13088:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3698:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3698:43:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;1099:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1099:69:0;;;:::i;:::-;;;;;;;;207:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;207:54:0;;;:::i;:::-;;;;;;;;11128:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11128:124:0;;;;;;;;:::i;:::-;;3805:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3805:50:0;;;;;;;;:::i;3928:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3928:122:0;;;:::i;403:75::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;403:75:0;;;:::i;9620:287::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9620:287:0;;;;;;;;:::i;:::-;;;;;;;;;;;952:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;952:63:0;;;:::i;10075:1045::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10075:1045:0;;;;;;;;:::i;:::-;;;;;;;;8890:722;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8890:722:0;;;;;;;;:::i;11260:625::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11260:625:0;;;;;;;;:::i;771:74::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;771:74:0;;;:::i;587:81::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;587:81:0;;;:::i;1281:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1281:33:0;;;:::i;:::-;;;;;;;;1463:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:25:0;;;:::i;5161:2171::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5161:2171:0;;;;;;;;:::i;7340:577::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7340:577:0;;;;;;;;:::i;4140:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4140:94:0;;;:::i;9915:152::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9915:152:0;;;;;;;;:::i;:::-;;;;;;;;1384:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1384:23:0;;;:::i;8309:573::-;;;;;;;;;:::i;3698:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1099:69::-;1159:6;1099:69;;:::o;207:54::-;;;;;;;;;;;;;;;;;;;:::o;11128:124::-;11202:42;11212:10;11224;11236:7;11202:9;:42::i;:::-;11128:124;;:::o;3805:50::-;;;;;;;;;;;;;:::o;3928:122::-;3970:80;;;;;;;;;;;;;;3928:122;:::o;403:75::-;462:13;403:75;:::o;9620:287::-;9678:24;9704:20;9726:26;9754:24;9791:18;9812:9;:21;9822:10;9812:21;;;;;;;;;;;9791:42;;9852:1;:9;;9863:1;:8;;9873:1;:12;;9887:1;:11;;9844:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9620:287;;;;;:::o;952:63::-;1011:1;952:63;:::o;10075:1045::-;10128:13;10179:10;10162:13;;:27;;:45;;;;;10206:1;10193:10;:14;10162:45;10154:99;;;;;;;;;;;;;;;;;;;;;;10264:25;10292:21;;;:9;:21;;;;;10328:17;;;;;;10324:789;;;10369:22;10362:29;;;;;10324:789;10429:8;:19;;;10413:12;:35;10409:704;;10472:21;10465:28;;;;;10409:704;10531:8;:17;;;10515:12;:33;10511:602;;10572:20;10565:27;;;;;10511:602;10635:8;:21;;;10614:8;:17;;;:42;;:79;;;;10680:13;:11;:13::i;:::-;10660:8;:17;;;:33;10614:79;10610:503;;;10717:22;10710:29;;;;;10610:503;10761:12;;;;10757:356;;10802:23;10795:30;;;;;10757:356;10847:17;;;;;;;;;10843:270;;;10888:22;10881:29;;;;;10843:270;10958:12;;;;10972:8;;:23;;;;;;;;10951:45;;10958:12;10972:8;;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;10972:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10972: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;10972:23:0;;;;;;;;;10951:6;:45::i;:::-;10932:15;:64;10928:185;;11020:21;11013:28;;;;;10928:185;11081:20;11074:27;;;10075:1045;;;;:::o;8890:722::-;8941:19;8963:17;8969:10;8963:5;:17::i;:::-;8941:39;-1:-1:-1;9008:22:0;8999:5;:31;;;;;;;;;;8991:98;;;;;;;;;;;;;;9102:25;9130:21;;;:9;:21;;;;;9234:19;:17;:19::i;:::-;9170:3;;;9188:17;;;;9170:3;;;;;:17;;9188;;;;9207:23;;9214:12;;9207:6;:23::i;:::-;9170:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9170:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9170: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;9170:61:0;;;;;;;;;:83;;;9162:143;;;;;;;;;;;;;;9318:17;;;:24;;;;9338:4;9318:24;;;:17;9353:206;9374:16;;;:23;9370:27;;9353:206;;;9419:8;;9446:16;;;:19;;9419:8;;;;;:26;;9446:16;9463:1;;9446:19;;;;;;;;;;;;;;;;9467:15;;;:18;;9446:19;;;;;9483:1;;9467:18;;;;;;;;;;;;;;9487:8;:19;;9507:1;9487:22;;;;;;;;;;;;;;;9511:8;:18;;9530:1;9511:21;;;;;;;;;;;;;;;9534:8;:12;;;9419:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9419:128:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9399:3:0;;;;;-1:-1:-1;9353:206:0;;-1:-1:-1;9353:206:0;;;9576:28;9593:10;9576:28;;;;;;;;;;;;;;;8890:722;;;:::o;11260:625::-;11363:23;3970:80;;;;;;;;;;;;;;;;11443:4;;;;;;;;;;;;;;;;;;11427:22;11451:12;:10;:12::i;:::-;11473:4;11399:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11399:80:0;;;11389:91;;;;;;11363:117;;11491:18;4182:52;;;;;;;;;;;;;;;11522:48;;11550:10;;11562:7;;11522:48;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11522:48:0;;;11512:59;;;;;;11491:80;;11582:14;11638:15;11655:10;11609:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11609:57:0;;;11599:68;;;;;;11582:85;;11678:17;11698:26;11708:6;11716:1;11719;11722;11698:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11698:26:0;;;;;;-1:-1:-1;;11743:23:0;;;11735:83;;;;;;;;;;;;;;11836:41;11846:9;11857:10;11869:7;11836:9;:41::i;:::-;11829:48;;;;11260:625;;;;;:::o;771:74::-;840:2;771:74;:::o;587:81::-;652:13;587:81;:::o;1281:33::-;;;;;;:::o;1463:25::-;;;;:::o;5161:2171::-;5323:4;5405:19;:17;:19::i;:::-;5348:3;;;;;;:17;;5366:10;;5378:23;;5385:12;;5378:6;:23::i;:::-;5348:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5348:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5348: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;5348:54:0;;;;;;;;;:76;;;5340:152;;;;;;;;;;;;;;5529:6;:13;5511:7;:14;:31;:70;;;;;5564:10;:17;5546:7;:14;:35;5511:70;:108;;;;;5603:9;:16;5585:7;:14;:34;5511:108;5503:189;;;;;;;;;;;;;;5711:14;;5703:76;;;;;;;;;;;;;;5816:23;:21;:23::i;:::-;5798:7;:14;:41;;5790:94;;;;;;;;;;;;;;5939:10;5897:21;5921:29;;;:17;:29;;;;;;5965:21;;5961:454;;6001:42;6046:23;6052:16;6046:5;:23::i;:::-;6001:68;-1:-1:-1;6122:20:0;6090:28;:52;;;;;;;;;;6082:153;;;;;;;;;;;;;;6288:21;6256:28;:53;;;;;;;;;;6248:155;;;;;;;;;;;;;;5961:454;;6427:15;6445:35;6452:12;6466:13;:11;:13::i;6445:35::-;6427:53;;6491:13;6507:34;6514:10;6526:14;:12;:14::i;6507:34::-;6554:13;:15;;;;;;6491:50;-1:-1:-1;6580:27:0;;:::i;:::-;6610:427;;;;;;;;6638:13;;6610:427;;;;6676:10;6610:427;;;;;;6706:1;6610:427;;;;6731:7;6610:427;;;;6761:6;6610:427;;;;6794:10;6610:427;;;;6830:9;6610:427;;;;6866:10;6610:427;;;;6901:8;6610:427;;;;6934:1;6610:427;;;;6964:1;6610:427;;;;6990:5;6610:427;;;;;;7020:5;6610:427;;;;;6580:457;;7078:11;7050:9;:25;7060:11;:14;;;7050:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7050:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7050:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7050:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7142:11;:14;;;7100:17;:39;7118:11;:20;;;7100:39;;;;;;;;;;;;;;;:56;;;;7174:118;7190:11;:14;;;7206:10;7218:7;7227:6;7235:10;7247:9;7258:10;7270:8;7280:11;7174:118;;;;;;;;;;;;;;;;;;;;;;;7310:14;;-1:-1:-1;;;;5161:2171:0;;;;;;;;:::o;7340:577::-;7419:23;7398:17;7404:10;7398:5;:17::i;:::-;:44;;;;;;;;;7390:125;;;;;;;;;;;;;;7526:25;7554:21;;;:9;:21;;;;;;;;7621:8;;:16;;;;;;;7554:21;;7526:25;7597:41;;7604:15;;7621:8;;;;;:14;;:16;;;;;7554:21;;7621:16;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;7597:41:0;7586:52;-1:-1:-1;7654:6:0;7649:185;7670:16;;;:23;7666:27;;7649:185;;;7715:107;7730:8;:16;;7747:1;7730:19;;;;;;;;;;;;;;;;;;7751:15;;;:18;;7730:19;;;;;7767:1;;7751:18;;;;;;;;;;;;;;7771:8;:19;;7791:1;7771:22;;;;;;;;;;;;;;;;;;7715:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7771:22;7715:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7795:8;:18;;7814:1;7795:21;;;;;;;;;;;;;;;;;;7715:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7795:21;7715:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7818:3;7715:14;:107::i;:::-;7695:3;;7649:185;;;-1:-1:-1;7844:12:0;;;:18;;;7878:31;;;;;;7893:10;;7859:3;;7878:31;;4140:94;4182:52;;;;;;9915:152;9988:14;;:::i;:::-;-1:-1:-1;10022:21:0;;;;:9;:21;;;;;;;;:37;;;;;:30;;:37;;;;;;10015:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9915:152;;;;;:::o;1384:23::-;;;;;;:::o;8309:573::-;8398:20;8377:17;8383:10;8377:5;:17::i;:::-;:41;;;;;;;;;8369:123;;;;;;;;;;;;;;8503:25;8531:21;;;:9;:21;;;;;8563:17;;;:24;;;;;;;;8531:21;8598:233;8619:16;;;:23;8615:27;;8598:233;;;8664:8;;8698:15;;;:18;;8664:8;;;;;:27;;8698:15;8714:1;;8698:18;;;;;;;;;;;;;;8718:8;:16;;8735:1;8718:19;;;;;;;;;;;;;;;;;;8739:15;;;:18;;8718:19;;;;;8755:1;;8739:18;;;;;;;;;;;;;;8759:8;:19;;8779:1;8759:22;;;;;;;;;;;;;;;8783:8;:18;;8802:1;8783:21;;;;;;;;;;;;;;;8806:8;:12;;;8664:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8664:155:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8664:155:0;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;8664:155:0;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;8664:155:0;;;;;;;;;-1:-1:-1;8644:3:0;;8598:233;;;;8846:28;8863:10;8846:28;;;;;;;;;;;;;;;8309:573;;:::o;11893:837::-;12007:20;11986:17;11992:10;11986:5;:17::i;:::-;:41;;;;;;;;;11978:96;;;;;;;;;;;;;;12085:25;12113:21;;;:9;:21;;;;;;;;12171:24;;;;;:17;;;:24;;;;;;12214:16;;;;:25;12206:83;;;;;;;;;;;;;;12315:3;;12340:19;;;;12315:45;;;;;12300:12;;12315:3;;;:17;;:45;;12333:5;;12315:45;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12315:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12315: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;12315:45:0;;;;;;;;;12300:60;;12377:7;12373:185;;;12421:32;12428:8;:17;;;12447:5;12421:32;;:6;:32::i;:::-;12401:17;;;:52;12373:185;;;12510:36;12517:8;:21;;;12540:5;12510:36;;:6;:36::i;:::-;12486:21;;;:60;12373:185;12570:23;;12589:4;12570:23;;;;;12604:25;;12570:23;12604:25;;;;;12640:21;;;;;;;;;;12679:43;;;;;;12688:5;;12695:10;;12604:25;;12640:21;;12679:43;;;;;;;;;;11893:837;;;;;;:::o;12738:166::-;12799:4;12825:5;;;12849:6;;;;12841:36;;;;;;;;;;;;;;12895:1;12738:166;-1:-1:-1;;;12738:166:0:o;12912:149::-;12973:4;13003:1;12998;:6;;12990:40;;;;;;;;;;;;;;-1:-1:-1;13048:5:0;;;12912:149::o;13069:150::-;13176:9;13069:150;:::o;7925:376::-;8060:8;;8098:47;;8060:8;;;;;:27;;8098:47;;8109:6;;8117:5;;8124:9;;8135:4;;8141:3;;8098:47;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8098:47:0;;;8088:58;;;;;;8060:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8060:87:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8060:87: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;8060:87:0;;;;;;;;;8059:88;8051:169;;;;;;;;;;;;;;8231:8;;:62;;;;;:8;;;;;:25;;:62;;8257:6;;8265:5;;8272:9;;8283:4;;8289:3;;8231:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8231:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8231: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;8231:62:0;;;;;;;;;;7925:376;;;;;:::o;134:13088::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;134:13088:0;;;;;;;-1:-1:-1;134:13088:0;;;-1:-1:-1;134:13088:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;134:13088:0;;;-1:-1:-1;134:13088:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;134:13088:0;;;-1:-1:-1;134:13088:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;134:13088:0;;;-1:-1:-1;134:13088:0;:::i;:::-;;;;;;;;;-1:-1:-1;134:13088: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:132;5864:13;;5882:32;5864:13;5882:32;;5926:241;;6030:2;6018:9;6009:7;6005:23;6001:32;5998:2;;;6046:1;6043;6036:12;5998:2;6081:1;6098:53;6143:7;6123:9;6098:53;;;6088:63;5992:175;-1:-1;;;;5992:175;6174:1415;;;;;;6467:3;6455:9;6446:7;6442:23;6438:33;6435:2;;;6484:1;6481;6474:12;6435:2;6519:31;;6570:18;6559:30;;6556:2;;;6602:1;6599;6592:12;6556:2;6622:78;6692:7;6683:6;6672:9;6668:22;6622:78;;;6612:88;;6498:208;6765:2;6754:9;6750:18;6737:32;6789:18;6781:6;6778:30;6775:2;;;6821:1;6818;6811:12;6775:2;6841:78;6911:7;6902:6;6891:9;6887:22;6841:78;;;6831:88;;6716:209;6984:2;6973:9;6969:18;6956:32;7008:18;7000:6;6997:30;6994:2;;;7040:1;7037;7030:12;6994:2;7060:84;7136:7;7127:6;7116:9;7112:22;7060:84;;;7050:94;;6935:215;7209:2;7198:9;7194:18;7181:32;7233:18;7225:6;7222:30;7219:2;;;7265:1;7262;7255:12;7219:2;7285:83;7360:7;7351:6;7340:9;7336:22;7285:83;;;7275:93;;7160:214;7433:3;7422:9;7418:19;7405:33;7458:18;7450:6;7447:30;7444:2;;;7490:1;7487;7480:12;7444:2;7510:63;7565:7;7556:6;7545:9;7541:22;7510:63;;;7500:73;;7384:195;6429:1160;;;;;;;;;7596:257;;7708:2;7696:9;7687:7;7683:23;7679:32;7676:2;;;7724:1;7721;7714:12;7676:2;7759:1;7776:61;7829:7;7809:9;7776:61;;7860:263;;7975:2;7963:9;7954:7;7950:23;7946:32;7943:2;;;7991:1;7988;7981:12;7943:2;8026:1;8043:64;8099:7;8079:9;8043:64;;8130:360;;8254:2;8242:9;8233:7;8229:23;8225:32;8222:2;;;8270:1;8267;8260:12;8222:2;8305:24;;8349:18;8338:30;;8335:2;;;8381:1;8378;8371:12;8335:2;8401:73;8466:7;8457:6;8446:9;8442:22;8401:73;;8497:241;;8601:2;8589:9;8580:7;8576:23;8572:32;8569:2;;;8617:1;8614;8607:12;8569:2;8652:1;8669:53;8714:7;8694:9;8669:53;;9015:366;;;9136:2;9124:9;9115:7;9111:23;9107:32;9104:2;;;9152:1;9149;9142:12;9104:2;9187:1;9204:53;9249:7;9229:9;9204:53;;;9194:63;;9166:97;9294:2;9312:53;9357:7;9348:6;9337:9;9333:22;9312:53;;;9302:63;;9273:98;9098:283;;;;;;9388:360;;;9506:2;9494:9;9485:7;9481:23;9477:32;9474:2;;;9522:1;9519;9512:12;9474:2;9557:1;9574:53;9619:7;9599:9;9574:53;;;9564:63;;9536:97;9664:2;9682:50;9724:7;9715:6;9704:9;9700:22;9682:50;;9755:733;;;;;;9922:3;9910:9;9901:7;9897:23;9893:33;9890:2;;;9939:1;9936;9929:12;9890:2;9974:1;9991:53;10036:7;10016:9;9991:53;;;9981:63;;9953:97;10081:2;10099:50;10141:7;10132:6;10121:9;10117:22;10099:50;;;10089:60;;10060:95;10186:2;10204:51;10247:7;10238:6;10227:9;10223:22;10204:51;;;10194:61;;10165:96;10292:2;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;;;10300:63;;10271:98;10400:3;10419:53;10464:7;10455:6;10444:9;10440:22;10419:53;;10495:261;;10609:2;10597:9;10588:7;10584:23;10580:32;10577:2;;;10625:1;10622;10615:12;10577:2;10660:1;10677:63;10732:7;10712:9;10677:63;;10764:173;;10851:46;10893:3;10885:6;10851:46;;;-1:-1;;10926:4;10917:14;;10844:93;10946:177;;11057:60;11113:3;11105:6;11057:60;;11322:173;;11409:46;11451:3;11443:6;11409:46;;11503:142;11594:45;11633:5;11594:45;;;11589:3;11582:58;11576:69;;;11652:103;11725:24;11743:5;11725:24;;11913:690;;12058:54;12106:5;12058:54;;;12125:86;12204:6;12199:3;12125:86;;;12118:93;;12232:56;12282:5;12232:56;;;12308:7;12336:1;12321:260;12346:6;12343:1;12340:13;12321:260;;;12413:6;12407:13;12434:63;12493:3;12478:13;12434:63;;;12427:70;;12514:60;12567:6;12514:60;;;12504:70;-1:-1;;12368:1;12361:9;12321:260;;;-1:-1;12594:3;;12037:566;-1:-1;;;;;12037:566;12638:888;;12793:59;12846:5;12793:59;;;12865:91;12949:6;12944:3;12865:91;;;12858:98;;12979:3;13021:4;13013:6;13009:17;13004:3;13000:27;13048:61;13103:5;13048:61;;;13129:7;13157:1;13142:345;13167:6;13164:1;13161:13;13142:345;;;13229:9;13223:4;13219:20;13214:3;13207:33;13274:6;13268:13;13296:74;13365:4;13350:13;13296:74;;;13288:82;;13387:65;13445:6;13387:65;;;13475:4;13466:14;;;;;13377:75;-1:-1;;13189:1;13182:9;13142:345;;;-1:-1;13500:4;;12772:754;-1:-1;;;;;;;12772:754;13563:896;;13720:60;13774:5;13720:60;;;13793:92;13878:6;13873:3;13793:92;;;13786:99;;13908:3;13950:4;13942:6;13938:17;13933:3;13929:27;13977:62;14033:5;13977:62;;;14059:7;14087:1;14072:348;14097:6;14094:1;14091:13;14072:348;;;14159:9;14153:4;14149:20;14144:3;14137:33;14204:6;14198:13;14226:76;14297:4;14282:13;14226:76;;;14218:84;;14319:66;14378:6;14319:66;;;14408:4;14399:14;;;;;14309:76;-1:-1;;14119:1;14112:9;14072:348;;14498:690;;14643:54;14691:5;14643:54;;;14710:86;14789:6;14784:3;14710:86;;;14703:93;;14817:56;14867:5;14817:56;;;14893:7;14921:1;14906:260;14931:6;14928:1;14925:13;14906:260;;;14998:6;14992:13;15019:63;15078:3;15063:13;15019:63;;;15012:70;;15099:60;15152:6;15099:60;;;15089:70;-1:-1;;14953:1;14946:9;14906:260;;15196:94;15263:21;15278:5;15263:21;;15408:113;15491:24;15509:5;15491:24;;15528:152;15629:45;15649:24;15667:5;15649:24;;;15629:45;;15687:343;;15797:38;15829:5;15797:38;;;15847:70;15910:6;15905:3;15847:70;;;15840:77;;15922:52;15967:6;15962:3;15955:4;15948:5;15944:16;15922:52;;;15995:29;16017:6;15995:29;;;15986:39;;;;15777:253;-1:-1;;;15777:253;16382:818;;16499:5;16493:12;16533:1;16522:9;16518:17;16546:1;16541:247;;;;16799:1;16794:400;;;;16511:683;;16541:247;16619:4;16615:1;16604:9;16600:17;16596:28;16638:70;16701:6;16696:3;16638:70;;;16742:9;16727:25;;16715:38;;16631:77;-1:-1;;16776:4;16767:14;;;-1:-1;16541:247;;16794:400;16863:1;16852:9;16848:17;16879:70;16942:6;16937:3;16879:70;;;16872:77;;16971:37;17002:5;16971:37;;;17024:1;17032:130;17046:6;17043:1;17040:13;17032:130;;;17105:14;;17092:11;;;17085:35;17152:1;17139:15;;;;17068:4;17061:12;17032:130;;;17176:11;;;-1:-1;;;16511:683;;16469:731;;;;;;17208:178;17317:63;17374:5;17317:63;;17568:156;17666:52;17712:5;17666:52;;19614:442;;19774:67;19838:2;19833:3;19774:67;;;19874:34;19854:55;;19943:34;19938:2;19929:12;;19922:56;20012:6;20007:2;19998:12;;19991:28;20047:2;20038:12;;19760:296;-1:-1;;19760:296;20065:443;;20225:67;20289:2;20284:3;20225:67;;;20325:34;20305:55;;20394:34;20389:2;20380:12;;20373:56;20463:7;20458:2;20449:12;;20442:29;20499:2;20490:12;;20211:297;-1:-1;;20211:297;20517:398;;20695:84;20777:1;20772:3;20695:84;;;20812:66;20792:87;;20907:1;20898:11;;20681:234;-1:-1;;20681:234;20924:378;;21084:67;21148:2;21143:3;21084:67;;;21184:34;21164:55;;21253:11;21248:2;21239:12;;21232:33;21293:2;21284:12;;21070:232;-1:-1;;21070:232;21311:382;;21471:67;21535:2;21530:3;21471:67;;;21571:34;21551:55;;21640:15;21635:2;21626:12;;21619:37;21684:2;21675:12;;21457:236;-1:-1;;21457:236;21702:463;;21862:67;21926:2;21921:3;21862:67;;;21962:34;21942:55;;22031:34;22026:2;22017:12;;22010:56;22100:27;22095:2;22086:12;;22079:49;22156:2;22147:12;;21848:317;-1:-1;;21848:317;22174:377;;22334:67;22398:2;22393:3;22334:67;;;22434:34;22414:55;;22503:10;22498:2;22489:12;;22482:32;22542:2;22533:12;;22320:231;-1:-1;;22320:231;22560:317;;22720:67;22784:2;22779:3;22720:67;;;22820:19;22800:40;;22868:2;22859:12;;22706:171;-1:-1;;22706:171;22886:477;;23064:85;23146:2;23141:3;23064:85;;;23182:34;23162:55;;23251:34;23246:2;23237:12;;23230:56;23320:5;23315:2;23306:12;;23299:27;23354:2;23345:12;;23050:313;-1:-1;;23050:313;23372:412;;23550:85;23632:2;23627:3;23550:85;;;23668:34;23648:55;;23737:9;23732:2;23723:12;;23716:31;23775:2;23766:12;;23536:248;-1:-1;;23536:248;23793:442;;23953:67;24017:2;24012:3;23953:67;;;24053:34;24033:55;;24122:34;24117:2;24108:12;;24101:56;24191:6;24186:2;24177:12;;24170:28;24226:2;24217:12;;23939:296;-1:-1;;23939:296;24244:384;;24404:67;24468:2;24463:3;24404:67;;;24504:34;24484:55;;24573:17;24568:2;24559:12;;24552:39;24619:2;24610:12;;24390:238;-1:-1;;24390:238;24637:442;;24797:67;24861:2;24856:3;24797:67;;;24897:34;24877:55;;24966:34;24961:2;24952:12;;24945:56;25035:6;25030:2;25021:12;;25014:28;25070:2;25061:12;;24783:296;-1:-1;;24783:296;25088:381;;25248:67;25312:2;25307:3;25248:67;;;25348:34;25328:55;;25417:14;25412:2;25403:12;;25396:36;25460:2;25451:12;;25234:235;-1:-1;;25234:235;25478:400;;25638:67;25702:2;25697:3;25638:67;;;25738:34;25718:55;;25807:33;25802:2;25793:12;;25786:55;25869:2;25860:12;;25624:254;-1:-1;;25624:254;25887:384;;26047:67;26111:2;26106:3;26047:67;;;26147:34;26127:55;;26216:17;26211:2;26202:12;;26195:39;26262:2;26253:12;;26033:238;-1:-1;;26033:238;26280:462;;26440:67;26504:2;26499:3;26440:67;;;26540:34;26520:55;;26609:34;26604:2;26595:12;;26588:56;26678:26;26673:2;26664:12;;26657:48;26733:2;26724:12;;26426:316;-1:-1;;26426:316;26751:391;;26911:67;26975:2;26970:3;26911:67;;;27011:34;26991:55;;27080:24;27075:2;27066:12;;27059:46;27133:2;27124:12;;26897:245;-1:-1;;26897:245;27151:379;;27311:67;27375:2;27370:3;27311:67;;;27411:34;27391:55;;27480:12;27475:2;27466:12;;27459:34;27521:2;27512:12;;27297:233;-1:-1;;27297:233;27539:321;;27699:67;27763:2;27758:3;27699:67;;;27799:23;27779:44;;27851:2;27842:12;;27685:175;-1:-1;;27685:175;27935:620;28144:23;;28074:4;28065:14;;;28173:57;28069:3;28144:23;28173:57;;;28094:142;28312:4;28305:5;28301:16;28295:23;28324:57;28375:4;28370:3;28366:14;28352:12;28324:57;;;28246:141;28461:4;28454:5;28450:16;28444:23;28473:61;28528:4;28523:3;28519:14;28505:12;28473:61;;;28397:143;28047:508;;;;28792:107;28871:22;28887:5;28871:22;;28906:124;28988:36;29018:5;28988:36;;29037:100;29108:23;29125:5;29108:23;;29144:650;;29399:148;29543:3;29399:148;;;29392:155;;29558:75;29629:3;29620:6;29558:75;;;29655:2;29650:3;29646:12;29639:19;;29669:75;29740:3;29731:6;29669:75;;;-1:-1;29766:2;29757:12;;29380:414;-1:-1;;29380:414;29801:372;;30000:148;30144:3;30000:148;;30180:372;;30379:148;30523:3;30379:148;;30559:340;30713:2;30698:18;;30727:79;30702:9;30779:6;30727:79;;;30817:72;30885:2;30874:9;30870:18;30861:6;30817:72;;30906:324;31052:2;31037:18;;31066:71;31041:9;31110:6;31066:71;;31237:533;31432:3;31417:19;;31447:71;31421:9;31491:6;31447:71;;;31529:72;31597:2;31586:9;31582:18;31573:6;31529:72;;;31612:66;31674:2;31663:9;31659:18;31650:6;31612:66;;;31689:71;31756:2;31745:9;31741:18;31732:6;31689:71;;31777:831;32045:3;32030:19;;32060:71;32034:9;32104:6;32060:71;;;32142:72;32210:2;32199:9;32195:18;32186:6;32142:72;;;32262:9;32256:4;32252:20;32247:2;32236:9;32232:18;32225:48;32287:78;32360:4;32351:6;32287:78;;;32279:86;;32413:9;32407:4;32403:20;32398:2;32387:9;32383:18;32376:48;32438:76;32509:4;32500:6;32438:76;;;32430:84;;32525:73;32593:3;32582:9;32578:19;32569:6;32525:73;;;32016:592;;;;;;;;;32615:819;32877:3;32862:19;;32892:71;32866:9;32936:6;32892:71;;;32974:72;33042:2;33031:9;33027:18;33018:6;32974:72;;;33094:9;33088:4;33084:20;33079:2;33068:9;33064:18;33057:48;33119:75;33189:4;33180:6;33119:75;;;33111:83;;33242:9;33236:4;33232:20;33227:2;33216:9;33212:18;33205:48;33267:73;33335:4;33326:6;33267:73;;33441:1183;33865:3;33880:47;;;33850:19;;33941:108;33850:19;34035:6;33941:108;;;33933:116;;34097:9;34091:4;34087:20;34082:2;34071:9;34067:18;34060:48;34122:108;34225:4;34216:6;34122:108;;;34114:116;;34278:9;34272:4;34268:20;34263:2;34252:9;34248:18;34241:48;34303:120;34418:4;34409:6;34303:120;;;34295:128;;34471:9;34465:4;34461:20;34456:2;34445:9;34441:18;34434:48;34496:118;34609:4;34600:6;34496:118;;34631:213;34749:2;34734:18;;34763:71;34738:9;34807:6;34763:71;;34851:547;35053:3;35038:19;;35068:71;35042:9;35112:6;35068:71;;;35150:72;35218:2;35207:9;35203:18;35194:6;35150:72;;;35233;35301:2;35290:9;35286:18;35277:6;35233:72;;;35316;35384:2;35373:9;35369:18;35360:6;35316:72;;35405:423;35573:2;35558:18;;35587:71;35562:9;35631:6;35587:71;;;35669:72;35737:2;35726:9;35722:18;35713:6;35669:72;;;35752:66;35814:2;35803:9;35799:18;35790:6;35752:66;;35835:539;36033:3;36018:19;;36048:71;36022:9;36092:6;36048:71;;;36130:68;36194:2;36183:9;36179:18;36170:6;36130:68;;;36209:72;36277:2;36266:9;36262:18;36253:6;36209:72;;;36292;36360:2;36349:9;36345:18;36336:6;36292:72;;36381:265;36525:2;36510:18;;36539:97;36514:9;36609:6;36539:97;;36915:243;37048:2;37033:18;;37062:86;37037:9;37121:6;37062:86;;37165:293;37299:2;37313:47;;;37284:18;;37374:74;37284:18;37434:6;37374:74;;37465:407;37656:2;37670:47;;;37641:18;;37731:131;37641:18;37731:131;;37879:407;38070:2;38084:47;;;38055:18;;38145:131;38055:18;38145:131;;38293:407;38484:2;38498:47;;;38469:18;;38559:131;38469:18;38559:131;;38707:407;38898:2;38912:47;;;38883:18;;38973:131;38883:18;38973:131;;39121:407;39312:2;39326:47;;;39297:18;;39387:131;39297:18;39387:131;;39535:407;39726:2;39740:47;;;39711:18;;39801:131;39711:18;39801:131;;39949:407;40140:2;40154:47;;;40125:18;;40215:131;40125:18;40215:131;;40363:407;40554:2;40568:47;;;40539:18;;40629:131;40539:18;40629:131;;40777:407;40968:2;40982:47;;;40953:18;;41043:131;40953:18;41043:131;;41191:407;41382:2;41396:47;;;41367:18;;41457:131;41367:18;41457:131;;41605:407;41796:2;41810:47;;;41781:18;;41871:131;41781:18;41871:131;;42019:407;42210:2;42224:47;;;42195:18;;42285:131;42195:18;42285:131;;42433:407;42624:2;42638:47;;;42609:18;;42699:131;42609:18;42699:131;;42847:407;43038:2;43052:47;;;43023:18;;43113:131;43023:18;43113:131;;43261:407;43452:2;43466:47;;;43437:18;;43527:131;43437:18;43527:131;;43675:407;43866:2;43880:47;;;43851:18;;43941:131;43851:18;43941:131;;44089:407;44280:2;44294:47;;;44265:18;;44355:131;44265:18;44355:131;;44503:305;44667:2;44652:18;;44681:117;44656:9;44771:6;44681:117;;45035:1847;45627:3;45612:19;;45642:71;45616:9;45686:6;45642:71;;;45724:80;45800:2;45789:9;45785:18;45776:6;45724:80;;;45852:9;45846:4;45842:20;45837:2;45826:9;45822:18;45815:48;45877:108;45980:4;45971:6;45877:108;;;45869:116;;46033:9;46027:4;46023:20;46018:2;46007:9;46003:18;45996:48;46058:108;46161:4;46152:6;46058:108;;;46050:116;;46215:9;46209:4;46205:20;46199:3;46188:9;46184:19;46177:49;46240:120;46355:4;46346:6;46240:120;;;46232:128;;46409:9;46403:4;46399:20;46393:3;46382:9;46378:19;46371:49;46434:118;46547:4;46538:6;46434:118;;;46426:126;;46563:73;46631:3;46620:9;46616:19;46607:6;46563:73;;;46647;46715:3;46704:9;46700:19;46691:6;46647:73;;;46769:9;46763:4;46759:20;46753:3;46742:9;46738:19;46731:49;46794:78;46867:4;46858:6;46794:78;;;46786:86;45598:1284;-1:-1;;;;;;;;;;;45598:1284;46889:1083;47219:3;47204:19;;47234:71;47208:9;47278:6;47234:71;;;47316:72;47384:2;47373:9;47369:18;47360:6;47316:72;;;47399;47467:2;47456:9;47452:18;47443:6;47399:72;;;47482;47550:2;47539:9;47535:18;47526:6;47482:72;;;47565:73;47633:3;47622:9;47618:19;47609:6;47565:73;;;47649;47717:3;47706:9;47702:19;47693:6;47649:73;;;47733;47801:3;47790:9;47786:19;47777:6;47733:73;;;47817:67;47879:3;47868:9;47864:19;47855:6;47817:67;;;47895;47957:3;47946:9;47942:19;47933:6;47895:67;;;47190:782;;;;;;;;;;;;;47979:324;48125:2;48110:18;;48139:71;48114:9;48183:6;48139:71;;48310:256;48372:2;48366:9;48398:17;;;48473:18;48458:34;;48494:22;;;48455:62;48452:2;;;48530:1;48527;48520:12;48452:2;48546;48539:22;48350:216;;-1:-1;48350:216;48573:304;;48732:18;48724:6;48721:30;48718:2;;;48764:1;48761;48754:12;48718:2;-1:-1;48799:4;48787:17;;;48852:15;;48655:222;49828:317;;49967:18;49959:6;49956:30;49953:2;;;49999:1;49996;49989:12;49953:2;-1:-1;50130:4;50066;50043:17;;;;50062:9;50039:33;50120:15;;49890:255;51134:151;51258:4;51249:14;;51206:79;51777:157;;51871:14;;;51913:4;51900:18;;;51830:104;52106:137;52209:12;;52180:63;53671:178;53789:19;;;53838:4;53829:14;;53782:67;55249:91;;55311:24;55329:5;55311:24;;55347:85;55413:13;55406:21;;55389:43;55518:140;55597:5;55603:50;55597:5;55603:50;;55665:121;55738:42;55727:54;;55710:76;55872:81;55943:4;55932:16;;55915:38;55960:104;56032:26;56021:38;;56004:60;56071:129;;56158:37;56189:5;56207:173;;56312:63;56369:5;56312:63;;56834:140;;56928:41;56963:5;56928:41;;57224:106;;57302:23;57319:5;57302:23;;57338:145;57419:6;57414:3;57409;57396:30;-1:-1;57475:1;57457:16;;57450:27;57389:94;57492:268;57557:1;57564:101;57578:6;57575:1;57572:13;57564:101;;;57645:11;;;57639:18;57626:11;;;57619:39;57600:2;57593:10;57564:101;;;57680:6;57677:1;57674:13;57671:2;;;-1:-1;;57745:1;57727:16;;57720:27;57541:219;57849:97;57937:2;57917:14;57933:7;57913:28;;57897:49;57954:108;58040:1;58033:5;58030:12;58020:2;;58046:9;58069:117;58138:24;58156:5;58138:24;;;58131:5;58128:35;58118:2;;58177:1;58174;58167:12;58193:111;58259:21;58274:5;58259:21;;58311:117;58380:24;58398:5;58380:24;;58559:113;58626:22;58642:5;58626:22;;58679:115;58747:23;58764:5;58747:23;

Swarm Source

bzzr://fcd721abe2aa9d32a54b8b6db4c3188bc96b0bdc66fb78c5b96751886549abb2

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.