| t | import asyncio | t | import asyncio | 
             | from collections import deque |  | from collections import deque | 
             |  |  |  | 
             | class FilterQueue(asyncio.Queue): |  | class FilterQueue(asyncio.Queue): | 
             |  |  |  | 
             |     def __init__(self, maxsize=0): |  |     def __init__(self, maxsize=0): | 
             |         super().__init__(maxsize) |  |         super().__init__(maxsize) | 
             |         self._window = None |  |         self._window = None | 
             |  |  |  | 
             |     @property |  |     @property | 
             |     def window(self): |  |     def window(self): | 
             |         if self.empty(): |  |         if self.empty(): | 
             |             return None |  |             return None | 
             |         return self._queue[0] |  |         return self._queue[0] | 
             |  |  |  | 
             |     def __contains__(self, filter_func): |  |     def __contains__(self, filter_func): | 
             |         return any((filter_func(item) for item in self._queue)) |  |         return any((filter_func(item) for item in self._queue)) | 
             |  |  |  | 
             |     def later(self): |  |     def later(self): | 
             |         if self.empty(): |  |         if self.empty(): | 
             |             raise asyncio.QueueEmpty |  |             raise asyncio.QueueEmpty | 
             |         item = self._queue.popleft() |  |         item = self._queue.popleft() | 
             |         self._queue.append(item) |  |         self._queue.append(item) | 
             |  |  |  | 
             |     async def get(self, filter_func=None): |  |     async def get(self, filter_func=None): | 
             |         if filter_func is None: |  |         if filter_func is None: | 
             |             return await super().get() |  |             return await super().get() | 
             |         for _ in range(len(self._queue)): |  |         for _ in range(len(self._queue)): | 
             |             item = self._queue[0] |  |             item = self._queue[0] | 
             |             if filter_func(item): |  |             if filter_func(item): | 
             |                 return await super().get() |  |                 return await super().get() | 
             |             self.later() |  |             self.later() | 
             |         return await super().get() |  |         return await super().get() |