Contract 0xcf8B3d452A56Dab495dF84905655047BC1Dc41Bc

Contract Overview

Balance:
0 Ether
Txn Hash Method
Block
From
To
Value
0x297d0e6b1c47e5c0acb93122470b5ff8c24f0c4d709ff5d87771837ddf38c0edSuspend Synths E...249193772021-05-18 20:04:1624 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0053656856111.1
0x430944f24360cd2563a2f9111b324a5e75692ee21357679679df5ae3b048abbdResume Synths Ex...249137812021-05-18 13:34:206 hrs 54 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.00165822272103.04
0x34f8f8ef1541b2b13990c9467a82c1141643de9023d17e66f62603c85c2f189dSuspend Synths E...248980372021-05-17 20:04:161 day 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.00734871936152.16
0x934f496512eb8f75961a3af08ccf38e6eb20ca816e82c4e6988fc079501b1452Resume Synths Ex...248921932021-05-17 13:34:201 day 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0011210383869.66
0xedd051635e8fbcea2b33f061ed6c936dcad0e32ff3bf7093c4e497967c44313eResume Synths Ex...248773552021-05-16 21:04:401 day 23 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0084296211214.14
0x55183bd3d4266091d2d09ab6b11a7c2f3d5edf56eaf48330cfc461735b8c4a95Suspend Synths E...248332572021-05-14 20:04:204 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.03360111264140.44
0xa3775d4ef30bdf46a44b5c61bb49bfc4c9e97248d5d5c5f64475a22e92acec58Resume Synths Ex...248280302021-05-14 13:34:244 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0025137266156.2
0x56257f59dcda8c911987e46595592f0b0d09d7230037dbbe195957f8e39745e4Suspend Synths E...248174592021-05-13 20:04:205 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.00653299992135.27
0x53b5704d588405dcc812395aa77113ce0ea5da93aec129c0629b100337833ca6Resume Synths Ex...248133542021-05-13 13:30:445 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.00316291822196.54
0x6a9bd63a60223f392caa2beaa7c95900dd317b803e8b360809fa0e4ce4f43ba8Suspend Synths E...248028042021-05-12 20:04:206 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0144888300
0xa2bd77ca9721d5870af4cde5ca328a9bce6e504fbfd3dfccf1555f279d3d136aResume Synths Ex...247988562021-05-12 13:34:246 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0048279300
0x99fbf2f82fd332ebc2aaf8b49d3322a5f9d75adcf2666c4f659265ddf72029c4Suspend Synths E...247882062021-05-11 20:04:207 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0144888300
0x74ff61523e6c964e69330e99fedf74f2568f487cfda649beb669ab164d18a1a1Resume Synths Ex...247842712021-05-11 13:34:247 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0048279300
0xbd0c5d898356f967ec027f3811ffc20ccee93f75e989a7d47c5d9bf5d77a6978Suspend Synths E...247735812021-05-10 20:04:208 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0144888300
0xf0847d4cab16decf3093e5b7010123dc756ce74212c029f2ce6f50ed8c2291d7Resume Synths Ex...247691162021-05-10 13:34:208 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0046779300
0x2864df262768b5cac4369f3717089595cb903fa66e56fe1db2b5f9d7d62fc075Resume Synths Ex...247578002021-05-09 21:04:208 days 23 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.00557762905133.07
0x90068bf81487ed583753b421420544f6c2438eb4158716b56da56384f5cf5e21Suspend Synths E...247188532021-05-07 20:04:2011 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.018168356880.3
0xa03780c76559e213af4586ce43cc2b9d2923095a8e66b5804404098e8fba5410Resume Synths Ex...247130782021-05-07 13:34:1611 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0012920359882.86
0xf66a48cda8fcfdb21b87650522e5bf5817ae5fa3e9950bba53520c4c628d6773Suspend Synths E...246979602021-05-06 20:04:2012 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0054286848118.8
0xe05fe1d1957bb49100c4d79d6606519bd920bdfb0f038537a8db9c73553d18d7Resume Synths Ex...246923432021-05-06 13:34:2412 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0014030581489.98
0xae54664e445b01981504da28d0886473b1a21c3d496828137b3e5eb2053d3127Suspend Synths E...246773082021-05-05 20:04:2013 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.0042739468893.53
0x69663b9bd944f8eb500cf9904d3b68c8a1e896decf7978c2c827eb24b4efdadfResume Synths Ex...246717502021-05-05 13:34:3613 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.000926224259.4
0x19a57dd7141568067fd5217f7d7083b276cf0712d3478814190d9988b6cd3ac9Suspend Synths E...246562202021-05-04 20:04:2414 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.003418060874.8
0x6ad1649f65f5e8b260a663d069520993b45686104651f9cd2bf9418e37e354ceResume Synths Ex...246505032021-05-04 13:34:3614 days 6 hrs ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.001063442668.2
0x3612e9a2afd5473efff67278a0c428d96f52933ee927432216c6fcf8ebaf2fd9Suspend Synths E...246350412021-05-03 20:04:2015 days 24 mins ago0xb64ff7a4a33acdf48d97dab0d764afd0f6176882 IN  0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether0.009801792214.5
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa6984b9ab3206bad7c30d95debd071bb922bc6d2871eb8ddd120c0f8ecca006f249194462021-05-18 20:09:1219 mins ago 0x253e60880f7393b02ef963fb98dd28eac6a0026e 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x367a3106c89eae4d3111abb46452a59d091b1d6a1c988dbc808a27c4d7cbbbe9249191262021-05-18 19:46:4442 mins ago 0x3ad8366b716deea3f46730debff537b713c76404 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x367a3106c89eae4d3111abb46452a59d091b1d6a1c988dbc808a27c4d7cbbbe9249191262021-05-18 19:46:4442 mins ago 0xf1d0ee19af243bcbc140a2259290b490e4df92a9 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x367a3106c89eae4d3111abb46452a59d091b1d6a1c988dbc808a27c4d7cbbbe9249191262021-05-18 19:46:4442 mins ago 0x07acc2b253218535c21a3e57bcb81eb13345a34a 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x6e9b5f638708ae4ccc35b5b02aa3f5781884f9bede571f8cb924742b7c787e64249191182021-05-18 19:46:1242 mins ago 0x253e60880f7393b02ef963fb98dd28eac6a0026e 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0xa3913923f00cd03d111c700e7a10977980675f41a4fee67046733aa9c6cb03de249190452021-05-18 19:40:5647 mins ago 0x3ad8366b716deea3f46730debff537b713c76404 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0xa3913923f00cd03d111c700e7a10977980675f41a4fee67046733aa9c6cb03de249190452021-05-18 19:40:5647 mins ago 0xf1d0ee19af243bcbc140a2259290b490e4df92a9 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0xa3913923f00cd03d111c700e7a10977980675f41a4fee67046733aa9c6cb03de249190452021-05-18 19:40:5647 mins ago 0x07acc2b253218535c21a3e57bcb81eb13345a34a 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x930d8ab1dac81339898592fdf61d6fc267dd56edba1299c198d5cfa13d306498249190322021-05-18 19:40:0048 mins ago 0x07acc2b253218535c21a3e57bcb81eb13345a34a 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0xa92b99e05181b09986c4cfd554504f12e96ca53347cc3d3af2a2365789982cf3249190292021-05-18 19:39:4848 mins ago 0x38635d2501f9ca46106a22be4af9b8c08c2b4823 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x7d19269c6ba694e0d7f213a0702674c17a014d093d2a1ff5d2c986e75b9dda4a249189542021-05-18 19:34:2854 mins ago 0x3ad8366b716deea3f46730debff537b713c76404 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x7d19269c6ba694e0d7f213a0702674c17a014d093d2a1ff5d2c986e75b9dda4a249189542021-05-18 19:34:2854 mins ago 0xf1d0ee19af243bcbc140a2259290b490e4df92a9 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x7d19269c6ba694e0d7f213a0702674c17a014d093d2a1ff5d2c986e75b9dda4a249189542021-05-18 19:34:2854 mins ago 0x07acc2b253218535c21a3e57bcb81eb13345a34a 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x28b21a546905c00d8344564d82b608c0e73210a1dba71d2b0d6d0d461d7d0f73249187662021-05-18 19:21:001 hr 7 mins ago 0x07acc2b253218535c21a3e57bcb81eb13345a34a 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x2c5e9e2f5ce410a6733411c497f2a7595673dac1e7c78e92ae7fdf99c443ddad249187452021-05-18 19:19:321 hr 9 mins ago 0x07acc2b253218535c21a3e57bcb81eb13345a34a 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0xa6e1405cad6a921e7b302bb8d86a7fe2946abdf3d164c19ab69c77ba95f074b5249186242021-05-18 19:11:001 hr 17 mins ago 0x07acc2b253218535c21a3e57bcb81eb13345a34a 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x60addf7c2a742bea34572cb73f6fce49f3f37c5512e62b1edb05ec8ec2473b8e249184482021-05-18 18:58:321 hr 30 mins ago 0x3ad8366b716deea3f46730debff537b713c76404 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x4c067c8ad83147189c44fb60e40c493437f90615aa619c021e5826c619cf1db8249167832021-05-18 17:02:243 hrs 26 mins ago 0x253e60880f7393b02ef963fb98dd28eac6a0026e 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x4c067c8ad83147189c44fb60e40c493437f90615aa619c021e5826c619cf1db8249167832021-05-18 17:02:243 hrs 26 mins ago 0xb19e3074694eaf18a16fd104086d71f7e77c3666 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x4c067c8ad83147189c44fb60e40c493437f90615aa619c021e5826c619cf1db8249167832021-05-18 17:02:243 hrs 26 mins ago 0x3ad8366b716deea3f46730debff537b713c76404 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x4c067c8ad83147189c44fb60e40c493437f90615aa619c021e5826c619cf1db8249167832021-05-18 17:02:243 hrs 26 mins ago 0xf1d0ee19af243bcbc140a2259290b490e4df92a9 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x4c067c8ad83147189c44fb60e40c493437f90615aa619c021e5826c619cf1db8249167832021-05-18 17:02:243 hrs 26 mins ago 0xb19e3074694eaf18a16fd104086d71f7e77c3666 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x4c067c8ad83147189c44fb60e40c493437f90615aa619c021e5826c619cf1db8249167832021-05-18 17:02:243 hrs 26 mins ago 0x3ad8366b716deea3f46730debff537b713c76404 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x4c067c8ad83147189c44fb60e40c493437f90615aa619c021e5826c619cf1db8249167832021-05-18 17:02:243 hrs 26 mins ago 0xf1d0ee19af243bcbc140a2259290b490e4df92a9 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
0x4c067c8ad83147189c44fb60e40c493437f90615aa619c021e5826c619cf1db8249167832021-05-18 17:02:243 hrs 26 mins ago 0xb19e3074694eaf18a16fd104086d71f7e77c3666 0xcf8b3d452a56dab495df84905655047bc1dc41bc0 Ether
[ Download CSV Export 
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

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-04
*/

/*
   ____            __   __        __   _
  / __/__ __ ___  / /_ / /  ___  / /_ (_)__ __
 _\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ /
/___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\
     /___/

* Synthetix: SystemStatus.sol
*
* Latest source (may be newer): https://github.com/Synthetixio/synthetix/blob/master/contracts/SystemStatus.sol
* Docs: https://docs.synthetix.io/contracts/SystemStatus
*
* Contract Dependencies: 
*	- ISystemStatus
*	- Owned
* Libraries: (none)
*
* MIT License
* ===========
*
* Copyright (c) 2021 Synthetix
*
* 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.synthetix.io/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.synthetix.io/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 requireExchangeBetweenSynthsAllowed(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view;

    function requireSynthActive(bytes32 currencyKey) external view;

    function requireSynthsActive(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 synthExchangeSuspension(bytes32 currencyKey) external view returns (bool suspended, uint248 reason);

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

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

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

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

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


// Inheritance


// https://docs.synthetix.io/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_SYNTH_EXCHANGE = "SynthExchange";
    bytes32 public constant SECTION_SYNTH = "Synth";

    Suspension public systemSuspension;

    Suspension public issuanceSuspension;

    Suspension public exchangeSuspension;

    mapping(bytes32 => Suspension) public synthExchangeSuspension;

    mapping(bytes32 => Suspension) public synthSuspension;

    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 requireSynthExchangeActive(bytes32 currencyKey) external view {
        // Synth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequireSynthExchangeActive(currencyKey);
    }

    function requireSynthActive(bytes32 currencyKey) external view {
        // Synth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequireSynthActive(currencyKey);
    }

    function requireSynthsActive(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey) external view {
        // Synth exchange and transfer requires the system be active
        _internalRequireSystemActive();
        _internalRequireSynthActive(sourceCurrencyKey);
        _internalRequireSynthActive(destinationCurrencyKey);
    }

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

        // and exchanging must be active
        _internalRequireExchangeActive();

        // and the synth exchanging between the synths must be active
        _internalRequireSynthExchangeActive(sourceCurrencyKey);
        _internalRequireSynthExchangeActive(destinationCurrencyKey);

        // and finally, the synths cannot be suspended
        _internalRequireSynthActive(sourceCurrencyKey);
        _internalRequireSynthActive(destinationCurrencyKey);
    }

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

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

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

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

        for (uint i = 0; i < synths.length; i++) {
            suspensions[i] = synthSuspension[synths[i]].suspended;
            reasons[i] = synthSuspension[synths[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 suspendSynthExchange(bytes32 currencyKey, uint256 reason) external {
        bytes32[] memory currencyKeys = new bytes32[](1);
        currencyKeys[0] = currencyKey;
        _internalSuspendSynthExchange(currencyKeys, reason);
    }

    function suspendSynthsExchange(bytes32[] calldata currencyKeys, uint256 reason) external {
        _internalSuspendSynthExchange(currencyKeys, reason);
    }

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

    function resumeSynthsExchange(bytes32[] calldata currencyKeys) external {
        _internalResumeSynthsExchange(currencyKeys);
    }

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

    function suspendSynths(bytes32[] calldata currencyKeys, uint256 reason) external {
        _internalSuspendSynths(currencyKeys, reason);
    }

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

    function resumeSynths(bytes32[] calldata currencyKeys) external {
        _internalResumeSynths(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
                ? "Synthetix is suspended, upgrade in progress... please stand by"
                : "Synthetix 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 _internalRequireSynthExchangeActive(bytes32 currencyKey) internal view {
        require(!synthExchangeSuspension[currencyKey].suspended, "Synth exchange suspended. Operation prohibited");
    }

    function _internalRequireSynthActive(bytes32 currencyKey) internal view {
        require(!synthSuspension[currencyKey].suspended, "Synth is suspended. Operation prohibited");
    }

    function _internalSuspendSynths(bytes32[] memory currencyKeys, uint256 reason) internal {
        _requireAccessToSuspend(SECTION_SYNTH);
        for (uint i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            synthSuspension[currencyKey].suspended = true;
            synthSuspension[currencyKey].reason = uint248(reason);
            emit SynthSuspended(currencyKey, reason);
        }
    }

    function _internalResumeSynths(bytes32[] memory currencyKeys) internal {
        _requireAccessToResume(SECTION_SYNTH);
        for (uint i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            emit SynthResumed(currencyKey, uint256(synthSuspension[currencyKey].reason));
            delete synthSuspension[currencyKey];
        }
    }

    function _internalSuspendSynthExchange(bytes32[] memory currencyKeys, uint256 reason) internal {
        _requireAccessToSuspend(SECTION_SYNTH_EXCHANGE);
        for (uint i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            synthExchangeSuspension[currencyKey].suspended = true;
            synthExchangeSuspension[currencyKey].reason = uint248(reason);
            emit SynthExchangeSuspended(currencyKey, reason);
        }
    }

    function _internalResumeSynthsExchange(bytes32[] memory currencyKeys) internal {
        _requireAccessToResume(SECTION_SYNTH_EXCHANGE);
        for (uint i = 0; i < currencyKeys.length; i++) {
            bytes32 currencyKey = currencyKeys[i];
            emit SynthExchangeResumed(currencyKey, uint256(synthExchangeSuspension[currencyKey].reason));
            delete synthExchangeSuspension[currencyKey];
        }
    }

    function _internalUpdateAccessControl(
        bytes32 section,
        address account,
        bool canSuspend,
        bool canResume
    ) internal {
        require(
            section == SECTION_SYSTEM ||
                section == SECTION_ISSUANCE ||
                section == SECTION_EXCHANGE ||
                section == SECTION_SYNTH_EXCHANGE ||
                section == SECTION_SYNTH,
            "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 SynthExchangeSuspended(bytes32 currencyKey, uint256 reason);
    event SynthExchangeResumed(bytes32 currencyKey, uint256 reason);

    event SynthSuspended(bytes32 currencyKey, uint256 reason);
    event SynthResumed(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":"SynthExchangeResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SynthExchangeSuspended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SynthResumed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"SynthSuspended","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_SYNTH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SECTION_SYNTH_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":"synths","type":"bytes32[]"}],"name":"getSynthExchangeSuspensions","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":"synths","type":"bytes32[]"}],"name":"getSynthSuspensions","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":[],"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":"requireExchangeBetweenSynthsAllowed","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":"requireSynthActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"requireSynthExchangeActive","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"sourceCurrencyKey","type":"bytes32"},{"internalType":"bytes32","name":"destinationCurrencyKey","type":"bytes32"}],"name":"requireSynthsActive","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":"resumeSynth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"}],"name":"resumeSynthExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"}],"name":"resumeSynths","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"}],"name":"resumeSynthsExchange","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":"suspendSynth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"currencyKey","type":"bytes32"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynthExchange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynths","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"currencyKeys","type":"bytes32[]"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"suspendSynthsExchange","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":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"synthExchangeSuspension","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":"synthSuspension","outputs":[{"internalType":"bool","name":"suspended","type":"bool"},{"internalType":"uint248","name":"reason","type":"uint248"}],"payable":false,"stateMutability":"view","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"}]

608060405234801561001057600080fd5b50604051611ed2380380611ed28339818101604052602081101561003357600080fd5b5051806001600160a01b038116610091576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a15050611dd8806100fa6000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806369eaced211610146578063abc0bb6e116100c3578063e665edf011610087578063e665edf014610998578063e91e691814610a06578063f161620714610a23578063f405f65a14610a2b578063f44d1e0b14610a33578063f8b4b08414610a3b5761025e565b8063abc0bb6e146107c6578063b9a49869146107e9578063da5917ae146108f0578063de1b88511461090d578063e470df581461097b5761025e565b80637fe9b23d1161010a5780637fe9b23d146107075780638da5cb5b1461077557806394c79f741461077d5780639f8a95ba1461079a578063a55ce9c5146107be5761025e565b806369eaced2146106645780637118d431146106d25780637243bc2c146106da57806379ba5097146106f75780637c312541146106ff5761025e565b80632e8d0b9e116101df5780634abdb44d116101a35780634abdb44d14610492578063517d60c61461049a57806353a47bb7146105f85780636132eba41461061c5780636309a10c1461063f57806367a280b21461065c5761025e565b80632e8d0b9e146103dd578063396e258e146103f957806342a28e211461041657806348bf1971146104335780634a6618501461046f5761025e565b80631cba727c116102265780631cba727c146102d25780631ce00ba21461034057806320f2bf00146103635780632366245e146103aa5780632dd8afdb146103d55761025e565b8063086dabd11461026357806312bde5141461026d578063157c51d3146102875780631588e8171461028f5780631627540c146102ac575b600080fd5b61026b610a43565b005b610275610a4d565b60408051918252519081900360200190f35b61026b610a5a565b61026b600480360360208110156102a557600080fd5b5035610ac4565b61026b600480360360208110156102c257600080fd5b50356001600160a01b0316610b2f565b61026b600480360360408110156102e857600080fd5b810190602081018135600160201b81111561030257600080fd5b82018360208201111561031457600080fd5b803590602001918460208302840111600160201b8311171561033557600080fd5b919350915035610b8b565b61026b6004803603604081101561035657600080fd5b5080359060200135610bce565b61038f6004803603604081101561037957600080fd5b50803590602001356001600160a01b0316610c06565b60408051921515835290151560208301528051918290030190f35b6103b2610c2f565b6040805192151583526001600160f81b0390911660208301528051918290030190f35b6103b2610c48565b6103e5610c61565b604080519115158252519081900360200190f35b61026b6004803603602081101561040f57600080fd5b5035610c8b565b61026b6004803603602081101561042c57600080fd5b5035610cf6565b61026b6004803603608081101561044957600080fd5b508035906001600160a01b03602082013516906040810135151590606001351515610d0a565b61026b6004803603604081101561048557600080fd5b5080359060200135610d24565b610275610d6a565b61026b600480360360808110156104b057600080fd5b810190602081018135600160201b8111156104ca57600080fd5b8201836020820111156104dc57600080fd5b803590602001918460208302840111600160201b831117156104fd57600080fd5b919390929091602081019035600160201b81111561051a57600080fd5b82018360208201111561052c57600080fd5b803590602001918460208302840111600160201b8311171561054d57600080fd5b919390929091602081019035600160201b81111561056a57600080fd5b82018360208201111561057c57600080fd5b803590602001918460208302840111600160201b8311171561059d57600080fd5b919390929091602081019035600160201b8111156105ba57600080fd5b8201836020820111156105cc57600080fd5b803590602001918460208302840111600160201b831117156105ed57600080fd5b509092509050610d79565b610600610e6a565b604080516001600160a01b039092168252519081900360200190f35b61026b6004803603604081101561063257600080fd5b5080359060200135610e79565b61026b6004803603602081101561065557600080fd5b5035610e81565b61026b610ec6565b61026b6004803603602081101561067a57600080fd5b810190602081018135600160201b81111561069457600080fd5b8201836020820111156106a657600080fd5b803590602001918460208302840111600160201b831117156106c757600080fd5b509092509050610f32565b61026b610f6e565b6103b2600480360360208110156106f057600080fd5b5035610f7e565b61026b610fa3565b61026b61105f565b61026b6004803603604081101561071d57600080fd5b810190602081018135600160201b81111561073757600080fd5b82018360208201111561074957600080fd5b803590602001918460208302840111600160201b8311171561076a57600080fd5b91935091503561106f565b6106006110ad565b61026b6004803603602081101561079357600080fd5b50356110bc565b6107a2611101565b604080516001600160f81b039092168252519081900360200190f35b610275611106565b61026b600480360360408110156107dc57600080fd5b508035906020013561111a565b610857600480360360208110156107ff57600080fd5b810190602081018135600160201b81111561081957600080fd5b82018360208201111561082b57600080fd5b803590602001918460208302840111600160201b8311171561084c57600080fd5b509092509050611160565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561089b578181015183820152602001610883565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156108da5781810151838201526020016108c2565b5050505090500194505050505060405180910390f35b61026b6004803603602081101561090657600080fd5b5035611289565b61026b6004803603602081101561092357600080fd5b810190602081018135600160201b81111561093d57600080fd5b82018360208201111561094f57600080fd5b803590602001918460208302840111600160201b8311171561097057600080fd5b50909250905061129a565b61026b6004803603602081101561099157600080fd5b50356112d6565b610857600480360360208110156109ae57600080fd5b810190602081018135600160201b8111156109c857600080fd5b8201836020820111156109da57600080fd5b803590602001918460208302840111600160201b831117156109fb57600080fd5b50909250905061134b565b6103b260048036036020811015610a1c57600080fd5b503561146c565b610275611491565b61026b6114a0565b61027561150c565b6103b2611518565b610a4b611531565b565b6553797374656d60d01b81565b610a6c6553797374656d60d01b611610565b6003805460ff191690819055604080516101009092046001600160f81b03168252517fb392a95118344e8edff8eff56183afb4bb0240310c406a0fc1217d2755c66d8f916020908290030190a16003805460ff169055565b610ad86745786368616e676560c01b61166d565b600580546001600160f81b0383166101000260ff1990911660011760ff161790556040805182815290517f078773069a9216cdb6acaa7b184785f12f62048c7ce8b7ede1bad6785de16b229181900360200190a150565b610b376116c5565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b610bc983838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525085925061170e915050565b505050565b610bd6611531565b610bde6117bc565b610be7826117fe565b610bf0816117fe565b610bf98261184c565b610c028161184c565b5050565b600260209081526000928352604080842090915290825290205460ff8082169161010090041682565b60045460ff81169061010090046001600160f81b031682565b60035460ff81169061010090046001600160f81b031682565b60035460009060ff168015610c86575060035461010090046001600160f81b03166001145b905090565b610c9f6749737375616e636560c01b61166d565b600480546001600160f81b0383166101000260ff1990911660011760ff161790556040805182815290517fee8bf45d6e3141aa521ae4f0d05dfefe0327a3f23a9fbae6a64680458b34ebb89181900360200190a150565b610cfe611531565b610d078161184c565b50565b610d126116c5565b610d1e8484848461189a565b50505050565b604080516001808252818301909252606091602080830190803883390190505090508281600081518110610d5457fe5b602002602001018181525050610bc9818361170e565b6749737375616e636560c01b81565b610d816116c5565b8685148015610d8f57508483145b8015610d9a57508281145b610deb576040805162461bcd60e51b815260206004820152601e60248201527f496e707574206172726179206c656e67746873206d757374206d617463680000604482015290519081900360640190fd5b60005b87811015610e5f57610e57898983818110610e0557fe5b90506020020135888884818110610e1857fe5b905060200201356001600160a01b0316878785818110610e3457fe5b905060200201351515868686818110610e4957fe5b90506020020135151561189a565b600101610dee565b505050505050505050565b6001546001600160a01b031681565b610bf0611531565b604080516001808252818301909252606091602080830190803883390190505090508181600081518110610eb157fe5b602002602001018181525050610c02816119cc565b610eda6749737375616e636560c01b611610565b6004805460ff191690819055604080516101009092046001600160f81b03168252517f0f1a80395faba9a11017f830db5f90ad6525a1621dbfb2cbc2b6679ba5716837916020908290030190a16004805460ff169055565b610c028282808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506119cc92505050565b610f76611531565b610a4b6117bc565b60076020526000908152604090205460ff81169061010090046001600160f81b031682565b6001546001600160a01b03163314610fec5760405162461bcd60e51b8152600401808060200182810382526035815260200180611c096035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b611067611531565b610a4b611a7a565b610bc9838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250611abc915050565b6000546001600160a01b031681565b6040805160018082528183019092526060916020808301908038833901905050905081816000815181106110ec57fe5b602002602001018181525050610c0281611b62565b600181565b6c53796e746845786368616e676560981b81565b60408051600180825281830190925260609160208083019080388339019050509050828160008151811061114a57fe5b602002602001018181525050610bc98183611abc565b60608083839050604051908082528060200260200182016040528015611190578160200160208202803883390190505b506040805185815260208087028201019091529092508380156111bd578160200160208202803883390190505b50905060005b8381101561128157600760008686848181106111db57fe5b90506020020135815260200190815260200160002060000160009054906101000a900460ff1683828151811061120d57fe5b911515602092830291909101909101526007600086868481811061122d57fe5b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b031682828151811061126e57fe5b60209081029190910101526001016111c3565b509250929050565b611291611531565b610d07816117fe565b610c02828280806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b6292505050565b6112e86553797374656d60d01b61166d565b600380546001600160f81b0380841661010090810260ff1990931660011760ff169290921792839055604080519290930416815290517f86b7ed06c3a2c3763514d475ced33f9ac8b1bb8f028ded18de0100b7678f3c4f9181900360200190a150565b6060808383905060405190808252806020026020018201604052801561137b578160200160208202803883390190505b506040805185815260208087028201019091529092508380156113a8578160200160208202803883390190505b50905060005b8381101561128157600660008686848181106113c657fe5b90506020020135815260200190815260200160002060000160009054906101000a900460ff168382815181106113f857fe5b911515602092830291909101909101526006600086868481811061141857fe5b90506020020135815260200190815260200160002060000160019054906101000a90046001600160f81b03166001600160f81b031682828151811061145957fe5b60209081029190910101526001016113ae565b60066020526000908152604090205460ff81169061010090046001600160f81b031682565b6745786368616e676560c01b81565b6114b46745786368616e676560c01b611610565b6005805460ff191690819055604080516101009092046001600160f81b03168252517f07966fe79d35c7abf1f3b2ad9970ea24cae0f11406e283e848e3e6608ae3c214916020908290030190a16005805460ff169055565b640a6f2dce8d60db1b81565b60055460ff81169061010090046001600160f81b031682565b60035460ff8116159061010090046001600160f81b031660011461156d576040518060600160405280602c8152602001611d12602c9139611587565b6040518060600160405280603e8152602001611d3e603e91395b90610d075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115d55781810151838201526020016115bd565b50505050905090810190601f1680156116025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000818152600260209081526040808320338452909152902054610100900460ff16610d075760405162461bcd60e51b8152600401808060200182810382526021815260200180611cf16021913960400191505060405180910390fd5b600081815260026020908152604080832033845290915290205460ff16610d075760405162461bcd60e51b8152600401808060200182810382526021815260200180611cf16021913960400191505060405180910390fd5b6000546001600160a01b03163314610a4b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611c97602f913960400191505060405180910390fd5b6117276c53796e746845786368616e676560981b61166d565b60005b8251811015610bc957600083828151811061174157fe5b60209081029190910181015160008181526006835260409081902080546001600160f81b0388166101000260ff1990911660011760ff16179055805182815292830186905280519193507fcea0da706e9f2a6a1cb56cdab42ac548791339f1710deadf814f15fc0a6a7114928290030190a15060010161172a565b60055460ff1615610a4b5760405162461bcd60e51b815260040180806020018281038252602b815260200180611cc6602b913960400191505060405180910390fd5b60008181526006602052604090205460ff1615610d075760405162461bcd60e51b815260040180806020018281038252602e815260200180611c69602e913960400191505060405180910390fd5b60008181526007602052604090205460ff1615610d075760405162461bcd60e51b8152600401808060200182810382526028815260200180611d7c6028913960400191505060405180910390fd5b6553797374656d60d01b8414806118bb57506749737375616e636560c01b84145b806118d057506745786368616e676560c01b84145b806118ea57506c53796e746845786368616e676560981b84145b806118fc5750640a6f2dce8d60db1b84145b61194d576040805162461bcd60e51b815260206004820152601860248201527f496e76616c69642073656374696f6e20737570706c6965640000000000000000604482015290519081900360640190fd5b60008481526002602090815260408083206001600160a01b038716808552908352928190208054851515610100810261ff001989151560ff1990941684171617909255825190815292830152805187927f95bad30f8fe717e4a02906d7b05a6f90698c7135cd053e5b6d5239146b4c40d192908290030190a350505050565b6119e56c53796e746845786368616e676560981b611610565b60005b8151811015610c025760008282815181106119ff57fe5b6020908102919091018101516000818152600683526040908190205481518381526101009091046001600160f81b03169381019390935280519193507f91037f810fbf9c3c6d5573650d27de6b5e8d2187698822700d4524102472bc08928290030190a16000908152600660205260408120556001016119e8565b60045460ff1615610a4b5760405162461bcd60e51b815260040180806020018281038252602b815260200180611c3e602b913960400191505060405180910390fd5b611acd640a6f2dce8d60db1b61166d565b60005b8251811015610bc9576000838281518110611ae757fe5b60209081029190910181015160008181526007835260409081902080546001600160f81b0388166101000260ff1990911660011760ff16179055805182815292830186905280519193507f9cca506f9028bbcc0d976db0eaf80dfe6a6d7cadd99024edd88f690e1eda5541928290030190a150600101611ad0565b611b73640a6f2dce8d60db1b611610565b60005b8151811015610c02576000828281518110611b8d57fe5b6020908102919091018101516000818152600783526040908190205481518381526101009091046001600160f81b03169381019390935280519193507f691b6c9654fa1f01847f7e98a061557ca10378bb9670782b60ed13891703d220928290030190a1600090815260076020526040812055600101611b7656fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e65727368697049737375616e63652069732073757370656e6465642e204f7065726174696f6e2070726f6869626974656453796e74682065786368616e67652073757370656e6465642e204f7065726174696f6e2070726f686962697465644f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e45786368616e67652069732073757370656e6465642e204f7065726174696f6e2070726f686962697465645265737472696374656420746f2061636365737320636f6e74726f6c206c69737453796e7468657469782069732073757370656e6465642e204f7065726174696f6e2070726f6869626974656453796e7468657469782069732073757370656e6465642c207570677261646520696e2070726f67726573732e2e2e20706c65617365207374616e6420627953796e74682069732073757370656e6465642e204f7065726174696f6e2070726f68696269746564a265627a7a723158200dfb2028e001170d445db182b862c9d45647b267348064b30768ba00ff4424c764736f6c63430005100032000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f6176882

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

000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f6176882

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f6176882


Library Used

SafeDecimalMath : 0x1a60e2e2a8be0bc2b6381dd31fd3fd5f9a28de4c

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading