<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _parse_array_recovery(self, block):
 """ Parse the recovery progress of the md array. { 'percent': '99.5', 'speed': 104726528, 'remaining_time': 802199 } :return: dictionary of recovery progress status information :rtype: dict """

        array_recovery_regexp = re.compile(
            '^ *\[.*\] *recovery = (?P<percent>\d*\.?\d*)%'
            ' \(\d*/\d*\) finish=(?P<remaining_time>\d*\.?\d*)min '
            'speed=(?P<speed>\d*)K/sec$',
            re.MULTILINE
        )

        regexp_res = array_recovery_regexp.search(block)

        # recovery is optionally in mdstat
        if not regexp_res:
            return None

        array_recovery_dict = regexp_res.groupdict()

        array_recovery_dict['percent'] = \
            float(array_recovery_dict['percent'])

        # convert speed to bits
        array_recovery_dict['speed'] = \
            int(array_recovery_dict['speed']) * 1024

        # convert minutes to milliseconds
        array_recovery_dict['remaining_time'] = \
            int(float(array_recovery_dict['remaining_time'])*60*1000)

        return array_recovery_dict