Contract 0xba6adc87ca52588afa08471f4e2fec477563f963 1

Contract Overview

Balance:
0 DEV
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5aa7bd9a234ed86ef006646cc5b498dfb3948406f16c0b6382b3c01b7d607864Resume System15785732022-01-24 9:08:00614 days 19 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.000013294
0x31bb24249fecb13071f5097d1df3eac6f17081ea46d008d3089724482ca2fe30Suspend System15450252022-01-19 2:00:48620 days 2 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.000044441
0x43cac9da60d895d2e8ecf7f0d1aa15a08eab436ee35bfd7658d87e4a7142e1bcResume System15155312022-01-12 2:48:30627 days 2 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.00013294
0xce2516fd09461727966335e3ab4d442f18eb7bf14c76cd35ecd81f0f3564ffc1Update Access Co...15155262022-01-12 2:39:12627 days 2 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.00046474
0xde4c2ae9246098324ec3377fa488a2c91dc61f1977cc11c0d9e9cbe3d64caea1Resume System15154592022-01-12 1:46:24627 days 3 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.000039882
0xac882a6db3e2253faa66fd98870c231edfa0c95f8870137c8bea21dfd46374e1Suspend System15113112022-01-11 7:35:18627 days 21 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.000133323
0x249ad4066d8a846a95556f1adc1c41a8b371f1d6facc663ae34914bf68c410b2Resume System15113012022-01-11 7:33:06627 days 21 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.000039882
0x999b187de35dd0232f50970b7ef67566705054c8a4d86b27b7caf0f40c0322ffSuspend System15099112022-01-11 2:08:42628 days 2 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.000044441
0x3ce1a7bd08c0094b89e43ab08deb5964db81e66bf482b7db1e491670d1425457Update Access Co...14247502021-12-27 7:10:12642 days 21 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.000092972
0xaa34426bdd31c9c4c74699ede8382679ec1b84064d512116a3984e3963ed96d2Update Access Co...14246562021-12-27 6:48:18642 days 22 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN 0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV0.00029263
0x5bbe47897284d0dab48ab4bf6b1f3b1cee99e646b39b7327dae86d57767baef60x6080604014246542021-12-27 6:47:54642 days 22 hrs ago0x166220468aff631290b7e1ddff7f45b052de8324 IN  Create: SystemStatus0 DEV0.00346063
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xad2afafffdf134fe0aeae1f9331d3aec80ae80fd69c749bce3996f7fec831af540583182023-04-01 11:40:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x22150f3e0609bc28b0dabb67d610204ca99b12b9935e705cb541a5493b1eeaf740583132023-04-01 11:39:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xf136208ffa961d84a8f662313a8fefc7c9e26d58e8afa79f777e1aeeb958a1cd40583082023-04-01 11:38:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x2c4159caf0f5f6bd2d38fbb6ff00e47d638b87194dd0af2948249b9eec17cc0940583032023-04-01 11:37:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xfa1e459cbc9d38b402adbef84258ac4c6b60c9ec5341e30fef5d2823bcaea32940582992023-04-01 11:36:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x7c4e8f6045462b32f0c4cdb071a782691178ae323492b8b05e4833e616012e9640582942023-04-01 11:35:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x276bb605da70682563bafaae1ce75e374583996e59decc47ff4dc8a806d0341640582902023-04-01 11:34:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x207aeb2063bb0a09e0d32a58166773d80c2028339db7dad13090e5547963ae2c40582852023-04-01 11:33:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x7e40fe9ba93af87771e2b4fe616c40487b17b4fc92a0c4e3e67e3ca457d2103740582802023-04-01 11:32:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x3d34d20e6626d22d10bf80ec345d8d22abaebaf7e54c73333b55b4b358605a2940582752023-04-01 11:31:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xc936493e3e593440bb1ed9b11e31b4426e7545a64909c051977201ac1fd68f2e40582702023-04-01 11:30:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x64ff40cc79244ead9f08399830275098bd3c5660cd383d94d3d60167ab5ef9fa40582652023-04-01 11:29:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xb1fc987a564311c7d0b194f96c0f9d8031c0e4bb436bb0855befffec11443dab40582602023-04-01 11:28:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xbd971357c9d89bcc15ad1d0528ea257cd2dc3336ca4e396777d492a84449d28140582552023-04-01 11:27:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x1310563e018b0886697cd2843f571b7c9197bdfad6645b4c4ee7402c3afa603840582502023-04-01 11:26:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x541e3ecaf86b8d6f51d42e8851051d639e91ebf72e4a91c18da9f3fe84fccc4040582452023-04-01 11:25:12182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x05b4d06ead6f3a8b6c29eb837a690b341d545c132a856187ff6007bd599d84f340582402023-04-01 11:24:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xe25e14c21ee56a11c9241ad1ff5d30ef724055b4df56177771b318871fa80d1c40582352023-04-01 11:23:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x60cae537f3249fb33101df951e0080dd2f0c7be7794ab9d6f0708d6f71dddf9c40582302023-04-01 11:22:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xf332048b9c6bd7416955b8a2a90b010f0c011265bd45633c6e78bf425313652840582252023-04-01 11:21:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xb05ab6a0a0df6109a1947c4188b8d0d3fff443684bc7163edf774d4cd3a5044e40582202023-04-01 11:20:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xda0c130413de921508e0815cb575a458e1a8c4b544cafabc18be106ed53826eb40582152023-04-01 11:19:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0x6bb9a00d9093474f8e49a3e170d59d44f7518e25023ec635518a71f72ff48da140582102023-04-01 11:18:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xade5e4c428e5e5401df59cb9bd3eacc1866a4997d9db4a3312d496964fabf98340582052023-04-01 11:17:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
0xd0085a2063a910d7c8b4d93394104209ba286b18b34ae5fd7021062fa3a6e76140582002023-04-01 11:16:06182 days 17 hrs ago 0x25e322a86fb964195393a32c3d3d8b769e389c2e0xba6adc87ca52588afa08471f4e2fec477563f9630 DEV
[ Download CSV Export 
Index Block
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SystemStatus

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonbase.moonscan.io on 2022-01-11
*/

/*
    ___            _       ___  _                          
    | .\ ___  _ _ <_> ___ | __><_>._ _  ___ ._ _  ___  ___ 
    |  _// ._>| '_>| ||___|| _> | || ' |<_> || ' |/ | '/ ._>
    |_|  \___.|_|  |_|     |_|  |_||_|_|<___||_|_|\_|_.\___.
    
* PeriFinance: SystemStatus.sol
*
* Latest source (may be newer): https://github.com/perifinance/peri-finance/blob/master/contracts/SystemStatus.sol
* Docs: Will be added in the future. 
* https://docs.peri.finance/contracts/source/contracts/SystemStatus
*
* Contract Dependencies: 
*	- ISystemStatus
*	- Owned
* Libraries: (none)
*
* MIT License
* ===========
*
* Copyright (c) 2021 PeriFinance
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*/



pragma solidity 0.5.16;

// https://docs.peri.finance/contracts/source/contracts/owned
contract Owned {
    address public owner;
    address public nominatedOwner;

    constructor(address _owner) public {
        require(_owner != address(0), "Owner address cannot be 0");
        owner = _owner;
        emit OwnerChanged(address(0), _owner);
    }

    function nominateNewOwner(address _owner) external onlyOwner {
        nominatedOwner = _owner;
        emit OwnerNominated(_owner);
    }

    function acceptOwnership() external {
        require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
        emit OwnerChanged(owner, nominatedOwner);
        owner = nominatedOwner;
        nominatedOwner = address(0);
    }

    modifier onlyOwner {
        _onlyOwner();
        _;
    }

    function _onlyOwner() private view {
        require(msg.sender == owner, "Only the contract owner may perform this action");
    }

    event OwnerNominated(address newOwner);
    event OwnerChanged(address oldOwner, address newOwner);
}


// https://docs.peri.finance/contracts/source/interfaces/isystemstatus
interface ISystemStatus {
    struct Status {
        bool canSuspend;
        bool canResume;
    }

    struct Suspension {
        bool suspended;
        // reason is an integer code,
        // 0 => no reason, 1 => upgrading, 2+ => defined by system usage
        uint248 reason;
    }

    // Views
    function accessControl(bytes32 section, address account) external view returns (bool canSuspend, bool canResume);

    function requireSystemActive() external view;

    function requireIssuanceActive() external view;

    function requireExchangeActive() external view;

    function requireExchangeBetweenPynthsAllowed(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view;

    function requirePynthActive(bytes32 currencyKey) external view;

    function requirePynthsActive(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view;

    function systemSuspension() external view returns (bool suspended, uint248 reason);

    function issuanceSuspension() external view returns (bool suspended, uint248 reason);

    function exchangeSuspension() external view returns (bool suspended, uint248 reason);

    function pynthExchangeSuspension(bytes32 currencyKey) external view returns (bool suspended, uint248 reason);

    function pynthSuspension(bytes32 currencyKey) external view returns (bool suspended, uint248 reason);

    function getPynthExchangeSuspensions(bytes32[] calldata pynths)
        external
        view
        returns (bool[] memory exchangeSuspensions, uint256[] memory reasons);

    function getPynthSuspensions(bytes32[] calldata pynths)
        external
        view
        returns (bool[] memory suspensions, uint256[] memory reasons);

    // Restricted functions
    function suspendPynth(bytes32 currencyKey, uint256 reason) external;

    function updateAccessControl(
        bytes32 section,
        address account,
        bool canSuspend,
        bool canResume
    ) external;
}


// Inheritance


// https://docs.peri.finance/contracts/source/contracts/systemstatus
contract SystemStatus is Owned, ISystemStatus {
    mapping(bytes32 => mapping(address => Status)) public accessControl;

    uint248 public constant SUSPENSION_REASON_UPGRADE = 1;

    bytes32 public constant SECTION_SYSTEM = "System";
    bytes32 public constant SECTION_ISSUANCE = "Issuance";
    bytes32 public constant SECTION_EXCHANGE = "Exchange";
    bytes32 public constant SECTION_PYNTH_EXCHANGE = "PynthExchange";
    bytes32 public constant SECTION_PYNTH = "Pynth";

    Suspension public systemSuspension;

    Suspension public issuanceSuspension;

    Suspension public exchangeSuspension;

    mapping(bytes32 => Suspension) public pynthExchangeSuspension;

    mapping(bytes32 => Suspension) public pynthSuspension;

    constructor(address _owner) public Owned(_owner) {}

    /* ========== VIEWS ========== */
    function requireSystemActive() external view {
        _internalRequireSystemActive();
    }

    function requireIssuanceActive() external view {
        // Issuance requires the system be active
        _internalRequireSystemActive();

        // and issuance itself of course
        _internalRequireIssuanceActive();
    }

    function requireExchangeActive() external view {
        // Exchanging requires the system be active
        _internalRequireSystemActive();

        // and exchanging itself of course
        _internalRequireExchangeActive();
    }

    function requirePynthExchangeActive(bytes32 currencyKey) external view {
        // Pynth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequirePynthExchangeActive(currencyKey);
    }

    function requirePynthActive(bytes32 currencyKey) external view {
        // Pynth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequirePynthActive(currencyKey);
    }

    function requirePynthsActive(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view {
        // Pynth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequirePynthActive(sourceCurrencyKey);
        _internalRequirePynthActive(destinationCurrencyKey);
    }

    function requireExchangeBetweenPynthsAllowed(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view {
        // Pynth exchange and transfer requires the system be active
        _internalRequireSystemActive();

        // and exchanging must be active
        _internalRequireExchangeActive();

        // and the pynth exchanging between the pynths must be active
        _internalRequirePynthExchangeActive(sourceCurrencyKey);
        _internalRequirePynthExchangeActive(destinationCurrencyKey);

        // and finally, the pynths cannot be suspended
        _internalRequirePynthActive(sourceCurrencyKey);
        _internalRequirePynthActive(destinationCurrencyKey);
    }

    function isSystemUpgrading() external view returns (bool) {
        return systemSuspension.suspended && systemSuspension.reason == SUSPENSION_REASON_UPGRADE;
    }

    function getPynthExchangeSuspensions(bytes32[] calldata pynths)
        external
        view
        returns (bool[] memory exchangeSuspensions, uint256[] memory reasons)
    {
        exchangeSuspensions = new bool[](pynths.length);
        reasons = new uint256[](pynths.length);

        for (uint i = 0; i < pynths.length; i++) {
            exchangeSuspensions[i] = pynthExchangeSuspension[pynths[i]].suspended;
            reasons[i] = pynthExchangeSuspension[pynths[i]].reason;
        }
    }

    function getPynthSuspensions(bytes32[] calldata pynths)
        external
        view
        returns (bool[] memory suspensions, uint256[] memory reasons)
    {
        suspensions = new bool[](pynths.length);
        reasons = new uint256[](pynths.length);

        for (uint i = 0; i < pynths.length; i++) {
            suspensions[i] = pynthSuspension[pynths[i]].suspended;
            reasons[i] = pynthSuspension[pynths[i]].reason;
        }
    }

    /* ========== MUTATIVE FUNCTIONS ========== */
    function updateAccessControl(
        bytes32 section,
        address account,
        bool canSuspend,
        bool canResume
    ) external onlyOwner {
        _internalUpdateAccessControl(section, account, canSuspend, canResume);
    }

    function updateAccessControls(
        bytes32[] calldata sections,
        address[] calldata accounts,
        bool[] calldata canSuspends,
        bool[] calldata canResumes
    ) external onlyOwner {
        require(
            sections.length == accounts.length &&
                accounts.length == canSuspends.length &&
                canSuspends.length == canResumes.length,
            "Input array lengths must match"
        );
        for (uint i = 0; i < sections.length; i++) {
            _internalUpdateAccessControl(sections[i], accounts[i], canSuspends[i], canResumes[i]);
        }
    }

    function suspendSystem(uint256 reason) external {
        _requireAccessToSuspend(SECTION_SYSTEM);
        systemSuspension.suspended = true;
        systemSuspension.reason = uint248(reason);
        emit SystemSuspended(systemSuspension.reason);
    }

    function resumeSystem() external {
        _requireAccessToResume(SECTION_SYSTEM);
        systemSuspension.suspended = false;
        emit SystemResumed(uint256(systemSuspension.reason));
        systemSuspension.reason = 0;
    }

    function suspendIssuance(uint256 reason) external {
        _requireAccessToSuspend(SECTION_ISSUANCE);
        issuanceSuspension.suspended = true;
        issuanceSuspension.reason = uint248(reason);
        emit IssuanceSuspended(reason);
    }

    function resumeIssuance() external {
        _requireAccessToResume(SECTION_ISSUANCE);
        issuanceSuspension.suspended = false;
        emit IssuanceResumed(uint256(issuanceSuspension.reason));
        issuanceSuspension.reason = 0;
    }

    function suspendExchange(uint256 reason) external {
        _requireAccessToSuspend(SECTION_EXCHANGE);
        exchangeSuspension.suspended = true;
        exchangeSuspension.reason = uint248(reason);
        emit ExchangeSuspended(reason);
    }

    function resumeExchange() external {
        _requireAccessToResume(SECTION_EXCHANGE);
        exchangeSuspension.suspended = false;
        emit ExchangeResumed(uint256(exchangeSuspension.reason));
        exchangeSuspension.reason = 0;
    }

    function suspendPynthExchange(bytes32 currencyKey, uint256 reason) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalSuspendPynthExchange(currencyKeys, reason);
    }

    function suspendPynthsExchange(bytes32[] calldata currencyKeys, uint256 reason) external {
        _internalSuspendPynthExchange(currencyKeys, reason);
    }

    function resumePynthExchange(bytes32 currencyKey) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalResumePynthsExchange(currencyKeys);
    }

    function resumePynthsExchange(bytes32[] calldata currencyKeys) external {
        _internalResumePynthsExchange(currencyKeys);
    }

    function suspendPynth(bytes32 currencyKey, uint256 reason) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalSuspendPynths(currencyKeys, reason);
    }

    function suspendPynths(bytes32[] calldata currencyKeys, uint256 reason) external {
        _internalSuspendPynths(currencyKeys, reason);
    }

    function resumePynth(bytes32 currencyKey) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalResumePynths(currencyKeys);
    }

    function resumePynths(bytes32[] calldata currencyKeys) external {
        _internalResumePynths(currencyKeys);
    }

    /* ========== INTERNAL FUNCTIONS ========== */

    function _requireAccessToSuspend(bytes32 section) internal view {
        require(accessControl[section][msg.sender].canSuspend, "Restricted to access control list");
    }

    function _requireAccessToResume(bytes32 section) internal view {
        require(accessControl[section][msg.sender].canResume, "Restricted to access control list");
    }

    function _internalRequireSystemActive() internal view {
        require(
            !systemSuspension.suspended,
            systemSuspension.reason == SUSPENSION_REASON_UPGRADE
                ? "PeriFinance is suspended, upgrade in progress... please stand by"
                : "PeriFinance is suspended. Operation prohibited"
        );
    }

    function _internalRequireIssuanceActive() internal view {
        require(!issuanceSuspension.suspended, "Issuance is suspended. Operation prohibited");
    }

    function _internalRequireExchangeActive() internal view {
        require(!exchangeSuspension.suspended, "Exchange is suspended. Operation prohibited");
    }

    function _internalRequirePynthExchangeActive(bytes32 currencyKey) internal view {
        require(!pynthExchangeSuspension[currencyKey].suspended, "Pynth exchange suspended. Operation prohibited");
    }

    function _internalRequirePynthActive(bytes32 currencyKey) internal view {
        require(!pynthSuspension[currencyKey].suspended, "Pynth is suspended. Operation prohibited");
    }

    function _internalSuspendPynths(bytes32[] memory currencyKeys, uint256 reason) internal {
        _requireAccessToSuspend(SECTION_PYNTH);
        for (uint i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            pynthSuspension[currencyKey].suspended = true;
            pynthSuspension[currencyKey].reason = uint248(reason);
            emit PynthSuspended(currencyKey, reason);
        }
    }

    function _internalResumePynths(bytes32[] memory currencyKeys) internal {
        _requireAccessToResume(SECTION_PYNTH);
        for (uint i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            emit PynthResumed(currencyKey, uint256(pynthSuspension[currencyKey].reason));
            delete pynthSuspension[currencyKey];
        }
    }

    function _internalSuspendPynthExchange(bytes32[] memory currencyKeys, uint256 reason) internal {
        _requireAccessToSuspend(SECTION_PYNTH_EXCHANGE);
        for (uint i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            pynthExchangeSuspension[currencyKey].suspended = true;
            pynthExchangeSuspension[currencyKey].reason = uint248(reason);
            emit PynthExchangeSuspended(currencyKey, reason);
        }
    }

    function _internalResumePynthsExchange(bytes32[] memory currencyKeys) internal {
        _requireAccessToResume(SECTION_PYNTH_EXCHANGE);
        for (uint i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            emit PynthExchangeResumed(currencyKey, uint256(pynthExchangeSuspension[currencyKey].reason));
            delete pynthExchangeSuspension[currencyKey];
        }
    }

    function _internalUpdateAccessControl(
        bytes32 section,
        address account,
        bool canSuspend,
        bool canResume
    ) internal {
        require(
            section == SECTION_SYSTEM ||
                section == SECTION_ISSUANCE ||
                section == SECTION_EXCHANGE ||
                section == SECTION_PYNTH_EXCHANGE ||
                section == SECTION_PYNTH,
            "Invalid section supplied"
        );
        accessControl[section][account].canSuspend = canSuspend;
        accessControl[section][account].canResume = canResume;
        emit AccessControlUpdated(section, account, canSuspend, canResume);
    }

    /* ========== EVENTS ========== */

    event SystemSuspended(uint256 reason);
    event SystemResumed(uint256 reason);

    event IssuanceSuspended(uint256 reason);
    event IssuanceResumed(uint256 reason);

    event ExchangeSuspended(uint256 reason);
    event ExchangeResumed(uint256 reason);

    event PynthExchangeSuspended(bytes32 currencyKey, uint256 reason);
    event PynthExchangeResumed(bytes32 currencyKey, uint256 reason);

    event PynthSuspended(bytes32 currencyKey, uint256 reason);
    event PynthResumed(bytes32 currencyKey, uint256 reason);

    event AccessControlUpdated(bytes32 indexed section, address indexed account, bool canSuspend, bool canResume);
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"section","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"canSuspend","type":"bool"},{"indexed":false,"internalType":"bool","name":"canResume","type":"bool"}],"name":"AccessControlUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"ExchangeResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"ExchangeSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"IssuanceResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"IssuanceSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"PynthExchangeResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"PynthExchangeSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"PynthResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"PynthSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SystemResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SystemSuspended","type":"event"},{"constant":true,"inputs":[],"name":"SECTION_EXCHANGE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_ISSUANCE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_PYNTH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_PYNTH_EXCHANGE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_SYSTEM","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SUSPENSION_REASON_UPGRADE","outputs":[{"internalType":"uint248","name":"","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"accessControl","outputs":[{"internalType":"bool","name":"canSuspend","type":"bool"},{"internalType":"bool","name":"canResume","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32[]","name":"pynths","type":"bytes32[]"}],"name":"getPynthExchangeSuspensions","outputs":[{"internalType":"bool[]","name":"exchangeSuspensions","type":"bool[]"},{"internalType":"uint256[]","name":"reasons","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32[]","name":"pynths","type":"bytes32[]"}],"name":"getPynthSuspensions","outputs":[{"internalType":"bool[]","name":"suspensions","type":"bool[]"},{"internalType":"uint256[]","name":"reasons","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isSystemUpgrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuanceSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"pynthExchangeSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"pynthSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireExchangeActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"sourceCurrencyKey","type":"bytes32"},{"internalType":"bytes32","name":"destinationCurrencyKey","type":"bytes32"}],"name":"requireExchangeBetweenPynthsAllowed","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireIssuanceActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"requirePynthActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"requirePynthExchangeActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"sourceCurrencyKey","type":"bytes32"},{"internalType":"bytes32","name":"destinationCurrencyKey","type":"bytes32"}],"name":"requirePynthsActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireSystemActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeIssuance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"resumePynth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"resumePynthExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"}],"name":"resumePynths","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"}],"name":"resumePynthsExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resumeSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendIssuance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendPynth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendPynthExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendPynths","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendPynthsExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSystem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"systemSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"section","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"canSuspend","type":"bool"},{"internalType":"bool","name":"canResume","type":"bool"}],"name":"updateAccessControl","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"sections","type":"bytes32[]"},{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool[]","name":"canSuspends","type":"bool[]"},{"internalType":"bool[]","name":"canResumes","type":"bool[]"}],"name":"updateAccessControls","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051611ed6380380611ed68339818101604052602081101561003357600080fd5b5051806001600160a01b038116610091576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a15050611ddc806100fa6000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c80634ef4a6431161014657806389bb3dfa116100c3578063c09290bb11610087578063c09290bb14610983578063d7f2c385146109f1578063e470df5814610a0e578063f161620714610a2b578063f405f65a14610a33578063f8b4b08414610a3b5761025e565b806389bb3dfa146108af5780638c38729d146108cc5780638da5cb5b146108e95780639f8a95ba146108f1578063ad135a16146109155761025e565b80637118d4311161010a5780637118d43114610806578063754a46411461080e57806379ba5097146108315780637c3125411461083957806387743c36146108415761025e565b80634ef4a6431461063c578063517d60c61461065957806353a47bb7146107b7578063631070fc146107db57806367a280b2146107fe5761025e565b806320f2bf00116101df5780632e94d93d116101a35780632e94d93d14610542578063387da909146105b0578063396e258e146105b85780633cb4d443146105d557806348bf1971146105f85780634abdb44d146106345761025e565b806320f2bf00146104895780632366245e146104d05780632cb28bd8146104fb5780632dd8afdb1461051e5780632e8d0b9e146105265761025e565b8063157c51d311610226578063157c51d3146104195780631588e817146104215780631627540c1461043e5780631635b0ce146104645780631d7e77891461046c5761025e565b8063086dabd11461026357806308d10e621461026d5780630d2d7c281461028a57806312bde5141461039157806314acc95f146103ab575b600080fd5b61026b610a43565b005b61026b6004803603602081101561028357600080fd5b5035610a4d565b6102f8600480360360208110156102a057600080fd5b810190602081018135600160201b8111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460208302840111600160201b831117156102ed57600080fd5b509092509050610a96565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561033c578181015183820152602001610324565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561037b578181015183820152602001610363565b5050505090500194505050505060405180910390f35b610399610bbf565b60408051918252519081900360200190f35b61026b600480360360208110156103c157600080fd5b810190602081018135600160201b8111156103db57600080fd5b8201836020820111156103ed57600080fd5b803590602001918460208302840111600160201b8311171561040e57600080fd5b509092509050610bcc565b61026b610c08565b61026b6004803603602081101561043757600080fd5b5035610c72565b61026b6004803603602081101561045457600080fd5b50356001600160a01b0316610cdd565b610399610d39565b61026b6004803603602081101561048257600080fd5b5035610d45565b6104b56004803603604081101561049f57600080fd5b50803590602001356001600160a01b0316610d59565b60408051921515835290151560208301528051918290030190f35b6104d8610d82565b6040805192151583526001600160f81b0390911660208301528051918290030190f35b61026b6004803603604081101561051157600080fd5b5080359060200135610d9b565b6104d8610dcf565b61052e610de8565b604080519115158252519081900360200190f35b61026b6004803603602081101561055857600080fd5b810190602081018135600160201b81111561057257600080fd5b82018360208201111561058457600080fd5b803590602001918460208302840111600160201b831117156105a557600080fd5b509092509050610e12565b610399610e4e565b61026b600480360360208110156105ce57600080fd5b5035610e62565b61026b600480360360408110156105eb57600080fd5b5080359060200135610ecd565b61026b6004803603608081101561060e57600080fd5b508035906001600160a01b03602082013516906040810135151590606001351515610ed5565b610399610eef565b6104d86004803603602081101561065257600080fd5b5035610efe565b61026b6004803603608081101561066f57600080fd5b810190602081018135600160201b81111561068957600080fd5b82018360208201111561069b57600080fd5b803590602001918460208302840111600160201b831117156106bc57600080fd5b919390929091602081019035600160201b8111156106d957600080fd5b8201836020820111156106eb57600080fd5b803590602001918460208302840111600160201b8311171561070c57600080fd5b919390929091602081019035600160201b81111561072957600080fd5b82018360208201111561073b57600080fd5b803590602001918460208302840111600160201b8311171561075c57600080fd5b919390929091602081019035600160201b81111561077957600080fd5b82018360208201111561078b57600080fd5b803590602001918460208302840111600160201b831117156107ac57600080fd5b509092509050610f23565b6107bf611014565b604080516001600160a01b039092168252519081900360200190f35b61026b600480360360408110156107f157600080fd5b5080359060200135611023565b61026b61106e565b61026b6110da565b61026b6004803603604081101561082457600080fd5b50803590602001356110ea565b61026b611130565b61026b6111ec565b61026b6004803603604081101561085757600080fd5b810190602081018135600160201b81111561087157600080fd5b82018360208201111561088357600080fd5b803590602001918460208302840111600160201b831117156108a457600080fd5b9193509150356111fc565b61026b600480360360208110156108c557600080fd5b503561123a565b6104d8600480360360208110156108e257600080fd5b503561124b565b6107bf611270565b6108f961127f565b604080516001600160f81b039092168252519081900360200190f35b61026b6004803603604081101561092b57600080fd5b810190602081018135600160201b81111561094557600080fd5b82018360208201111561095757600080fd5b803590602001918460208302840111600160201b8311171561097857600080fd5b919350915035611284565b6102f86004803603602081101561099957600080fd5b810190602081018135600160201b8111156109b357600080fd5b8201836020820111156109c557600080fd5b803590602001918460208302840111600160201b831117156109e657600080fd5b5090925090506112c2565b61026b60048036036020811015610a0757600080fd5b50356113e3565b61026b60048036036020811015610a2457600080fd5b5035611428565b61039961149d565b61026b6114ac565b6104d8611518565b610a4b611531565b565b604080516001808252818301909252606091602080830190803883390190505090508181600081518110610a7d57fe5b602002602001018181525050610a9281611610565b5050565b60608083839050604051908082528060200260200182016040528015610ac6578160200160208202803883390190505b50604080518581526020808702820101909152909250838015610af3578160200160208202803883390190505b50905060005b83811015610bb75760066000868684818110610b1157fe5b90506020020135815260200190815260200160002060000160009054906101000a900460ff16838281518110610b4357fe5b9115156020928302919091019091015260066000868684818110610b6357fe5b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b0316828281518110610ba457fe5b6020908102919091010152600101610af9565b509250929050565b6553797374656d60d01b81565b610a9282828080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061161092505050565b610c1a6553797374656d60d01b6116be565b6003805460ff191690819055604080516101009092046001600160f81b03168252517fb392a95118344e8edff8eff56183afb4bb0240310c406a0fc1217d2755c66d8f916020908290030190a16003805460ff169055565b610c866745786368616e676560c01b61171b565b600580546001600160f81b0383166101000260ff1990911660011760ff161790556040805182815290517f078773069a9216cdb6acaa7b184785f12f62048c7ce8b7ede1bad6785de16b229181900360200190a150565b610ce5611773565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b640a0f2dce8d60db1b81565b610d4d611531565b610d56816117bc565b50565b600260209081526000928352604080842090915290825290205460ff8082169161010090041682565b60045460ff81169061010090046001600160f81b031682565b610da3611531565b610dab61180a565b610db48261184c565b610dbd8161184c565b610dc6826117bc565b610a92816117bc565b60035460ff81169061010090046001600160f81b031682565b60035460009060ff168015610e0d575060035461010090046001600160f81b03166001145b905090565b610a9282828080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061189a92505050565b6c50796e746845786368616e676560981b81565b610e766749737375616e636560c01b61171b565b600480546001600160f81b0383166101000260ff1990911660011760ff161790556040805182815290517fee8bf45d6e3141aa521ae4f0d05dfefe0327a3f23a9fbae6a64680458b34ebb89181900360200190a150565b610dbd611531565b610edd611773565b610ee984848484611940565b50505050565b6749737375616e636560c01b81565b60066020526000908152604090205460ff81169061010090046001600160f81b031682565b610f2b611773565b8685148015610f3957508483145b8015610f4457508281145b610f95576040805162461bcd60e51b815260206004820152601e60248201527f496e707574206172726179206c656e67746873206d757374206d617463680000604482015290519081900360640190fd5b60005b8781101561100957611001898983818110610faf57fe5b90506020020135888884818110610fc257fe5b905060200201356001600160a01b0316878785818110610fde57fe5b905060200201351515868686818110610ff357fe5b905060200201351515611940565b600101610f98565b505050505050505050565b6001546001600160a01b031681565b60408051600180825281830190925260609160208083019080388339019050509050828160008151811061105357fe5b6020026020010181815250506110698183611a72565b505050565b6110826749737375616e636560c01b6116be565b6004805460ff191690819055604080516101009092046001600160f81b03168252517f0f1a80395faba9a11017f830db5f90ad6525a1621dbfb2cbc2b6679ba5716837916020908290030190a16004805460ff169055565b6110e2611531565b610a4b61180a565b60408051600180825281830190925260609160208083019080388339019050509050828160008151811061111a57fe5b6020026020010181815250506110698183611b18565b6001546001600160a01b031633146111795760405162461bcd60e51b8152600401808060200182810382526035815260200180611c096035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6111f4611531565b610a4b611bc6565b611069838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250611a72915050565b611242611531565b610d568161184c565b60076020526000908152604090205460ff81169061010090046001600160f81b031682565b6000546001600160a01b031681565b600181565b611069838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250611b18915050565b606080838390506040519080825280602002602001820160405280156112f2578160200160208202803883390190505b5060408051858152602080870282010190915290925083801561131f578160200160208202803883390190505b50905060005b83811015610bb7576007600086868481811061133d57fe5b90506020020135815260200190815260200160002060000160009054906101000a900460ff1683828151811061136f57fe5b911515602092830291909101909101526007600086868481811061138f57fe5b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b03168282815181106113d057fe5b6020908102919091010152600101611325565b60408051600180825281830190925260609160208083019080388339019050509050818160008151811061141357fe5b602002602001018181525050610a928161189a565b61143a6553797374656d60d01b61171b565b600380546001600160f81b0380841661010090810260ff1990931660011760ff169290921792839055604080519290930416815290517f86b7ed06c3a2c3763514d475ced33f9ac8b1bb8f028ded18de0100b7678f3c4f9181900360200190a150565b6745786368616e676560c01b81565b6114c06745786368616e676560c01b6116be565b6005805460ff191690819055604080516101009092046001600160f81b03168252517f07966fe79d35c7abf1f3b2ad9970ea24cae0f11406e283e848e3e6608ae3c214916020908290030190a16005805460ff169055565b60055460ff81169061010090046001600160f81b031682565b60035460ff8116159061010090046001600160f81b031660011461156d576040518060600160405280602e8152602001611c97602e9139611587565b604051806060016040528060408152602001611d1f604091395b90610d565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115d55781810151838201526020016115bd565b50505050905090810190601f1680156116025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6116296c50796e746845786368616e676560981b6116be565b60005b8151811015610a9257600082828151811061164357fe5b6020908102919091018101516000818152600683526040908190205481518381526101009091046001600160f81b03169381019390935280519193507fc6cc5bbf2969f74a5166d0bad983455bf7a65b6372af7260400f9b3b04338090928290030190a160009081526006602052604081205560010161162c565b6000818152600260209081526040808320338452909152902054610100900460ff16610d565760405162461bcd60e51b8152600401808060200182810382526021815260200180611d5f6021913960400191505060405180910390fd5b600081815260026020908152604080832033845290915290205460ff16610d565760405162461bcd60e51b8152600401808060200182810382526021815260200180611d5f6021913960400191505060405180910390fd5b6000546001600160a01b03163314610a4b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611cc5602f913960400191505060405180910390fd5b60008181526007602052604090205460ff1615610d565760405162461bcd60e51b8152600401808060200182810382526028815260200180611d806028913960400191505060405180910390fd5b60055460ff1615610a4b5760405162461bcd60e51b815260040180806020018281038252602b815260200180611cf4602b913960400191505060405180910390fd5b60008181526006602052604090205460ff1615610d565760405162461bcd60e51b815260040180806020018281038252602e815260200180611c69602e913960400191505060405180910390fd5b6118ab640a0f2dce8d60db1b6116be565b60005b8151811015610a925760008282815181106118c557fe5b6020908102919091018101516000818152600783526040908190205481518381526101009091046001600160f81b03169381019390935280519193507fddc88fc179cf33f24e5569dd8635c3cd44864e66a1b359bdd9d95e50d94a0d39928290030190a16000908152600760205260408120556001016118ae565b6553797374656d60d01b84148061196157506749737375616e636560c01b84145b8061197657506745786368616e676560c01b84145b8061199057506c50796e746845786368616e676560981b84145b806119a25750640a0f2dce8d60db1b84145b6119f3576040805162461bcd60e51b815260206004820152601860248201527f496e76616c69642073656374696f6e20737570706c6965640000000000000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b038716808552908352928190208054851515610100810261ff001989151560ff1990941684171617909255825190815292830152805187927f95bad30f8fe717e4a02906d7b05a6f90698c7135cd053e5b6d5239146b4c40d192908290030190a350505050565b611a83640a0f2dce8d60db1b61171b565b60005b8251811015611069576000838281518110611a9d57fe5b60209081029190910181015160008181526007835260409081902080546001600160f81b0388166101000260ff1990911660011760ff16179055805182815292830186905280519193507ffd3feff79fa642f72408a90c33c6b2ae245bd7077eec45d2502714178e692c86928290030190a150600101611a86565b611b316c50796e746845786368616e676560981b61171b565b60005b8251811015611069576000838281518110611b4b57fe5b60209081029190910181015160008181526006835260409081902080546001600160f81b0388166101000260ff1990911660011760ff16179055805182815292830186905280519193507f0af76046e49b0af43f6e092983123f6fb3a25f63bd7096c1bb89649a75a9a494928290030190a150600101611b34565b60045460ff1615610a4b5760405162461bcd60e51b815260040180806020018281038252602b815260200180611c3e602b913960400191505060405180910390fdfe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e65727368697049737375616e63652069732073757370656e6465642e204f7065726174696f6e2070726f6869626974656450796e74682065786368616e67652073757370656e6465642e204f7065726174696f6e2070726f686962697465645065726946696e616e63652069732073757370656e6465642e204f7065726174696f6e2070726f686962697465644f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e45786368616e67652069732073757370656e6465642e204f7065726174696f6e2070726f686962697465645065726946696e616e63652069732073757370656e6465642c207570677261646520696e2070726f67726573732e2e2e20706c65617365207374616e642062795265737472696374656420746f2061636365737320636f6e74726f6c206c69737450796e74682069732073757370656e6465642e204f7065726174696f6e2070726f68696269746564a265627a7a7231582018f806304970781b8eb73b57b112e4fdff7f40e812c7e7a9c4cea06b9772f04f64736f6c63430005100032000000000000000000000000166220468aff631290b7e1ddff7f45b052de8324

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

000000000000000000000000166220468aff631290b7e1ddff7f45b052de8324

-----Decoded View---------------
Arg [0] : _owner (address): 0x166220468aff631290b7e1ddff7f45b052de8324

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000166220468aff631290b7e1ddff7f45b052de8324


Deployed ByteCode Sourcemap

5048:12864:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5048:12864:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5905:94;;;:::i;:::-;;12123:220;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12123:220:0;;:::i;8232:513::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8232:513:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8232:513:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8232:513:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8232:513:0;;-1:-1:-1;8232:513:0;-1:-1:-1;8232:513:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8232:513:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8232:513:0;;;;;;;;;;;;;;;;;;;5239:49;;;:::i;:::-;;;;;;;;;;;;;;;;12351:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12351:134:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;12351:134:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12351:134:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;12351:134:0;;-1:-1:-1;12351:134:0;-1:-1:-1;12351:134:0;:::i;10429:236::-;;;:::i;11188:251::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11188:251:0;;:::i;2109:141::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2109:141:0;-1:-1:-1;;;;;2109:141:0;;:::i;5486:47::-;;;:::i;6752:233::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6752:233:0;;:::i;5101:67::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5101:67:0;;;;;;-1:-1:-1;;;;;5101:67:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5585:36;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;5585:36:0;;;;;;;;;;;;;;;;7341:709;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7341:709:0;;;;;;;:::i;5542:34::-;;;:::i;8058:166::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;13095:118;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13095:118:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13095:118:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13095:118:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;13095:118:0;;-1:-1:-1;13095:118:0;-1:-1:-1;13095:118:0;:::i;5415:64::-;;;:::i;10673:251::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10673:251:0;;:::i;6993:340::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6993:340:0;;;;;;;:::i;9278:246::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;9278:246:0;;;-1:-1:-1;;;;;9278:246:0;;;;;;;;;;;;;;;;;;;:::i;5295:53::-;;;:::i;5675:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5675:61:0;;:::i;9532:623::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9532:623:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9532:623:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9532:623:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9532:623:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9532:623:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9532:623:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9532:623:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9532:623:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9532:623:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9532:623:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9532:623:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9532:623:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9532:623:0;;-1:-1:-1;9532:623:0;-1:-1:-1;9532:623:0;:::i;1878:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1878:29:0;;;;;;;;;;;;;;12493:230;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12493:230:0;;;;;;;:::i;10932:248::-;;;:::i;6249:238::-;;;:::i;11703:245::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11703:245:0;;;;;;;:::i;2258:271::-;;;:::i;6007:234::-;;;:::i;12731:144::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12731:144:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;12731:144:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12731:144:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12731:144:0;;-1:-1:-1;12731:144:0;-1:-1:-1;12731:144:0;;:::i;6495:249::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6495:249:0;;:::i;5745:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5745:53:0;;:::i;1851:20::-;;;:::i;5177:53::-;;;:::i;:::-;;;;-1:-1:-1;;;;;5177:53:0;;;;;;;;;;;;;;11956:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11956:159:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11956:159:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11956:159:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11956:159:0;;-1:-1:-1;11956:159:0;-1:-1:-1;11956:159:0;;:::i;8753:465::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8753:465:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8753:465:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8753:465:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8753:465:0;;-1:-1:-1;8753:465:0;-1:-1:-1;8753:465:0;:::i;12883:204::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12883:204:0;;:::i;10163:258::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10163:258:0;;:::i;5355:53::-;;;:::i;11447:248::-;;;:::i;5630:36::-;;;:::i;5905:94::-;5961:30;:28;:30::i;:::-;5905:94::o;12123:220::-;12225:16;;;12239:1;12225:16;;;;;;;;;12193:29;;12225:16;;;;;;105:10:-1;12225:16:0;88:34:-1;136:17;;-1:-1;12225:16:0;12193:48;;12270:11;12252:12;12265:1;12252:15;;;;;;;;;;;;;:29;;;;;12292:43;12322:12;12292:29;:43::i;:::-;12123:220;;:::o;8232:513::-;8346:33;8381:24;8456:6;;:13;;8445:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;8445:25:0;-1:-1:-1;8491:28:0;;;;;;;;;;;;;;;;8423:47;;-1:-1:-1;8505:6:0;8491:28;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;8491:28:0;-1:-1:-1;8481:38:0;-1:-1:-1;8537:6:0;8532:206;8549:17;;;8532:206;;;8613:23;:34;8637:6;;8644:1;8637:9;;;;;;;;;;;;;8613:34;;;;;;;;;;;:44;;;;;;;;;;;;8588:19;8608:1;8588:22;;;;;;;;:69;;;:22;;;;;;;;;;;:69;8685:23;:34;8709:6;;8716:1;8709:9;;;;;;;;;;;;;8685:34;;;;;;;;;;;:41;;;;;;;;;;-1:-1:-1;;;;;8685:41:0;-1:-1:-1;;;;;8672:54:0;:7;8680:1;8672:10;;;;;;;;;;;;;;;;;:54;8568:3;;8532:206;;;;8232:513;;;;;:::o;5239:49::-;-1:-1:-1;;;5239:49:0;:::o;12351:134::-;12434:43;12464:12;;12434:43;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12434:29:0;;-1:-1:-1;;;12434:43:0:i;10429:236::-;10473:38;-1:-1:-1;;;10473:22:0;:38::i;:::-;10522:16;:34;;-1:-1:-1;;10522:34:0;;;;;10572:47;;;10522:34;10594:23;;;-1:-1:-1;;;;;10594:23:0;10572:47;;;;;;;;;;;;;10630:16;:27;;;;;;10429:236::o;11188:251::-;11249:41;-1:-1:-1;;;11249:23:0;:41::i;:::-;11301:18;:35;;-1:-1:-1;;;;;11347:43:0;;11301:35;11347:43;-1:-1:-1;;11301:35:0;;;11332:4;11301:35;;11347:43;;;;11406:25;;;;;;;;;;;;;;;;;11188:251;:::o;2109:141::-;2567:12;:10;:12::i;:::-;2181:14;:23;;-1:-1:-1;;;;;2181:23:0;;-1:-1:-1;;;;;;2181:23:0;;;;;;;;2220:22;;;;;;;;;;;;;;;;2109:141;:::o;5486:47::-;-1:-1:-1;;;5486:47:0;:::o;6752:233::-;6896:30;:28;:30::i;:::-;6937:40;6965:11;6937:27;:40::i;:::-;6752:233;:::o;5101:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5585:36::-;;;;;;;;;;-1:-1:-1;;;;;5585:36:0;;:::o;7341:709::-;7540:30;:28;:30::i;:::-;7625:32;:30;:32::i;:::-;7741:54;7777:17;7741:35;:54::i;:::-;7806:59;7842:22;7806:35;:59::i;:::-;7934:46;7962:17;7934:27;:46::i;:::-;7991:51;8019:22;7991:27;:51::i;5542:34::-;;;;;;;;;;-1:-1:-1;;;;;5542:34:0;;:::o;8058:166::-;8134:16;:26;8110:4;;8134:26;;:82;;;;-1:-1:-1;8164:16:0;:23;;;;-1:-1:-1;;;;;8164:23:0;5229:1;8164:52;8134:82;8127:89;;8058:166;:::o;13095:118::-;13170:35;13192:12;;13170:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;13170:21:0;;-1:-1:-1;;;13170:35:0:i;5415:64::-;-1:-1:-1;;;5415:64:0;:::o;10673:251::-;10734:41;-1:-1:-1;;;10734:23:0;:41::i;:::-;10786:18;:35;;-1:-1:-1;;;;;10832:43:0;;10786:35;10832:43;-1:-1:-1;;10786:35:0;;;10817:4;10786:35;;10832:43;;;;10891:25;;;;;;;;;;;;;;;;;10673:251;:::o;6993:340::-;7176:30;:28;:30::i;9278:246::-;2567:12;:10;:12::i;:::-;9447:69;9476:7;9485;9494:10;9506:9;9447:28;:69::i;:::-;9278:246;;;;:::o;5295:53::-;-1:-1:-1;;;5295:53:0;:::o;5675:61::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5675:61:0;;:::o;9532:623::-;2567:12;:10;:12::i;:::-;9772:34;;;:92;;;;-1:-1:-1;9827:37:0;;;9772:92;:152;;;;-1:-1:-1;9885:39:0;;;9772:152;9750:232;;;;;-1:-1:-1;;;9750:232:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9998:6;9993:155;10010:19;;;9993:155;;;10051:85;10080:8;;10089:1;10080:11;;;;;;;;;;;;;10093:8;;10102:1;10093:11;;;;;;;;;;;;;-1:-1:-1;;;;;10093:11:0;10106;;10118:1;10106:14;;;;;;;;;;;;;;;10122:10;;10133:1;10122:13;;;;;;;;;;;;;;;10051:28;:85::i;:::-;10031:3;;9993:155;;;;9532:623;;;;;;;;:::o;1878:29::-;;;-1:-1:-1;;;;;1878:29:0;;:::o;12493:230::-;12604:16;;;12618:1;12604:16;;;;;;;;;12572:29;;12604:16;;;;;;105:10:-1;12604:16:0;88:34:-1;136:17;;-1:-1;12604:16:0;12572:48;;12649:11;12631:12;12644:1;12631:15;;;;;;;;;;;;;:29;;;;;12671:44;12694:12;12708:6;12671:22;:44::i;:::-;12493:230;;;:::o;10932:248::-;10978:40;-1:-1:-1;;;10978:22:0;:40::i;:::-;11029:18;:36;;-1:-1:-1;;11029:36:0;;;;;11081:51;;;11029:36;11105:25;;;-1:-1:-1;;;;;11105:25:0;11081:51;;;;;;;;;;;;;11143:18;:29;;;;;;10932:248::o;6249:238::-;6360:30;:28;:30::i;:::-;6447:32;:30;:32::i;11703:245::-;11822:16;;;11836:1;11822:16;;;;;;;;;11790:29;;11822:16;;;;;;105:10:-1;11822:16:0;88:34:-1;136:17;;-1:-1;11822:16:0;11790:48;;11867:11;11849:12;11862:1;11849:15;;;;;;;;;;;;;:29;;;;;11889:51;11919:12;11933:6;11889:29;:51::i;2258:271::-;2327:14;;-1:-1:-1;;;;;2327:14:0;2313:10;:28;2305:94;;;;-1:-1:-1;;;2305:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2428:5;;;2435:14;2415:35;;;-1:-1:-1;;;;;2428:5:0;;;2415:35;;2435:14;;;;2415:35;;;;;;;;;;;;;;;;2469:14;;;;2461:22;;-1:-1:-1;;;;;;2461:22:0;;;-1:-1:-1;;;;;2469:14:0;;2461:22;;;;2494:27;;;2258:271::o;6007:234::-;6116:30;:28;:30::i;:::-;6201:32;:30;:32::i;12731:144::-;12823:44;12846:12;;12823:44;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12860:6:0;;-1:-1:-1;12823:22:0;;-1:-1:-1;;12823:44:0:i;6495:249::-;6647:30;:28;:30::i;:::-;6688:48;6724:11;6688:35;:48::i;5745:53::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5745:53:0;;:::o;1851:20::-;;;-1:-1:-1;;;;;1851:20:0;;:::o;5177:53::-;5229:1;5177:53;:::o;11956:159::-;12056:51;12086:12;;12056:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12100:6:0;;-1:-1:-1;12056:29:0;;-1:-1:-1;;12056:51:0:i;8753:465::-;8859:25;8886:24;8953:6;;:13;;8942:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;8942:25:0;-1:-1:-1;8988:28:0;;;;;;;;;;;;;;;;8928:39;;-1:-1:-1;9002:6:0;8988:28;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;8988:28:0;-1:-1:-1;8978:38:0;-1:-1:-1;9034:6:0;9029:182;9046:17;;;9029:182;;;9102:15;:26;9118:6;;9125:1;9118:9;;;;;;;;;;;;;9102:26;;;;;;;;;;;:36;;;;;;;;;;;;9085:11;9097:1;9085:14;;;;;;;;:53;;;:14;;;;;;;;;;;:53;9166:15;:26;9182:6;;9189:1;9182:9;;;;;;;;;;;;;9166:26;;;;;;;;;;;:33;;;;;;;;;;-1:-1:-1;;;;;9166:33:0;-1:-1:-1;;;;;9153:46:0;:7;9161:1;9153:10;;;;;;;;;;;;;;;;;:46;9065:3;;9029:182;;12883:204;12977:16;;;12991:1;12977:16;;;;;;;;;12945:29;;12977:16;;;;;;105:10:-1;12977:16:0;88:34:-1;136:17;;-1:-1;12977:16:0;12945:48;;13022:11;13004:12;13017:1;13004:15;;;;;;;;;;;;;:29;;;;;13044:35;13066:12;13044:21;:35::i;10163:258::-;10222:39;-1:-1:-1;;;10222:23:0;:39::i;:::-;10272:16;:33;;-1:-1:-1;;;;;10316:41:0;;;10272:33;10316:41;;;-1:-1:-1;;10272:33:0;;;10301:4;10272:33;;10316:41;;;;;;;;;10373:40;;;10389:23;;;;;10373:40;;;;;;;;;;;;;10163:258;:::o;5355:53::-;-1:-1:-1;;;5355:53:0;:::o;11447:248::-;11493:40;-1:-1:-1;;;11493:22:0;:40::i;:::-;11544:18;:36;;-1:-1:-1;;11544:36:0;;;;;11596:51;;;11544:36;11620:25;;;-1:-1:-1;;;;;11620:25:0;11596:51;;;;;;;;;;;;;11658:18;:29;;;;;;11447:248::o;5630:36::-;;;;;;;;;;-1:-1:-1;;;;;5630:36:0;;:::o;13637:354::-;13725:16;:26;;;;13724:27;;13725:26;13766:23;;-1:-1:-1;;;;;13766:23:0;13725:26;13766:52;:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13702:281;;;;;-1:-1:-1;;;13702:281:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13702:281:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16090:430;16180:46;-1:-1:-1;;;16180:22:0;:46::i;:::-;16242:6;16237:276;16258:12;:19;16254:1;:23;16237:276;;;16299:19;16321:12;16334:1;16321:15;;;;;;;;;;;;;;;;;;;16398:36;;;;:23;:36;;;;;;;:43;16356:87;;;;;16398:43;;;;-1:-1:-1;;;;;16398:43:0;16356:87;;;;;;;;;16321:15;;-1:-1:-1;16356:87:0;;;;;;;;16465:36;;;;:23;:36;;;;;16458:43;;16279:3;16237:276;;13457:172;13539:22;;;;:13;:22;;;;;;;;13562:10;13539:34;;;;;;;:44;;;;;;13531:90;;;;-1:-1:-1;;;13531:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13275:174;13358:22;;;;:13;:22;;;;;;;;13381:10;13358:34;;;;;;;:45;;;13350:91;;;;-1:-1:-1;;;13350:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2607:133;2675:5;;-1:-1:-1;;;;;2675:5:0;2661:10;:19;2653:79;;;;-1:-1:-1;;;2653:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14548:183;14640:28;;;;:15;:28;;;;;:38;;;14639:39;14631:92;;;;-1:-1:-1;;;14631:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14167:160;14243:18;:28;;;14242:29;14234:85;;;;-1:-1:-1;;;14234:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14335:205;14435:36;;;;:23;:36;;;;;:46;;;14434:47;14426:106;;;;-1:-1:-1;;;14426:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15196:389;15278:37;-1:-1:-1;;;15278:22:0;:37::i;:::-;15331:6;15326:252;15347:12;:19;15343:1;:23;15326:252;;;15388:19;15410:12;15423:1;15410:15;;;;;;;;;;;;;;;;;;;15479:28;;;;:15;:28;;;;;;;:35;15445:71;;;;;15479:35;;;;-1:-1:-1;;;;;15479:35:0;15445:71;;;;;;;;;15410:15;;-1:-1:-1;15445:71:0;;;;;;;;15538:28;;;;:15;:28;;;;;15531:35;;15368:3;15326:252;;16528:677;-1:-1:-1;;;16718:7:0;:25;:73;;;;-1:-1:-1;;;16764:7:0;:27;16718:73;:121;;;;-1:-1:-1;;;16812:7:0;:27;16718:121;:175;;;;-1:-1:-1;;;16860:7:0;:33;16718:175;:220;;;;-1:-1:-1;;;16914:7:0;:24;16718:220;16696:294;;;;;-1:-1:-1;;;16696:294:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17001:22;;;;:13;:22;;;;;;;;-1:-1:-1;;;;;17001:31:0;;;;;;;;;;;;:55;;17067:53;;;17001:55;17067:53;;-1:-1:-1;;17001:55:0;;;-1:-1:-1;;17001:55:0;;;;;17067:53;;;;;17136:61;;;;;;;;;;;17001:22;;17136:61;;;;;;;;;16528:677;;;;:::o;14739:449::-;14838:38;-1:-1:-1;;;14838:23:0;:38::i;:::-;14892:6;14887:294;14908:12;:19;14904:1;:23;14887:294;;;14949:19;14971:12;14984:1;14971:15;;;;;;;;;;;;;;;;;;;15001:28;;;;:15;:28;;;;;;;:45;;-1:-1:-1;;;;;15061:53:0;;15001:45;15061:53;-1:-1:-1;;15001:45:0;;;15042:4;15001:45;;15061:53;;;;15134:35;;;;;;;;;;;;;14971:15;;-1:-1:-1;15134:35:0;;;;;;;;-1:-1:-1;14929:3:0;;14887:294;;15593:489;15699:47;-1:-1:-1;;;15699:23:0;:47::i;:::-;15762:6;15757:318;15778:12;:19;15774:1;:23;15757:318;;;15819:19;15841:12;15854:1;15841:15;;;;;;;;;;;;;;;;;;;15871:36;;;;:23;:36;;;;;;;:53;;-1:-1:-1;;;;;15939:61:0;;15871:53;15939:61;-1:-1:-1;;15871:53:0;;;15920:4;15871:53;;15939:61;;;;16020:43;;;;;;;;;;;;;15841:15;;-1:-1:-1;16020:43:0;;;;;;;;-1:-1:-1;15799:3:0;;15757:318;;13999:160;14075:18;:28;;;14074:29;14066:85;;;;-1:-1:-1;;;14066:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://18f806304970781b8eb73b57b112e4fdff7f40e812c7e7a9c4cea06b9772f04f
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading