<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def asynchronous(func):
 """Return `func` in a "smart" asynchronous-aware wrapper. If `func` is called within the event-loop — i.e. when it is running — this returns the result of `func` without alteration. However, when called from outside of the event-loop, and the result is awaitable, the result will be passed though the current event-loop's `run_until_complete` method. In other words, this automatically blocks when calling an asynchronous function from outside of the event-loop, and so makes interactive use of these APIs far more intuitive. """

    @wraps(func)
    def wrapper(*args, **kwargs):
        eventloop = get_event_loop()
        result = func(*args, **kwargs)
        if not eventloop.is_running():
            while isawaitable(result):
                result = eventloop.run_until_complete(result)
        return result

    return wrapper