Contract 0xbCd23d62a2ABa3bB4006bD05da6D41F78182D2C9

 

Contract Overview

Keep3rb Network: Governance
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x86cf3cbbb1251365d1af6a577ced070ca48b94cf090a129fbadacd1f94c2521149564202021-02-17 9:49:297 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00049278
0x38197ced62d3b496841f123913d02138b8747f4107effd63bba184625cd1c59e49564112021-02-17 9:49:027 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x2a2c256b2dca877246dd0d5b67c50aba73e65b05dfd4bb627b41564df481acc549563992021-02-17 9:48:267 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0xc4c54f5edd402845bb79db2dad5da5d42d77694bea43e4a257b4c0e1c1d7bc3749563912021-02-17 9:48:027 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x02c9d88a5d32954678ba945182d39519d704836f242df46779e440d324b2dddf49563832021-02-17 9:47:387 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x0eaa7c4a7b856b0755846e2d92b58a5cfa76f731851c1e8fbcc3ab1dab482c3549563712021-02-17 9:47:027 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x10127146a76337fe55ef93966989809fad458308fde6a09dfda0f0cf1249050949563622021-02-17 9:46:357 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00049278
0xeb5997a889946531316a9975e35926f60484dbe005cd4fce8eab01d902d3aeb749563522021-02-17 9:46:057 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0004929
0x5e50bdb329d98428bfcd6bf2c5585a6160c6b6c56af3ad1cae16a673465f8e0f46971052021-02-08 9:22:2816 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00088311
0x632c4e960cb97e966f9b659c1ad7b29459dc705e020fb216df21f4710cb198c546970972021-02-08 9:22:0416 days 7 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00088311
0x73e40c1e633a264d02cf5e71da7baf7ee59a91ad99f91772d48da80d82cdc2b245999462021-02-05 0:17:1719 days 16 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00073935
0xe7400475a15990eccf38dd984361dbe03c32f9c670d80f59f7e6bacdd4c7754645999332021-02-05 0:16:3819 days 16 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00073917
0x2a46ff1b9e72f7c149da4382a62b0e3fdd58bdd0879570e5e28d2f6f1a91f2dc45999222021-02-05 0:16:0519 days 17 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00073935
0xb3c92d39dec2ab62dc97e4f70b798adb0bfba19ea2895ebf4e819650e4ef7e7d45999072021-02-05 0:15:2019 days 17 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00073935
0xbe9ba209dde2b710f53c3379ddce110ab158828c127a1854a797e279c4acad3043203312021-01-26 5:59:0729 days 11 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00032848
0xc60f42c84c687d57006dce5b132d73ddf327016dbf0b45bb6133b001cacd6c4743201742021-01-26 5:51:1629 days 11 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00032848
0x0b79419cc912f23ad4b8640a3842c459e0449ad3335ecef3e2cb62b846d89b3443177902021-01-26 3:52:0329 days 13 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00098556
0xae5cb2a33def5c498ba17e7a616383c846c82644f9fd7fcdc84af95f0b7d8c6643174702021-01-26 3:36:0329 days 13 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00128532
0xede1fc9d42ce6a5b096b5f2e3cbc8cf6e694baa35b3f641f58057862f1ecde7c43174602021-01-26 3:35:3329 days 13 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00036276
0x649446d17552745a5fb04a3d4d2f9866e566e0342d6ab0ff5c4985b045d7516c43174492021-01-26 3:35:0029 days 13 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00151486
0xc5dfc017992cbe8db4053264077fa1dec1d1df8f6700f8054fdb56339297553143162522021-01-26 2:35:0929 days 14 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0009858
0x9b4b28dfd83137ca4c2f2fb983ffb8f17ff28073ce16963d59f404f87dbc740342572912021-01-24 1:27:0431 days 15 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00128556
0x08adef782f585da9d11f6968bda7d7ed9a19330bdabde74980e722ef3bb21f6542572812021-01-24 1:26:3431 days 15 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.0015151
0xdf6cea9b44e2ef816441caf674a777dc321ca35d6ac237dca1062ce1cdb5404e42493232021-01-23 18:48:4031 days 22 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00147796
0xb02e6ba40f1cb36e5812a7eda3fc0d54b44b2ed9642fe6343d93f88c7c7172bd42493032021-01-23 18:47:4031 days 22 hrs agoKeep3rb Network: Deployer IN  Keep3rb Network: Governance0 BNB0.00147796
[ Download CSV Export 

OVERVIEW

Governance contract for Keep3r BSC Network.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x86cf3cbbb1251365d1af6a577ced070ca48b94cf090a129fbadacd1f94c2521149564202021-02-17 9:49:297 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x38197ced62d3b496841f123913d02138b8747f4107effd63bba184625cd1c59e49564112021-02-17 9:49:027 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x2a2c256b2dca877246dd0d5b67c50aba73e65b05dfd4bb627b41564df481acc549563992021-02-17 9:48:267 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xc4c54f5edd402845bb79db2dad5da5d42d77694bea43e4a257b4c0e1c1d7bc3749563912021-02-17 9:48:027 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x02c9d88a5d32954678ba945182d39519d704836f242df46779e440d324b2dddf49563832021-02-17 9:47:387 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x0eaa7c4a7b856b0755846e2d92b58a5cfa76f731851c1e8fbcc3ab1dab482c3549563712021-02-17 9:47:027 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x10127146a76337fe55ef93966989809fad458308fde6a09dfda0f0cf1249050949563622021-02-17 9:46:357 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xeb5997a889946531316a9975e35926f60484dbe005cd4fce8eab01d902d3aeb749563522021-02-17 9:46:057 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x5e50bdb329d98428bfcd6bf2c5585a6160c6b6c56af3ad1cae16a673465f8e0f46971052021-02-08 9:22:2816 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x632c4e960cb97e966f9b659c1ad7b29459dc705e020fb216df21f4710cb198c546970972021-02-08 9:22:0416 days 7 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x73e40c1e633a264d02cf5e71da7baf7ee59a91ad99f91772d48da80d82cdc2b245999462021-02-05 0:17:1719 days 16 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xe7400475a15990eccf38dd984361dbe03c32f9c670d80f59f7e6bacdd4c7754645999332021-02-05 0:16:3819 days 16 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x2a46ff1b9e72f7c149da4382a62b0e3fdd58bdd0879570e5e28d2f6f1a91f2dc45999222021-02-05 0:16:0519 days 17 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xb3c92d39dec2ab62dc97e4f70b798adb0bfba19ea2895ebf4e819650e4ef7e7d45999072021-02-05 0:15:2019 days 17 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xbe9ba209dde2b710f53c3379ddce110ab158828c127a1854a797e279c4acad3043203312021-01-26 5:59:0729 days 11 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xc60f42c84c687d57006dce5b132d73ddf327016dbf0b45bb6133b001cacd6c4743201742021-01-26 5:51:1629 days 11 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x0b79419cc912f23ad4b8640a3842c459e0449ad3335ecef3e2cb62b846d89b3443177902021-01-26 3:52:0329 days 13 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xae5cb2a33def5c498ba17e7a616383c846c82644f9fd7fcdc84af95f0b7d8c6643174702021-01-26 3:36:0329 days 13 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xede1fc9d42ce6a5b096b5f2e3cbc8cf6e694baa35b3f641f58057862f1ecde7c43174602021-01-26 3:35:3329 days 13 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x649446d17552745a5fb04a3d4d2f9866e566e0342d6ab0ff5c4985b045d7516c43174492021-01-26 3:35:0029 days 13 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xc5dfc017992cbe8db4053264077fa1dec1d1df8f6700f8054fdb56339297553143162522021-01-26 2:35:0929 days 14 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x9b4b28dfd83137ca4c2f2fb983ffb8f17ff28073ce16963d59f404f87dbc740342572912021-01-24 1:27:0431 days 15 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0x08adef782f585da9d11f6968bda7d7ed9a19330bdabde74980e722ef3bb21f6542572812021-01-24 1:26:3431 days 15 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xdf6cea9b44e2ef816441caf674a777dc321ca35d6ac237dca1062ce1cdb5404e42493232021-01-23 18:48:4031 days 22 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
0xb02e6ba40f1cb36e5812a7eda3fc0d54b44b2ed9642fe6343d93f88c7c7172bd42493032021-01-23 18:47:4031 days 22 hrs ago Keep3rb Network: Governance Keep3rb Network: KP3RB Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Governance

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-12-27
*/

// SPDX-License-Identifier: MIT


/**
 * KEEP3RB.NETWORK
 * Optimized Dapp
 * Clean & tested code
 */



/**
 * This governance contract will govern over the ecosystem. 
 * It has no mint() function. So it can't mint anything.
 * It process all proposals such a democratic way.
 */
 


pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
 function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }
 function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }
 function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
       if (a == 0) {
            return 0;
        }

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

        return c;
    }
  function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
      if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
 function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IKeep3rb {
    function addVotes(address voter, uint amount) external;
    function removeVotes(address voter, uint amount) external;
    function addKPRCredit(address job, uint amount) external;
    function approveLiquidity(address liquidity) external;
    function revokeLiquidity(address liquidity) external;
    function addJob(address job) external;
    function removeJob(address job) external;
    function setKeep3rbHelper(address _kprh) external;
    function setGovernance(address _governance) external;
    function acceptGovernance() external;
    function dispute(address keeper) external;
    function slash(address bonded, address keeper, uint amount) external;
    function revoke(address keeper) external;
    function resolve(address keeper) external;
    function getPriorVotes(address account, uint blockNumber) external view returns (uint);
    function totalBonded() external view returns (uint);
}

