<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def asyncPipeExchangerate(context=None, _INPUT=None, conf=None, **kwargs):
 """A string module that asynchronously retrieves the current exchange rate for a given currency pair. Loopable. Parameters context : pipe2py.Context object _INPUT : twisted Deferred iterable of items or strings (base currency) conf : { 'quote': {'value': <'USD'>}, 'default': {'value': <'USD'>}, 'offline': {'type': 'bool', 'value': '0'}, } Returns ------- _OUTPUT : twisted.internet.defer.Deferred generator of hashed strings """

    offline = conf.get('offline', {}).get('value')
    # TODO add async rate data fetching
    rate_data = get_offline_rate_data() if offline else get_rate_data()
    rates = parse_request(rate_data)
    splits = yield asyncGetSplits(_INPUT, conf, **cdicts(opts, kwargs))
    parsed = yield asyncDispatch(splits, *get_async_dispatch_funcs())
    _OUTPUT = starmap(partial(parse_result, rates=rates), parsed)
    returnValue(iter(_OUTPUT))