def read(self, count=(- 1)):
    if (count == (- 1)):
        count = (self._total_size - count)
    if ((self._fake_seek + count) > self._total_size):
        count = (self._total_size - self._fake_seek)
    left = count
    curr = self._seek_info
    full_data = []
    while left:
        info = self._files[curr[0]]
        real_seek = (self._fake_seek - info[1])
        to_read = min((info[2] - real_seek), left)
        with open(self._names[curr[0]], 'rb') as f:
            f.seek(real_seek)
            full_data.append(f.read(to_read))
        self._fake_seek += to_read
        try:
            curr = self._files[(curr[0] + 1)]
            left -= to_read
        except IndexError:
            break
    self._calc_seek(self._fake_seek)
    return b''.join(full_data)
def read(self, count=(- 1)):
    if (count == (- 1)):
        count = (self._total_size - count)
    if ((self._fake_seek + count) > self._total_size):
        count = (self._total_size - self._fake_seek)
    left = count
    curr = self._seek_info
    full_data = []
    while left:
        info = self._files[curr[0]]
        real_seek = (self._fake_seek - info[1])
        to_read = min((info[2] - real_seek), left)
        with open(self._names[curr[0]], 'rb') as f:
            f.seek(real_seek)
            full_data.append(f.read(to_read))
        self._fake_seek += to_read
        try:
            curr = self._files[(curr[0] + 1)]
            left -= to_read
        except IndexError:
            break
    self._calc_seek(self._fake_seek)
    return b.join(full_data)