contract Governance {
    using SafeMath for uint;
    /// @notice The name of this contract
    string public constant name = "KP3RB Governance";

    /// @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
    uint public _quorumVotes = 50000; // % of total supply required

    /// @notice The number of votes required in order for a voter to become a proposer
    uint public _proposalThreshold = 50000;

    uint public constant BASE = 10000;

    function setQuorum(uint quorum_) external {
        require(msg.sender == address(this), "Governance::setQuorum: timelock only");
        require(quorum_ <= BASE, "Governance::setQuorum: quorum_ > BASE");
        _quorumVotes = quorum_;
    }

    function quorumVotes() public view returns (uint) {
        return KPR.totalBonded().mul(_quorumVotes).div(BASE);
    }

    function proposalThreshold() public view returns (uint) {
        return KPR.totalBonded().mul(_proposalThreshold).div(BASE);
    }

    function setThreshold(uint threshold_) external {
        require(msg.sender == address(this), "Governance::setQuorum: timelock only");
        require(threshold_ <= BASE, "Governance::setThreshold: threshold_ > BASE");
        _proposalThreshold = threshold_;
    }

    /// @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 governance token
    IKeep3rb immutable public KPR;

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

    struct Proposal {
        uint id;
        address proposer;
        uint eta;
        address[] targets;
        uint[] values;
        string[] signatures;
        bytes[] calldatas;
        uint startBlock;
        uint endBlock;
        uint forVotes;
        uint againstVotes;
        bool canceled;
        bool executed;
        mapping (address => Receipt) receipts;
    }

    /// @notice Ballot receipt record for a voter
    struct Receipt {
        bool hasVoted;
        bool support;
        uint 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)");
    
    
    bytes32 public immutable DOMAINSEPARATOR;

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

    function proposeJob(address job) public {
        require(msg.sender == address(KPR), "Governance::proposeJob: only VOTER can propose new jobs");
        address[] memory targets;
        targets[0] = address(KPR);

        string[] memory signatures;
        signatures[0] = "addJob(address)";

        bytes[] memory calldatas;
        calldatas[0] = abi.encode(job);

        uint[] memory values;
        values[0] = 0;

        _propose(targets, values, signatures, calldatas, string(abi.encodePacked("Governance::proposeJob(): ", job)));
    }

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

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

        return _propose(targets, values, signatures, calldatas, description);
    }

    function _propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) internal returns (uint) {
        uint startBlock = block.number.add(votingDelay());
        uint endBlock = startBlock.add(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, "Governance::queue: proposal can only be queued if it is succeeded");
        Proposal storage proposal = proposals[proposalId];
        uint eta = block.timestamp.add(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(!queuedTransactions[keccak256(abi.encode(target, value, signature, data, eta))], "Governance::_queueOrRevert: proposal action already queued at eta");
        _queueTransaction(target, value, signature, data, eta);
    }

    function execute(uint proposalId) public payable {
        require(guardian == address(0x0) || msg.sender == guardian, "Governance:execute: !guardian");
        require(state(proposalId) == ProposalState.Queued, "Governance::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++) {
            _executeTransaction(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, "Governance::cancel: cannot cancel executed proposal");

        Proposal storage proposal = proposals[proposalId];
        require(proposal.proposer != address(KPR) && 
                KPR.getPriorVotes(proposal.proposer, block.number.sub(1)) < proposalThreshold(), "Governance::cancel: proposer above threshold");

        proposal.canceled = true;
        for (uint i = 0; i < proposal.targets.length; i++) {
            _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, "Governance::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.add(proposal.againstVotes) < quorumVotes()) {
            return ProposalState.Defeated;
        } else if (proposal.forVotes <= proposal.againstVotes) {
            return ProposalState.Defeated;
        } else if (proposal.eta == 0) {
            return ProposalState.Succeeded;
        } else if (proposal.executed) {
            return ProposalState.Executed;
        } else if (block.timestamp >= proposal.eta.add(GRACE_PERIOD)) {
            return ProposalState.Expired;
        } else {
            return ProposalState.Queued;
        }
    }

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

    function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public {
        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), "Governance::castVoteBySig: invalid signature");
        _castVote(signatory, proposalId, support);
    }

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

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

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

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

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

    event NewDelay(uint indexed newDelay);
    event CancelTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature,  bytes data, uint eta);
    event ExecuteTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature,  bytes data, uint eta);
    event QueueTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta);

    uint public constant GRACE_PERIOD = 13 days;
    uint public constant MINIMUM_DELAY = 1 days;
    uint public constant MAXIMUM_DELAY = 30 days;

    uint public delay = MINIMUM_DELAY;
    
    address public guardian;
    address public pendingGuardian;
    
    function setGuardian(address _guardian) external {
        require(msg.sender == guardian, "Keep3rbGovernance::setGuardian: !guardian");
        pendingGuardian = _guardian;
    }
    
    function acceptGuardianship() external {
        require(msg.sender == pendingGuardian, "Keep3rbGovernance::setGuardian: !pendingGuardian");
        guardian = pendingGuardian;
    }
    
    function addVotes(address voter, uint amount) external {
        require(msg.sender == guardian, "Keep3rbGovernance::addVotes: !guardian");
        KPR.addVotes(voter, amount);
    }
    function removeVotes(address voter, uint amount) external {
        require(msg.sender == guardian, "Keep3rbGovernance::removeVotes: !guardian");
        KPR.removeVotes(voter, amount);
    }
    function addKPRCredit(address job, uint amount) external {
        require(msg.sender == guardian, "Keep3rbGovernance::addKPRCredit: !guardian");
        KPR.addKPRCredit(job, amount);
    }
    function approveLiquidity(address liquidity) external {
        require(msg.sender == guardian, "Keep3rbGovernance::approveLiquidity: !guardian");
        KPR.approveLiquidity(liquidity);
    }
    function revokeLiquidity(address liquidity) external {
        require(msg.sender == guardian, "Keep3rbGovernance::revokeLiquidity: !guardian");
        KPR.revokeLiquidity(liquidity);
    }
    function addJob(address job) external {
        require(msg.sender == guardian, "Keep3rbGovernance::addJob: !guardian");
        KPR.addJob(job);
    }
    function removeJob(address job) external {
        require(msg.sender == guardian, "Keep3rbGovernance::removeJob: !guardian");
        KPR.removeJob(job);
    }
    function setKeep3rbHelper(address kprh) external {
        require(msg.sender == guardian, "Keep3rbGovernance::setKeep3rbHelper: !guardian");
        KPR.setKeep3rbHelper(kprh);
    }
    function setGovernance(address _governance) external {
        require(msg.sender == guardian, "Keep3rbGovernance::setGovernance: !guardian");
        KPR.setGovernance(_governance);
    }
    function acceptGovernance() external {
        require(msg.sender == guardian, "Keep3rbGovernance::acceptGovernance: !guardian");
        KPR.acceptGovernance();
    }
    function dispute(address keeper) external {
        require(msg.sender == guardian, "Keep3rbGovernance::dispute: !guardian");
        KPR.dispute(keeper);
    }
    function slash(address bonded, address keeper, uint amount) external {
        require(msg.sender == guardian, "Keep3rbGovernance::slash: !guardian");
        KPR.slash(bonded, keeper, amount);
    }
    function revoke(address keeper) external {
        require(msg.sender == guardian, "Keep3rbGovernance::revoke: !guardian");
        KPR.revoke(keeper);
    }
    function resolve(address keeper) external {
        require(msg.sender == guardian, "Keep3rbGovernance::resolve: !guardian");
        KPR.resolve(keeper);
    }

    mapping (bytes32 => bool) public queuedTransactions;

    constructor(address token_) public {
        guardian = msg.sender;
        KPR = IKeep3rb(token_);
        DOMAINSEPARATOR = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
    }

    receive() external payable { }

    function setDelay(uint delay_) public {
        require(msg.sender == address(this), "Timelock::setDelay: Call must come from Timelock.");
        require(delay_ >= MINIMUM_DELAY, "Timelock::setDelay: Delay must exceed minimum delay.");
        require(delay_ <= MAXIMUM_DELAY, "Timelock::setDelay: Delay must not exceed maximum delay.");
        delay = delay_;

        emit NewDelay(delay);
    }

    function _queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal returns (bytes32) {
        require(eta >= getBlockTimestamp().add(delay), "Timelock::queueTransaction: Estimated execution block must satisfy delay.");
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        queuedTransactions[txHash] = true;

        emit QueueTransaction(txHash, target, value, signature, data, eta);
        return txHash;
    }

    function _cancelTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal {
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        queuedTransactions[txHash] = false;

        emit CancelTransaction(txHash, target, value, signature, data, eta);
    }

    function _executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal returns (bytes memory) {
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        require(queuedTransactions[txHash], "Timelock::executeTransaction: Transaction hasn't been queued.");
        require(getBlockTimestamp() >= eta, "Timelock::executeTransaction: Transaction hasn't surpassed time lock.");
        require(getBlockTimestamp() <= eta.add(GRACE_PERIOD), "Timelock::executeTransaction: Transaction is stale.");

        queuedTransactions[txHash] = false;

        bytes memory callData;

        if (bytes(signature).length == 0) {
            callData = data;
        } else {
            callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);
        }

        // solium-disable-next-line security/no-call-value
        (bool success, bytes memory returnData) = target.call{value:value}(callData);
        require(success, "Timelock::executeTransaction: Transaction execution reverted.");

        emit ExecuteTransaction(txHash, target, value, signature, data, eta);

        return returnData;
    }

    function getBlockTimestamp() internal view returns (uint) {
        // solium-disable-next-line security/no-block-members
        return block.timestamp;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"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":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","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"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAINSEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KPR","outputs":[{"internalType":"contract IKeep3rb","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptGuardianship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"addJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addKPRCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity","type":"address"}],"name":"approveLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"keeper","type":"address"}],"name":"dispute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct Governance.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"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"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"proposeJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"removeJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"keeper","type":"address"}],"name":"resolve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"keeper","type":"address"}],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity","type":"address"}],"name":"revokeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay_","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_guardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"kprh","type":"address"}],"name":"setKeep3rbHelper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quorum_","type":"uint256"}],"name":"setQuorum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold_","type":"uint256"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bonded","type":"address"},{"internalType":"address","name":"keeper","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"slash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum Governance.ProposalState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405261c35060005561c350600155620151806005553480156200002457600080fd5b5060405162004b8038038062004b8083398101604081905262000047916200011b565b600680546001600160a01b031916331790556001600160601b0319606082901b1660805260408051808201909152601081526f4b5033524220476f7665726e616e636560801b6020909101527f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f4c5878df9254a455366bfd78227667983b57feefdc56806393c4d957b5d79738620000df62000117565b30604051602001620000f594939291906200014b565b60408051601f19818403018152919052805160209091012060a052506200016f565b4690565b6000602082840312156200012d578081fd5b81516001600160a01b038116811462000144578182fd5b9392505050565b938452602084019290925260408301526001600160a01b0316606082015260800190565b60805160601c60a05161497762000209600039806109aa5280611391525080610a285280610ae25280610b655280610c07528061102a528061107752806114aa528061152052806115a25280611633528061178952806117d5528061186d528061193652806119ac5280611a5a5280611aab5280611c885280611cc9528061204f52806121e752806122b352806125f952506149776000f3fe6080604052600436106103035760003560e01c80638a0dac4a11610190578063da35c664116100dc578063e177246e11610095578063ec342ad01161006f578063ec342ad014610899578063f2b06537146108ae578063f75f9f7b146108db578063fe0d94c1146108fb5761030a565b8063e177246e1461082c578063e23a9a521461084c578063e74f8239146108795761030a565b8063da35c66414610782578063da95691a14610797578063dc380cbb146107b7578063ddf0b009146107d7578063de63298d146107f7578063deaaa7cc146108175761030a565b8063b600702a11610149578063c1ba4e5911610123578063c1ba4e5914610702578063c5198abc14610722578063ce6a088014610742578063d8ae6faf146107625761030a565b8063b600702a146106b8578063be4a66b6146106d8578063c1a287e2146106ed5761030a565b80638a0dac4a14610619578063960bfe0414610639578063995e617a14610659578063ab033ea91461066e578063b1b43ae51461068e578063b58131b0146106a35761030a565b80633e4f49e61161024f5780636a42b8f811610208578063762c31ba116101e2578063762c31ba146105ba5780637bdbe4d0146105cf5780637d645fab146105e457806380711989146105f95761030a565b80636a42b8f8146105705780636e3827b71461058557806374a8f1031461059a5761030a565b80633e4f49e6146104ae57806340e58ee5146104db578063452a9320146104fb5780634634c61f1461051057806355ea6c471461053057806364bb43ee146105505761030a565b806319666a81116102bc57806324bc1a641161029657806324bc1a64146104325780633006018514610447578063328dd982146104695780633932abb1146104995761030a565b806319666a81146103e857806320606b7014610408578063238efcbc1461041d5761030a565b8063013cf08b1461030f57806302a251a31461034d57806306fdde031461036f57806315373e3d146103915780631778e29c146103b357806317977c61146103c85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b5061032f61032a3660046134e5565b61090e565b604051610344999897969594939291906147f4565b60405180910390f35b34801561035957600080fd5b50610362610967565b604051610344919061387f565b34801561037b57600080fd5b5061038461096d565b60405161034491906138d2565b34801561039d57600080fd5b506103b16103ac366004613541565b610999565b005b3480156103bf57600080fd5b506103626109a8565b3480156103d457600080fd5b506103626103e3366004613394565b6109cc565b3480156103f457600080fd5b506103b1610403366004613394565b6109de565b34801561041457600080fd5b50610362610a92565b34801561042957600080fd5b506103b1610ab6565b34801561043e57600080fd5b50610362610b55565b34801561045357600080fd5b5061045c610c05565b6040516103449190613762565b34801561047557600080fd5b506104896104843660046134e5565b610c29565b6040516103449493929190613827565b3480156104a557600080fd5b50610362610eb8565b3480156104ba57600080fd5b506104ce6104c93660046134e5565b610ebd565b60405161034491906138be565b3480156104e757600080fd5b506103b16104f63660046134e5565b610fdc565b34801561050757600080fd5b5061045c61132f565b34801561051c57600080fd5b506103b161052b366004613570565b61133e565b34801561053c57600080fd5b506103b161054b366004613394565b611469565b34801561055c57600080fd5b506103b161056b366004613394565b6114df565b34801561057c57600080fd5b50610362611555565b34801561059157600080fd5b5061036261155b565b3480156105a657600080fd5b506103b16105b5366004613394565b611561565b3480156105c657600080fd5b5061045c6115d7565b3480156105db57600080fd5b506103626115e6565b3480156105f057600080fd5b506103626115eb565b34801561060557600080fd5b506103b1610614366004613394565b6115f2565b34801561062557600080fd5b506103b1610634366004613394565b611668565b34801561064557600080fd5b506103b16106543660046134e5565b6116b4565b34801561066557600080fd5b506103b16116fa565b34801561067a57600080fd5b506103b1610689366004613394565b611748565b34801561069a57600080fd5b506103626117be565b3480156106af57600080fd5b506103626117c5565b3480156106c457600080fd5b506103b16106d3366004613394565b61182c565b3480156106e457600080fd5b506103626118a2565b3480156106f957600080fd5b506103626118a8565b34801561070e57600080fd5b506103b161071d3660046134e5565b6118af565b34801561072e57600080fd5b506103b161073d366004613394565b6118f5565b34801561074e57600080fd5b506103b161075d3660046133ef565b61196b565b34801561076e57600080fd5b506103b161077d3660046133ef565b611a19565b34801561078e57600080fd5b50610362611a91565b3480156107a357600080fd5b506103626107b2366004613419565b611a97565b3480156107c357600080fd5b506103b16107d2366004613394565b611c7d565b3480156107e357600080fd5b506103b16107f23660046134e5565b611dda565b34801561080357600080fd5b506103b16108123660046133ef565b61200e565b34801561082357600080fd5b50610362612086565b34801561083857600080fd5b506103b16108473660046134e5565b6120aa565b34801561085857600080fd5b5061086c610867366004613515565b612142565b6040516103449190614737565b34801561088557600080fd5b506103b16108943660046133af565b6121a6565b3480156108a557600080fd5b50610362612257565b3480156108ba57600080fd5b506108ce6108c93660046134e5565b61225d565b6040516103449190613874565b3480156108e757600080fd5b506103b16108f6366004613394565b612272565b6103b16109093660046134e5565b6122e8565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b619d8090565b6040518060400160405280601081526020016f4b5033524220476f7665726e616e636560801b81525081565b6109a433838361255e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60046020526000908152604090205481565b6006546001600160a01b03163314610a115760405162461bcd60e51b8152600401610a08906140ac565b60405180910390fd5b6040516319666a8160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906319666a8190610a5d908490600401613762565b600060405180830381600087803b158015610a7757600080fd5b505af1158015610a8b573d6000803e3d6000fd5b5050505050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6006546001600160a01b03163314610ae05760405162461bcd60e51b8152600401610a0890614206565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663238efcbc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b3b57600080fd5b505af1158015610b4f573d6000803e3d6000fd5b50505050565b6000610c00612710610bfa6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344d96e956040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbc57600080fd5b505afa158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf491906134fd565b9061271b565b9061275c565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60608060608060006003600087815260200190815260200160002090508060030181600401826005018360060183805480602002602001604051908101604052809291908181526020018280548015610cab57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c8d575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610cfd57602002820191906000526020600020905b815481526020019060010190808311610ce9575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610dd05760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610dbc5780601f10610d9157610100808354040283529160200191610dbc565b820191906000526020600020905b815481529060010190602001808311610d9f57829003601f168201915b505050505081526020019060010190610d25565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610ea25760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610e8e5780601f10610e6357610100808354040283529160200191610e8e565b820191906000526020600020905b815481529060010190602001808311610e7157829003601f168201915b505050505081526020019060010190610df7565b5050505090509450945094509450509193509193565b600190565b60008160025410158015610ed15750600082115b610eed5760405162461bcd60e51b8152600401610a089061449a565b6000828152600360205260409020600b81015460ff1615610f12576002915050610fd7565b80600701544311610f27576000915050610fd7565b80600801544311610f3c576001915050610fd7565b610f44610b55565b600a8201546009830154610f579161279e565b1015610f67576003915050610fd7565b80600a0154816009015411610f80576003915050610fd7565b6002810154610f93576004915050610fd7565b600b810154610100900460ff1615610faf576007915050610fd7565b6002810154610fc1906211238061279e565b4210610fd1576006915050610fd7565b60059150505b919050565b6000610fe782610ebd565b90506007816007811115610ff757fe5b14156110155760405162461bcd60e51b8152600401610a0890613d7d565b600082815260036020526040902060018101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161480159061111d57506110676117c5565b6001808301546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263782d6fe192909116906110ae9043906127c3565b6040518363ffffffff1660e01b81526004016110cb929190613776565b60206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906134fd565b105b6111395760405162461bcd60e51b8152600401610a089061433c565b600b8101805460ff1916600117905560005b60038201548110156112f2576112ea82600301828154811061116957fe5b6000918252602090912001546004840180546001600160a01b03909216918490811061119157fe5b90600052602060002001548460050184815481106111ab57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156112395780601f1061120e57610100808354040283529160200191611239565b820191906000526020600020905b81548152906001019060200180831161121c57829003601f168201915b505050505085600601858154811061124d57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156112db5780601f106112b0576101008083540402835291602001916112db565b820191906000526020600020905b8154815290600101906020018083116112be57829003601f168201915b50505050508660020154612805565b60010161114b565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051611322919061387f565b60405180910390a1505050565b6006546001600160a01b031681565b60007f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee868660405160200161137593929190613888565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016113c2929190613704565b6040516020818303038152906040528051906020012090506000600182878787604051600081526020016040526040516113ff94939291906138a0565b6020604051602081039080840390855afa158015611421573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114545760405162461bcd60e51b8152600401610a0890613e80565b61145f81898961255e565b5050505050505050565b6006546001600160a01b031633146114935760405162461bcd60e51b8152600401610a08906138e5565b6040516355ea6c4760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906355ea6c4790610a5d908490600401613762565b6006546001600160a01b031633146115095760405162461bcd60e51b8152600401610a08906144e0565b60405163325da1f760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906364bb43ee90610a5d908490600401613762565b60055481565b60015481565b6006546001600160a01b0316331461158b5760405162461bcd60e51b8152600401610a0890613c46565b6040516374a8f10360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906374a8f10390610a5d908490600401613762565b6007546001600160a01b031681565b600a90565b62278d0081565b6006546001600160a01b0316331461161c5760405162461bcd60e51b8152600401610a08906139a5565b604051638071198960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638071198990610a5d908490600401613762565b6006546001600160a01b031633146116925760405162461bcd60e51b8152600401610a0890613f33565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b3330146116d35760405162461bcd60e51b8152600401610a08906146f3565b6127108111156116f55760405162461bcd60e51b8152600401610a0890613a53565b600155565b6007546001600160a01b031633146117245760405162461bcd60e51b8152600401610a08906146a3565b600754600680546001600160a01b0319166001600160a01b03909216919091179055565b6006546001600160a01b031633146117725760405162461bcd60e51b8152600401610a0890614404565b60405163ab033ea960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab033ea990610a5d908490600401613762565b6201518081565b6000610c00612710610bfa6001547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344d96e956040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbc57600080fd5b6006546001600160a01b031633146118565760405162461bcd60e51b8152600401610a0890614604565b604051635b00381560e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b600702a90610a5d908490600401613762565b60005481565b6211238081565b3330146118ce5760405162461bcd60e51b8152600401610a08906146f3565b6127108111156118f05760405162461bcd60e51b8152600401610a0890614145565b600055565b6006546001600160a01b0316331461191f5760405162461bcd60e51b8152600401610a0890613f7c565b60405163314662af60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5198abc90610a5d908490600401613762565b6006546001600160a01b031633146119955760405162461bcd60e51b8152600401610a0890613dd0565b60405163019cd41160e71b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ce6a0880906119e39085908590600401613776565b600060405180830381600087803b1580156119fd57600080fd5b505af1158015611a11573d6000803e3d6000fd5b505050505050565b6006546001600160a01b03163314611a435760405162461bcd60e51b8152600401610a08906142f2565b60405163d8ae6faf60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d8ae6faf906119e39085908590600401613776565b60025481565b6000611aa16117c5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663782d6fe133611adc4360016127c3565b6040518363ffffffff1660e01b8152600401611af9929190613776565b60206040518083038186803b158015611b1157600080fd5b505afa158015611b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4991906134fd565b1015611b675760405162461bcd60e51b8152600401610a0890613b69565b84518651148015611b79575083518651145b8015611b86575082518651145b611ba25760405162461bcd60e51b8152600401610a08906139ec565b8551611bc05760405162461bcd60e51b8152600401610a0890613bfd565b611bc86115e6565b86511115611be85760405162461bcd60e51b8152600401610a0890614388565b336000908152600460205260409020548015611c65576000611c0982610ebd565b90506001816007811115611c1957fe5b1415611c375760405162461bcd60e51b8152600401610a089061392a565b6000816007811115611c4557fe5b1415611c635760405162461bcd60e51b8152600401610a089061418a565b505b611c72878787878761289f565b979650505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611cc55760405162461bcd60e51b8152600401610a0890614254565b60607f000000000000000000000000000000000000000000000000000000000000000081600081518110611cf557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060606040518060400160405280600f81526020016e6164644a6f6228616464726573732960881b81525081600081518110611d4c57fe5b6020026020010181905250606083604051602001611d6a9190613762565b60405160208183030381529060405281600081518110611d8657fe5b60200260200101819052506060600081600081518110611da257fe5b602002602001018181525050611a118482858589604051602001611dc6919061371f565b60405160208183030381529060405261289f565b6004611de582610ebd565b6007811115611df057fe5b14611e0d5760405162461bcd60e51b8152600401610a0890613e19565b6000818152600360205260408120600554909190611e2c90429061279e565b905060005b6003830154811015611fd457611fcc836003018281548110611e4f57fe5b6000918252602090912001546004850180546001600160a01b039092169184908110611e7757fe5b9060005260206000200154856005018481548110611e9157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611f1f5780601f10611ef457610100808354040283529160200191611f1f565b820191906000526020600020905b815481529060010190602001808311611f0257829003601f168201915b5050505050866006018581548110611f3357fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611fc15780601f10611f9657610100808354040283529160200191611fc1565b820191906000526020600020905b815481529060010190602001808311611fa457829003601f168201915b505050505086612aea565b600101611e31565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290611322908590849061487d565b6006546001600160a01b031633146120385760405162461bcd60e51b8152600401610a0890613ce3565b60405163de63298d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de63298d906119e39085908590600401613776565b7f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee81565b3330146120c95760405162461bcd60e51b8152600401610a0890614652565b620151808110156120ec5760405162461bcd60e51b8152600401610a0890613d29565b62278d0081111561210f5760405162461bcd60e51b8152600401610a0890614005565b600581905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b61214a612e7b565b5060008281526003602090815260408083206001600160a01b0385168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b6006546001600160a01b031633146121d05760405162461bcd60e51b8152600401610a0890613ae5565b60405163e74f823960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e74f8239906122209086908690869060040161378f565b600060405180830381600087803b15801561223a57600080fd5b505af115801561224e573d6000803e3d6000fd5b50505050505050565b61271081565b60086020526000908152604090205460ff1681565b6006546001600160a01b0316331461229c5760405162461bcd60e51b8152600401610a0890613fc0565b60405163f75f9f7b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f75f9f7b90610a5d908490600401613762565b6006546001600160a01b0316158061230a57506006546001600160a01b031633145b6123265760405162461bcd60e51b8152600401610a08906143cd565b600561233182610ebd565b600781111561233c57fe5b146123595760405162461bcd60e51b8152600401610a089061459c565b6000818152600360205260408120600b8101805461ff001916610100179055905b60038201548110156125225761251982600301828154811061239857fe5b6000918252602090912001546004840180546001600160a01b0390921691849081106123c057fe5b90600052602060002001548460050184815481106123da57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156124685780601f1061243d57610100808354040283529160200191612468565b820191906000526020600020905b81548152906001019060200180831161244b57829003601f168201915b505050505085600601858154811061247c57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561250a5780601f106124df5761010080835404028352916020019161250a565b820191906000526020600020905b8154815290600101906020018083116124ed57829003601f168201915b50505050508660020154612b5a565b5060010161237a565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051612552919061387f565b60405180910390a15050565b600161256983610ebd565b600781111561257457fe5b146125915760405162461bcd60e51b8152600401610a0890613a9e565b60008281526003602090815260408083206001600160a01b0387168452600c8101909252909120805460ff16156125da5760405162461bcd60e51b8152600401610a0890614062565b600782015460405163782d6fe160e01b81526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163782d6fe19161262f918a9190600401613776565b60206040518083038186803b15801561264757600080fd5b505afa15801561265b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267f91906134fd565b905083156126a0576009830154612696908261279e565b60098401556126b5565b600a8301546126af908261279e565b600a8401555b8154600160ff19909116811761ff0019166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c469061270b9088908890889086906137b3565b60405180910390a1505050505050565b60008261272a575060006121a0565b8282028284828161273757fe5b04146127555760405162461bcd60e51b8152600401610a08906142b1565b9392505050565b600061275583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d40565b6000828201838110156127555760405162461bcd60e51b8152600401610a0890613bc6565b600061275583836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612d77565b600085858585856040516020016128209594939291906137db565b60408051601f19818403018152828252805160209182012060008181526008909252919020805460ff1916905591506001600160a01b0387169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf879061288f908990899089908990614840565b60405180910390a3505050505050565b6000806128b46128ad610eb8565b439061279e565b905060006128ca6128c3610967565b839061279e565b60028054600101905590506128dd612e9b565b604051806101a001604052806002548152602001336001600160a01b03168152602001600081526020018a815260200189815260200188815260200187815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816002015560608201518160030190805190602001906129c0929190612f10565b50608082015180516129dc916004840191602090910190612f75565b5060a082015180516129f8916005840191602090910190612fbc565b5060c08201518051612a14916006840191602090910190613015565b5060e082015160078201556101008083015160088301556101208301516009830155610140830151600a830155610160830151600b90920180546101809094015160ff199094169215159290921761ff0019169215150291909117905580516020808301516001600160a01b03166000908152600490915260409081902091909155815190517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091612ad59133908d908d908d908d908b908b908f9061475c565b60405180910390a15198975050505050505050565b600860008686868686604051602001612b079594939291906137db565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615612b4d5760405162461bcd60e51b8152600401610a0890613ecc565b611a118585858585612da3565b606060008686868686604051602001612b779594939291906137db565b60408051601f1981840301815291815281516020928301206000818152600890935291205490915060ff16612bbe5760405162461bcd60e51b8152600401610a08906140fa565b82612bc7612e77565b1015612be55760405162461bcd60e51b8152600401610a0890613c8a565b612bf2836211238061279e565b612bfa612e77565b1115612c185760405162461bcd60e51b8152600401610a0890613b28565b6000818152600860205260409020805460ff191690558451606090612c3e575083612c6a565b858051906020012085604051602001612c589291906136b7565b60405160208183030381529060405290505b60006060896001600160a01b03168984604051612c8791906136e8565b60006040518083038185875af1925050503d8060008114612cc4576040519150601f19603f3d011682016040523d82523d6000602084013e612cc9565b606091505b509150915081612ceb5760405162461bcd60e51b8152600401610a089061444f565b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051612d2b9493929190614840565b60405180910390a39998505050505050505050565b60008183612d615760405162461bcd60e51b8152600401610a0891906138d2565b506000838581612d6d57fe5b0495945050505050565b60008184841115612d9b5760405162461bcd60e51b8152600401610a0891906138d2565b505050900390565b6000612db9600554612db3612e77565b9061279e565b821015612dd85760405162461bcd60e51b8152600401610a089061452d565b60008686868686604051602001612df39594939291906137db565b60408051601f19818403018152828252805160209182012060008181526008909252919020805460ff1916600117905591506001600160a01b0388169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f90612e65908a908a908a908a90614840565b60405180910390a39695505050505050565b4290565b604080516060810182526000808252602082018190529181019190915290565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215612f65579160200282015b82811115612f6557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612f30565b50612f7192915061306e565b5090565b828054828255906000526020600020908101928215612fb0579160200282015b82811115612fb0578251825591602001919060010190612f95565b50612f7192915061308d565b828054828255906000526020600020908101928215613009579160200282015b828111156130095782518051612ff99184916020909101906130a2565b5091602001919060010190612fdc565b50612f7192915061310f565b828054828255906000526020600020908101928215613062579160200282015b8281111561306257825180516130529184916020909101906130a2565b5091602001919060010190613035565b50612f7192915061312c565b5b80821115612f715780546001600160a01b031916815560010161306f565b5b80821115612f71576000815560010161308e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106130e357805160ff1916838001178555612fb0565b82800160010185558215612fb05791820182811115612fb0578251825591602001919060010190612f95565b80821115612f715760006131238282613149565b5060010161310f565b80821115612f715760006131408282613149565b5060010161312c565b50805460018160011615610100020316600290046000825580601f1061316f575061318d565b601f01602090049060005260206000209081019061318d919061308d565b50565b80356001600160a01b03811681146121a057600080fd5b600082601f8301126131b7578081fd5b81356131ca6131c5826148b2565b61488b565b8181529150602080830190848101818402860182018710156131eb57600080fd5b60005b84811015613212576132008883613190565b845292820192908201906001016131ee565b505050505092915050565b600082601f83011261322d578081fd5b813561323b6131c5826148b2565b818152915060208083019084810160005b8481101561321257613263888484358a010161332b565b8452928201929082019060010161324c565b600082601f830112613285578081fd5b81356132936131c5826148b2565b818152915060208083019084810160005b84811015613212576132bb888484358a010161332b565b845292820192908201906001016132a4565b600082601f8301126132dd578081fd5b81356132eb6131c5826148b2565b81815291506020808301908481018184028601820187101561330c57600080fd5b60005b848110156132125781358452928201929082019060010161330f565b600082601f83011261333b578081fd5b813567ffffffffffffffff811115613351578182fd5b613364601f8201601f191660200161488b565b915080825283602082850101111561337b57600080fd5b8060208401602084013760009082016020015292915050565b6000602082840312156133a5578081fd5b6127558383613190565b6000806000606084860312156133c3578182fd5b83356133ce816148fe565b925060208401356133de816148fe565b929592945050506040919091013590565b60008060408385031215613401578182fd5b61340b8484613190565b946020939093013593505050565b600080600080600060a08688031215613430578081fd5b853567ffffffffffffffff80821115613447578283fd5b61345389838a016131a7565b96506020880135915080821115613468578283fd5b61347489838a016132cd565b95506040880135915080821115613489578283fd5b61349589838a01613275565b945060608801359150808211156134aa578283fd5b6134b689838a0161321d565b935060808801359150808211156134cb578283fd5b506134d88882890161332b565b9150509295509295909350565b6000602082840312156134f6578081fd5b5035919050565b60006020828403121561350e578081fd5b5051919050565b60008060408385031215613527578182fd5b823591506135388460208501613190565b90509250929050565b60008060408385031215613553578182fd5b82359150602083013561356581614913565b809150509250929050565b600080600080600060a08688031215613587578283fd5b85359450602086013561359981614913565b9350604086013560ff811681146135ae578384fd5b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b838110156135fe5781516001600160a01b0316875295820195908201906001016135d9565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b8581101561364f57828403895261363d84835161368b565b98850198935090840190600101613625565b5091979650505050505050565b6000815180845260208085019450808401835b838110156135fe5781518752958201959082019060010161366f565b600081518084526136a38160208601602086016148d2565b601f01601f19169290920160200192915050565b6001600160e01b03198316815281516000906136da8160048501602087016148d2565b919091016004019392505050565b600082516136fa8184602087016148d2565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b7f476f7665726e616e63653a3a70726f706f73654a6f6228293a20000000000000815260609190911b6bffffffffffffffffffffffff1916601a820152602e0190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03949094168452602084019290925215156040830152606082015260800190565b600060018060a01b038716825285602083015260a0604083015261380260a083018661368b565b8281036060840152613814818661368b565b9150508260808301529695505050505050565b60006080825261383a60808301876135c6565b828103602084015261384c818761365c565b905082810360408401526138608186613609565b90508281036060840152611c728185613609565b901515815260200190565b90815260200190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60208101600883106138cc57fe5b91905290565b600060208252612755602083018461368b565b60208082526025908201527f4b656570337262476f7665726e616e63653a3a7265736f6c76653a2021677561604082015264393234b0b760d91b606082015260800190565b60208082526055908201527f476f7665726e616e63653a3a70726f706f73653a206f6e65206c69766520707260408201527f6f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c6060820152741c9958591e481858dd1a5d99481c1c9bdc1bdcd85b605a1b608082015260a00190565b60208082526027908201527f4b656570337262476f7665726e616e63653a3a72656d6f76654a6f623a2021676040820152663ab0b93234b0b760c91b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73616c20667560408201527f6e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6174636060820152600d60fb1b608082015260a00190565b6020808252602b908201527f476f7665726e616e63653a3a7365745468726573686f6c643a2074687265736860408201526a6f6c645f203e204241534560a81b606082015260800190565b60208082526027908201527f476f7665726e616e63653a3a5f63617374566f74653a20766f74696e672069736040820152660818db1bdcd95960ca1b606082015260800190565b60208082526023908201527f4b656570337262476f7665726e616e63653a3a736c6173683a2021677561726460408201526234b0b760e91b606082015260800190565b602080825260339082015260008051602061492283398151915260408201527230b739b0b1ba34b7b71034b99039ba30b6329760691b606082015260800190565b6020808252603c908201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220766f60408201527f7465732062656c6f772070726f706f73616c207468726573686f6c6400000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526029908201527f476f7665726e616e63653a3a70726f706f73653a206d7573742070726f7669646040820152686520616374696f6e7360b81b606082015260800190565b60208082526024908201527f4b656570337262476f7665726e616e63653a3a7265766f6b653a2021677561726040820152633234b0b760e11b606082015260800190565b602080825260459082015260008051602061492283398151915260408201527f616e73616374696f6e206861736e2774207375727061737365642074696d65206060820152643637b1b59760d91b608082015260a00190565b60208082526026908201527f4b656570337262476f7665726e616e63653a3a616464566f7465733a2021677560408201526530b93234b0b760d11b606082015260800190565b60208082526034908201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420656040820152733c31b2b2b21036b4b734b6bab6903232b630bc9760611b606082015260800190565b60208082526033908201527f476f7665726e616e63653a3a63616e63656c3a2063616e6e6f742063616e63656040820152721b08195e1958dd5d1959081c1c9bdc1bdcd85b606a1b606082015260800190565b60208082526029908201527f4b656570337262476f7665726e616e63653a3a72656d6f7665566f7465733a2060408201526810b3bab0b93234b0b760b91b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a71756575653a2070726f706f73616c2063616e2060408201527f6f6e6c79206265207175657565642069662069742069732073756363656564656060820152601960fa1b608082015260a00190565b6020808252602c908201527f476f7665726e616e63653a3a63617374566f746542795369673a20696e76616c60408201526b6964207369676e617475726560a01b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a5f71756575654f725265766572743a2070726f7060408201527f6f73616c20616374696f6e20616c7265616479207175657565642061742065746060820152606160f81b608082015260a00190565b60208082526029908201527f4b656570337262476f7665726e616e63653a3a736574477561726469616e3a2060408201526810b3bab0b93234b0b760b91b606082015260800190565b60208082526024908201527f4b656570337262476f7665726e616e63653a3a6164644a6f623a2021677561726040820152633234b0b760e11b606082015260800190565b60208082526025908201527f4b656570337262476f7665726e616e63653a3a646973707574653a2021677561604082015264393234b0b760d91b606082015260800190565b60208082526038908201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60408201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000606082015260800190565b6020808252602a908201527f476f7665726e616e63653a3a5f63617374566f74653a20766f74657220616c726040820152691958591e481d9bdd195960b21b606082015260800190565b6020808252602e908201527f4b656570337262476f7665726e616e63653a3a7365744b65657033726248656c60408201526d3832b91d1010b3bab0b93234b0b760911b606082015260800190565b6020808252603d9082015260008051602061492283398151915260408201527f616e73616374696f6e206861736e2774206265656e207175657565642e000000606082015260800190565b60208082526025908201527f476f7665726e616e63653a3a73657451756f72756d3a2071756f72756d5f203e604082015264204241534560d81b606082015260800190565b60208082526056908201527f476f7665726e616e63653a3a70726f706f73653a206f6e65206c69766520707260408201527f6f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c6060820152751c9958591e481c195b991a5b99c81c1c9bdc1bdcd85b60521b608082015260a00190565b6020808252602e908201527f4b656570337262476f7665726e616e63653a3a616363657074476f7665726e6160408201526d3731b29d1010b3bab0b93234b0b760911b606082015260800190565b60208082526037908201527f476f7665726e616e63653a3a70726f706f73654a6f623a206f6e6c7920564f5460408201527f45522063616e2070726f706f7365206e6577206a6f6273000000000000000000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602a908201527f4b656570337262476f7665726e616e63653a3a6164644b50524372656469743a6040820152691010b3bab0b93234b0b760b11b606082015260800190565b6020808252602c908201527f476f7665726e616e63653a3a63616e63656c3a2070726f706f7365722061626f60408201526b1d99481d1a1c995cda1bdb1960a21b606082015260800190565b60208082526025908201527f476f7665726e616e63653a3a70726f706f73653a20746f6f206d616e7920616360408201526474696f6e7360d81b606082015260800190565b6020808252601d908201527f476f7665726e616e63653a657865637574653a2021677561726469616e000000604082015260600190565b6020808252602b908201527f4b656570337262476f7665726e616e63653a3a736574476f7665726e616e636560408201526a1d1010b3bab0b93234b0b760a91b606082015260800190565b6020808252603d9082015260008051602061492283398151915260408201527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000606082015260800190565b60208082526026908201527f476f7665726e616e63653a3a73746174653a20696e76616c69642070726f706f6040820152651cd85b081a5960d21b606082015260800190565b6020808252602d908201527f4b656570337262476f7665726e616e63653a3a7265766f6b654c69717569646960408201526c3a3c9d1010b3bab0b93234b0b760991b606082015260800190565b60208082526049908201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960408201527f6d6174656420657865637574696f6e20626c6f636b206d757374207361746973606082015268333c903232b630bc9760b91b608082015260a00190565b60208082526042908201527f476f7665726e616e63653a3a657865637574653a2070726f706f73616c20636160408201527f6e206f6e6c792062652065786563757465642069662069742069732071756575606082015261195960f21b608082015260a00190565b6020808252602e908201527f4b656570337262476f7665726e616e63653a3a617070726f76654c697175696460408201526d34ba3c9d1010b3bab0b93234b0b760911b606082015260800190565b60208082526031908201527f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60408201527036b290333937b6902a34b6b2b637b1b59760791b606082015260800190565b60208082526030908201527f4b656570337262476f7665726e616e63653a3a736574477561726469616e3a2060408201526f10b832b73234b733a3bab0b93234b0b760811b606082015260800190565b60208082526024908201527f476f7665726e616e63653a3a73657451756f72756d3a2074696d656c6f636b206040820152636f6e6c7960e01b606082015260800190565b8151151581526020808301511515908201526040918201519181019190915260600190565b8981526001600160a01b0389166020820152610120604082018190526000906147878382018b6135c6565b9050828103606084015261479b818a61365c565b905082810360808401526147af8189613609565b905082810360a08401526147c38188613609565b90508560c08401528460e08401528281036101008401526147e4818561368b565b9c9b505050505050505050505050565b9889526001600160a01b0397909716602089015260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b600085825260806020830152614859608083018661368b565b828103604084015261486b818661368b565b91505082606083015295945050505050565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156148aa57600080fd5b604052919050565b600067ffffffffffffffff8211156148c8578081fd5b5060209081020190565b60005b838110156148ed5781810151838201526020016148d5565b83811115610b4f5750506000910152565b6001600160a01b038116811461318d57600080fd5b801515811461318d57600080fdfe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472a26469706673582212201f27d8393d4a4ffad834347885fe5af18b6ef743417c8446d8f7aaeeab66e12164736f6c634300060c00330000000000000000000000005ea29eee799aa7cc379fde5cf370bc24f2ea7c81

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

