<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _download_urls(url_list, storage_folder, overwrite_existing, meta_handler, access_cookie=None):
 """ Save url from url_list to storage_folder Parameters url_list: list of str Valid url to download storage_folder: str, valid path Location to store the download, folder will be created if not existing. If the file is already present in the folder, the download depends on the setting in 'overwrite_existing'. overwrite_existing: boolean, optional If False, skip download of file already existing in the storage folder (default). Set to True to replace files. meta_handler: instance of MRIOMetaData Returns ------- The meta_handler is passed back """

    for url in url_list:
        filename = os.path.basename(url)
        if not overwrite_existing and filename in os.listdir(storage_folder):
            continue
        storage_file = os.path.join(storage_folder, filename)

        # Using requests here - tried with aiohttp but was actually slower
        # Also don’t use shutil.copyfileobj - corrupts zips from Eora
        req = requests.post(url, stream=True, cookies=access_cookie)
        with open(storage_file, 'wb') as lf:
            for chunk in req.iter_content(1024*5):
                lf.write(chunk)

        meta_handler._add_fileio('Downloaded {} to {}'.format(url, filename))
        meta_handler.save()

    return meta_handler