abstract contract Pausable is Owned {
    uint public lastPauseTime;
    bool public paused;

    /**
     * @notice Change the paused state of the contract
     * @dev Only the contract owner may call this.
     */
    function setPaused(bool _paused) external onlyOwner {
        // Ensure we're actually changing the state before we do anything
        if (_paused == paused) {
            return;
        }

        // Set our paused state.
        paused = _paused;

        // If applicable, set the last pause time.
        if (paused) {
            lastPauseTime = block.timestamp;
        }

        // Let everyone know that our pause state has changed.
        emit PauseChanged(paused);
    }

    event PauseChanged(bool isPaused);

    modifier notPaused {
        require(!paused, "This action cannot be performed while the contract is paused");
        _;
    }
}
// https://docs.synthetix.io/contracts/source/contracts/pausable
function setPaused(bool _paused) external onlyOwner {
    // Ensure we're actually changing the state before we do anything
    if (_paused == paused) {
        return;
    }

    // Set our paused state.
    paused = _paused;

    // If applicable, set the last pause time.
    if (paused) {
        lastPauseTime = block.timestamp;
    }

    // Let everyone know that our pause state has changed.
    emit PauseChanged(paused);
}

/**
 * @notice Change the paused state of the contract
 * @dev Only the contract owner may call this.
 */