<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def seek(self, value, target="offset"):
 """Seek this stream to a specific offset or reading id. There are two modes of use. You can seek to a specific reading id, which means the walker will be positioned exactly at the reading pointed to by the reading ID. If the reading id cannot be found an exception will be raised. The reading id can be found but corresponds to a reading that is not selected by this walker, the walker will be moved to point at the first reading after that reading and False will be returned. If target=="offset", the walker will be positioned at the specified offset in the sensor log. It will also update the count of available readings based on that new location so that the count remains correct. The offset does not need to correspond to a reading selected by this walker. If offset does not point to a selected reading, the effective behavior will be as if the walker pointed to the next selected reading after `offset`. Args: value (int):
 The identifier to seek, either an offset or a reading id. target (str):
 The type of thing to seek. Can be offset or id. If id is given, then a reading with the given ID will be searched for. If offset is given then the walker will be positioned at the given offset. Returns: bool: True if an exact match was found, False otherwise. An exact match means that the offset or reading ID existed and corresponded to a reading selected by this walker. An inexact match means that the offset or reading ID existed but corresponded to reading that was not selected by this walker. If the offset or reading ID could not be found an Exception is thrown instead. Raises: ArgumentError: target is an invalid string, must be offset or id. UnresolvedIdentifierError: the desired offset or reading id could not be found. """


        if target not in (u'offset', u'id'):
            raise ArgumentError("You must specify target as either offset or id", target=target)

        if target == u'offset':
            self._verify_offset(value)
            self.offset = value
        else:
            self.offset = self._find_id(value)

        self._count = self.engine.count_matching(self.selector, offset=self.offset)

        curr = self.engine.get(self.storage_type, self.offset)
        return self.matches(DataStream.FromEncoded(curr.stream))