0000000000000000000000005ea29eee799aa7cc379fde5cf370bc24f2ea7c81

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005ea29eee799aa7cc379fde5cf370bc24f2ea7c81


Deployed ByteCode Sourcemap

3361:19490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6265:43;;;;;;;;;;-1:-1:-1;6265:43:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5111:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3461:48::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14548:117::-;;;;;;;;;;-1:-1:-1;14548:117:0;;;;;:::i;:::-;;:::i;:::-;;6636:40;;;;;;;;;;;;;:::i;6372:50::-;;;;;;;;;;-1:-1:-1;6372:50:0;;;;;:::i;:::-;;:::i;18576:186::-;;;;;;;;;;-1:-1:-1;18576:186:0;;;;;:::i;:::-;;:::i;6495:122::-;;;;;;;;;;;;;:::i;18965:170::-;;;;;;;;;;;;;:::i;4153:121::-;;;;;;;;;;;;;:::i;5284:29::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12967:287::-;;;;;;;;;;-1:-1:-1;12967:287:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;4964:63::-;;;;;;;;;;;;;:::i;13422:1118::-;;;;;;;;;;-1:-1:-1;13422:1118:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12200:759::-;;;;;;;;;;-1:-1:-1;12200:759:0;;;;;:::i;:::-;;:::i;16792:23::-;;;;;;;;;;;;;:::i;14673:487::-;;;;;;;;;;-1:-1:-1;14673:487:0;;;;;:::i;:::-;;:::i;19684:163::-;;;;;;;;;;-1:-1:-1;19684:163:0;;;;;:::i;:::-;;:::i;18048:193::-;;;;;;;;;;-1:-1:-1;18048:193:0;;;;;:::i;:::-;;:::i;16746:33::-;;;;;;;;;;;;;:::i;3810:38::-;;;;;;;;;;;;;:::i;19518:160::-;;;;;;;;;;-1:-1:-1;19518:160:0;;;;;:::i;:::-;;:::i;16822:30::-;;;;;;;;;;;;;:::i;4783:74::-;;;;;;;;;;;;;:::i;16693:44::-;;;;;;;;;;;;;:::i;18407:163::-;;;;;;;;;;-1:-1:-1;18407:163:0;;;;;:::i;:::-;;:::i;16865:182::-;;;;;;;;;;-1:-1:-1;16865:182:0;;;;;:::i;:::-;;:::i;4423:270::-;;;;;;;;;;-1:-1:-1;4423:270:0;;;;;:::i;:::-;;:::i;17059:185::-;;;;;;;;;;;;;:::i;18768:191::-;;;;;;;;;;-1:-1:-1;18768:191:0;;;;;:::i;:::-;;:::i;16643:43::-;;;;;;;;;;;;;:::i;4282:133::-;;;;;;;;;;;;;:::i;17846:196::-;;;;;;;;;;-1:-1:-1;17846:196:0;;;;;:::i;:::-;;:::i;3651:32::-;;;;;;;;;;;;;:::i;16593:43::-;;;;;;;;;;;;;:::i;3899:246::-;;;;;;;;;;-1:-1:-1;3899:246:0;;;;;:::i;:::-;;:::i;18247:154::-;;;;;;;;;;-1:-1:-1;18247:154:0;;;;;:::i;:::-;;:::i;17447:194::-;;;;;;;;;;-1:-1:-1;17447:194:0;;;;;:::i;:::-;;:::i;17647:193::-;;;;;;;;;;-1:-1:-1;17647:193:0;;;;;:::i;:::-;;:::i;5369:25::-;;;;;;;;;;;;;:::i;8206:1321::-;;;;;;;;;;-1:-1:-1;8206:1321:0;;;;;:::i;:::-;;:::i;7634:564::-;;;;;;;;;;-1:-1:-1;7634:564:0;;;;;:::i;:::-;;:::i;10622:559::-;;;;;;;;;;-1:-1:-1;10622:559:0;;;;;:::i;:::-;;:::i;17256:185::-;;;;;;;;;;-1:-1:-1;17256:185:0;;;;;:::i;:::-;;:::i;6766:94::-;;;;;;;;;;;;;:::i;20189:406::-;;;;;;;;;;-1:-1:-1;20189:406:0;;;;;:::i;:::-;;:::i;13262:152::-;;;;;;;;;;-1:-1:-1;13262:152:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19310:202::-;;;;;;;;;;-1:-1:-1;19310:202:0;;;;;:::i;:::-;;:::i;3857:33::-;;;;;;;;;;;;;:::i;19855:51::-;;;;;;;;;;-1:-1:-1;19855:51:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19141:163::-;;;;;;;;;;-1:-1:-1;19141:163:0;;;;;:::i;:::-;;:::i;11553:639::-;;;;;;:::i;:::-;;:::i;6265:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6265:43:0;;;;;;;;;;;;;;;;;;;;;;:::o;5111:69::-;5171:6;5111:69;:::o;3461:48::-;;;;;;;;;;;;;;-1:-1:-1;;;3461:48:0;;;;:::o;14548:117::-;14615:42;14625:10;14637;14649:7;14615:9;:42::i;:::-;14548:117;;:::o;6636:40::-;;;:::o;6372:50::-;;;;;;;;;;;;;:::o;18576:186::-;18658:8;;-1:-1:-1;;;;;18658:8:0;18644:10;:22;18636:81;;;;-1:-1:-1;;;18636:81:0;;;;;;;:::i;:::-;;;;;;;;;18728:26;;-1:-1:-1;;;18728:26:0;;-1:-1:-1;;;;;18728:3:0;:20;;;;:26;;18749:4;;18728:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18576:186;:::o;6495:122::-;6537:80;6495:122;:::o;18965:170::-;19035:8;;-1:-1:-1;;;;;19035:8:0;19021:10;:22;19013:81;;;;-1:-1:-1;;;19013:81:0;;;;;;;:::i;:::-;19105:3;-1:-1:-1;;;;;19105:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18965:170::o;4153:121::-;4197:4;4221:45;3885:5;4221:35;4243:12;;4221:3;-1:-1:-1;;;;;4221:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:21;;:35::i;:::-;:39;;:45::i;:::-;4214:52;;4153:121;:::o;5284:29::-;;;:::o;12967:287::-;13025:24;13051:20;13073:26;13101:24;13138:18;13159:9;:21;13169:10;13159:21;;;;;;;;;;;13138:42;;13199:1;:9;;13210:1;:8;;13220:1;:12;;13234:1;:11;;13191:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13191:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13191:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13191:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12967:287;;;;;:::o;4964:63::-;5023:1;4964:63;:::o;13422:1118::-;13475:13;13526:10;13509:13;;:27;;:45;;;;;13553:1;13540:10;:14;13509:45;13501:96;;;;-1:-1:-1;;;13501:96:0;;;;;;;:::i;:::-;13608:25;13636:21;;;:9;:21;;;;;13672:17;;;;;;13668:865;;;13713:22;13706:29;;;;;13668:865;13773:8;:19;;;13757:12;:35;13753:780;;13816:21;13809:28;;;;;13753:780;13875:8;:17;;;13859:12;:33;13855:678;;13916:20;13909:27;;;;;13855:678;14005:13;:11;:13::i;:::-;13980:21;;;;13958:17;;;;:44;;:21;:44::i;:::-;:60;13954:579;;;14042:22;14035:29;;;;;13954:579;14107:8;:21;;;14086:8;:17;;;:42;14082:451;;14152:22;14145:29;;;;;14082:451;14196:12;;;;14192:341;;14237:23;14230:30;;;;;14192:341;14282:17;;;;;;;;;14278:255;;;14323:22;14316:29;;;;;14278:255;14386:12;;;;:30;;16629:7;14386:16;:30::i;:::-;14367:15;:49;14363:170;;14440:21;14433:28;;;;;14363:170;14501:20;14494:27;;;13422:1118;;;;:::o;12200:759::-;12251:19;12273:17;12279:10;12273:5;:17::i;:::-;12251:39;-1:-1:-1;12318:22:0;12309:5;:31;;;;;;;;;;12301:95;;;;-1:-1:-1;;;12301:95:0;;;;;;;:::i;:::-;12409:25;12437:21;;;:9;:21;;;;;12477:17;;;;12506:3;-1:-1:-1;;;;;12477:33:0;;;:17;;:33;;;;:134;;;12592:19;:17;:19::i;:::-;12550:17;;;;;-1:-1:-1;;;;;12532:3:0;:17;;;;;12550;;;;12569:19;;:12;;:16;:19::i;:::-;12532:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;12477:134;12469:191;;;;-1:-1:-1;;;12469:191:0;;;;;;;:::i;:::-;12673:17;;;:24;;-1:-1:-1;;12673:24:0;12693:4;12673:24;;;:17;12708:198;12729:16;;;:23;12725:27;;12708:198;;;12774:120;12793:8;:16;;12810:1;12793:19;;;;;;;;;;;;;;;;;;12814:15;;;:18;;-1:-1:-1;;;;;12793:19:0;;;;12830:1;;12814:18;;;;;;;;;;;;;;12834:8;:19;;12854:1;12834:22;;;;;;;;;;;;;;;;;;12774:120;;;;;;;-1:-1:-1;;12774:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12834:22;12774:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12858:8;:18;;12877:1;12858:21;;;;;;;;;;;;;;;;;;12774:120;;;;;;;-1:-1:-1;;12774:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12858:21;12774:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12881:8;:12;;;12774:18;:120::i;:::-;12754:3;;12708:198;;;;12923:28;12940:10;12923:28;;;;;;:::i;:::-;;;;;;;;12200:759;;;:::o;16792:23::-;;;-1:-1:-1;;;;;16792:23:0;;:::o;14673:487::-;14776:18;6808:52;14835:10;14847:7;14807:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14797:59;;;;;;14776:80;;14867:14;14923:15;14940:10;14894:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14884:68;;;;;;14867:85;;14963:17;14983:26;14993:6;15001:1;15004;15007;14983:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14983:26:0;;-1:-1:-1;;14983:26:0;;;-1:-1:-1;;;;;;;15028:23:0;;15020:80;;;;-1:-1:-1;;;15020:80:0;;;;;;;:::i;:::-;15111:41;15121:9;15132:10;15144:7;15111:9;:41::i;:::-;14673:487;;;;;;;;:::o;19684:163::-;19759:8;;-1:-1:-1;;;;;19759:8:0;19745:10;:22;19737:72;;;;-1:-1:-1;;;19737:72:0;;;;;;;:::i;:::-;19820:19;;-1:-1:-1;;;19820:19:0;;-1:-1:-1;;;;;19820:3:0;:11;;;;:19;;19832:6;;19820:19;;;:::i;18048:193::-;18134:8;;-1:-1:-1;;;;;18134:8:0;18120:10;:22;18112:80;;;;-1:-1:-1;;;18112:80:0;;;;;;;:::i;:::-;18203:30;;-1:-1:-1;;;18203:30:0;;-1:-1:-1;;;;;18203:3:0;:19;;;;:30;;18223:9;;18203:30;;;:::i;16746:33::-;;;;:::o;3810:38::-;;;;:::o;19518:160::-;19592:8;;-1:-1:-1;;;;;19592:8:0;19578:10;:22;19570:71;;;;-1:-1:-1;;;19570:71:0;;;;;;;:::i;:::-;19652:18;;-1:-1:-1;;;19652:18:0;;-1:-1:-1;;;;;19652:3:0;:10;;;;:18;;19663:6;;19652:18;;;:::i;16822:30::-;;;-1:-1:-1;;;;;16822:30:0;;:::o;4783:74::-;4852:2;4783:74;:::o;16693:44::-;16730:7;16693:44;:::o;18407:163::-;18481:8;;-1:-1:-1;;;;;18481:8:0;18467:10;:22;18459:74;;;;-1:-1:-1;;;18459:74:0;;;;;;;:::i;:::-;18544:18;;-1:-1:-1;;;18544:18:0;;-1:-1:-1;;;;;18544:3:0;:13;;;;:18;;18558:3;;18544:18;;;:::i;16865:182::-;16947:8;;-1:-1:-1;;;;;16947:8:0;16933:10;:22;16925:76;;;;-1:-1:-1;;;16925:76:0;;;;;;;:::i;:::-;17012:15;:27;;-1:-1:-1;;;;;;17012:27:0;-1:-1:-1;;;;;17012:27:0;;;;;;;;;;16865:182::o;4423:270::-;4490:10;4512:4;4490:27;4482:76;;;;-1:-1:-1;;;4482:76:0;;;;;;;:::i;:::-;3885:5;4577:10;:18;;4569:74;;;;-1:-1:-1;;;4569:74:0;;;;;;;:::i;:::-;4654:18;:31;4423:270::o;17059:185::-;17131:15;;-1:-1:-1;;;;;17131:15:0;17117:10;:29;17109:90;;;;-1:-1:-1;;;17109:90:0;;;;;;;:::i;:::-;17221:15;;17210:8;:26;;-1:-1:-1;;;;;;17210:26:0;-1:-1:-1;;;;;17221:15:0;;;17210:26;;;;;;17059:185::o;18768:191::-;18854:8;;-1:-1:-1;;;;;18854:8:0;18840:10;:22;18832:78;;;;-1:-1:-1;;;18832:78:0;;;;;;;:::i;:::-;18921:30;;-1:-1:-1;;;18921:30:0;;-1:-1:-1;;;;;18921:3:0;:17;;;;:30;;18939:11;;18921:30;;;:::i;16643:43::-;16680:6;16643:43;:::o;4282:133::-;4332:4;4356:51;3885:5;4356:41;4378:18;;4356:3;-1:-1:-1;;;;;4356:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17846:196;17933:8;;-1:-1:-1;;;;;17933:8:0;17919:10;:22;17911:81;;;;-1:-1:-1;;;17911:81:0;;;;;;;:::i;:::-;18003:31;;-1:-1:-1;;;18003:31:0;;-1:-1:-1;;;;;18003:3:0;:20;;;;:31;;18024:9;;18003:31;;;:::i;3651:32::-;;;;:::o;16593:43::-;16629:7;16593:43;:::o;3899:246::-;3960:10;3982:4;3960:27;3952:76;;;;-1:-1:-1;;;3952:76:0;;;;;;;:::i;:::-;3885:5;4047:7;:15;;4039:65;;;;-1:-1:-1;;;4039:65:0;;;;;;;:::i;:::-;4115:12;:22;3899:246::o;18247:154::-;18318:8;;-1:-1:-1;;;;;18318:8:0;18304:10;:22;18296:71;;;;-1:-1:-1;;;18296:71:0;;;;;;;:::i;:::-;18378:15;;-1:-1:-1;;;18378:15:0;;-1:-1:-1;;;;;18378:3:0;:10;;;;:15;;18389:3;;18378:15;;;:::i;17447:194::-;17538:8;;-1:-1:-1;;;;;17538:8:0;17524:10;:22;17516:76;;;;-1:-1:-1;;;17516:76:0;;;;;;;:::i;:::-;17603:30;;-1:-1:-1;;;17603:30:0;;-1:-1:-1;;;;;17603:3:0;:15;;;;:30;;17619:5;;17626:6;;17603:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17447:194;;:::o;17647:193::-;17737:8;;-1:-1:-1;;;;;17737:8:0;17723:10;:22;17715:77;;;;-1:-1:-1;;;17715:77:0;;;;;;;:::i;:::-;17803:29;;-1:-1:-1;;;17803:29:0;;-1:-1:-1;;;;;17803:3:0;:16;;;;:29;;17820:3;;17825:6;;17803:29;;;:::i;5369:25::-;;;;:::o;8206:1321::-;8368:4;8447:19;:17;:19::i;:::-;-1:-1:-1;;;;;8393:3:0;:17;;8411:10;8423:19;:12;8440:1;8423:16;:19::i;:::-;8393:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;8385:146;;;;-1:-1:-1;;;8385:146:0;;;;;;;:::i;:::-;8568:6;:13;8550:7;:14;:31;:70;;;;;8603:10;:17;8585:7;:14;:35;8550:70;:108;;;;;8642:9;:16;8624:7;:14;:34;8550:108;8542:186;;;;-1:-1:-1;;;8542:186:0;;;;;;;:::i;:::-;8747:14;;8739:73;;;;-1:-1:-1;;;8739:73:0;;;;;;;:::i;:::-;8849:23;:21;:23::i;:::-;8831:7;:14;:41;;8823:91;;;;-1:-1:-1;;;8823:91:0;;;;;;;:::i;:::-;8969:10;8927:21;8951:29;;;:17;:29;;;;;;8995:21;;8991:448;;9031:42;9076:23;9082:16;9076:5;:23::i;:::-;9031:68;-1:-1:-1;9152:20:0;9120:28;:52;;;;;;;;;;9112:150;;;;-1:-1:-1;;;9112:150:0;;;;;;;:::i;:::-;9315:21;9283:28;:53;;;;;;;;;;9275:152;;;;-1:-1:-1;;;9275:152:0;;;;;;;:::i;:::-;8991:448;;9458:61;9467:7;9476:6;9484:10;9496:9;9507:11;9458:8;:61::i;:::-;9451:68;8206:1321;-1:-1:-1;;;;;;;8206:1321:0:o;7634:564::-;7693:10;-1:-1:-1;;;;;7715:3:0;7693:26;;7685:94;;;;-1:-1:-1;;;7685:94:0;;;;;;;:::i;:::-;7790:24;7846:3;7825:7;7833:1;7825:10;;;;;;;;;;;;;:25;-1:-1:-1;;;;;7825:25:0;;;-1:-1:-1;;;;;7825:25:0;;;;;7863:26;7900:33;;;;;;;;;;;;;-1:-1:-1;;;7900:33:0;;;:10;7911:1;7900:13;;;;;;;;;;;;;:33;;;;7946:24;8007:3;7996:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;7981:9;7991:1;7981:12;;;;;;;;;;;;;:30;;;;8024:20;8067:1;8055:6;8062:1;8055:9;;;;;;;;;;;;;:13;;;;;8081:109;8090:7;8099:6;8107:10;8119:9;8184:3;8137:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;8081:8;:109::i;10622:559::-;10701:23;10680:17;10686:10;10680:5;:17::i;:::-;:44;;;;;;;;;10672:122;;;;-1:-1:-1;;;10672:122:0;;;;;;;:::i;:::-;10805:25;10833:21;;;:9;:21;;;;;10896:5;;10833:21;;10805:25;10876:26;;:15;;:19;:26::i;:::-;10865:37;;10918:6;10913:185;10934:16;;;:23;10930:27;;10913:185;;;10979:107;10994:8;:16;;11011:1;10994:19;;;;;;;;;;;;;;;;;;11015:15;;;:18;;-1:-1:-1;;;;;10994:19:0;;;;11031:1;;11015:18;;;;;;;;;;;;;;11035:8;:19;;11055:1;11035:22;;;;;;;;;;;;;;;;;;10979:107;;;;;;;-1:-1:-1;;10979:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11035:22;10979:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11059:8;:18;;11078:1;11059:21;;;;;;;;;;;;;;;;;;10979:107;;;;;;;-1:-1:-1;;10979:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11059:21;10979:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11082:3;10979:14;:107::i;:::-;10959:3;;10913:185;;;-1:-1:-1;11108:12:0;;;:18;;;11142:31;;;;;;11157:10;;11123:3;;11142:31;:::i;17256:185::-;17344:8;;-1:-1:-1;;;;;17344:8:0;17330:10;:22;17322:73;;;;-1:-1:-1;;;17322:73:0;;;;;;;:::i;:::-;17406:27;;-1:-1:-1;;;17406:27:0;;-1:-1:-1;;;;;17406:3:0;:12;;;;:27;;17419:5;;17426:6;;17406:27;;;:::i;6766:94::-;6808:52;6766:94;:::o;20189:406::-;20246:10;20268:4;20246:27;20238:89;;;;-1:-1:-1;;;20238:89:0;;;;;;;:::i;:::-;16680:6;20346;:23;;20338:88;;;;-1:-1:-1;;;20338:88:0;;;;;;;:::i;:::-;16730:7;20445:6;:23;;20437:92;;;;-1:-1:-1;;;20437:92:0;;;;;;;:::i;:::-;20540:5;:14;;;20572:15;;20548:6;;20572:15;;;;;20189:406;:::o;13262:152::-;13335:14;;:::i;:::-;-1:-1:-1;13369:21:0;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;13369:37:0;;;;:30;;:37;;;;;;13362:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13262:152;;;;;:::o;19310:202::-;19412:8;;-1:-1:-1;;;;;19412:8:0;19398:10;:22;19390:70;;;;-1:-1:-1;;;19390:70:0;;;;;;;:::i;:::-;19471:33;;-1:-1:-1;;;19471:33:0;;-1:-1:-1;;;;;19471:3:0;:9;;;;:33;;19481:6;;19489;;19497;;19471:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19310:202;;;:::o;3857:33::-;3885:5;3857:33;:::o;19855:51::-;;;;;;;;;;;;;;;:::o;19141:163::-;19216:8;;-1:-1:-1;;;;;19216:8:0;19202:10;:22;19194:72;;;;-1:-1:-1;;;19194:72:0;;;;;;;:::i;:::-;19277:19;;-1:-1:-1;;;19277:19:0;;-1:-1:-1;;;;;19277:3:0;:11;;;;:19;;19289:6;;19277:19;;;:::i;11553:639::-;11621:8;;-1:-1:-1;;;;;11621:8:0;:24;;:50;;-1:-1:-1;11663:8:0;;-1:-1:-1;;;;;11663:8:0;11649:10;:22;11621:50;11613:92;;;;-1:-1:-1;;;11613:92:0;;;;;;;:::i;:::-;11745:20;11724:17;11730:10;11724:5;:17::i;:::-;:41;;;;;;;;;11716:120;;;;-1:-1:-1;;;11716:120:0;;;;;;;:::i;:::-;11847:25;11875:21;;;:9;:21;;;;;11907:17;;;:24;;-1:-1:-1;;11907:24:0;;;;;11875:21;11942:199;11963:16;;;:23;11959:27;;11942:199;;;12008:121;12028:8;:16;;12045:1;12028:19;;;;;;;;;;;;;;;;;;12049:15;;;:18;;-1:-1:-1;;;;;12028:19:0;;;;12065:1;;12049:18;;;;;;;;;;;;;;12069:8;:19;;12089:1;12069:22;;;;;;;;;;;;;;;;;;12008:121;;;;;;;-1:-1:-1;;12008:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12069:22;12008:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12093:8;:18;;12112:1;12093:21;;;;;;;;;;;;;;;;;;12008:121;;;;;;;-1:-1:-1;;12008:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12093:21;12008:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12116:8;:12;;;12008:19;:121::i;:::-;-1:-1:-1;11988:3:0;;11942:199;;;;12156:28;12173:10;12156:28;;;;;;:::i;:::-;;;;;;;;11553:639;;:::o;15168:821::-;15282:20;15261:17;15267:10;15261:5;:17::i;:::-;:41;;;;;;;;;15253:93;;;;-1:-1:-1;;;15253:93:0;;;;;;;:::i;:::-;15357:25;15385:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15443:24:0;;;;:17;;;:24;;;;;;15486:16;;;;:25;15478:80;;;;-1:-1:-1;;;15478:80:0;;;;;;;:::i;:::-;15607:19;;;;15582:45;;-1:-1:-1;;;15582:45:0;;15569:10;;-1:-1:-1;;;;;15582:3:0;:17;;;;:45;;15600:5;;15607:19;15582:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15569:58;;15644:7;15640:177;;;15688:17;;;;:28;;15710:5;15688:21;:28::i;:::-;15668:17;;;:48;15640:177;;;15773:21;;;;:32;;15799:5;15773:25;:32::i;:::-;15749:21;;;:56;15640:177;15829:23;;15848:4;-1:-1:-1;;15829:23:0;;;;;-1:-1:-1;;15863:25:0;15829:23;15863:25;;;;;;;15899:13;;:21;;;15938:43;;;;;;15947:5;;15954:10;;15863:25;;15899:21;;15938:43;:::i;:::-;;;;;;;;15168:821;;;;;;:::o;1109:249::-;1167:7;1190:6;1186:47;;-1:-1:-1;1220:1:0;1213:8;;1186:47;1257:5;;;1261:1;1257;:5;:1;1281:5;;;;;:10;1273:56;;;;-1:-1:-1;;;1273:56:0;;;;;;;:::i;:::-;1349:1;1109:249;-1:-1:-1;;;1109:249:0:o;1619:132::-;1677:7;1704:39;1708:1;1711;1704:39;;;;;;;;;;;;;;;;;:3;:39::i;394:181::-;452:7;484:5;;;508:6;;;;500:46;;;;-1:-1:-1;;;500:46:0;;;;;;;:::i;773:137::-;831:7;858:44;862:1;865;858:44;;;;;;;;;;;;;;;;;:3;:44::i;21122:338::-;21252:14;21290:6;21298:5;21305:9;21316:4;21322:3;21279:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;21279:47:0;;;;;;;;;21269:58;;21279:47;21269:58;;;;21367:5;21338:26;;;:18;:26;;;;;;:34;;-1:-1:-1;;21338:34:0;;;21269:58;-1:-1:-1;;;;;;21390:62:0;;;21269:58;;21390:62;;;;21424:5;;21431:9;;21442:4;;21448:3;;21390:62;:::i;:::-;;;;;;;;21122:338;;;;;;:::o;9535:1079::-;9700:4;9717:15;9735:31;9752:13;:11;:13::i;:::-;9735:12;;:16;:31::i;:::-;9717:49;;9777:13;9793:30;9808:14;:12;:14::i;:::-;9793:10;;:14;:30::i;:::-;9836:13;:15;;;;;;9777:46;-1:-1:-1;9862:27:0;;:::i;:::-;9892:427;;;;;;;;9920:13;;9892:427;;;;9958:10;-1:-1:-1;;;;;9892:427:0;;;;;9988:1;9892:427;;;;10013:7;9892:427;;;;10043:6;9892:427;;;;10076:10;9892:427;;;;10112:9;9892:427;;;;10148:10;9892:427;;;;10183:8;9892:427;;;;10216:1;9892:427;;;;10246:1;9892:427;;;;10272:5;9892:427;;;;;;10302:5;9892:427;;;;;9862:457;;10360:11;10332:9;:25;10342:11;:14;;;10332:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10332:39:0;;;;;-1:-1:-1;;;;;10332:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10332:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10332:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10332:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10332:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10332:39:0;;;;;;;;;;-1:-1:-1;;10332:39:0;;;;;;;;;;;10424:14;;10400:20;;;;;-1:-1:-1;;;;;10382:39:0;-1:-1:-1;10382:39:0;;;:17;:39;;;;;;;;:56;;;;10472:14;;10456:118;;;;;;10488:10;;10500:7;;10509:6;;10517:10;;10529:9;;10540:10;;10552:8;;10562:11;;10456:118;:::i;:::-;;;;;;;;10592:14;;9535:1079;-1:-1:-1;;;;;;;;9535:1079:0:o;11189:356::-;11324:18;:78;11364:6;11372:5;11379:9;11390:4;11396:3;11353:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11353:47:0;;;;;;;;;11343:58;;11353:47;11343:58;;;;11324:78;;;;;;;;;;-1:-1:-1;11324:78:0;;;;11323:79;11315:157;;;;-1:-1:-1;;;11315:157:0;;;;;;;:::i;:::-;11483:54;11501:6;11509:5;11516:9;11527:4;11533:3;11483:17;:54::i;21468:1210::-;21597:12;21622:14;21660:6;21668:5;21675:9;21686:4;21692:3;21649:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;21649:47:0;;;;;;;;;21639:58;;21649:47;21639:58;;;;21716:26;;;;:18;:26;;;;;;21639:58;;-1:-1:-1;21716:26:0;;21708:100;;;;-1:-1:-1;;;21708:100:0;;;;;;;:::i;:::-;21850:3;21827:19;:17;:19::i;:::-;:26;;21819:108;;;;-1:-1:-1;;;21819:108:0;;;;;;;:::i;:::-;21969:21;:3;16629:7;21969;:21::i;:::-;21946:19;:17;:19::i;:::-;:44;;21938:108;;;;-1:-1:-1;;;21938:108:0;;;;;;;:::i;:::-;22088:5;22059:26;;;:18;:26;;;;;:34;;-1:-1:-1;;22059:34:0;;;22144:23;;22106:21;;22140:179;;-1:-1:-1;22200:4:0;22140:179;;;22288:9;22272:27;;;;;;22302:4;22248:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22237:70;;22140:179;22392:12;22406:23;22433:6;-1:-1:-1;;;;;22433:11:0;22451:5;22458:8;22433:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22391:76;;;;22486:7;22478:81;;;;-1:-1:-1;;;22478:81:0;;;;;;;:::i;:::-;22604:6;-1:-1:-1;;;;;22577:63:0;22596:6;22577:63;22612:5;22619:9;22630:4;22636:3;22577:63;;;;;;;;;:::i;:::-;;;;;;;;22660:10;21468:1210;-1:-1:-1;;;;;;;;;21468:1210:0:o;1754:345::-;1840:7;1942:12;1935:5;1927:28;;;;-1:-1:-1;;;1927:28:0;;;;;;;;:::i;:::-;;1966:9;1982:1;1978;:5;;;;;;;1754:345;-1:-1:-1;;;;;1754:345:0:o;913:192::-;999:7;1035:12;1027:6;;;;1019:29;;;;-1:-1:-1;;;1019:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1071:5:0;;;913:192::o;20603:511::-;20730:7;20765:30;20789:5;;20765:19;:17;:19::i;:::-;:23;;:30::i;:::-;20758:3;:37;;20750:123;;;;-1:-1:-1;;;20750:123:0;;;;;;;:::i;:::-;20884:14;20922:6;20930:5;20937:9;20948:4;20954:3;20911:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;20911:47:0;;;;;;;;;20901:58;;20911:47;20901:58;;;;20970:26;;;;:18;:26;;;;;;:33;;-1:-1:-1;;20970:33:0;20999:4;20970:33;;;20901:58;-1:-1:-1;;;;;;21021:61:0;;;20901:58;;21021:61;;;;21054:5;;21061:9;;21072:4;;21078:3;;21021:61;:::i;:::-;;;;;;;;21100:6;20603:511;-1:-1:-1;;;;;;20603:511:0:o;22686:162::-;22825:15;22686:162;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130::-;72:20;;-1:-1;;;;;75785:54;;78006:35;;77996:2;;78055:1;;78045:12;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;-1:-1;;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;462:21;;;345:89;-1:-1;506:4;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;645:1;;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;760:37;793:3;781:10;760:37;:::i;:::-;748:50;;812:14;;;;840;;;;702:1;695:9;655:206;;;659:14;;;;;237:630;;;;:::o;891:705::-;;1017:3;1010:4;1002:6;998:17;994:27;984:2;;-1:-1;;1025:12;984:2;1072:6;1059:20;1094:89;1109:73;1175:6;1109:73;:::i;1094:89::-;1211:21;;;1085:98;-1:-1;1255:4;1268:14;;;;1243:17;;;1363:1;1348:242;1373:6;1370:1;1367:13;1348:242;;;1480:46;1522:3;1255:4;1456:3;1443:17;1247:6;1431:30;;1480:46;:::i;:::-;1468:59;;1541:14;;;;1569;;;;1395:1;1388:9;1348:242;;1621:708;;1748:3;1741:4;1733:6;1729:17;1725:27;1715:2;;-1:-1;;1756:12;1715:2;1803:6;1790:20;1825:90;1840:74;1907:6;1840:74;:::i;1825:90::-;1943:21;;;1816:99;-1:-1;1987:4;2000:14;;;;1975:17;;;2095:1;2080:243;2105:6;2102:1;2099:13;2080:243;;;2212:47;2255:3;1987:4;2188:3;2175:17;1979:6;2163:30;;2212:47;:::i;:::-;2200:60;;2274:14;;;;2302;;;;2127:1;2120:9;2080:243;;2355:707;;2472:3;2465:4;2457:6;2453:17;2449:27;2439:2;;-1:-1;;2480:12;2439:2;2527:6;2514:20;2549:80;2564:64;2621:6;2564:64;:::i;2549:80::-;2657:21;;;2540:89;-1:-1;2701:4;2714:14;;;;2689:17;;;2803;;;2794:27;;;;2791:36;-1:-1;2788:2;;;2840:1;;2830:12;2788:2;2865:1;2850:206;2875:6;2872:1;2869:13;2850:206;;;4305:20;;2943:50;;3007:14;;;;3035;;;;2897:1;2890:9;2850:206;;3339:440;;3440:3;3433:4;3425:6;3421:17;3417:27;3407:2;;-1:-1;;3448:12;3407:2;3495:6;3482:20;70920:18;70912:6;70909:30;70906:2;;;-1:-1;;70942:12;70906:2;3517:64;71015:9;70996:17;;-1:-1;;70992:33;71083:4;71073:15;3517:64;:::i;:::-;3508:73;;3601:6;3594:5;3587:21;3705:3;71083:4;3696:6;3629;3687:16;;3684:25;3681:2;;;3722:1;;3712:12;3681:2;76917:6;71083:4;3629:6;3625:17;71083:4;3663:5;3659:16;76894:30;76973:1;76955:16;;;71083:4;76955:16;76948:27;3663:5;3400:379;-1:-1;;3400:379::o;4649:241::-;;4753:2;4741:9;4732:7;4728:23;4724:32;4721:2;;;-1:-1;;4759:12;4721:2;4821:53;4866:7;4842:22;4821:53;:::i;4897:491::-;;;;5035:2;5023:9;5014:7;5010:23;5006:32;5003:2;;;-1:-1;;5041:12;5003:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5093:63;-1:-1;5193:2;5232:22;;72:20;97:33;72:20;97:33;:::i;:::-;4997:391;;5201:63;;-1:-1;;;5301:2;5340:22;;;;4305:20;;4997:391::o;5395:366::-;;;5516:2;5504:9;5495:7;5491:23;5487:32;5484:2;;;-1:-1;;5522:12;5484:2;5584:53;5629:7;5605:22;5584:53;:::i;:::-;5574:63;5674:2;5713:22;;;;4305:20;;-1:-1;;;5478:283::o;5768:1431::-;;;;;;6069:3;6057:9;6048:7;6044:23;6040:33;6037:2;;;-1:-1;;6076:12;6037:2;6134:17;6121:31;6172:18;;6164:6;6161:30;6158:2;;;-1:-1;;6194:12;6158:2;6224:78;6294:7;6285:6;6274:9;6270:22;6224:78;:::i;:::-;6214:88;;6367:2;6356:9;6352:18;6339:32;6325:46;;6172:18;6383:6;6380:30;6377:2;;;-1:-1;;6413:12;6377:2;6443:78;6513:7;6504:6;6493:9;6489:22;6443:78;:::i;:::-;6433:88;;6586:2;6575:9;6571:18;6558:32;6544:46;;6172:18;6602:6;6599:30;6596:2;;;-1:-1;;6632:12;6596:2;6662:88;6742:7;6733:6;6722:9;6718:22;6662:88;:::i;:::-;6652:98;;6815:2;6804:9;6800:18;6787:32;6773:46;;6172:18;6831:6;6828:30;6825:2;;;-1:-1;;6861:12;6825:2;6891:87;6970:7;6961:6;6950:9;6946:22;6891:87;:::i;:::-;6881:97;;7043:3;7032:9;7028:19;7015:33;7001:47;;6172:18;7060:6;7057:30;7054:2;;;-1:-1;;7090:12;7054:2;;7120:63;7175:7;7166:6;7155:9;7151:22;7120:63;:::i;:::-;7110:73;;;6031:1168;;;;;;;;:::o;7206:241::-;;7310:2;7298:9;7289:7;7285:23;7281:32;7278:2;;;-1:-1;;7316:12;7278:2;-1:-1;3268:20;;7272:175;-1:-1;7272:175::o;7702:263::-;;7817:2;7805:9;7796:7;7792:23;7788:32;7785:2;;;-1:-1;;7823:12;7785:2;-1:-1;4453:13;;7779:186;-1:-1;7779:186::o;7972:366::-;;;8093:2;8081:9;8072:7;8068:23;8064:32;8061:2;;;-1:-1;;8099:12;8061:2;4318:6;4305:20;8151:63;;8269:53;8314:7;8251:2;8294:9;8290:22;8269:53;:::i;:::-;8259:63;;8055:283;;;;;:::o;8345:360::-;;;8463:2;8451:9;8442:7;8438:23;8434:32;8431:2;;;-1:-1;;8469:12;8431:2;4318:6;4305:20;8521:63;;8621:2;8661:9;8657:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;8629:60;;;;8425:280;;;;;:::o;8712:733::-;;;;;;8879:3;8867:9;8858:7;8854:23;8850:33;8847:2;;;-1:-1;;8886:12;8847:2;4318:6;4305:20;8938:63;;9038:2;9078:9;9074:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;9046:60;-1:-1;9143:2;9180:22;;4581:20;76001:4;75990:16;;78494:33;;78484:2;;-1:-1;;78531:12;78484:2;8841:604;;;;-1:-1;9151:61;;9249:2;9288:22;;3268:20;;-1:-1;9357:3;9397:22;3268:20;;8841:604;-1:-1;;8841:604::o;10785:690::-;;10978:5;72188:12;73547:6;73542:3;73535:19;73584:4;;73579:3;73575:14;10990:93;;73584:4;11154:5;71549:14;-1:-1;11193:260;11218:6;11215:1;11212:13;11193:260;;;11279:13;;-1:-1;;;;;75785:54;10426:37;;9606:14;;;;73026;;;;75796:42;11233:9;11193:260;;;-1:-1;11459:10;;10909:566;-1:-1;;;;;10909:566::o;11510:920::-;;11730:5;72188:12;73547:6;73542:3;73535:19;73584:4;;73579:3;73575:14;11742:102;;;;73584:4;11901:6;11897:17;11892:3;11888:27;11876:39;;73584:4;11995:5;71549:14;-1:-1;12034:357;12059:6;12056:1;12053:13;12034:357;;;12121:9;12115:4;12111:20;12106:3;12099:33;9754:64;9814:3;12166:6;12160:13;9754:64;:::i;:::-;12370:14;;;;12180:90;-1:-1;73026:14;;;;12081:1;12074:9;12034:357;;;-1:-1;12414:10;;11652:778;-1:-1;;;;;;;11652:778::o;13434:690::-;;13627:5;72188:12;73547:6;73542:3;73535:19;73584:4;;73579:3;73575:14;13639:93;;73584:4;13803:5;71549:14;-1:-1;13842:260;13867:6;13864:1;13861:13;13842:260;;;13928:13;;14415:37;;10188:14;;;;73026;;;;13889:1;13882:9;13842:260;;14778:323;;14910:5;72188:12;73547:6;73542:3;73535:19;14993:52;15038:6;73584:4;73579:3;73575:14;73584:4;15019:5;15015:16;14993:52;:::i;:::-;71015:9;77693:14;-1:-1;;77689:28;15057:39;;;;73584:4;15057:39;;14858:243;-1:-1;;14858:243::o;37005:405::-;-1:-1;;;;;;75486:78;;14710:56;;72188:12;;37005:405;;15729:52;72188:12;37272:1;37263:11;;15762:4;15751:16;;15729:52;:::i;:::-;15793:16;;;;37272:1;15793:16;;37165:245;-1:-1;;;37165:245::o;37417:271::-;;15618:5;72188:12;15729:52;15774:6;15769:3;15762:4;15755:5;15751:16;15729:52;:::i;:::-;15793:16;;;;;37551:137;-1:-1;;37551:137::o;37695:659::-;-1:-1;;;20755:87;;20740:1;20861:11;;14415:37;;;;38206:12;;;14415:37;38317:12;;;37940:414::o;38361:520::-;29185:28;29165:49;;77804:2;77800:14;;;;-1:-1;;77800:14;29149:2;29233:12;;10684:58;38844:12;;;38578:303::o;38888:222::-;-1:-1;;;;;75785:54;;;;10426:37;;39015:2;39000:18;;38986:124::o;39117:349::-;-1:-1;;;;;75785:54;;;;10295:58;;39452:2;39437:18;;14415:37;39280:2;39265:18;;39251:215::o;39473:444::-;-1:-1;;;;;75785:54;;;10426:37;;75785:54;;;;39820:2;39805:18;;10426:37;39903:2;39888:18;;14415:37;;;;39656:2;39641:18;;39627:290::o;40264:544::-;-1:-1;;;;;75785:54;;;;10426:37;;40634:2;40619:18;;14415:37;;;;75320:13;75313:21;40711:2;40696:18;;14187:34;40794:2;40779:18;;14415:37;40469:3;40454:19;;40440:368::o;40815:840::-;;75796:42;;;;;75236:5;75785:54;10433:3;10426:37;14445:5;41257:2;41246:9;41242:18;14415:37;41092:3;41294:2;41283:9;41279:18;41272:48;41334:78;41092:3;41081:9;41077:19;41398:6;41334:78;:::i;:::-;41460:9;41454:4;41450:20;41445:2;41434:9;41430:18;41423:48;41485:76;41556:4;41547:6;41485:76;:::i;:::-;41477:84;;;14445:5;41640:3;41629:9;41625:19;14415:37;41063:592;;;;;;;;:::o;41662:1224::-;;42111:3;42133:17;42126:47;42187:108;42111:3;42100:9;42096:19;42281:6;42187:108;:::i;:::-;42343:9;42337:4;42333:20;42328:2;42317:9;42313:18;42306:48;42368:108;42471:4;42462:6;42368:108;:::i;:::-;42360:116;;42524:9;42518:4;42514:20;42509:2;42498:9;42494:18;42487:48;42549:128;42672:4;42663:6;42549:128;:::i;:::-;42541:136;;42725:9;42719:4;42715:20;42710:2;42699:9;42695:18;42688:48;42750:126;42871:4;42862:6;42750:126;:::i;42893:210::-;75320:13;;75313:21;14187:34;;43014:2;42999:18;;42985:118::o;43110:222::-;14415:37;;;43237:2;43222:18;;43208:124::o;43339:432::-;14415:37;;;43680:2;43665:18;;14415:37;;;;75320:13;75313:21;43757:2;43742:18;;14187:34;43516:2;43501:18;;43487:284::o;43778:548::-;14415:37;;;76001:4;75990:16;;;;44146:2;44131:18;;36958:35;44229:2;44214:18;;14415:37;44312:2;44297:18;;14415:37;43985:3;43970:19;;43956:370::o;44594:252::-;44736:2;44721:18;;77918:1;77908:12;;77898:2;;77924:9;77898:2;16072:65;;;44707:139;:::o;44853:310::-;;45000:2;45021:17;45014:47;45075:78;45000:2;44989:9;44985:18;45139:6;45075:78;:::i;45170:416::-;45370:2;45384:47;;;17062:2;45355:18;;;73535:19;17098:34;73575:14;;;17078:55;-1:-1;;;17153:12;;;17146:29;17194:12;;;45341:245::o;45593:416::-;45793:2;45807:47;;;17445:2;45778:18;;;73535:19;17481:34;73575:14;;;17461:55;17550:34;17536:12;;;17529:56;-1:-1;;;17605:12;;;17598:45;17662:12;;;45764:245::o;46016:416::-;46216:2;46230:47;;;17913:2;46201:18;;;73535:19;17949:34;73575:14;;;17929:55;-1:-1;;;18004:12;;;17997:31;18047:12;;;46187:245::o;46439:416::-;46639:2;46653:47;;;18298:2;46624:18;;;73535:19;18334:34;73575:14;;;18314:55;18403:34;18389:12;;;18382:56;-1:-1;;;18458:12;;;18451:25;18495:12;;;46610:245::o;46862:416::-;47062:2;47076:47;;;18746:2;47047:18;;;73535:19;18782:34;73575:14;;;18762:55;-1:-1;;;18837:12;;;18830:35;18884:12;;;47033:245::o;47285:416::-;47485:2;47499:47;;;19135:2;47470:18;;;73535:19;19171:34;73575:14;;;19151:55;-1:-1;;;19226:12;;;19219:31;19269:12;;;47456:245::o;47708:416::-;47908:2;47922:47;;;19520:2;47893:18;;;73535:19;19556:34;73575:14;;;19536:55;-1:-1;;;19611:12;;;19604:27;19650:12;;;47879:245::o;48131:416::-;48331:2;48345:47;;;19901:2;48316:18;;;73535:19;-1:-1;;;;;;;;;;;73575:14;;;19917:55;-1:-1;;;19992:12;;;19985:43;20047:12;;;48302:245::o;48554:416::-;48754:2;48768:47;;;20298:2;48739:18;;;73535:19;20334:34;73575:14;;;20314:55;20403:30;20389:12;;;20382:52;20453:12;;;48725:245::o;48977:416::-;49177:2;49191:47;;;21111:2;49162:18;;;73535:19;21147:29;73575:14;;;21127:50;21196:12;;;49148:245::o;49400:416::-;49600:2;49614:47;;;21447:2;49585:18;;;73535:19;21483:34;73575:14;;;21463:55;-1:-1;;;21538:12;;;21531:33;21583:12;;;49571:245::o;49823:416::-;50023:2;50037:47;;;21834:2;50008:18;;;73535:19;21870:34;73575:14;;;21850:55;-1:-1;;;21925:12;;;21918:28;21965:12;;;49994:245::o;50246:416::-;50446:2;50460:47;;;22216:2;50431:18;;;73535:19;-1:-1;;;;;;;;;;;73575:14;;;22232:55;22321:34;22307:12;;;22300:56;-1:-1;;;22376:12;;;22369:29;22417:12;;;50417:245::o;50669:416::-;50869:2;50883:47;;;22668:2;50854:18;;;73535:19;22704:34;73575:14;;;22684:55;-1:-1;;;22759:12;;;22752:30;22801:12;;;50840:245::o;51092:416::-;51292:2;51306:47;;;23052:2;51277:18;;;73535:19;23088:34;73575:14;;;23068:55;-1:-1;;;23143:12;;;23136:44;23199:12;;;51263:245::o;51515:416::-;51715:2;51729:47;;;23450:2;51700:18;;;73535:19;23486:34;73575:14;;;23466:55;-1:-1;;;23541:12;;;23534:43;23596:12;;;51686:245::o;51938:416::-;52138:2;52152:47;;;23847:2;52123:18;;;73535:19;23883:34;73575:14;;;23863:55;-1:-1;;;23938:12;;;23931:33;23983:12;;;52109:245::o;52361:416::-;52561:2;52575:47;;;24234:2;52546:18;;;73535:19;24270:34;73575:14;;;24250:55;24339:34;24325:12;;;24318:56;-1:-1;;;24394:12;;;24387:25;24431:12;;;52532:245::o;52784:416::-;52984:2;52998:47;;;24682:2;52969:18;;;73535:19;24718:34;73575:14;;;24698:55;-1:-1;;;24773:12;;;24766:36;24821:12;;;52955:245::o;53207:416::-;53407:2;53421:47;;;25072:2;53392:18;;;73535:19;25108:34;73575:14;;;25088:55;25177:34;25163:12;;;25156:56;-1:-1;;;25232:12;;;25225:25;25269:12;;;53378:245::o;53630:416::-;53830:2;53844:47;;;25520:2;53815:18;;;73535:19;25556:34;73575:14;;;25536:55;-1:-1;;;25611:12;;;25604:33;25656:12;;;53801:245::o;54053:416::-;54253:2;54267:47;;;25907:2;54238:18;;;73535:19;25943:34;73575:14;;;25923:55;-1:-1;;;25998:12;;;25991:28;26038:12;;;54224:245::o;54476:416::-;54676:2;54690:47;;;26289:2;54661:18;;;73535:19;26325:34;73575:14;;;26305:55;-1:-1;;;26380:12;;;26373:29;26421:12;;;54647:245::o;54899:416::-;55099:2;55113:47;;;26672:2;55084:18;;;73535:19;26708:34;73575:14;;;26688:55;26777:26;26763:12;;;26756:48;26823:12;;;55070:245::o;55322:416::-;55522:2;55536:47;;;27074:2;55507:18;;;73535:19;27110:34;73575:14;;;27090:55;-1:-1;;;27165:12;;;27158:34;27211:12;;;55493:245::o;55745:416::-;55945:2;55959:47;;;27462:2;55930:18;;;73535:19;27498:34;73575:14;;;27478:55;-1:-1;;;27553:12;;;27546:38;27603:12;;;55916:245::o;56168:416::-;56368:2;56382:47;;;27854:2;56353:18;;;73535:19;-1:-1;;;;;;;;;;;73575:14;;;27870:55;27959:31;27945:12;;;27938:53;28010:12;;;56339:245::o;56591:416::-;56791:2;56805:47;;;28261:2;56776:18;;;73535:19;28297:34;73575:14;;;28277:55;-1:-1;;;28352:12;;;28345:29;28393:12;;;56762:245::o;57014:416::-;57214:2;57228:47;;;28644:2;57199:18;;;73535:19;28680:34;73575:14;;;28660:55;28749:34;28735:12;;;28728:56;-1:-1;;;28804:12;;;28797:46;28862:12;;;57185:245::o;57437:416::-;57637:2;57651:47;;;29484:2;57622:18;;;73535:19;29520:34;73575:14;;;29500:55;-1:-1;;;29575:12;;;29568:38;29625:12;;;57608:245::o;57860:416::-;58060:2;58074:47;;;29876:2;58045:18;;;73535:19;29912:34;73575:14;;;29892:55;29981:25;29967:12;;;29960:47;30026:12;;;58031:245::o;58283:416::-;58483:2;58497:47;;;30277:2;58468:18;;;73535:19;30313:34;73575:14;;;30293:55;-1:-1;;;30368:12;;;30361:25;30405:12;;;58454:245::o;58706:416::-;58906:2;58920:47;;;30656:2;58891:18;;;73535:19;30692:34;73575:14;;;30672:55;-1:-1;;;30747:12;;;30740:34;30793:12;;;58877:245::o;59129:416::-;59329:2;59343:47;;;31044:2;59314:18;;;73535:19;31080:34;73575:14;;;31060:55;-1:-1;;;31135:12;;;31128:36;31183:12;;;59300:245::o;59552:416::-;59752:2;59766:47;;;31434:2;59737:18;;;73535:19;31470:34;73575:14;;;31450:55;-1:-1;;;31525:12;;;31518:29;31566:12;;;59723:245::o;59975:416::-;60175:2;60189:47;;;31817:2;60160:18;;;73535:19;31853:31;73575:14;;;31833:52;31904:12;;;60146:245::o;60398:416::-;60598:2;60612:47;;;32155:2;60583:18;;;73535:19;32191:34;73575:14;;;32171:55;-1:-1;;;32246:12;;;32239:35;32293:12;;;60569:245::o;60821:416::-;61021:2;61035:47;;;32544:2;61006:18;;;73535:19;-1:-1;;;;;;;;;;;73575:14;;;32560:55;32649:31;32635:12;;;32628:53;32700:12;;;60992:245::o;61244:416::-;61444:2;61458:47;;;32951:2;61429:18;;;73535:19;32987:34;73575:14;;;32967:55;-1:-1;;;33042:12;;;33035:30;33084:12;;;61415:245::o;61667:416::-;61867:2;61881:47;;;33335:2;61852:18;;;73535:19;33371:34;73575:14;;;33351:55;-1:-1;;;33426:12;;;33419:37;33475:12;;;61838:245::o;62090:416::-;62290:2;62304:47;;;33726:2;62275:18;;;73535:19;33762:34;73575:14;;;33742:55;33831:34;33817:12;;;33810:56;-1:-1;;;33886:12;;;33879:33;33931:12;;;62261:245::o;62513:416::-;62713:2;62727:47;;;34182:2;62698:18;;;73535:19;34218:34;73575:14;;;34198:55;34287:34;34273:12;;;34266:56;-1:-1;;;34342:12;;;34335:26;34380:12;;;62684:245::o;62936:416::-;63136:2;63150:47;;;34631:2;63121:18;;;73535:19;34667:34;73575:14;;;34647:55;-1:-1;;;34722:12;;;34715:38;34772:12;;;63107:245::o;63359:416::-;63559:2;63573:47;;;35023:2;63544:18;;;73535:19;35059:34;73575:14;;;35039:55;-1:-1;;;35114:12;;;35107:41;35167:12;;;63530:245::o;63782:416::-;63982:2;63996:47;;;35418:2;63967:18;;;73535:19;35454:34;73575:14;;;35434:55;-1:-1;;;35509:12;;;35502:40;35561:12;;;63953:245::o;64205:416::-;64405:2;64419:47;;;35812:2;64390:18;;;73535:19;35848:34;73575:14;;;35828:55;-1:-1;;;35903:12;;;35896:28;35943:12;;;64376:245::o;64628:318::-;36241:23;;75320:13;75313:21;14187:34;;36409:4;36398:16;;;36392:23;75320:13;75313:21;36463:14;;;14187:34;36558:4;36547:16;;;36541:23;36618:14;;;14415:37;;;;64803:2;64788:18;;64774:172::o;65182:1888::-;14415:37;;;-1:-1;;;;;75785:54;;65972:2;65957:18;;10295:58;65799:3;66009:2;65994:18;;65987:48;;;65182:1888;;66049:108;65784:19;;;66143:6;66049:108;:::i;:::-;66041:116;;66205:9;66199:4;66195:20;66190:2;66179:9;66175:18;66168:48;66230:108;66333:4;66324:6;66230:108;:::i;:::-;66222:116;;66387:9;66381:4;66377:20;66371:3;66360:9;66356:19;66349:49;66412:128;66535:4;66526:6;66412:128;:::i;:::-;66404:136;;66589:9;66583:4;66579:20;66573:3;66562:9;66558:19;66551:49;66614:126;66735:4;66726:6;66614:126;:::i;:::-;66606:134;;14445:5;66819:3;66808:9;66804:19;14415:37;14445:5;66903:3;66892:9;66888:19;14415:37;66957:9;66951:4;66947:20;66941:3;66930:9;66926:19;66919:49;66982:78;67055:4;67046:6;66982:78;:::i;:::-;66974:86;65770:1300;-1:-1;;;;;;;;;;;;65770:1300::o;67077:1092::-;14415:37;;;-1:-1;;;;;75785:54;;;;67581:2;67566:18;;10426:37;67664:2;67649:18;;14415:37;;;;67747:2;67732:18;;14415:37;;;;67830:3;67815:19;;14415:37;;;;75796:42;67899:19;;14415:37;67998:3;67983:19;;14415:37;75320:13;75313:21;68076:3;68061:19;;14187:34;75320:13;75313:21;68154:3;68139:19;;14187:34;67416:3;67401:19;;67387:782::o;68176:728::-;;14445:5;14422:3;14415:37;68425:3;68544:2;68533:9;68529:18;68522:48;68584:78;68425:3;68414:9;68410:19;68648:6;68584:78;:::i;:::-;68710:9;68704:4;68700:20;68695:2;68684:9;68680:18;68673:48;68735:76;68806:4;68797:6;68735:76;:::i;:::-;68727:84;;;14445:5;68890:2;68879:9;68875:18;14415:37;68396:508;;;;;;;:::o;68911:333::-;14415:37;;;69230:2;69215:18;;14415:37;69066:2;69051:18;;69037:207::o;69251:256::-;69313:2;69307:9;69339:17;;;69414:18;69399:34;;69435:22;;;69396:62;69393:2;;;69471:1;;69461:12;69393:2;69313;69480:22;69291:216;;-1:-1;69291:216::o;69514:304::-;;69673:18;69665:6;69662:30;69659:2;;;-1:-1;;69695:12;69659:2;-1:-1;69740:4;69728:17;;;69793:15;;69596:222::o;76990:268::-;77055:1;77062:101;77076:6;77073:1;77070:13;77062:101;;;77143:11;;;77137:18;77124:11;;;77117:39;77098:2;77091:10;77062:101;;;77178:6;77175:1;77172:13;77169:2;;;-1:-1;;77055:1;77225:16;;77218:27;77039:219::o;77947:117::-;-1:-1;;;;;75785:54;;78006:35;;77996:2;;78055:1;;78045:12;78071:111;78152:5;75320:13;75313:21;78130:5;78127:32;78117:2;;78173:1;;78163:12

Swarm Source

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