From 900a12aa072adfa5625a17553e53c0ffedbfebb8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 19 Oct 2024 13:49:48 +0000 Subject: [PATCH] Deployed e31bf6d to 0.6 with MkDocs 1.6.1 and mike 2.1.3 --- 0.6/404.html | 1216 +++ 0.6/api/emitters/asyncio/index.html | 2011 +++++ 0.6/api/emitters/celery/index.html | 3575 +++++++++ 0.6/api/emitters/executor/index.html | 2447 ++++++ 0.6/api/emitters/fastapi/index.html | 2229 ++++++ 0.6/api/emitters/index.html | 3207 ++++++++ 0.6/api/emitters/rq/index.html | 2032 +++++ 0.6/api/event-handler/index.html | 3118 ++++++++ 0.6/api/event-linker/index.html | 6707 ++++++++++++++++ 0.6/api/index.html | 1302 ++++ 0.6/assets/_mkdocstrings.css | 143 + 0.6/assets/images/favicon.png | Bin 0 -> 1870 bytes .../social/api/emitters/asyncio/index.png | Bin 0 -> 47423 bytes .../social/api/emitters/celery/index.png | Bin 0 -> 43427 bytes .../social/api/emitters/executor/index.png | Bin 0 -> 44709 bytes .../social/api/emitters/fastapi/index.png | Bin 0 -> 45074 bytes .../images/social/api/emitters/index.png | Bin 0 -> 42801 bytes .../images/social/api/emitters/rq/index.png | Bin 0 -> 41305 bytes .../images/social/api/event-handler.png | Bin 0 -> 39275 bytes 0.6/assets/images/social/api/event-linker.png | Bin 0 -> 37925 bytes 0.6/assets/images/social/api/index.png | Bin 0 -> 40741 bytes 0.6/assets/images/social/contributing.png | Bin 0 -> 40764 bytes 0.6/assets/images/social/getting-started.png | Bin 0 -> 43694 bytes 0.6/assets/images/social/index.png | Bin 0 -> 48146 bytes 0.6/assets/images/social/release-notes.png | Bin 0 -> 41726 bytes .../tutorials/emitters/asyncio/index.png | Bin 0 -> 47423 bytes .../tutorials/emitters/celery/index.png | Bin 0 -> 43427 bytes .../tutorials/emitters/executor/index.png | Bin 0 -> 44709 bytes .../tutorials/emitters/fastapi/index.png | Bin 0 -> 45074 bytes .../social/tutorials/emitters/index.png | Bin 0 -> 45342 bytes .../social/tutorials/emitters/rq/index.png | Bin 0 -> 41305 bytes .../images/social/tutorials/event-linker.png | Bin 0 -> 46885 bytes 0.6/assets/images/social/tutorials/event.png | Bin 0 -> 47972 bytes 0.6/assets/images/social/tutorials/index.png | Bin 0 -> 38768 bytes 0.6/assets/javascripts/bundle.83f73b43.min.js | 16 + .../javascripts/bundle.83f73b43.min.js.map | 7 + .../javascripts/lunr/min/lunr.ar.min.js | 1 + .../javascripts/lunr/min/lunr.da.min.js | 18 + .../javascripts/lunr/min/lunr.de.min.js | 18 + .../javascripts/lunr/min/lunr.du.min.js | 18 + .../javascripts/lunr/min/lunr.el.min.js | 1 + .../javascripts/lunr/min/lunr.es.min.js | 18 + .../javascripts/lunr/min/lunr.fi.min.js | 18 + .../javascripts/lunr/min/lunr.fr.min.js | 18 + .../javascripts/lunr/min/lunr.he.min.js | 1 + .../javascripts/lunr/min/lunr.hi.min.js | 1 + .../javascripts/lunr/min/lunr.hu.min.js | 18 + .../javascripts/lunr/min/lunr.hy.min.js | 1 + .../javascripts/lunr/min/lunr.it.min.js | 18 + .../javascripts/lunr/min/lunr.ja.min.js | 1 + .../javascripts/lunr/min/lunr.jp.min.js | 1 + .../javascripts/lunr/min/lunr.kn.min.js | 1 + .../javascripts/lunr/min/lunr.ko.min.js | 1 + .../javascripts/lunr/min/lunr.multi.min.js | 1 + .../javascripts/lunr/min/lunr.nl.min.js | 18 + .../javascripts/lunr/min/lunr.no.min.js | 18 + .../javascripts/lunr/min/lunr.pt.min.js | 18 + .../javascripts/lunr/min/lunr.ro.min.js | 18 + .../javascripts/lunr/min/lunr.ru.min.js | 18 + .../javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + .../javascripts/lunr/min/lunr.sv.min.js | 18 + .../javascripts/lunr/min/lunr.ta.min.js | 1 + .../javascripts/lunr/min/lunr.te.min.js | 1 + .../javascripts/lunr/min/lunr.th.min.js | 1 + .../javascripts/lunr/min/lunr.tr.min.js | 18 + .../javascripts/lunr/min/lunr.vi.min.js | 1 + .../javascripts/lunr/min/lunr.zh.min.js | 1 + 0.6/assets/javascripts/lunr/tinyseg.js | 206 + 0.6/assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.6ce7567c.min.js | 42 + .../workers/search.6ce7567c.min.js.map | 7 + 0.6/assets/stylesheets/main.0253249f.min.css | 1 + .../stylesheets/main.0253249f.min.css.map | 1 + .../stylesheets/palette.06af60db.min.css | 1 + .../stylesheets/palette.06af60db.min.css.map | 1 + 0.6/contributing/index.html | 1933 +++++ 0.6/css/timeago.css | 15 + 0.6/getting-started/index.html | 1581 ++++ 0.6/images/examples/debug-mode-example.png | Bin 0 -> 94881 bytes .../examples/practical-example-index.jpg | Bin 0 -> 134996 bytes 0.6/images/favicon/pyventus-logo.ico | Bin 0 -> 16724 bytes 0.6/images/logo/pyventus-logo-black.png | Bin 0 -> 74665 bytes 0.6/images/logo/pyventus-logo-black.svg | 1 + 0.6/images/logo/pyventus-logo-name-slogan.png | Bin 0 -> 226431 bytes 0.6/images/logo/pyventus-logo-name-slogan.svg | 1 + 0.6/images/logo/pyventus-logo-name.png | Bin 0 -> 194320 bytes 0.6/images/logo/pyventus-logo-name.svg | 1 + 0.6/images/logo/pyventus-logo-white.png | Bin 0 -> 93505 bytes 0.6/images/logo/pyventus-logo-white.svg | 1 + 0.6/images/logo/pyventus-logo.png | Bin 0 -> 116730 bytes 0.6/images/logo/pyventus-logo.svg | 1 + 0.6/index.html | 2250 ++++++ 0.6/js/timeago.min.js | 2 + 0.6/js/timeago_mkdocs_material.js | 33 + 0.6/objects.inv | Bin 0 -> 1389 bytes 0.6/release-notes/index.html | 2221 ++++++ 0.6/search/search_index.json | 1 + 0.6/sitemap.xml | 91 + 0.6/sitemap.xml.gz | Bin 0 -> 344 bytes 0.6/tutorials/emitters/asyncio/index.html | 1648 ++++ 0.6/tutorials/emitters/celery/index.html | 1659 ++++ 0.6/tutorials/emitters/executor/index.html | 1770 +++++ 0.6/tutorials/emitters/fastapi/index.html | 1622 ++++ 0.6/tutorials/emitters/index.html | 1821 +++++ 0.6/tutorials/emitters/rq/index.html | 1701 +++++ 0.6/tutorials/event-linker/index.html | 2647 +++++++ 0.6/tutorials/event/index.html | 1991 +++++ 0.6/tutorials/index.html | 1300 ++++ latest | 2 +- versions.json | 9 +- 111 files changed, 59563 insertions(+), 3 deletions(-) create mode 100644 0.6/404.html create mode 100644 0.6/api/emitters/asyncio/index.html create mode 100644 0.6/api/emitters/celery/index.html create mode 100644 0.6/api/emitters/executor/index.html create mode 100644 0.6/api/emitters/fastapi/index.html create mode 100644 0.6/api/emitters/index.html create mode 100644 0.6/api/emitters/rq/index.html create mode 100644 0.6/api/event-handler/index.html create mode 100644 0.6/api/event-linker/index.html create mode 100644 0.6/api/index.html create mode 100644 0.6/assets/_mkdocstrings.css create mode 100644 0.6/assets/images/favicon.png create mode 100644 0.6/assets/images/social/api/emitters/asyncio/index.png create mode 100644 0.6/assets/images/social/api/emitters/celery/index.png create mode 100644 0.6/assets/images/social/api/emitters/executor/index.png create mode 100644 0.6/assets/images/social/api/emitters/fastapi/index.png create mode 100644 0.6/assets/images/social/api/emitters/index.png create mode 100644 0.6/assets/images/social/api/emitters/rq/index.png create mode 100644 0.6/assets/images/social/api/event-handler.png create mode 100644 0.6/assets/images/social/api/event-linker.png create mode 100644 0.6/assets/images/social/api/index.png create mode 100644 0.6/assets/images/social/contributing.png create mode 100644 0.6/assets/images/social/getting-started.png create mode 100644 0.6/assets/images/social/index.png create mode 100644 0.6/assets/images/social/release-notes.png create mode 100644 0.6/assets/images/social/tutorials/emitters/asyncio/index.png create mode 100644 0.6/assets/images/social/tutorials/emitters/celery/index.png create mode 100644 0.6/assets/images/social/tutorials/emitters/executor/index.png create mode 100644 0.6/assets/images/social/tutorials/emitters/fastapi/index.png create mode 100644 0.6/assets/images/social/tutorials/emitters/index.png create mode 100644 0.6/assets/images/social/tutorials/emitters/rq/index.png create mode 100644 0.6/assets/images/social/tutorials/event-linker.png create mode 100644 0.6/assets/images/social/tutorials/event.png create mode 100644 0.6/assets/images/social/tutorials/index.png create mode 100644 0.6/assets/javascripts/bundle.83f73b43.min.js create mode 100644 0.6/assets/javascripts/bundle.83f73b43.min.js.map create mode 100644 0.6/assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 0.6/assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 0.6/assets/javascripts/lunr/tinyseg.js create mode 100644 0.6/assets/javascripts/lunr/wordcut.js create mode 100644 0.6/assets/javascripts/workers/search.6ce7567c.min.js create mode 100644 0.6/assets/javascripts/workers/search.6ce7567c.min.js.map create mode 100644 0.6/assets/stylesheets/main.0253249f.min.css create mode 100644 0.6/assets/stylesheets/main.0253249f.min.css.map create mode 100644 0.6/assets/stylesheets/palette.06af60db.min.css create mode 100644 0.6/assets/stylesheets/palette.06af60db.min.css.map create mode 100644 0.6/contributing/index.html create mode 100644 0.6/css/timeago.css create mode 100644 0.6/getting-started/index.html create mode 100644 0.6/images/examples/debug-mode-example.png create mode 100644 0.6/images/examples/practical-example-index.jpg create mode 100644 0.6/images/favicon/pyventus-logo.ico create mode 100644 0.6/images/logo/pyventus-logo-black.png create mode 100644 0.6/images/logo/pyventus-logo-black.svg create mode 100644 0.6/images/logo/pyventus-logo-name-slogan.png create mode 100644 0.6/images/logo/pyventus-logo-name-slogan.svg create mode 100644 0.6/images/logo/pyventus-logo-name.png create mode 100644 0.6/images/logo/pyventus-logo-name.svg create mode 100644 0.6/images/logo/pyventus-logo-white.png create mode 100644 0.6/images/logo/pyventus-logo-white.svg create mode 100644 0.6/images/logo/pyventus-logo.png create mode 100644 0.6/images/logo/pyventus-logo.svg create mode 100644 0.6/index.html create mode 100644 0.6/js/timeago.min.js create mode 100644 0.6/js/timeago_mkdocs_material.js create mode 100644 0.6/objects.inv create mode 100644 0.6/release-notes/index.html create mode 100644 0.6/search/search_index.json create mode 100644 0.6/sitemap.xml create mode 100644 0.6/sitemap.xml.gz create mode 100644 0.6/tutorials/emitters/asyncio/index.html create mode 100644 0.6/tutorials/emitters/celery/index.html create mode 100644 0.6/tutorials/emitters/executor/index.html create mode 100644 0.6/tutorials/emitters/fastapi/index.html create mode 100644 0.6/tutorials/emitters/index.html create mode 100644 0.6/tutorials/emitters/rq/index.html create mode 100644 0.6/tutorials/event-linker/index.html create mode 100644 0.6/tutorials/event/index.html create mode 100644 0.6/tutorials/index.html diff --git a/0.6/404.html b/0.6/404.html new file mode 100644 index 0000000..cd686ce --- /dev/null +++ b/0.6/404.html @@ -0,0 +1,1216 @@ + + + + + + + + + + + + + + + + + + + + + + + Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + +

404 - Page Not Found

+ +

+ The requested URL was not found in this documentation. +

+ +

+ Try searching or go to Pyventus' home page. +

+ + + Gray Clouds Background + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/emitters/asyncio/index.html b/0.6/api/emitters/asyncio/index.html new file mode 100644 index 0000000..645e011 --- /dev/null +++ b/0.6/api/emitters/asyncio/index.html @@ -0,0 +1,2011 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AsyncIO Event Emitter - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

AsyncIOEventEmitter class

+ + +
+ + + + +
+

+ Bases: EventEmitter

+ + +

An event emitter subclass that utilizes the AsyncIO framework to handle +the execution of event emissions.

+

Notes:

+
    +
  • +

    When used in an asynchronous context where an event loop is already running, + the event emission is scheduled and processed on that existing loop. If the + event loop is closed before all callbacks complete, any remaining scheduled + callbacks will be canceled.

    +
  • +
  • +

    When used in a synchronous context where no event loop is active, a new event + loop is started and subsequently closed by the asyncio.run() method. Within + this loop, the event emission is executed. The loop then waits for all + scheduled tasks to finish before closing.

    +
  • +
+
+

Read more in the +Pyventus docs for AsyncIO Event Emitter.

+ + + + + + +
+ Source code in pyventus/emitters/asyncio/asyncio_event_emitter.py +
 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
class AsyncIOEventEmitter(EventEmitter):
+    """
+    An event emitter subclass that utilizes the AsyncIO framework to handle
+    the execution of event emissions.
+
+    **Notes:**
+
+    -   When used in an asynchronous context where an event loop is already running,
+        the event emission is scheduled and processed on that existing loop. If the
+        event loop is closed before all callbacks complete, any remaining scheduled
+        callbacks will be canceled.
+
+    -   When used in a synchronous context where no event loop is active, a new event
+        loop is started and subsequently closed by the `asyncio.run()` method. Within
+        this loop, the event emission is executed. The loop then waits for all
+        scheduled tasks to finish before closing.
+
+    ---
+    Read more in the
+    [Pyventus docs for AsyncIO Event Emitter](https://mdapena.github.io/pyventus/tutorials/emitters/asyncio/).
+    """
+
+    @property
+    def __is_loop_running(self) -> bool:
+        """
+        Check if there is currently an active AsyncIO event loop.
+        :return: `True` if an event loop is running, `False` otherwise.
+        """
+        try:
+            asyncio.get_running_loop()
+            return True
+        except RuntimeError:
+            return False
+
+    def __init__(self, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None:
+        """
+        Initialize an instance of `AsyncIOEventEmitter`.
+        :param event_linker: Specifies the type of event linker used to manage and access
+            events along with their corresponding event handlers. Defaults to `EventLinker`.
+        :param debug: Specifies the debug mode for the logger. If `None`, it is
+            determined based on the execution environment.
+        """
+        # Call the parent class' __init__ method
+        super().__init__(event_linker=event_linker, debug=debug)
+
+        # Initialize the set of background futures
+        self._background_futures: Set[Future] = set()  # type: ignore[type-arg]
+
+    def _process(self, event_emission: EventEmitter.EventEmission) -> None:
+        # Check if there is an active event loop
+        is_loop_running: bool = self.__is_loop_running
+
+        # Log the execution context, if debug mode is enabled
+        if self._logger.debug_enabled:  # pragma: no cover
+            self._logger.debug(action=f"Context:", msg=f"{'Async' if is_loop_running else 'Sync'}")
+
+        if is_loop_running:
+            # Schedule the event emission in the running loop as a future
+            future = asyncio.ensure_future(event_emission())
+
+            # Remove the Future from the set of background futures after completion
+            future.add_done_callback(self._background_futures.remove)
+
+            # Add the Future to the set of background futures
+            self._background_futures.add(future)
+        else:
+            # Run the event emission in a blocking manner
+            asyncio.run(event_emission())
+
+
+ + + +
+ + + + + + + +

Functions

+ +
+ + +

+ emit + + +

+
emit(event: EmittableEventType, *args: Any, **kwargs: Any) -> None
+
+ +
+ +

Emits an event and triggers its associated event handlers.

+

Notes:

+
    +
  • When emitting dataclass objects or Exception objects, they are automatically passed + to the event handler as the first positional argument, even if you pass additional *args + or **kwargs.
  • +
  • If there are event handlers subscribed to the global event ..., also known as Ellipsis, + they will also be triggered each time an event or exception is emitted.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The event to be emitted. It can be str, a dataclass object, or an Exception object.

+
+

+ + TYPE: + EmittableEventType + +

+
+ args + +
+

Positional arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + () + +

+
+ kwargs + +
+

Keyword arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + {} + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
def emit(self, /, event: EmittableEventType, *args: Any, **kwargs: Any) -> None:
+    """
+    Emits an event and triggers its associated event handlers.
+
+    **Notes:**
+
+    -   When emitting `dataclass` objects or `Exception` objects, they are automatically passed
+        to the event handler as the first positional argument, even if you pass additional `*args`
+        or `**kwargs`.
+    -   If there are event handlers subscribed to the global event `...`, also known as `Ellipsis`,
+        they will also be triggered each time an event or exception is emitted.
+
+    :param event: The event to be emitted. It can be `str`, a `dataclass`
+        object, or an `Exception` object.
+    :param args: Positional arguments to be passed to the event handlers.
+    :param kwargs: Keyword arguments to be passed to the event handlers.
+    :return: None
+    """
+    # Raise an exception if the event is None
+    if event is None:
+        raise PyventusException("The 'event' argument cannot be None.")
+
+    # Raise an exception if the event is a type
+    if isinstance(event, type):
+        raise PyventusException("The 'event' argument cannot be a type.")
+
+    # Determine the event name
+    event_name: str = self._event_linker.get_event_name(event=event if isinstance(event, str) else type(event))
+
+    # Retrieve the event handlers associated with the event
+    event_handlers: List[EventHandler] = self._event_linker.get_event_handlers_by_events(event_name, Ellipsis)
+
+    # Sort the event handlers by timestamp
+    event_handlers.sort(key=lambda handler: handler.timestamp)
+
+    # Initialize the list of event handlers to be executed
+    pending_event_handlers: List[EventHandler] = []
+
+    # Iterate through each event handler
+    for event_handler in event_handlers:
+        # Check if the event handler is a one-time subscription
+        if event_handler.once:
+            # If the event handler is a one-time subscription, we attempt to remove it.
+            if self._event_linker.remove_event_handler(event_handler=event_handler):  # pragma: no cover (Race-Cond)
+                # If the removal is successful, it indicates that the handler has not
+                # been processed before, so we add it to the pending list.
+                pending_event_handlers.append(event_handler)
+        else:
+            pending_event_handlers.append(event_handler)
+
+    # Check if the pending list of event handlers is not empty
+    if len(pending_event_handlers) > 0:
+        # Create a new EventEmission instance
+        event_emission: EventEmitter.EventEmission = EventEmitter.EventEmission(
+            event=event_name,
+            event_handlers=pending_event_handlers,
+            event_args=args if isinstance(event, str) else (event, *args),
+            event_kwargs=kwargs,
+            debug=self._logger.debug_enabled,
+        )
+
+        # Log the event emission when debug is enabled
+        if self._logger.debug_enabled:  # pragma: no cover
+            self._logger.debug(
+                action="Emitting Event:",
+                msg=f"{event_emission.event}{StdOutColors.PURPLE} ID:{StdOutColors.DEFAULT} {event_emission.id}",
+            )
+
+        # Delegate the event emission processing to subclasses
+        self._process(event_emission)
+
+    # Log a debug message if there are no event handlers subscribed to the event
+    elif self._logger.debug_enabled:  # pragma: no cover
+        self._logger.debug(
+            action="Emitting Event:",
+            msg=f"{event_name}{StdOutColors.PURPLE} Message:{StdOutColors.DEFAULT} No event handlers subscribed",
+        )
+
+
+
+ +
+ +
+ + +

+ __init__ + + +

+
__init__(event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None
+
+ +
+ +

Initialize an instance of AsyncIOEventEmitter.

+ + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event_linker + +
+

Specifies the type of event linker used to manage and access events along with their corresponding event handlers. Defaults to EventLinker.

+
+

+ + TYPE: + Type[EventLinker] + + + DEFAULT: + EventLinker + +

+
+ debug + +
+

Specifies the debug mode for the logger. If None, it is determined based on the execution environment.

+
+

+ + TYPE: + bool | None + + + DEFAULT: + None + +

+
+ +
+ Source code in pyventus/emitters/asyncio/asyncio_event_emitter.py +
43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
def __init__(self, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None:
+    """
+    Initialize an instance of `AsyncIOEventEmitter`.
+    :param event_linker: Specifies the type of event linker used to manage and access
+        events along with their corresponding event handlers. Defaults to `EventLinker`.
+    :param debug: Specifies the debug mode for the logger. If `None`, it is
+        determined based on the execution environment.
+    """
+    # Call the parent class' __init__ method
+    super().__init__(event_linker=event_linker, debug=debug)
+
+    # Initialize the set of background futures
+    self._background_futures: Set[Future] = set()  # type: ignore[type-arg]
+
+
+
+ +
+ + + +
+ +
+ +


+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/emitters/celery/index.html b/0.6/api/emitters/celery/index.html new file mode 100644 index 0000000..a59e847 --- /dev/null +++ b/0.6/api/emitters/celery/index.html @@ -0,0 +1,3575 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Celery Event Emitter - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

CeleryEventEmitter class

+ + +
+ + + + +
+

+ Bases: EventEmitter

+ + +

An event emitter subclass that utilizes the Celery distributed system +to handle the execution of event emissions.

+

Notes:

+
    +
  • This class uses a Celery Queue instance to enqueue event emissions, which are + subsequently executed by Celery workers. This approach provides a scalable + and distributed method for handling the execution of event emissions.
  • +
+
+

Read more in the +Pyventus docs for Celery Event Emitter.

+ + + + + + +
+ Source code in pyventus/emitters/celery/celery_event_emitter.py +
class CeleryEventEmitter(EventEmitter):
+    """
+    An event emitter subclass that utilizes the Celery distributed system
+    to handle the execution of event emissions.
+
+    **Notes:**
+
+    -   This class uses a Celery Queue instance to enqueue event emissions, which are
+        subsequently executed by Celery workers. This approach provides a scalable
+        and distributed method for handling the execution of event emissions.
+
+    ---
+    Read more in the
+    [Pyventus docs for Celery Event Emitter](https://mdapena.github.io/pyventus/tutorials/emitters/celery/).
+    """
+
+    class Queue:
+        """A Celery event emitter queue used for enqueuing event emissions."""
+
+        class Serializer:
+            """An event emitter object serializer for Celery queues."""
+
+            @staticmethod
+            def dumps(obj: EventEmitter.EventEmission) -> Any:
+                """
+                Serializes the event emission object.
+                :param obj: The event emission object to be serialized.
+                :return: The serialized representation of the event emission object.
+                """
+                return dumps(obj)  # pragma: no cover
+
+            @staticmethod
+            def loads(serialized_obj: Any) -> EventEmitter.EventEmission:
+                """
+                Deserializes the task payload back to the event emission object.
+                :param serialized_obj: The serialized object to be loaded.
+                :return: The deserialized event emission object.
+                """
+                return cast(EventEmitter.EventEmission, loads(serialized_obj))  # pragma: no cover
+
+        class _Payload(NamedTuple):
+            """The Celery event emitter queue payload."""
+
+            serialized_obj: bytes
+            """Serialized event emission object."""
+
+            obj_hash: bytes | None
+            """Hash of the serialized event emission object."""
+
+            @classmethod
+            def from_json(cls, **kwargs: Any) -> "CeleryEventEmitter.Queue._Payload":
+                """
+                Creates a Payload instance from a JSON-compatible dictionary.
+                :param kwargs: JSON-compatible dictionary representing the payload.
+                :return: Payload instance.
+                :raises ValueError: If the JSON data is missing fields or contains extra keys.
+                """
+                # Get the field names of the named tuple
+                tuple_fields: tuple[str, ...] = CeleryEventEmitter.Queue._Payload._fields
+
+                # Check if all expected fields are present
+                if not set(tuple_fields).issubset(kwargs.keys()):
+                    raise PyventusException("Missing fields in JSON data.")
+
+                # Check for extra keys in the JSON data
+                extra_keys = set(kwargs.keys()) - set(tuple_fields)
+                if extra_keys:
+                    raise PyventusException("Extra keys in JSON data: {}".format(extra_keys))
+
+                # Create the named tuple using the JSON data
+                return cls(**kwargs)
+
+            def to_json(self) -> Dict[str, Any]:
+                """
+                Converts the payload to a JSON-compatible dictionary.
+                :return: JSON-compatible dictionary representing the payload.
+                """
+                return self._asdict()
+
+        def __init__(
+            self,
+            celery: Celery,
+            name: str | None = None,
+            secret: str | None = None,
+            serializer: Type[Serializer] = Serializer,
+        ) -> None:
+            """
+            Initialize an instance of `CeleryEventEmitter.Queue`.
+            :param celery: The Celery object used to enqueue and process event emissions.
+            :param name: The name of the queue where the event emission will be enqueued.
+                Default is None (task_default_queue).
+            :param secret: The secret key used for message authentication and integrity validation.
+                This key is used for hashing the event emission object and verifying its integrity.
+            :param serializer: The serializer class used for serializing and deserializing event
+                emission objects.
+            :raises PyventusException: If the Celery object is None, or the secret key is not None
+                and empty, or if the content type 'application/x-python-serialize' is not accepted.
+            """
+            if celery is None:
+                raise PyventusException("The 'celery' argument cannot be None.")
+            if not isinstance(celery, Celery):
+                raise PyventusException("The 'celery' argument must be an instance of the Celery class.")
+
+            if secret is not None and len(secret) == 0:
+                raise PyventusException("The 'secret' argument cannot be empty.")
+
+            if "application/x-python-serialize" not in celery.conf.accept_content:
+                raise PyventusException(
+                    "Unsupported content type. "
+                    "'application/x-python-serialize' is not in the list of accepted content types."
+                )
+
+            # Set the Celery queue properties
+            self._celery: Celery = celery
+            self._name: str = self._celery.conf.task_default_queue if name is None else name
+            self._secret: bytes | None = secret.encode("utf-8") if secret else None
+            self._digestmod: str | Callable[[], Any] | ModuleType = sha256  # The digest algorithm used for hashing
+            self._serializer: Type[CeleryEventEmitter.Queue.Serializer] = serializer
+
+            # Register the event processor method as a Celery task
+            self._celery.task(self._executor, name=f"pyventus{self._executor.__name__}", queue=self._name)
+
+        def enqueue(self, event_emission: EventEmitter.EventEmission) -> None:
+            """
+            Enqueues an event emission object for asynchronous processing in Celery.
+
+            This method takes an `EventEmission` object and enqueues it for asynchronous
+            execution by Celery workers. If a secret key is provided during initialization,
+            the event emission object is first serialized, and its hash is calculated using
+            the secret key. This hash is used to verify the integrity of the event emission
+            object during execution.
+
+            :param event_emission: The event emission object to be enqueued for asynchronous execution.
+            :return: None
+            """
+            # Serialize the event emission object
+            serialized_obj: Any = self._serializer.dumps(event_emission)
+
+            # Calculate the hash of the serialized object if a secret key was provided
+            obj_hash: Any | None = None
+            if self._secret:  # pragma: no cover
+                obj_hash = hmac.new(key=self._secret, msg=serialized_obj, digestmod=self._digestmod).digest()
+
+            # Create a payload with the serialized event emission instance and its hash
+            payload = CeleryEventEmitter.Queue._Payload(
+                serialized_obj=serialized_obj,
+                obj_hash=obj_hash,
+            )
+
+            # Send the event emission object to Celery for asynchronous execution
+            self._celery.send_task(
+                f"pyventus{self._executor.__name__}",
+                kwargs=payload.to_json(),
+                queue=self._name,
+            )
+
+        def _executor(self, **kwargs: Any) -> None:
+            """
+            Process the enqueued event emission object.
+
+            This method serves as the Celery task responsible
+            for processing the enqueued event emission.
+
+            :param kwargs: The JSON-compatible dictionary representing the payload.
+            :return: None
+            """
+            # Create a Payload instance from the JSON data
+            payload = CeleryEventEmitter.Queue._Payload.from_json(**kwargs)
+
+            # Check payload
+            if self._secret:  # pragma: no cover
+                if not payload.obj_hash:
+                    raise PyventusException("Invalid payload structure.")
+
+                # Verify the integrity of the payload
+                obj_hash: bytes = hmac.new(
+                    key=self._secret, msg=payload.serialized_obj, digestmod=self._digestmod
+                ).digest()
+
+                # Compare the calculated hash with the provided payload hash
+                if not hmac.compare_digest(payload.obj_hash, obj_hash):
+                    raise PyventusException("Payload integrity verification failed.")
+            elif payload.obj_hash:  # pragma: no cover
+                raise PyventusException("Unexpected payload structure.")
+
+            # Deserialize the event emission object
+            event_emission = self._serializer.loads(payload.serialized_obj)
+
+            # Check if the deserialized event emission object is valid
+            if event_emission is None:  # pragma: no cover
+                raise PyventusException("Failed to deserialize the event emission object.")
+
+            # Run the event emission
+            asyncio.run(event_emission())
+
+    def __init__(self, queue: Queue, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None:
+        """
+        Initialize an instance of `CeleryEventEmitter`.
+        :param queue: The queue used for enqueuing event emissions in the Celery event emitter.
+        :param event_linker: Specifies the type of event linker used to manage and access
+            events along with their corresponding event handlers. Defaults to `EventLinker`.
+        :param debug: Specifies the debug mode for the logger. If `None`, it is
+            determined based on the execution environment.
+        """
+        # Call the parent class' __init__ method
+        super().__init__(event_linker=event_linker, debug=debug)
+
+        # Validate the queue argument
+        if queue is None:
+            raise PyventusException("The 'queue' argument cannot be None")
+        if not isinstance(queue, CeleryEventEmitter.Queue):
+            raise PyventusException("The 'queue' argument must be an instance of the CeleryEventEmitter.Queue class.")
+
+        # Store the queue object
+        self._queue: CeleryEventEmitter.Queue = queue
+
+    def _process(self, event_emission: EventEmitter.EventEmission) -> None:
+        # Add the event emission object to the Celery queue for asynchronous execution
+        self._queue.enqueue(event_emission=event_emission)
+
+
+ + + +
+ + + + + + +

Classes

+ +
+ + + +

+ Queue + + +

+ + +
+ + +

A Celery event emitter queue used for enqueuing event emissions.

+ + + + + + +
+ Source code in pyventus/emitters/celery/celery_event_emitter.py +
class Queue:
+    """A Celery event emitter queue used for enqueuing event emissions."""
+
+    class Serializer:
+        """An event emitter object serializer for Celery queues."""
+
+        @staticmethod
+        def dumps(obj: EventEmitter.EventEmission) -> Any:
+            """
+            Serializes the event emission object.
+            :param obj: The event emission object to be serialized.
+            :return: The serialized representation of the event emission object.
+            """
+            return dumps(obj)  # pragma: no cover
+
+        @staticmethod
+        def loads(serialized_obj: Any) -> EventEmitter.EventEmission:
+            """
+            Deserializes the task payload back to the event emission object.
+            :param serialized_obj: The serialized object to be loaded.
+            :return: The deserialized event emission object.
+            """
+            return cast(EventEmitter.EventEmission, loads(serialized_obj))  # pragma: no cover
+
+    class _Payload(NamedTuple):
+        """The Celery event emitter queue payload."""
+
+        serialized_obj: bytes
+        """Serialized event emission object."""
+
+        obj_hash: bytes | None
+        """Hash of the serialized event emission object."""
+
+        @classmethod
+        def from_json(cls, **kwargs: Any) -> "CeleryEventEmitter.Queue._Payload":
+            """
+            Creates a Payload instance from a JSON-compatible dictionary.
+            :param kwargs: JSON-compatible dictionary representing the payload.
+            :return: Payload instance.
+            :raises ValueError: If the JSON data is missing fields or contains extra keys.
+            """
+            # Get the field names of the named tuple
+            tuple_fields: tuple[str, ...] = CeleryEventEmitter.Queue._Payload._fields
+
+            # Check if all expected fields are present
+            if not set(tuple_fields).issubset(kwargs.keys()):
+                raise PyventusException("Missing fields in JSON data.")
+
+            # Check for extra keys in the JSON data
+            extra_keys = set(kwargs.keys()) - set(tuple_fields)
+            if extra_keys:
+                raise PyventusException("Extra keys in JSON data: {}".format(extra_keys))
+
+            # Create the named tuple using the JSON data
+            return cls(**kwargs)
+
+        def to_json(self) -> Dict[str, Any]:
+            """
+            Converts the payload to a JSON-compatible dictionary.
+            :return: JSON-compatible dictionary representing the payload.
+            """
+            return self._asdict()
+
+    def __init__(
+        self,
+        celery: Celery,
+        name: str | None = None,
+        secret: str | None = None,
+        serializer: Type[Serializer] = Serializer,
+    ) -> None:
+        """
+        Initialize an instance of `CeleryEventEmitter.Queue`.
+        :param celery: The Celery object used to enqueue and process event emissions.
+        :param name: The name of the queue where the event emission will be enqueued.
+            Default is None (task_default_queue).
+        :param secret: The secret key used for message authentication and integrity validation.
+            This key is used for hashing the event emission object and verifying its integrity.
+        :param serializer: The serializer class used for serializing and deserializing event
+            emission objects.
+        :raises PyventusException: If the Celery object is None, or the secret key is not None
+            and empty, or if the content type 'application/x-python-serialize' is not accepted.
+        """
+        if celery is None:
+            raise PyventusException("The 'celery' argument cannot be None.")
+        if not isinstance(celery, Celery):
+            raise PyventusException("The 'celery' argument must be an instance of the Celery class.")
+
+        if secret is not None and len(secret) == 0:
+            raise PyventusException("The 'secret' argument cannot be empty.")
+
+        if "application/x-python-serialize" not in celery.conf.accept_content:
+            raise PyventusException(
+                "Unsupported content type. "
+                "'application/x-python-serialize' is not in the list of accepted content types."
+            )
+
+        # Set the Celery queue properties
+        self._celery: Celery = celery
+        self._name: str = self._celery.conf.task_default_queue if name is None else name
+        self._secret: bytes | None = secret.encode("utf-8") if secret else None
+        self._digestmod: str | Callable[[], Any] | ModuleType = sha256  # The digest algorithm used for hashing
+        self._serializer: Type[CeleryEventEmitter.Queue.Serializer] = serializer
+
+        # Register the event processor method as a Celery task
+        self._celery.task(self._executor, name=f"pyventus{self._executor.__name__}", queue=self._name)
+
+    def enqueue(self, event_emission: EventEmitter.EventEmission) -> None:
+        """
+        Enqueues an event emission object for asynchronous processing in Celery.
+
+        This method takes an `EventEmission` object and enqueues it for asynchronous
+        execution by Celery workers. If a secret key is provided during initialization,
+        the event emission object is first serialized, and its hash is calculated using
+        the secret key. This hash is used to verify the integrity of the event emission
+        object during execution.
+
+        :param event_emission: The event emission object to be enqueued for asynchronous execution.
+        :return: None
+        """
+        # Serialize the event emission object
+        serialized_obj: Any = self._serializer.dumps(event_emission)
+
+        # Calculate the hash of the serialized object if a secret key was provided
+        obj_hash: Any | None = None
+        if self._secret:  # pragma: no cover
+            obj_hash = hmac.new(key=self._secret, msg=serialized_obj, digestmod=self._digestmod).digest()
+
+        # Create a payload with the serialized event emission instance and its hash
+        payload = CeleryEventEmitter.Queue._Payload(
+            serialized_obj=serialized_obj,
+            obj_hash=obj_hash,
+        )
+
+        # Send the event emission object to Celery for asynchronous execution
+        self._celery.send_task(
+            f"pyventus{self._executor.__name__}",
+            kwargs=payload.to_json(),
+            queue=self._name,
+        )
+
+    def _executor(self, **kwargs: Any) -> None:
+        """
+        Process the enqueued event emission object.
+
+        This method serves as the Celery task responsible
+        for processing the enqueued event emission.
+
+        :param kwargs: The JSON-compatible dictionary representing the payload.
+        :return: None
+        """
+        # Create a Payload instance from the JSON data
+        payload = CeleryEventEmitter.Queue._Payload.from_json(**kwargs)
+
+        # Check payload
+        if self._secret:  # pragma: no cover
+            if not payload.obj_hash:
+                raise PyventusException("Invalid payload structure.")
+
+            # Verify the integrity of the payload
+            obj_hash: bytes = hmac.new(
+                key=self._secret, msg=payload.serialized_obj, digestmod=self._digestmod
+            ).digest()
+
+            # Compare the calculated hash with the provided payload hash
+            if not hmac.compare_digest(payload.obj_hash, obj_hash):
+                raise PyventusException("Payload integrity verification failed.")
+        elif payload.obj_hash:  # pragma: no cover
+            raise PyventusException("Unexpected payload structure.")
+
+        # Deserialize the event emission object
+        event_emission = self._serializer.loads(payload.serialized_obj)
+
+        # Check if the deserialized event emission object is valid
+        if event_emission is None:  # pragma: no cover
+            raise PyventusException("Failed to deserialize the event emission object.")
+
+        # Run the event emission
+        asyncio.run(event_emission())
+
+
+ + + +
+ + + + + + +

Classes

+ +
+ + + +
+ Serializer + + +
+ + +
+ + +

An event emitter object serializer for Celery queues.

+ + + + + + +
+ Source code in pyventus/emitters/celery/celery_event_emitter.py +
40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
class Serializer:
+    """An event emitter object serializer for Celery queues."""
+
+    @staticmethod
+    def dumps(obj: EventEmitter.EventEmission) -> Any:
+        """
+        Serializes the event emission object.
+        :param obj: The event emission object to be serialized.
+        :return: The serialized representation of the event emission object.
+        """
+        return dumps(obj)  # pragma: no cover
+
+    @staticmethod
+    def loads(serialized_obj: Any) -> EventEmitter.EventEmission:
+        """
+        Deserializes the task payload back to the event emission object.
+        :param serialized_obj: The serialized object to be loaded.
+        :return: The deserialized event emission object.
+        """
+        return cast(EventEmitter.EventEmission, loads(serialized_obj))  # pragma: no cover
+
+
+ + + +
+ + + + + + + +
Functions
+ +
+ + + + dumps + + + + staticmethod + + + +
dumps(obj: EventEmission) -> Any
+
+ +
+ +

Serializes the event emission object.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ obj + +
+

The event emission object to be serialized.

+
+

+ + TYPE: + EventEmission + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + Any + + +
+

The serialized representation of the event emission object.

+
+
+ +
+ Source code in pyventus/emitters/celery/celery_event_emitter.py +
43
+44
+45
+46
+47
+48
+49
+50
@staticmethod
+def dumps(obj: EventEmitter.EventEmission) -> Any:
+    """
+    Serializes the event emission object.
+    :param obj: The event emission object to be serialized.
+    :return: The serialized representation of the event emission object.
+    """
+    return dumps(obj)  # pragma: no cover
+
+
+
+ +
+ +
+ + + + loads + + + + staticmethod + + + +
loads(serialized_obj: Any) -> EventEmission
+
+ +
+ +

Deserializes the task payload back to the event emission object.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ serialized_obj + +
+

The serialized object to be loaded.

+
+

+ + TYPE: + Any + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + EventEmission + + +
+

The deserialized event emission object.

+
+
+ +
+ Source code in pyventus/emitters/celery/celery_event_emitter.py +
52
+53
+54
+55
+56
+57
+58
+59
@staticmethod
+def loads(serialized_obj: Any) -> EventEmitter.EventEmission:
+    """
+    Deserializes the task payload back to the event emission object.
+    :param serialized_obj: The serialized object to be loaded.
+    :return: The deserialized event emission object.
+    """
+    return cast(EventEmitter.EventEmission, loads(serialized_obj))  # pragma: no cover
+
+
+
+ +
+ + + +
+ +
+ +
+

Functions

+ +
+ + +
+ __init__ + + +
+
__init__(celery: Celery, name: str | None = None, secret: str | None = None, serializer: Type[Serializer] = Serializer) -> None
+
+ +
+ +

Initialize an instance of CeleryEventEmitter.Queue.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ celery + +
+

The Celery object used to enqueue and process event emissions.

+
+

+ + TYPE: + Celery + +

+
+ name + +
+

The name of the queue where the event emission will be enqueued. Default is None (task_default_queue).

+
+

+ + TYPE: + str | None + + + DEFAULT: + None + +

+
+ secret + +
+

The secret key used for message authentication and integrity validation. This key is used for hashing the event emission object and verifying its integrity.

+
+

+ + TYPE: + str | None + + + DEFAULT: + None + +

+
+ serializer + +
+

The serializer class used for serializing and deserializing event emission objects.

+
+

+ + TYPE: + Type[Serializer] + + + DEFAULT: + Serializer + +

+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the Celery object is None, or the secret key is not None and empty, or if the content type 'application/x-python-serialize' is not accepted.

+
+
+ +
+ Source code in pyventus/emitters/celery/celery_event_emitter.py +
def __init__(
+    self,
+    celery: Celery,
+    name: str | None = None,
+    secret: str | None = None,
+    serializer: Type[Serializer] = Serializer,
+) -> None:
+    """
+    Initialize an instance of `CeleryEventEmitter.Queue`.
+    :param celery: The Celery object used to enqueue and process event emissions.
+    :param name: The name of the queue where the event emission will be enqueued.
+        Default is None (task_default_queue).
+    :param secret: The secret key used for message authentication and integrity validation.
+        This key is used for hashing the event emission object and verifying its integrity.
+    :param serializer: The serializer class used for serializing and deserializing event
+        emission objects.
+    :raises PyventusException: If the Celery object is None, or the secret key is not None
+        and empty, or if the content type 'application/x-python-serialize' is not accepted.
+    """
+    if celery is None:
+        raise PyventusException("The 'celery' argument cannot be None.")
+    if not isinstance(celery, Celery):
+        raise PyventusException("The 'celery' argument must be an instance of the Celery class.")
+
+    if secret is not None and len(secret) == 0:
+        raise PyventusException("The 'secret' argument cannot be empty.")
+
+    if "application/x-python-serialize" not in celery.conf.accept_content:
+        raise PyventusException(
+            "Unsupported content type. "
+            "'application/x-python-serialize' is not in the list of accepted content types."
+        )
+
+    # Set the Celery queue properties
+    self._celery: Celery = celery
+    self._name: str = self._celery.conf.task_default_queue if name is None else name
+    self._secret: bytes | None = secret.encode("utf-8") if secret else None
+    self._digestmod: str | Callable[[], Any] | ModuleType = sha256  # The digest algorithm used for hashing
+    self._serializer: Type[CeleryEventEmitter.Queue.Serializer] = serializer
+
+    # Register the event processor method as a Celery task
+    self._celery.task(self._executor, name=f"pyventus{self._executor.__name__}", queue=self._name)
+
+
+
+ +
+ +
+ + +
+ enqueue + + +
+
enqueue(event_emission: EventEmission) -> None
+
+ +
+ +

Enqueues an event emission object for asynchronous processing in Celery.

+

This method takes an EventEmission object and enqueues it for asynchronous +execution by Celery workers. If a secret key is provided during initialization, +the event emission object is first serialized, and its hash is calculated using +the secret key. This hash is used to verify the integrity of the event emission +object during execution.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event_emission + +
+

The event emission object to be enqueued for asynchronous execution.

+
+

+ + TYPE: + EventEmission + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/celery/celery_event_emitter.py +
def enqueue(self, event_emission: EventEmitter.EventEmission) -> None:
+    """
+    Enqueues an event emission object for asynchronous processing in Celery.
+
+    This method takes an `EventEmission` object and enqueues it for asynchronous
+    execution by Celery workers. If a secret key is provided during initialization,
+    the event emission object is first serialized, and its hash is calculated using
+    the secret key. This hash is used to verify the integrity of the event emission
+    object during execution.
+
+    :param event_emission: The event emission object to be enqueued for asynchronous execution.
+    :return: None
+    """
+    # Serialize the event emission object
+    serialized_obj: Any = self._serializer.dumps(event_emission)
+
+    # Calculate the hash of the serialized object if a secret key was provided
+    obj_hash: Any | None = None
+    if self._secret:  # pragma: no cover
+        obj_hash = hmac.new(key=self._secret, msg=serialized_obj, digestmod=self._digestmod).digest()
+
+    # Create a payload with the serialized event emission instance and its hash
+    payload = CeleryEventEmitter.Queue._Payload(
+        serialized_obj=serialized_obj,
+        obj_hash=obj_hash,
+    )
+
+    # Send the event emission object to Celery for asynchronous execution
+    self._celery.send_task(
+        f"pyventus{self._executor.__name__}",
+        kwargs=payload.to_json(),
+        queue=self._name,
+    )
+
+
+
+ +
+ + + +
+ +
+ +
+

Functions

+ +
+ + +

+ emit + + +

+
emit(event: EmittableEventType, *args: Any, **kwargs: Any) -> None
+
+ +
+ +

Emits an event and triggers its associated event handlers.

+

Notes:

+
    +
  • When emitting dataclass objects or Exception objects, they are automatically passed + to the event handler as the first positional argument, even if you pass additional *args + or **kwargs.
  • +
  • If there are event handlers subscribed to the global event ..., also known as Ellipsis, + they will also be triggered each time an event or exception is emitted.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The event to be emitted. It can be str, a dataclass object, or an Exception object.

+
+

+ + TYPE: + EmittableEventType + +

+
+ args + +
+

Positional arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + () + +

+
+ kwargs + +
+

Keyword arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + {} + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
def emit(self, /, event: EmittableEventType, *args: Any, **kwargs: Any) -> None:
+    """
+    Emits an event and triggers its associated event handlers.
+
+    **Notes:**
+
+    -   When emitting `dataclass` objects or `Exception` objects, they are automatically passed
+        to the event handler as the first positional argument, even if you pass additional `*args`
+        or `**kwargs`.
+    -   If there are event handlers subscribed to the global event `...`, also known as `Ellipsis`,
+        they will also be triggered each time an event or exception is emitted.
+
+    :param event: The event to be emitted. It can be `str`, a `dataclass`
+        object, or an `Exception` object.
+    :param args: Positional arguments to be passed to the event handlers.
+    :param kwargs: Keyword arguments to be passed to the event handlers.
+    :return: None
+    """
+    # Raise an exception if the event is None
+    if event is None:
+        raise PyventusException("The 'event' argument cannot be None.")
+
+    # Raise an exception if the event is a type
+    if isinstance(event, type):
+        raise PyventusException("The 'event' argument cannot be a type.")
+
+    # Determine the event name
+    event_name: str = self._event_linker.get_event_name(event=event if isinstance(event, str) else type(event))
+
+    # Retrieve the event handlers associated with the event
+    event_handlers: List[EventHandler] = self._event_linker.get_event_handlers_by_events(event_name, Ellipsis)
+
+    # Sort the event handlers by timestamp
+    event_handlers.sort(key=lambda handler: handler.timestamp)
+
+    # Initialize the list of event handlers to be executed
+    pending_event_handlers: List[EventHandler] = []
+
+    # Iterate through each event handler
+    for event_handler in event_handlers:
+        # Check if the event handler is a one-time subscription
+        if event_handler.once:
+            # If the event handler is a one-time subscription, we attempt to remove it.
+            if self._event_linker.remove_event_handler(event_handler=event_handler):  # pragma: no cover (Race-Cond)
+                # If the removal is successful, it indicates that the handler has not
+                # been processed before, so we add it to the pending list.
+                pending_event_handlers.append(event_handler)
+        else:
+            pending_event_handlers.append(event_handler)
+
+    # Check if the pending list of event handlers is not empty
+    if len(pending_event_handlers) > 0:
+        # Create a new EventEmission instance
+        event_emission: EventEmitter.EventEmission = EventEmitter.EventEmission(
+            event=event_name,
+            event_handlers=pending_event_handlers,
+            event_args=args if isinstance(event, str) else (event, *args),
+            event_kwargs=kwargs,
+            debug=self._logger.debug_enabled,
+        )
+
+        # Log the event emission when debug is enabled
+        if self._logger.debug_enabled:  # pragma: no cover
+            self._logger.debug(
+                action="Emitting Event:",
+                msg=f"{event_emission.event}{StdOutColors.PURPLE} ID:{StdOutColors.DEFAULT} {event_emission.id}",
+            )
+
+        # Delegate the event emission processing to subclasses
+        self._process(event_emission)
+
+    # Log a debug message if there are no event handlers subscribed to the event
+    elif self._logger.debug_enabled:  # pragma: no cover
+        self._logger.debug(
+            action="Emitting Event:",
+            msg=f"{event_name}{StdOutColors.PURPLE} Message:{StdOutColors.DEFAULT} No event handlers subscribed",
+        )
+
+
+
+ +
+ +
+ + +

+ __init__ + + +

+
__init__(queue: Queue, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None
+
+ +
+ +

Initialize an instance of CeleryEventEmitter.

+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ queue + +
+

The queue used for enqueuing event emissions in the Celery event emitter.

+
+

+ + TYPE: + Queue + +

+
+ event_linker + +
+

Specifies the type of event linker used to manage and access events along with their corresponding event handlers. Defaults to EventLinker.

+
+

+ + TYPE: + Type[EventLinker] + + + DEFAULT: + EventLinker + +

+
+ debug + +
+

Specifies the debug mode for the logger. If None, it is determined based on the execution environment.

+
+

+ + TYPE: + bool | None + + + DEFAULT: + None + +

+
+ +
+ Source code in pyventus/emitters/celery/celery_event_emitter.py +
def __init__(self, queue: Queue, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None:
+    """
+    Initialize an instance of `CeleryEventEmitter`.
+    :param queue: The queue used for enqueuing event emissions in the Celery event emitter.
+    :param event_linker: Specifies the type of event linker used to manage and access
+        events along with their corresponding event handlers. Defaults to `EventLinker`.
+    :param debug: Specifies the debug mode for the logger. If `None`, it is
+        determined based on the execution environment.
+    """
+    # Call the parent class' __init__ method
+    super().__init__(event_linker=event_linker, debug=debug)
+
+    # Validate the queue argument
+    if queue is None:
+        raise PyventusException("The 'queue' argument cannot be None")
+    if not isinstance(queue, CeleryEventEmitter.Queue):
+        raise PyventusException("The 'queue' argument must be an instance of the CeleryEventEmitter.Queue class.")
+
+    # Store the queue object
+    self._queue: CeleryEventEmitter.Queue = queue
+
+
+
+ +
+ + + +
+ +
+ +


+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/emitters/executor/index.html b/0.6/api/emitters/executor/index.html new file mode 100644 index 0000000..1d971ba --- /dev/null +++ b/0.6/api/emitters/executor/index.html @@ -0,0 +1,2447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Executor Event Emitter - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

ExecutorEventEmitter class

+ + +
+ + + + +
+

+ Bases: EventEmitter

+ + +

An event emitter subclass that utilizes the concurrent.futures Executor base class to +handle the execution of event emissions. It can work with either ThreadPoolExecutor +for thread-based execution or ProcessPoolExecutor for process-based execution.

+

Notes:

+
    +
  • When using this event emitter, it is important to properly manage the underlying Executor. + Once you have finished emitting events, call the shutdown() method to signal the executor to + free any resources for pending futures. You can avoid the need to call this method explicitly + by using the with statement, which will automatically shut down the Executor (waiting as + if Executor.shutdown() were called with wait set to True).
  • +
+
+

Read more in the +Pyventus docs for Executor Event Emitter.

+ + + + + + +
+ Source code in pyventus/emitters/executor/executor_event_emitter.py +
11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
class ExecutorEventEmitter(EventEmitter):
+    """
+    An event emitter subclass that utilizes the `concurrent.futures` Executor base class to
+    handle the execution of event emissions. It can work with either `ThreadPoolExecutor`
+    for thread-based execution or `ProcessPoolExecutor` for process-based execution.
+
+    **Notes:**
+
+    -   When using this event emitter, it is important to properly manage the underlying `Executor`.
+        Once you have finished emitting events, call the `shutdown()` method to signal the executor to
+        free any resources for pending futures. You can avoid the need to call this method explicitly
+        by using the `with` statement, which will automatically shut down the `Executor` (waiting as
+        if `Executor.shutdown()` were called with `wait` set to `True`).
+
+    ---
+    Read more in the
+    [Pyventus docs for Executor Event Emitter](https://mdapena.github.io/pyventus/tutorials/emitters/executor/).
+    """
+
+    @staticmethod
+    def _callback(event_emission: EventEmitter.EventEmission) -> None:
+        """
+        This method is used as the callback function for the executor
+        to process the event emission.
+        :param event_emission: The event emission to be executed.
+        :return: None
+        """
+        asyncio.run(event_emission())
+
+    def __init__(
+        self,
+        executor: Executor = ThreadPoolExecutor(),
+        event_linker: Type[EventLinker] = EventLinker,
+        debug: bool | None = None,
+    ) -> None:
+        """
+        Initialize an instance of `ExecutorEventEmitter`.
+        :param executor: The executor object used to handle the execution of event
+            emissions. Defaults to `ThreadPoolExecutor()`.
+        :param event_linker: Specifies the type of event linker used to manage and access
+            events along with their corresponding event handlers. Defaults to `EventLinker`.
+        :param debug: Specifies the debug mode for the logger. If `None`, it is
+            determined based on the execution environment.
+        """
+        # Call the parent class' __init__ method
+        super().__init__(event_linker=event_linker, debug=debug)
+
+        # Validate the executor argument
+        if executor is None:
+            raise PyventusException("The 'executor' argument cannot be None.")
+        if not isinstance(executor, Executor):
+            raise PyventusException("The 'executor' argument must be an instance of the Executor class.")
+
+        # Set the executor object reference
+        self._executor: Executor = executor
+
+    def __enter__(self) -> "ExecutorEventEmitter":
+        """
+        Returns the current instance of `ExecutorEventEmitter` for context management.
+        :return: The current instance of `ExecutorEventEmitter`.
+        """
+        return self
+
+    def __exit__(
+        self, exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
+    ) -> None:
+        """
+        Cleans up the executor resources when exiting the context.
+        :param exc_type: The exception type, if any.
+        :param exc_val: The exception value, if any.
+        :param exc_tb: The traceback information, if any.
+        :return: None
+        """
+        self.shutdown(wait=True)
+
+    def shutdown(self, wait: bool = True, cancel_futures: bool = False) -> None:
+        """
+        Shuts down the executor and frees any resources it is using.
+        :param wait: A boolean indicating whether to wait for the currently pending futures
+            to complete before shutting down.
+        :param cancel_futures: A boolean indicating whether to cancel any pending futures.
+        :return: None
+        """
+        self._executor.shutdown(wait=wait, cancel_futures=cancel_futures)
+
+    def _process(self, event_emission: EventEmitter.EventEmission) -> None:
+        # Submit the event emission to the executor
+        self._executor.submit(ExecutorEventEmitter._callback, event_emission)
+
+
+ + + +
+ + + + + + + +

Functions

+ +
+ + +

+ emit + + +

+
emit(event: EmittableEventType, *args: Any, **kwargs: Any) -> None
+
+ +
+ +

Emits an event and triggers its associated event handlers.

+

Notes:

+
    +
  • When emitting dataclass objects or Exception objects, they are automatically passed + to the event handler as the first positional argument, even if you pass additional *args + or **kwargs.
  • +
  • If there are event handlers subscribed to the global event ..., also known as Ellipsis, + they will also be triggered each time an event or exception is emitted.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The event to be emitted. It can be str, a dataclass object, or an Exception object.

+
+

+ + TYPE: + EmittableEventType + +

+
+ args + +
+

Positional arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + () + +

+
+ kwargs + +
+

Keyword arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + {} + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
def emit(self, /, event: EmittableEventType, *args: Any, **kwargs: Any) -> None:
+    """
+    Emits an event and triggers its associated event handlers.
+
+    **Notes:**
+
+    -   When emitting `dataclass` objects or `Exception` objects, they are automatically passed
+        to the event handler as the first positional argument, even if you pass additional `*args`
+        or `**kwargs`.
+    -   If there are event handlers subscribed to the global event `...`, also known as `Ellipsis`,
+        they will also be triggered each time an event or exception is emitted.
+
+    :param event: The event to be emitted. It can be `str`, a `dataclass`
+        object, or an `Exception` object.
+    :param args: Positional arguments to be passed to the event handlers.
+    :param kwargs: Keyword arguments to be passed to the event handlers.
+    :return: None
+    """
+    # Raise an exception if the event is None
+    if event is None:
+        raise PyventusException("The 'event' argument cannot be None.")
+
+    # Raise an exception if the event is a type
+    if isinstance(event, type):
+        raise PyventusException("The 'event' argument cannot be a type.")
+
+    # Determine the event name
+    event_name: str = self._event_linker.get_event_name(event=event if isinstance(event, str) else type(event))
+
+    # Retrieve the event handlers associated with the event
+    event_handlers: List[EventHandler] = self._event_linker.get_event_handlers_by_events(event_name, Ellipsis)
+
+    # Sort the event handlers by timestamp
+    event_handlers.sort(key=lambda handler: handler.timestamp)
+
+    # Initialize the list of event handlers to be executed
+    pending_event_handlers: List[EventHandler] = []
+
+    # Iterate through each event handler
+    for event_handler in event_handlers:
+        # Check if the event handler is a one-time subscription
+        if event_handler.once:
+            # If the event handler is a one-time subscription, we attempt to remove it.
+            if self._event_linker.remove_event_handler(event_handler=event_handler):  # pragma: no cover (Race-Cond)
+                # If the removal is successful, it indicates that the handler has not
+                # been processed before, so we add it to the pending list.
+                pending_event_handlers.append(event_handler)
+        else:
+            pending_event_handlers.append(event_handler)
+
+    # Check if the pending list of event handlers is not empty
+    if len(pending_event_handlers) > 0:
+        # Create a new EventEmission instance
+        event_emission: EventEmitter.EventEmission = EventEmitter.EventEmission(
+            event=event_name,
+            event_handlers=pending_event_handlers,
+            event_args=args if isinstance(event, str) else (event, *args),
+            event_kwargs=kwargs,
+            debug=self._logger.debug_enabled,
+        )
+
+        # Log the event emission when debug is enabled
+        if self._logger.debug_enabled:  # pragma: no cover
+            self._logger.debug(
+                action="Emitting Event:",
+                msg=f"{event_emission.event}{StdOutColors.PURPLE} ID:{StdOutColors.DEFAULT} {event_emission.id}",
+            )
+
+        # Delegate the event emission processing to subclasses
+        self._process(event_emission)
+
+    # Log a debug message if there are no event handlers subscribed to the event
+    elif self._logger.debug_enabled:  # pragma: no cover
+        self._logger.debug(
+            action="Emitting Event:",
+            msg=f"{event_name}{StdOutColors.PURPLE} Message:{StdOutColors.DEFAULT} No event handlers subscribed",
+        )
+
+
+
+ +
+ +
+ + +

+ __init__ + + +

+
__init__(executor: Executor = ThreadPoolExecutor(), event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None
+
+ +
+ +

Initialize an instance of ExecutorEventEmitter.

+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ executor + +
+

The executor object used to handle the execution of event emissions. Defaults to ThreadPoolExecutor().

+
+

+ + TYPE: + Executor + + + DEFAULT: + ThreadPoolExecutor() + +

+
+ event_linker + +
+

Specifies the type of event linker used to manage and access events along with their corresponding event handlers. Defaults to EventLinker.

+
+

+ + TYPE: + Type[EventLinker] + + + DEFAULT: + EventLinker + +

+
+ debug + +
+

Specifies the debug mode for the logger. If None, it is determined based on the execution environment.

+
+

+ + TYPE: + bool | None + + + DEFAULT: + None + +

+
+ +
+ Source code in pyventus/emitters/executor/executor_event_emitter.py +
40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
def __init__(
+    self,
+    executor: Executor = ThreadPoolExecutor(),
+    event_linker: Type[EventLinker] = EventLinker,
+    debug: bool | None = None,
+) -> None:
+    """
+    Initialize an instance of `ExecutorEventEmitter`.
+    :param executor: The executor object used to handle the execution of event
+        emissions. Defaults to `ThreadPoolExecutor()`.
+    :param event_linker: Specifies the type of event linker used to manage and access
+        events along with their corresponding event handlers. Defaults to `EventLinker`.
+    :param debug: Specifies the debug mode for the logger. If `None`, it is
+        determined based on the execution environment.
+    """
+    # Call the parent class' __init__ method
+    super().__init__(event_linker=event_linker, debug=debug)
+
+    # Validate the executor argument
+    if executor is None:
+        raise PyventusException("The 'executor' argument cannot be None.")
+    if not isinstance(executor, Executor):
+        raise PyventusException("The 'executor' argument must be an instance of the Executor class.")
+
+    # Set the executor object reference
+    self._executor: Executor = executor
+
+
+
+ +
+ +
+ + +

+ __enter__ + + +

+
__enter__() -> ExecutorEventEmitter
+
+ +
+ +

Returns the current instance of ExecutorEventEmitter for context management.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + ExecutorEventEmitter + + +
+

The current instance of ExecutorEventEmitter.

+
+
+ +
+ Source code in pyventus/emitters/executor/executor_event_emitter.py +
67
+68
+69
+70
+71
+72
def __enter__(self) -> "ExecutorEventEmitter":
+    """
+    Returns the current instance of `ExecutorEventEmitter` for context management.
+    :return: The current instance of `ExecutorEventEmitter`.
+    """
+    return self
+
+
+
+ +
+ +
+ + +

+ __exit__ + + +

+
__exit__(exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None) -> None
+
+ +
+ +

Cleans up the executor resources when exiting the context.

+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ exc_type + +
+

The exception type, if any.

+
+

+ + TYPE: + Type[BaseException] | None + +

+
+ exc_val + +
+

The exception value, if any.

+
+

+ + TYPE: + BaseException | None + +

+
+ exc_tb + +
+

The traceback information, if any.

+
+

+ + TYPE: + TracebackType | None + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/executor/executor_event_emitter.py +
74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
def __exit__(
+    self, exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
+) -> None:
+    """
+    Cleans up the executor resources when exiting the context.
+    :param exc_type: The exception type, if any.
+    :param exc_val: The exception value, if any.
+    :param exc_tb: The traceback information, if any.
+    :return: None
+    """
+    self.shutdown(wait=True)
+
+
+
+ +
+ +
+ + +

+ shutdown + + +

+
shutdown(wait: bool = True, cancel_futures: bool = False) -> None
+
+ +
+ +

Shuts down the executor and frees any resources it is using.

+ + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ wait + +
+

A boolean indicating whether to wait for the currently pending futures to complete before shutting down.

+
+

+ + TYPE: + bool + + + DEFAULT: + True + +

+
+ cancel_futures + +
+

A boolean indicating whether to cancel any pending futures.

+
+

+ + TYPE: + bool + + + DEFAULT: + False + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/executor/executor_event_emitter.py +
86
+87
+88
+89
+90
+91
+92
+93
+94
def shutdown(self, wait: bool = True, cancel_futures: bool = False) -> None:
+    """
+    Shuts down the executor and frees any resources it is using.
+    :param wait: A boolean indicating whether to wait for the currently pending futures
+        to complete before shutting down.
+    :param cancel_futures: A boolean indicating whether to cancel any pending futures.
+    :return: None
+    """
+    self._executor.shutdown(wait=wait, cancel_futures=cancel_futures)
+
+
+
+ +
+ + + +
+ +
+ +


+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/emitters/fastapi/index.html b/0.6/api/emitters/fastapi/index.html new file mode 100644 index 0000000..69f41b1 --- /dev/null +++ b/0.6/api/emitters/fastapi/index.html @@ -0,0 +1,2229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FastAPI Event Emitter - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

FastAPIEventEmitter class

+ + +
+ + + + +
+

+ Bases: EventEmitter

+ + +

An event emitter subclass that utilizes FastAPI's BackgroundTasks system +to handle the execution of event emissions.

+

Notes:

+
    +
  • It provides a convenient way to incorporate event-driven functionality + into FastAPI apps.
  • +
  • This class offers a powerful mechanism for implementing asynchronous + and decoupled operations in FastAPI, such as asynchronously sending + emails in an event-driven manner.
  • +
+
+

Read more in the +Pyventus docs for FastAPI Event Emitter.

+ + + + + + +
+ Source code in pyventus/emitters/fastapi/fastapi_event_emitter.py +
16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
class FastAPIEventEmitter(EventEmitter):
+    """
+    An event emitter subclass that utilizes FastAPI's BackgroundTasks system
+    to handle the execution of event emissions.
+
+    **Notes:**
+
+    -   It provides a convenient way to incorporate event-driven functionality
+        into FastAPI apps.
+    -   This class offers a powerful mechanism for implementing asynchronous
+        and decoupled operations in FastAPI, such as asynchronously sending
+        emails in an event-driven manner.
+
+    ---
+    Read more in the
+    [Pyventus docs for FastAPI Event Emitter](https://mdapena.github.io/pyventus/tutorials/emitters/fastapi/).
+    """
+
+    @classmethod
+    def options(
+        cls, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None
+    ) -> Callable[[BackgroundTasks], "FastAPIEventEmitter"]:
+        """
+        Returns a decorator that allows you to configure the `FastAPIEventEmitter` class
+        when using FastAPI's `Depends` method.
+        :param event_linker: Specifies the type of event linker used to manage and access
+            events along with their corresponding event handlers. Defaults to `EventLinker`.
+        :param debug: Specifies the debug mode for the logger. If `None`, it is
+            determined based on the execution environment.
+        :return: A decorator that can be used with the `Depends` method.
+        """
+
+        def wrapper(background_tasks: BackgroundTasks) -> "FastAPIEventEmitter":
+            """
+            A decorator wrapper function that configures the `FastAPIEventEmitter` class with
+            the provided options.
+            :param background_tasks: The FastAPI `BackgroundTasks` object used to handle
+                the execution of event emissions.
+            :return: An instance of `FastAPIEventEmitter` configured with the specified options.
+            """
+            return cls(background_tasks=background_tasks, event_linker=event_linker, debug=debug)
+
+        return wrapper
+
+    def __init__(
+        self,
+        background_tasks: BackgroundTasks,
+        event_linker: Type[EventLinker] = EventLinker,
+        debug: bool | None = None,
+    ) -> None:
+        """
+        Initialize an instance of `FastAPIEventEmitter`.
+        :param background_tasks: The FastAPI `BackgroundTasks` object used to handle
+            the execution of event emissions.
+        :param event_linker: Specifies the type of event linker to use for associating
+            events with their respective event handlers. Defaults to `EventLinker`.
+        :param debug: Specifies the debug mode for the logger. If `None`, it is
+            determined based on the execution environment.
+        """
+        # Call the parent class' __init__ method
+        super().__init__(event_linker=event_linker, debug=debug)
+
+        # Check if the provided background_tasks object is valid
+        if background_tasks is None:
+            raise PyventusException("The 'background_tasks' argument cannot be None.")
+        if not isinstance(background_tasks, BackgroundTasks):
+            raise PyventusException("The 'background_tasks' argument must be an instance of the BackgroundTasks class.")
+
+        # Set the background tasks
+        self._background_tasks: BackgroundTasks = background_tasks
+
+    def _process(self, event_emission: EventEmitter.EventEmission) -> None:
+        # Submit the event emission to the background tasks
+        self._background_tasks.add_task(event_emission)
+
+
+ + + +
+ + + + + + + +

Functions

+ +
+ + +

+ emit + + +

+
emit(event: EmittableEventType, *args: Any, **kwargs: Any) -> None
+
+ +
+ +

Emits an event and triggers its associated event handlers.

+

Notes:

+
    +
  • When emitting dataclass objects or Exception objects, they are automatically passed + to the event handler as the first positional argument, even if you pass additional *args + or **kwargs.
  • +
  • If there are event handlers subscribed to the global event ..., also known as Ellipsis, + they will also be triggered each time an event or exception is emitted.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The event to be emitted. It can be str, a dataclass object, or an Exception object.

+
+

+ + TYPE: + EmittableEventType + +

+
+ args + +
+

Positional arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + () + +

+
+ kwargs + +
+

Keyword arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + {} + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
def emit(self, /, event: EmittableEventType, *args: Any, **kwargs: Any) -> None:
+    """
+    Emits an event and triggers its associated event handlers.
+
+    **Notes:**
+
+    -   When emitting `dataclass` objects or `Exception` objects, they are automatically passed
+        to the event handler as the first positional argument, even if you pass additional `*args`
+        or `**kwargs`.
+    -   If there are event handlers subscribed to the global event `...`, also known as `Ellipsis`,
+        they will also be triggered each time an event or exception is emitted.
+
+    :param event: The event to be emitted. It can be `str`, a `dataclass`
+        object, or an `Exception` object.
+    :param args: Positional arguments to be passed to the event handlers.
+    :param kwargs: Keyword arguments to be passed to the event handlers.
+    :return: None
+    """
+    # Raise an exception if the event is None
+    if event is None:
+        raise PyventusException("The 'event' argument cannot be None.")
+
+    # Raise an exception if the event is a type
+    if isinstance(event, type):
+        raise PyventusException("The 'event' argument cannot be a type.")
+
+    # Determine the event name
+    event_name: str = self._event_linker.get_event_name(event=event if isinstance(event, str) else type(event))
+
+    # Retrieve the event handlers associated with the event
+    event_handlers: List[EventHandler] = self._event_linker.get_event_handlers_by_events(event_name, Ellipsis)
+
+    # Sort the event handlers by timestamp
+    event_handlers.sort(key=lambda handler: handler.timestamp)
+
+    # Initialize the list of event handlers to be executed
+    pending_event_handlers: List[EventHandler] = []
+
+    # Iterate through each event handler
+    for event_handler in event_handlers:
+        # Check if the event handler is a one-time subscription
+        if event_handler.once:
+            # If the event handler is a one-time subscription, we attempt to remove it.
+            if self._event_linker.remove_event_handler(event_handler=event_handler):  # pragma: no cover (Race-Cond)
+                # If the removal is successful, it indicates that the handler has not
+                # been processed before, so we add it to the pending list.
+                pending_event_handlers.append(event_handler)
+        else:
+            pending_event_handlers.append(event_handler)
+
+    # Check if the pending list of event handlers is not empty
+    if len(pending_event_handlers) > 0:
+        # Create a new EventEmission instance
+        event_emission: EventEmitter.EventEmission = EventEmitter.EventEmission(
+            event=event_name,
+            event_handlers=pending_event_handlers,
+            event_args=args if isinstance(event, str) else (event, *args),
+            event_kwargs=kwargs,
+            debug=self._logger.debug_enabled,
+        )
+
+        # Log the event emission when debug is enabled
+        if self._logger.debug_enabled:  # pragma: no cover
+            self._logger.debug(
+                action="Emitting Event:",
+                msg=f"{event_emission.event}{StdOutColors.PURPLE} ID:{StdOutColors.DEFAULT} {event_emission.id}",
+            )
+
+        # Delegate the event emission processing to subclasses
+        self._process(event_emission)
+
+    # Log a debug message if there are no event handlers subscribed to the event
+    elif self._logger.debug_enabled:  # pragma: no cover
+        self._logger.debug(
+            action="Emitting Event:",
+            msg=f"{event_name}{StdOutColors.PURPLE} Message:{StdOutColors.DEFAULT} No event handlers subscribed",
+        )
+
+
+
+ +
+ +
+ + +

+ options + + + + classmethod + + +

+
options(event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> Callable[[BackgroundTasks], FastAPIEventEmitter]
+
+ +
+ +

Returns a decorator that allows you to configure the FastAPIEventEmitter class +when using FastAPI's Depends method.

+ + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event_linker + +
+

Specifies the type of event linker used to manage and access events along with their corresponding event handlers. Defaults to EventLinker.

+
+

+ + TYPE: + Type[EventLinker] + + + DEFAULT: + EventLinker + +

+
+ debug + +
+

Specifies the debug mode for the logger. If None, it is determined based on the execution environment.

+
+

+ + TYPE: + bool | None + + + DEFAULT: + None + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + Callable[[BackgroundTasks], FastAPIEventEmitter] + + +
+

A decorator that can be used with the Depends method.

+
+
+ +
+ Source code in pyventus/emitters/fastapi/fastapi_event_emitter.py +
34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
@classmethod
+def options(
+    cls, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None
+) -> Callable[[BackgroundTasks], "FastAPIEventEmitter"]:
+    """
+    Returns a decorator that allows you to configure the `FastAPIEventEmitter` class
+    when using FastAPI's `Depends` method.
+    :param event_linker: Specifies the type of event linker used to manage and access
+        events along with their corresponding event handlers. Defaults to `EventLinker`.
+    :param debug: Specifies the debug mode for the logger. If `None`, it is
+        determined based on the execution environment.
+    :return: A decorator that can be used with the `Depends` method.
+    """
+
+    def wrapper(background_tasks: BackgroundTasks) -> "FastAPIEventEmitter":
+        """
+        A decorator wrapper function that configures the `FastAPIEventEmitter` class with
+        the provided options.
+        :param background_tasks: The FastAPI `BackgroundTasks` object used to handle
+            the execution of event emissions.
+        :return: An instance of `FastAPIEventEmitter` configured with the specified options.
+        """
+        return cls(background_tasks=background_tasks, event_linker=event_linker, debug=debug)
+
+    return wrapper
+
+
+
+ +
+ +
+ + +

+ __init__ + + +

+
__init__(background_tasks: BackgroundTasks, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None
+
+ +
+ +

Initialize an instance of FastAPIEventEmitter.

+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ background_tasks + +
+

The FastAPI BackgroundTasks object used to handle the execution of event emissions.

+
+

+ + TYPE: + BackgroundTasks + +

+
+ event_linker + +
+

Specifies the type of event linker to use for associating events with their respective event handlers. Defaults to EventLinker.

+
+

+ + TYPE: + Type[EventLinker] + + + DEFAULT: + EventLinker + +

+
+ debug + +
+

Specifies the debug mode for the logger. If None, it is determined based on the execution environment.

+
+

+ + TYPE: + bool | None + + + DEFAULT: + None + +

+
+ +
+ Source code in pyventus/emitters/fastapi/fastapi_event_emitter.py +
60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
def __init__(
+    self,
+    background_tasks: BackgroundTasks,
+    event_linker: Type[EventLinker] = EventLinker,
+    debug: bool | None = None,
+) -> None:
+    """
+    Initialize an instance of `FastAPIEventEmitter`.
+    :param background_tasks: The FastAPI `BackgroundTasks` object used to handle
+        the execution of event emissions.
+    :param event_linker: Specifies the type of event linker to use for associating
+        events with their respective event handlers. Defaults to `EventLinker`.
+    :param debug: Specifies the debug mode for the logger. If `None`, it is
+        determined based on the execution environment.
+    """
+    # Call the parent class' __init__ method
+    super().__init__(event_linker=event_linker, debug=debug)
+
+    # Check if the provided background_tasks object is valid
+    if background_tasks is None:
+        raise PyventusException("The 'background_tasks' argument cannot be None.")
+    if not isinstance(background_tasks, BackgroundTasks):
+        raise PyventusException("The 'background_tasks' argument must be an instance of the BackgroundTasks class.")
+
+    # Set the background tasks
+    self._background_tasks: BackgroundTasks = background_tasks
+
+
+
+ +
+ + + +
+ +
+ +


+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/emitters/index.html b/0.6/api/emitters/index.html new file mode 100644 index 0000000..4e9605d --- /dev/null +++ b/0.6/api/emitters/index.html @@ -0,0 +1,3207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EventEmitter class - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

EventEmitter class

+ + +
+ + + + +
+

+ Bases: ABC

+ + +

An abstract base class for event emitters.

+

Notes:

+
    +
  • +

    This class defines a common interface for emitting events. It serves as a foundation for + implementing custom event emitters with specific dispatch strategies. It is designed to + handle string-named events with positional and keyword arguments, as well as instances + of dataclass objects and Exceptions objects.

    +
  • +
  • +

    The main goal of this class is to decouple the event emission process from the underlying + implementation. This loose coupling promotes flexibility, adaptability, and adheres to the + Open-Closed principle, allowing custom event emitters to be implemented without affecting + existing consumers.

    +
  • +
+
+

Read more in the +Pyventus docs for Event Emitter.

+ + + + + + +
+ Source code in pyventus/emitters/event_emitter.py +
class EventEmitter(ABC):
+    """
+    An abstract base class for event emitters.
+
+    **Notes:**
+
+    -   This class defines a common interface for emitting events. It serves as a foundation for
+        implementing custom event emitters with specific dispatch strategies. It is designed to
+        handle `string-named` events with positional and keyword arguments, as well as instances
+        of `dataclass` objects and `Exceptions` objects.
+
+    -   The main goal of this class is to decouple the event emission process from the underlying
+        implementation. This loose coupling promotes flexibility, adaptability, and adheres to the
+        Open-Closed principle, allowing custom event emitters to be implemented without affecting
+        existing consumers.
+
+    ---
+    Read more in the
+    [Pyventus docs for Event Emitter](https://mdapena.github.io/pyventus/tutorials/emitters/).
+    """
+
+    @final
+    class EventEmission:
+        """
+        Represents an event emission that has been triggered but whose propagation is not
+        yet complete. It provides a self-contained context for executing the event emission,
+        encapsulating both the event data and the associated event handlers.
+
+        This class acts as an isolated unit of work to asynchronously propagate the emission
+        of an event. When an event occurs, the `EventEmitter` class creates an `EventEmission`
+        instance, which is then processed by the `_process()` method to handle the event
+        propagation.
+        """
+
+        # Event emission attributes
+        __slots__ = ("_id", "_timestamp", "_debug", "_event", "_event_handlers", "_event_args", "_event_kwargs")
+
+        @property
+        def id(self) -> str:
+            """
+            Gets the unique identifier of the event emission.
+            :return: The unique identifier of the event emission.
+            """
+            return self._id
+
+        @property
+        def timestamp(self) -> datetime:
+            """
+            Gets the timestamp when the event emission was created.
+            :return: The timestamp when the event emission was created.
+            """
+            return self._timestamp
+
+        @property
+        def event(self) -> str:
+            """
+            Gets the name of the event being emitted.
+            :return: The name of the event.
+            """
+            return self._event
+
+        def __init__(
+            self,
+            event: str,
+            event_handlers: List[EventHandler],
+            event_args: Tuple[Any, ...],
+            event_kwargs: Dict[str, Any],
+            debug: bool,
+        ) -> None:
+            """
+            Initialize an instance of `EventEmission`.
+            :param event: The name of the event being emitted.
+            :param event_handlers: List of event handlers associated with the event.
+            :param event_args: Positional arguments to be passed to the event handlers.
+            :param event_kwargs: Keyword arguments to be passed to the event handlers.
+            :param debug: Indicates if debug mode is enabled.
+            :raises PyventusException: If `event_handlers` or `event` is empty.
+            """
+            if not event_handlers:  # pragma: no cover
+                raise PyventusException("The 'event_handlers' argument cannot be empty.")
+
+            if not event:  # pragma: no cover
+                raise PyventusException("The 'event' argument cannot be empty.")
+
+            # Set the event emission metadata
+            self._id: str = str(uuid4())
+            self._timestamp: datetime = datetime.now()
+            self._debug: bool = debug
+
+            # Set the event emission properties
+            self._event: str = event
+            self._event_handlers: Tuple[EventHandler, ...] = tuple(event_handlers)
+            self._event_args: Tuple[Any, ...] = event_args
+            self._event_kwargs: Dict[str, Any] = event_kwargs
+
+        async def __call__(self) -> None:
+            """
+            Execute the event handlers concurrently.
+            :return: None
+            """
+            # Log the event execution if debug is enabled
+            if self._debug:  # pragma: no cover
+                StdOutLogger.debug(name=self.__class__.__name__, action="Running:", msg=str(self))
+
+            # Execute the event handlers concurrently
+            await gather(
+                *[event_handler(*self._event_args, **self._event_kwargs) for event_handler in self._event_handlers],
+                return_exceptions=True,
+            )
+
+        def __str__(self) -> str:
+            """
+            Returns a formatted string representation of the event emission.
+            :return: The formatted string representation of the event emission.
+            """
+            return (
+                f"ID: {self.id} | Timestamp: {self.timestamp.strftime('%Y-%m-%d %I:%M:%S %p')} | "
+                f"Event: {self.event} | Handlers: {len(self._event_handlers)}"
+            )
+
+    def __init__(self, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None:
+        """
+        Initialize an instance of `EventEmitter`.
+        :param event_linker: Specifies the type of event linker used to manage and access
+            events along with their corresponding event handlers. Defaults to `EventLinker`.
+        :param debug: Specifies the debug mode for the subclass logger. If `None`,
+            it is determined based on the execution environment.
+        :raises PyventusException: If the `event_linker` argument is None.
+        """
+        # Validate the event linker argument
+        if event_linker is None:
+            raise PyventusException("The 'event_linker' argument cannot be None.")
+        if not issubclass(event_linker, EventLinker):
+            raise PyventusException("The 'event_linker' argument must be a subtype of the EventLinker class.")
+
+        # Set the event_linker value
+        self._event_linker: Type[EventLinker] = event_linker
+        """
+        Specifies the type of event linker to use for associating events with their 
+        respective event handlers.
+        """
+
+        self._logger: Logger = Logger(
+            name=self.__class__.__name__,
+            debug=debug if debug is not None else bool(gettrace() is not None),
+        )
+        """
+        An instance of the logger used for logging events and debugging information.
+        """
+
+    def emit(self, /, event: EmittableEventType, *args: Any, **kwargs: Any) -> None:
+        """
+        Emits an event and triggers its associated event handlers.
+
+        **Notes:**
+
+        -   When emitting `dataclass` objects or `Exception` objects, they are automatically passed
+            to the event handler as the first positional argument, even if you pass additional `*args`
+            or `**kwargs`.
+        -   If there are event handlers subscribed to the global event `...`, also known as `Ellipsis`,
+            they will also be triggered each time an event or exception is emitted.
+
+        :param event: The event to be emitted. It can be `str`, a `dataclass`
+            object, or an `Exception` object.
+        :param args: Positional arguments to be passed to the event handlers.
+        :param kwargs: Keyword arguments to be passed to the event handlers.
+        :return: None
+        """
+        # Raise an exception if the event is None
+        if event is None:
+            raise PyventusException("The 'event' argument cannot be None.")
+
+        # Raise an exception if the event is a type
+        if isinstance(event, type):
+            raise PyventusException("The 'event' argument cannot be a type.")
+
+        # Determine the event name
+        event_name: str = self._event_linker.get_event_name(event=event if isinstance(event, str) else type(event))
+
+        # Retrieve the event handlers associated with the event
+        event_handlers: List[EventHandler] = self._event_linker.get_event_handlers_by_events(event_name, Ellipsis)
+
+        # Sort the event handlers by timestamp
+        event_handlers.sort(key=lambda handler: handler.timestamp)
+
+        # Initialize the list of event handlers to be executed
+        pending_event_handlers: List[EventHandler] = []
+
+        # Iterate through each event handler
+        for event_handler in event_handlers:
+            # Check if the event handler is a one-time subscription
+            if event_handler.once:
+                # If the event handler is a one-time subscription, we attempt to remove it.
+                if self._event_linker.remove_event_handler(event_handler=event_handler):  # pragma: no cover (Race-Cond)
+                    # If the removal is successful, it indicates that the handler has not
+                    # been processed before, so we add it to the pending list.
+                    pending_event_handlers.append(event_handler)
+            else:
+                pending_event_handlers.append(event_handler)
+
+        # Check if the pending list of event handlers is not empty
+        if len(pending_event_handlers) > 0:
+            # Create a new EventEmission instance
+            event_emission: EventEmitter.EventEmission = EventEmitter.EventEmission(
+                event=event_name,
+                event_handlers=pending_event_handlers,
+                event_args=args if isinstance(event, str) else (event, *args),
+                event_kwargs=kwargs,
+                debug=self._logger.debug_enabled,
+            )
+
+            # Log the event emission when debug is enabled
+            if self._logger.debug_enabled:  # pragma: no cover
+                self._logger.debug(
+                    action="Emitting Event:",
+                    msg=f"{event_emission.event}{StdOutColors.PURPLE} ID:{StdOutColors.DEFAULT} {event_emission.id}",
+                )
+
+            # Delegate the event emission processing to subclasses
+            self._process(event_emission)
+
+        # Log a debug message if there are no event handlers subscribed to the event
+        elif self._logger.debug_enabled:  # pragma: no cover
+            self._logger.debug(
+                action="Emitting Event:",
+                msg=f"{event_name}{StdOutColors.PURPLE} Message:{StdOutColors.DEFAULT} No event handlers subscribed",
+            )
+
+    @abstractmethod
+    def _process(self, event_emission: EventEmission) -> None:
+        """
+        Process the event emission execution. Subclasses must implement
+        this method to define the specific processing logic.
+
+        :param event_emission: The event emission to be processed.
+        :return: None
+        """
+        pass
+
+
+ + + +
+ + + + + + +

Classes

+ +
+ + + +

+ EventEmission + + +

+ + +
+ + +

Represents an event emission that has been triggered but whose propagation is not +yet complete. It provides a self-contained context for executing the event emission, +encapsulating both the event data and the associated event handlers.

+

This class acts as an isolated unit of work to asynchronously propagate the emission +of an event. When an event occurs, the EventEmitter class creates an EventEmission +instance, which is then processed by the _process() method to handle the event +propagation.

+ + + + + + +
+ Source code in pyventus/emitters/event_emitter.py +
@final
+class EventEmission:
+    """
+    Represents an event emission that has been triggered but whose propagation is not
+    yet complete. It provides a self-contained context for executing the event emission,
+    encapsulating both the event data and the associated event handlers.
+
+    This class acts as an isolated unit of work to asynchronously propagate the emission
+    of an event. When an event occurs, the `EventEmitter` class creates an `EventEmission`
+    instance, which is then processed by the `_process()` method to handle the event
+    propagation.
+    """
+
+    # Event emission attributes
+    __slots__ = ("_id", "_timestamp", "_debug", "_event", "_event_handlers", "_event_args", "_event_kwargs")
+
+    @property
+    def id(self) -> str:
+        """
+        Gets the unique identifier of the event emission.
+        :return: The unique identifier of the event emission.
+        """
+        return self._id
+
+    @property
+    def timestamp(self) -> datetime:
+        """
+        Gets the timestamp when the event emission was created.
+        :return: The timestamp when the event emission was created.
+        """
+        return self._timestamp
+
+    @property
+    def event(self) -> str:
+        """
+        Gets the name of the event being emitted.
+        :return: The name of the event.
+        """
+        return self._event
+
+    def __init__(
+        self,
+        event: str,
+        event_handlers: List[EventHandler],
+        event_args: Tuple[Any, ...],
+        event_kwargs: Dict[str, Any],
+        debug: bool,
+    ) -> None:
+        """
+        Initialize an instance of `EventEmission`.
+        :param event: The name of the event being emitted.
+        :param event_handlers: List of event handlers associated with the event.
+        :param event_args: Positional arguments to be passed to the event handlers.
+        :param event_kwargs: Keyword arguments to be passed to the event handlers.
+        :param debug: Indicates if debug mode is enabled.
+        :raises PyventusException: If `event_handlers` or `event` is empty.
+        """
+        if not event_handlers:  # pragma: no cover
+            raise PyventusException("The 'event_handlers' argument cannot be empty.")
+
+        if not event:  # pragma: no cover
+            raise PyventusException("The 'event' argument cannot be empty.")
+
+        # Set the event emission metadata
+        self._id: str = str(uuid4())
+        self._timestamp: datetime = datetime.now()
+        self._debug: bool = debug
+
+        # Set the event emission properties
+        self._event: str = event
+        self._event_handlers: Tuple[EventHandler, ...] = tuple(event_handlers)
+        self._event_args: Tuple[Any, ...] = event_args
+        self._event_kwargs: Dict[str, Any] = event_kwargs
+
+    async def __call__(self) -> None:
+        """
+        Execute the event handlers concurrently.
+        :return: None
+        """
+        # Log the event execution if debug is enabled
+        if self._debug:  # pragma: no cover
+            StdOutLogger.debug(name=self.__class__.__name__, action="Running:", msg=str(self))
+
+        # Execute the event handlers concurrently
+        await gather(
+            *[event_handler(*self._event_args, **self._event_kwargs) for event_handler in self._event_handlers],
+            return_exceptions=True,
+        )
+
+    def __str__(self) -> str:
+        """
+        Returns a formatted string representation of the event emission.
+        :return: The formatted string representation of the event emission.
+        """
+        return (
+            f"ID: {self.id} | Timestamp: {self.timestamp.strftime('%Y-%m-%d %I:%M:%S %p')} | "
+            f"Event: {self.event} | Handlers: {len(self._event_handlers)}"
+        )
+
+
+ + + +
+ + + + + +

Attributes

+ +
+ + + +
+ id + + + + property + + +
+
id: str
+
+ +
+ +

Gets the unique identifier of the event emission.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + str + + +
+

The unique identifier of the event emission.

+
+
+
+ +
+ +
+ + + +
+ timestamp + + + + property + + +
+
timestamp: datetime
+
+ +
+ +

Gets the timestamp when the event emission was created.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + datetime + + +
+

The timestamp when the event emission was created.

+
+
+
+ +
+ +
+ + + +
+ event + + + + property + + +
+
event: str
+
+ +
+ +

Gets the name of the event being emitted.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + str + + +
+

The name of the event.

+
+
+
+ +
+ +

Functions

+ +
+ + +
+ __init__ + + +
+
__init__(event: str, event_handlers: List[EventHandler], event_args: Tuple[Any, ...], event_kwargs: Dict[str, Any], debug: bool) -> None
+
+ +
+ +

Initialize an instance of EventEmission.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The name of the event being emitted.

+
+

+ + TYPE: + str + +

+
+ event_handlers + +
+

List of event handlers associated with the event.

+
+

+ + TYPE: + List[EventHandler] + +

+
+ event_args + +
+

Positional arguments to be passed to the event handlers.

+
+

+ + TYPE: + Tuple[Any, ...] + +

+
+ event_kwargs + +
+

Keyword arguments to be passed to the event handlers.

+
+

+ + TYPE: + Dict[str, Any] + +

+
+ debug + +
+

Indicates if debug mode is enabled.

+
+

+ + TYPE: + bool + +

+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If event_handlers or event is empty.

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
def __init__(
+    self,
+    event: str,
+    event_handlers: List[EventHandler],
+    event_args: Tuple[Any, ...],
+    event_kwargs: Dict[str, Any],
+    debug: bool,
+) -> None:
+    """
+    Initialize an instance of `EventEmission`.
+    :param event: The name of the event being emitted.
+    :param event_handlers: List of event handlers associated with the event.
+    :param event_args: Positional arguments to be passed to the event handlers.
+    :param event_kwargs: Keyword arguments to be passed to the event handlers.
+    :param debug: Indicates if debug mode is enabled.
+    :raises PyventusException: If `event_handlers` or `event` is empty.
+    """
+    if not event_handlers:  # pragma: no cover
+        raise PyventusException("The 'event_handlers' argument cannot be empty.")
+
+    if not event:  # pragma: no cover
+        raise PyventusException("The 'event' argument cannot be empty.")
+
+    # Set the event emission metadata
+    self._id: str = str(uuid4())
+    self._timestamp: datetime = datetime.now()
+    self._debug: bool = debug
+
+    # Set the event emission properties
+    self._event: str = event
+    self._event_handlers: Tuple[EventHandler, ...] = tuple(event_handlers)
+    self._event_args: Tuple[Any, ...] = event_args
+    self._event_kwargs: Dict[str, Any] = event_kwargs
+
+
+
+ +
+ +
+ + +
+ __call__ + + + + async + + +
+
__call__() -> None
+
+ +
+ +

Execute the event handlers concurrently.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
async def __call__(self) -> None:
+    """
+    Execute the event handlers concurrently.
+    :return: None
+    """
+    # Log the event execution if debug is enabled
+    if self._debug:  # pragma: no cover
+        StdOutLogger.debug(name=self.__class__.__name__, action="Running:", msg=str(self))
+
+    # Execute the event handlers concurrently
+    await gather(
+        *[event_handler(*self._event_args, **self._event_kwargs) for event_handler in self._event_handlers],
+        return_exceptions=True,
+    )
+
+
+
+ +
+ + + +
+ +
+ +
+

Functions

+ +
+ + +

+ __init__ + + +

+
__init__(event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None
+
+ +
+ +

Initialize an instance of EventEmitter.

+ + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event_linker + +
+

Specifies the type of event linker used to manage and access events along with their corresponding event handlers. Defaults to EventLinker.

+
+

+ + TYPE: + Type[EventLinker] + + + DEFAULT: + EventLinker + +

+
+ debug + +
+

Specifies the debug mode for the subclass logger. If None, it is determined based on the execution environment.

+
+

+ + TYPE: + bool | None + + + DEFAULT: + None + +

+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the event_linker argument is None.

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
def __init__(self, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None:
+    """
+    Initialize an instance of `EventEmitter`.
+    :param event_linker: Specifies the type of event linker used to manage and access
+        events along with their corresponding event handlers. Defaults to `EventLinker`.
+    :param debug: Specifies the debug mode for the subclass logger. If `None`,
+        it is determined based on the execution environment.
+    :raises PyventusException: If the `event_linker` argument is None.
+    """
+    # Validate the event linker argument
+    if event_linker is None:
+        raise PyventusException("The 'event_linker' argument cannot be None.")
+    if not issubclass(event_linker, EventLinker):
+        raise PyventusException("The 'event_linker' argument must be a subtype of the EventLinker class.")
+
+    # Set the event_linker value
+    self._event_linker: Type[EventLinker] = event_linker
+    """
+    Specifies the type of event linker to use for associating events with their 
+    respective event handlers.
+    """
+
+    self._logger: Logger = Logger(
+        name=self.__class__.__name__,
+        debug=debug if debug is not None else bool(gettrace() is not None),
+    )
+    """
+    An instance of the logger used for logging events and debugging information.
+    """
+
+
+
+ +
+ +
+ + +

+ emit + + +

+
emit(event: EmittableEventType, *args: Any, **kwargs: Any) -> None
+
+ +
+ +

Emits an event and triggers its associated event handlers.

+

Notes:

+
    +
  • When emitting dataclass objects or Exception objects, they are automatically passed + to the event handler as the first positional argument, even if you pass additional *args + or **kwargs.
  • +
  • If there are event handlers subscribed to the global event ..., also known as Ellipsis, + they will also be triggered each time an event or exception is emitted.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The event to be emitted. It can be str, a dataclass object, or an Exception object.

+
+

+ + TYPE: + EmittableEventType + +

+
+ args + +
+

Positional arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + () + +

+
+ kwargs + +
+

Keyword arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + {} + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
def emit(self, /, event: EmittableEventType, *args: Any, **kwargs: Any) -> None:
+    """
+    Emits an event and triggers its associated event handlers.
+
+    **Notes:**
+
+    -   When emitting `dataclass` objects or `Exception` objects, they are automatically passed
+        to the event handler as the first positional argument, even if you pass additional `*args`
+        or `**kwargs`.
+    -   If there are event handlers subscribed to the global event `...`, also known as `Ellipsis`,
+        they will also be triggered each time an event or exception is emitted.
+
+    :param event: The event to be emitted. It can be `str`, a `dataclass`
+        object, or an `Exception` object.
+    :param args: Positional arguments to be passed to the event handlers.
+    :param kwargs: Keyword arguments to be passed to the event handlers.
+    :return: None
+    """
+    # Raise an exception if the event is None
+    if event is None:
+        raise PyventusException("The 'event' argument cannot be None.")
+
+    # Raise an exception if the event is a type
+    if isinstance(event, type):
+        raise PyventusException("The 'event' argument cannot be a type.")
+
+    # Determine the event name
+    event_name: str = self._event_linker.get_event_name(event=event if isinstance(event, str) else type(event))
+
+    # Retrieve the event handlers associated with the event
+    event_handlers: List[EventHandler] = self._event_linker.get_event_handlers_by_events(event_name, Ellipsis)
+
+    # Sort the event handlers by timestamp
+    event_handlers.sort(key=lambda handler: handler.timestamp)
+
+    # Initialize the list of event handlers to be executed
+    pending_event_handlers: List[EventHandler] = []
+
+    # Iterate through each event handler
+    for event_handler in event_handlers:
+        # Check if the event handler is a one-time subscription
+        if event_handler.once:
+            # If the event handler is a one-time subscription, we attempt to remove it.
+            if self._event_linker.remove_event_handler(event_handler=event_handler):  # pragma: no cover (Race-Cond)
+                # If the removal is successful, it indicates that the handler has not
+                # been processed before, so we add it to the pending list.
+                pending_event_handlers.append(event_handler)
+        else:
+            pending_event_handlers.append(event_handler)
+
+    # Check if the pending list of event handlers is not empty
+    if len(pending_event_handlers) > 0:
+        # Create a new EventEmission instance
+        event_emission: EventEmitter.EventEmission = EventEmitter.EventEmission(
+            event=event_name,
+            event_handlers=pending_event_handlers,
+            event_args=args if isinstance(event, str) else (event, *args),
+            event_kwargs=kwargs,
+            debug=self._logger.debug_enabled,
+        )
+
+        # Log the event emission when debug is enabled
+        if self._logger.debug_enabled:  # pragma: no cover
+            self._logger.debug(
+                action="Emitting Event:",
+                msg=f"{event_emission.event}{StdOutColors.PURPLE} ID:{StdOutColors.DEFAULT} {event_emission.id}",
+            )
+
+        # Delegate the event emission processing to subclasses
+        self._process(event_emission)
+
+    # Log a debug message if there are no event handlers subscribed to the event
+    elif self._logger.debug_enabled:  # pragma: no cover
+        self._logger.debug(
+            action="Emitting Event:",
+            msg=f"{event_name}{StdOutColors.PURPLE} Message:{StdOutColors.DEFAULT} No event handlers subscribed",
+        )
+
+
+
+ +
+ +
+ + +

+ _process + + + + abstractmethod + + +

+
_process(event_emission: EventEmission) -> None
+
+ +
+ +

Process the event emission execution. Subclasses must implement +this method to define the specific processing logic.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event_emission + +
+

The event emission to be processed.

+
+

+ + TYPE: + EventEmission + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
@abstractmethod
+def _process(self, event_emission: EventEmission) -> None:
+    """
+    Process the event emission execution. Subclasses must implement
+    this method to define the specific processing logic.
+
+    :param event_emission: The event emission to be processed.
+    :return: None
+    """
+    pass
+
+
+
+ +
+ + + +
+ +
+ +


+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/emitters/rq/index.html b/0.6/api/emitters/rq/index.html new file mode 100644 index 0000000..997c68b --- /dev/null +++ b/0.6/api/emitters/rq/index.html @@ -0,0 +1,2032 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RQ Event Emitter - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

RQEventEmitter class

+ + +
+ + + + +
+

+ Bases: EventEmitter

+ + +

An event emitter subclass that utilizes the Redis Queue system to handle the +execution of event emissions.

+

Notes:

+
    +
  • This class uses a Redis Queue instance to enqueue event emissions, which are + subsequently executed by Redis Queue workers. This approach provides a scalable + and distributed method for handling the execution of event emissions.
  • +
+
+

Read more in the +Pyventus docs for RQ Event Emitter.

+ + + + + + +
+ Source code in pyventus/emitters/rq/rq_event_emitter.py +
16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
class RQEventEmitter(EventEmitter):
+    """
+    An event emitter subclass that utilizes the Redis Queue system to handle the
+    execution of event emissions.
+
+    **Notes:**
+
+    -   This class uses a Redis Queue instance to enqueue event emissions, which are
+        subsequently executed by Redis Queue workers. This approach provides a scalable
+        and distributed method for handling the execution of event emissions.
+
+    ---
+    Read more in the
+    [Pyventus docs for RQ Event Emitter](https://mdapena.github.io/pyventus/tutorials/emitters/rq/).
+    """
+
+    def __init__(
+        self,
+        queue: Queue,
+        options: Dict[str, Any] | None = None,
+        event_linker: Type[EventLinker] = EventLinker,
+        debug: bool | None = None,
+    ) -> None:
+        """
+        Initialize an instance of `RQEventEmitter`.
+        :param queue: The Redis queue for enqueuing event handlers.
+        :param options: Additional options for the RQ package enqueueing method.
+            Defaults to an empty dictionary.
+        :param event_linker: Specifies the type of event linker used to manage and access
+            events along with their corresponding event handlers. Defaults to `EventLinker`.
+        :param debug: Specifies the debug mode for the logger. If `None`, it is
+            determined based on the execution environment.
+        """
+        # Call the parent class' __init__ method
+        super().__init__(event_linker=event_linker, debug=debug)
+
+        # Validate the queue argument
+        if queue is None:
+            raise PyventusException("The 'queue' argument cannot be None.")
+        if not isinstance(queue, Queue):
+            raise PyventusException("The 'queue' argument must be an instance of the Queue class.")
+
+        # Store the Redis queue and RQ options
+        self._queue: Queue = queue
+        self._options: Dict[str, Any] = options if options is not None else {}
+
+    def _process(self, event_emission: EventEmitter.EventEmission) -> None:
+        # Add the event emission to the Redis Queue
+        self._queue.enqueue(event_emission, **self._options)
+
+
+ + + +
+ + + + + + + +

Functions

+ +
+ + +

+ emit + + +

+
emit(event: EmittableEventType, *args: Any, **kwargs: Any) -> None
+
+ +
+ +

Emits an event and triggers its associated event handlers.

+

Notes:

+
    +
  • When emitting dataclass objects or Exception objects, they are automatically passed + to the event handler as the first positional argument, even if you pass additional *args + or **kwargs.
  • +
  • If there are event handlers subscribed to the global event ..., also known as Ellipsis, + they will also be triggered each time an event or exception is emitted.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The event to be emitted. It can be str, a dataclass object, or an Exception object.

+
+

+ + TYPE: + EmittableEventType + +

+
+ args + +
+

Positional arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + () + +

+
+ kwargs + +
+

Keyword arguments to be passed to the event handlers.

+
+

+ + TYPE: + Any + + + DEFAULT: + {} + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/emitters/event_emitter.py +
def emit(self, /, event: EmittableEventType, *args: Any, **kwargs: Any) -> None:
+    """
+    Emits an event and triggers its associated event handlers.
+
+    **Notes:**
+
+    -   When emitting `dataclass` objects or `Exception` objects, they are automatically passed
+        to the event handler as the first positional argument, even if you pass additional `*args`
+        or `**kwargs`.
+    -   If there are event handlers subscribed to the global event `...`, also known as `Ellipsis`,
+        they will also be triggered each time an event or exception is emitted.
+
+    :param event: The event to be emitted. It can be `str`, a `dataclass`
+        object, or an `Exception` object.
+    :param args: Positional arguments to be passed to the event handlers.
+    :param kwargs: Keyword arguments to be passed to the event handlers.
+    :return: None
+    """
+    # Raise an exception if the event is None
+    if event is None:
+        raise PyventusException("The 'event' argument cannot be None.")
+
+    # Raise an exception if the event is a type
+    if isinstance(event, type):
+        raise PyventusException("The 'event' argument cannot be a type.")
+
+    # Determine the event name
+    event_name: str = self._event_linker.get_event_name(event=event if isinstance(event, str) else type(event))
+
+    # Retrieve the event handlers associated with the event
+    event_handlers: List[EventHandler] = self._event_linker.get_event_handlers_by_events(event_name, Ellipsis)
+
+    # Sort the event handlers by timestamp
+    event_handlers.sort(key=lambda handler: handler.timestamp)
+
+    # Initialize the list of event handlers to be executed
+    pending_event_handlers: List[EventHandler] = []
+
+    # Iterate through each event handler
+    for event_handler in event_handlers:
+        # Check if the event handler is a one-time subscription
+        if event_handler.once:
+            # If the event handler is a one-time subscription, we attempt to remove it.
+            if self._event_linker.remove_event_handler(event_handler=event_handler):  # pragma: no cover (Race-Cond)
+                # If the removal is successful, it indicates that the handler has not
+                # been processed before, so we add it to the pending list.
+                pending_event_handlers.append(event_handler)
+        else:
+            pending_event_handlers.append(event_handler)
+
+    # Check if the pending list of event handlers is not empty
+    if len(pending_event_handlers) > 0:
+        # Create a new EventEmission instance
+        event_emission: EventEmitter.EventEmission = EventEmitter.EventEmission(
+            event=event_name,
+            event_handlers=pending_event_handlers,
+            event_args=args if isinstance(event, str) else (event, *args),
+            event_kwargs=kwargs,
+            debug=self._logger.debug_enabled,
+        )
+
+        # Log the event emission when debug is enabled
+        if self._logger.debug_enabled:  # pragma: no cover
+            self._logger.debug(
+                action="Emitting Event:",
+                msg=f"{event_emission.event}{StdOutColors.PURPLE} ID:{StdOutColors.DEFAULT} {event_emission.id}",
+            )
+
+        # Delegate the event emission processing to subclasses
+        self._process(event_emission)
+
+    # Log a debug message if there are no event handlers subscribed to the event
+    elif self._logger.debug_enabled:  # pragma: no cover
+        self._logger.debug(
+            action="Emitting Event:",
+            msg=f"{event_name}{StdOutColors.PURPLE} Message:{StdOutColors.DEFAULT} No event handlers subscribed",
+        )
+
+
+
+ +
+ +
+ + +

+ __init__ + + +

+
__init__(queue: Queue, options: Dict[str, Any] | None = None, event_linker: Type[EventLinker] = EventLinker, debug: bool | None = None) -> None
+
+ +
+ +

Initialize an instance of RQEventEmitter.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ queue + +
+

The Redis queue for enqueuing event handlers.

+
+

+ + TYPE: + Queue + +

+
+ options + +
+

Additional options for the RQ package enqueueing method. Defaults to an empty dictionary.

+
+

+ + TYPE: + Dict[str, Any] | None + + + DEFAULT: + None + +

+
+ event_linker + +
+

Specifies the type of event linker used to manage and access events along with their corresponding event handlers. Defaults to EventLinker.

+
+

+ + TYPE: + Type[EventLinker] + + + DEFAULT: + EventLinker + +

+
+ debug + +
+

Specifies the debug mode for the logger. If None, it is determined based on the execution environment.

+
+

+ + TYPE: + bool | None + + + DEFAULT: + None + +

+
+ +
+ Source code in pyventus/emitters/rq/rq_event_emitter.py +
32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
def __init__(
+    self,
+    queue: Queue,
+    options: Dict[str, Any] | None = None,
+    event_linker: Type[EventLinker] = EventLinker,
+    debug: bool | None = None,
+) -> None:
+    """
+    Initialize an instance of `RQEventEmitter`.
+    :param queue: The Redis queue for enqueuing event handlers.
+    :param options: Additional options for the RQ package enqueueing method.
+        Defaults to an empty dictionary.
+    :param event_linker: Specifies the type of event linker used to manage and access
+        events along with their corresponding event handlers. Defaults to `EventLinker`.
+    :param debug: Specifies the debug mode for the logger. If `None`, it is
+        determined based on the execution environment.
+    """
+    # Call the parent class' __init__ method
+    super().__init__(event_linker=event_linker, debug=debug)
+
+    # Validate the queue argument
+    if queue is None:
+        raise PyventusException("The 'queue' argument cannot be None.")
+    if not isinstance(queue, Queue):
+        raise PyventusException("The 'queue' argument must be an instance of the Queue class.")
+
+    # Store the Redis queue and RQ options
+    self._queue: Queue = queue
+    self._options: Dict[str, Any] = options if options is not None else {}
+
+
+
+ +
+ + + +
+ +
+ +


+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/event-handler/index.html b/0.6/api/event-handler/index.html new file mode 100644 index 0000000..2e0ff46 --- /dev/null +++ b/0.6/api/event-handler/index.html @@ -0,0 +1,3118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Event Handler - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

EventHandler class

+ + +
+ + + + +
+ + +

A class that encapsulates event callbacks and provides a mechanism for executing them +when the event occurs. This class manages both asynchronous and synchronous execution +and handles event completion in both success and error scenarios.

+

Notes:

+
    +
  • +

    The __call__ method of the EventHandler class is an asynchronous method + that returns a Coroutine. It should never be treated as a synchronous function.

    +
  • +
  • +

    This class is not intended to be subclassed or manually created. It is used + internally to encapsulate the callbacks associated with an event and manage + their execution.

    +
  • +
  • +

    The event handler can be invoked by calling the instance as a function and + passing the required arguments.

    +
  • +
+
+

Read more in the +Pyventus docs for Event Handler.

+ + + + + + +
+ Source code in pyventus/handlers/event_handler.py +
@final
+class EventHandler:
+    """
+    A class that encapsulates event callbacks and provides a mechanism for executing them
+    when the event occurs. This class manages both asynchronous and synchronous execution
+    and handles event completion in both success and error scenarios.
+
+    **Notes:**
+
+    -   The `__call__` method of the `EventHandler` class is an asynchronous method
+        that returns a `Coroutine`. It should never be treated as a synchronous function.
+
+    -   This class is not intended to be subclassed or manually created. It is used
+        internally to encapsulate the callbacks associated with an event and manage
+        their execution.
+
+    -   The event handler can be invoked by calling the instance as a function and
+        passing the required arguments.
+
+    ---
+    Read more in the
+    [Pyventus docs for Event Handler](https://mdapena.github.io/pyventus/tutorials/event-linker/#event-handlers).
+    """
+
+    @staticmethod
+    def get_callback_name(
+        callback: EventCallbackType | SuccessCallbackType | FailureCallbackType | None,  # type: ignore[type-arg]
+    ) -> str:
+        """
+        Retrieves the name of the provided callback.
+        :param callback: The callback object.
+        :return: The name of the callback as a string.
+        """
+        if callback is not None and hasattr(callback, "__name__"):
+            return callback.__name__
+        elif callback is not None and hasattr(callback, "__class__"):
+            return type(callback).__name__
+        else:
+            return "None"
+
+    @staticmethod
+    def validate_callback(
+        callback: EventCallbackType | SuccessCallbackType | FailureCallbackType,  # type: ignore[type-arg]
+    ) -> None:
+        """
+        Validates whether the provided callback is a valid callable object.
+        :param callback: The callback to be validated.
+        :return: None
+        :raises PyventusException: If the callback is not a callable object.
+        """
+        if not callable(callback):
+            raise PyventusException(
+                f"'{callback.__name__ if hasattr(callback, '__name__') else callback}' is not a callable object."
+            )
+
+    @staticmethod
+    def is_async(
+        callback: EventCallbackType | SuccessCallbackType | FailureCallbackType,  # type: ignore[type-arg]
+    ) -> bool:
+        """
+        Checks whether the provided callback is an asynchronous function or method.
+        :param callback: The callback to be checked.
+        :return: `True` if the callback is an asynchronous function or method, `False` otherwise.
+        :raises PyventusException: If the callback is not a callable or a string.
+        """
+        if ismethod(callback) or isfunction(callback) or isbuiltin(callback):
+            return iscoroutinefunction(callback)
+        elif not isclass(callback) and hasattr(callback, "__call__"):  # A callable class instance
+            return iscoroutinefunction(callback.__call__)
+        else:
+            raise PyventusException("Expected a callable or a string, but got: {0}".format(callback))
+
+    # Event handler attributes
+    __slots__ = (
+        "_once",
+        "_force_async",
+        "_event_callback",
+        "_success_callback",
+        "_failure_callback",
+        "_is_event_callback_async",
+        "_is_success_callback_async",
+        "_is_failure_callback_async",
+        "_timestamp",
+    )
+
+    @property
+    def once(self) -> bool:
+        """
+        Determines if the event handler is a one-time subscription.
+        :return: A boolean value indicating if the event handler is
+            a one-time subscription.
+        """
+        return self._once
+
+    @property
+    def force_async(self) -> bool:
+        """
+        Determines whether all callbacks are forced to run asynchronously.
+        :return: A boolean value indicating if all callbacks are forced to run
+            asynchronously. If `True`, synchronous callbacks will be converted to
+            run asynchronously in a thread pool, using the `asyncio.to_thread`
+            function. If `False`, callbacks will run synchronously or
+            asynchronously as defined.
+        """
+        return self._force_async
+
+    @property
+    def timestamp(self) -> datetime:
+        """
+        Retrieves the timestamp when the event handler was created.
+        :return: The timestamp when the event handler was created.
+        """
+        return self._timestamp
+
+    def __init__(
+        self,
+        once: bool,
+        force_async: bool,
+        event_callback: EventCallbackType,  # type: ignore[type-arg]
+        success_callback: SuccessCallbackType | None = None,
+        failure_callback: FailureCallbackType | None = None,
+    ) -> None:
+        """
+        Initialize an instance of `EventHandler`.
+        :param once: Specifies if the event handler is a one-time subscription.
+        :param force_async: Determines whether to force all callbacks to run asynchronously.
+            If `True`, synchronous callbacks will be converted to run asynchronously in a
+            thread pool, using the `asyncio.to_thread` function. If `False`, callbacks
+            will run synchronously or asynchronously as defined.
+        :param event_callback: The callback to be executed when the event occurs.
+        :param success_callback: The callback to be executed when the event execution
+            completes successfully. Default is `None`.
+        :param failure_callback: The callback to be executed when the event execution
+            fails. Default is `None`.
+        :raises PyventusException: If the provided callbacks are invalid.
+        """
+        # Validate callbacks
+        EventHandler.validate_callback(callback=event_callback)
+
+        if success_callback is not None:
+            EventHandler.validate_callback(callback=success_callback)
+
+        if failure_callback is not None:
+            EventHandler.validate_callback(callback=failure_callback)
+
+        # Validate flags
+        if not isinstance(once, bool):
+            raise PyventusException("The 'once' argument must be a boolean value.")
+        if not isinstance(force_async, bool):
+            raise PyventusException("The 'force_async' argument must be a boolean value.")
+
+        # Set the event handler flags
+        self._once: bool = once
+        self._force_async: bool = force_async
+
+        # Set the event handler callbacks
+        self._event_callback: EventCallbackType = event_callback  # type: ignore[type-arg]
+        self._success_callback: SuccessCallbackType | None = success_callback
+        self._failure_callback: FailureCallbackType | None = failure_callback
+
+        # Set the event handler callbacks flags
+        self._is_event_callback_async: bool = EventHandler.is_async(event_callback)
+        self._is_success_callback_async: bool | None = (
+            EventHandler.is_async(success_callback) if success_callback else None
+        )
+        self._is_failure_callback_async: bool | None = (
+            EventHandler.is_async(failure_callback) if failure_callback else None
+        )
+
+        # Set the event handler timestamp
+        self._timestamp: datetime = datetime.now()
+
+    async def __call__(self, *args: P.args, **kwargs: P.kwargs) -> None:
+        """
+        Executes the event flow by invoking the associated callbacks.
+        :param args: Positional arguments to be passed to the event callback.
+        :param kwargs: Keyword arguments to be passed to the event callback.
+        :return: Coroutine
+        """
+        # Event callback results
+        results: Any | None = None
+
+        try:
+            # Invoke the event callback.
+            if self._is_event_callback_async:
+                results = await self._event_callback(*args, **kwargs)
+            elif self._force_async:
+                results = await to_thread(self._event_callback, *args, **kwargs)
+            else:
+                results = self._event_callback(*args, **kwargs)
+        except Exception as exception:
+            # Log the exception with error level
+            StdOutLogger.error(name=f"{self.__class__.__name__}", action="Exception:", msg=f"{exception}")
+
+            # Invoke the failure callback and pass the exception.
+            if self._failure_callback:
+                if self._is_failure_callback_async:
+                    await self._failure_callback(exception)
+                elif self._force_async:
+                    await to_thread(self._failure_callback, exception)
+                else:
+                    self._failure_callback(exception)
+        else:
+            # Invoke the success callback and pass the results, if any.
+            if self._success_callback:
+                if self._is_success_callback_async:
+                    if results is None:
+                        await self._success_callback()
+                    else:
+                        await self._success_callback(results)
+                elif self._force_async:
+                    if results is None:
+                        await to_thread(self._success_callback)
+                    else:
+                        await to_thread(self._success_callback, results)
+                else:
+                    if results is None:
+                        self._success_callback()
+                    else:
+                        self._success_callback(results)
+
+    def __str__(self) -> str:
+        """
+        Returns a formatted string representation of the event handler.
+        :return: A string representation of the event handler.
+        """
+        return "".join(
+            [
+                f"Event Callback: `{EventHandler.get_callback_name(callback=self._event_callback)}",
+                "` (Async) | " if self._is_event_callback_async else "` (Sync) | ",
+                (
+                    "Success Callback: `".join(
+                        [
+                            EventHandler.get_callback_name(callback=self._success_callback),
+                            "` (Async) | " if self._is_success_callback_async else "` (Sync) | ",
+                        ]
+                    )
+                    if self._success_callback
+                    else ""
+                ),
+                (
+                    "Failure Callback: `".join(
+                        [
+                            EventHandler.get_callback_name(callback=self._failure_callback),
+                            "` (Async) | " if self._is_failure_callback_async else "` (Sync) | ",
+                        ]
+                    )
+                    if self._failure_callback
+                    else ""
+                ),
+                f"Once: {self.once} | ",
+                f"Force Async: {self.force_async} | ",
+                f"Timestamp: {self.timestamp.strftime('%Y-%m-%d %I:%M:%S %p')}",
+            ]
+        )
+
+
+ + + +
+ + + + + +

Attributes

+ +
+ + + +

+ once + + + + property + + +

+
once: bool
+
+ +
+ +

Determines if the event handler is a one-time subscription.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + bool + + +
+

A boolean value indicating if the event handler is a one-time subscription.

+
+
+
+ +
+ +
+ + + +

+ force_async + + + + property + + +

+
force_async: bool
+
+ +
+ +

Determines whether all callbacks are forced to run asynchronously.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + bool + + +
+

A boolean value indicating if all callbacks are forced to run asynchronously. If True, synchronous callbacks will be converted to run asynchronously in a thread pool, using the asyncio.to_thread function. If False, callbacks will run synchronously or asynchronously as defined.

+
+
+
+ +
+ +
+ + + +

+ timestamp + + + + property + + +

+
timestamp: datetime
+
+ +
+ +

Retrieves the timestamp when the event handler was created.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + datetime + + +
+

The timestamp when the event handler was created.

+
+
+
+ +
+ +

Functions

+ +
+ + +

+ get_callback_name + + + + staticmethod + + +

+
get_callback_name(callback: EventCallbackType | SuccessCallbackType | FailureCallbackType | None) -> str
+
+ +
+ +

Retrieves the name of the provided callback.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ callback + +
+

The callback object.

+
+

+ + TYPE: + EventCallbackType | SuccessCallbackType | FailureCallbackType | None + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + str + + +
+

The name of the callback as a string.

+
+
+ +
+ Source code in pyventus/handlers/event_handler.py +
46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
@staticmethod
+def get_callback_name(
+    callback: EventCallbackType | SuccessCallbackType | FailureCallbackType | None,  # type: ignore[type-arg]
+) -> str:
+    """
+    Retrieves the name of the provided callback.
+    :param callback: The callback object.
+    :return: The name of the callback as a string.
+    """
+    if callback is not None and hasattr(callback, "__name__"):
+        return callback.__name__
+    elif callback is not None and hasattr(callback, "__class__"):
+        return type(callback).__name__
+    else:
+        return "None"
+
+
+
+ +
+ +
+ + +

+ validate_callback + + + + staticmethod + + +

+
validate_callback(callback: EventCallbackType | SuccessCallbackType | FailureCallbackType) -> None
+
+ +
+ +

Validates whether the provided callback is a valid callable object.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ callback + +
+

The callback to be validated.

+
+

+ + TYPE: + EventCallbackType | SuccessCallbackType | FailureCallbackType + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the callback is not a callable object.

+
+
+ +
+ Source code in pyventus/handlers/event_handler.py +
62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
@staticmethod
+def validate_callback(
+    callback: EventCallbackType | SuccessCallbackType | FailureCallbackType,  # type: ignore[type-arg]
+) -> None:
+    """
+    Validates whether the provided callback is a valid callable object.
+    :param callback: The callback to be validated.
+    :return: None
+    :raises PyventusException: If the callback is not a callable object.
+    """
+    if not callable(callback):
+        raise PyventusException(
+            f"'{callback.__name__ if hasattr(callback, '__name__') else callback}' is not a callable object."
+        )
+
+
+
+ +
+ +
+ + +

+ is_async + + + + staticmethod + + +

+
is_async(callback: EventCallbackType | SuccessCallbackType | FailureCallbackType) -> bool
+
+ +
+ +

Checks whether the provided callback is an asynchronous function or method.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ callback + +
+

The callback to be checked.

+
+

+ + TYPE: + EventCallbackType | SuccessCallbackType | FailureCallbackType + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + bool + + +
+

True if the callback is an asynchronous function or method, False otherwise.

+
+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the callback is not a callable or a string.

+
+
+ +
+ Source code in pyventus/handlers/event_handler.py +
77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
@staticmethod
+def is_async(
+    callback: EventCallbackType | SuccessCallbackType | FailureCallbackType,  # type: ignore[type-arg]
+) -> bool:
+    """
+    Checks whether the provided callback is an asynchronous function or method.
+    :param callback: The callback to be checked.
+    :return: `True` if the callback is an asynchronous function or method, `False` otherwise.
+    :raises PyventusException: If the callback is not a callable or a string.
+    """
+    if ismethod(callback) or isfunction(callback) or isbuiltin(callback):
+        return iscoroutinefunction(callback)
+    elif not isclass(callback) and hasattr(callback, "__call__"):  # A callable class instance
+        return iscoroutinefunction(callback.__call__)
+    else:
+        raise PyventusException("Expected a callable or a string, but got: {0}".format(callback))
+
+
+
+ +
+ +
+ + +

+ __init__ + + +

+
__init__(once: bool, force_async: bool, event_callback: EventCallbackType, success_callback: SuccessCallbackType | None = None, failure_callback: FailureCallbackType | None = None) -> None
+
+ +
+ +

Initialize an instance of EventHandler.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ once + +
+

Specifies if the event handler is a one-time subscription.

+
+

+ + TYPE: + bool + +

+
+ force_async + +
+

Determines whether to force all callbacks to run asynchronously. If True, synchronous callbacks will be converted to run asynchronously in a thread pool, using the asyncio.to_thread function. If False, callbacks will run synchronously or asynchronously as defined.

+
+

+ + TYPE: + bool + +

+
+ event_callback + +
+

The callback to be executed when the event occurs.

+
+

+ + TYPE: + EventCallbackType + +

+
+ success_callback + +
+

The callback to be executed when the event execution completes successfully. Default is None.

+
+

+ + TYPE: + SuccessCallbackType | None + + + DEFAULT: + None + +

+
+ failure_callback + +
+

The callback to be executed when the event execution fails. Default is None.

+
+

+ + TYPE: + FailureCallbackType | None + + + DEFAULT: + None + +

+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the provided callbacks are invalid.

+
+
+ +
+ Source code in pyventus/handlers/event_handler.py +
def __init__(
+    self,
+    once: bool,
+    force_async: bool,
+    event_callback: EventCallbackType,  # type: ignore[type-arg]
+    success_callback: SuccessCallbackType | None = None,
+    failure_callback: FailureCallbackType | None = None,
+) -> None:
+    """
+    Initialize an instance of `EventHandler`.
+    :param once: Specifies if the event handler is a one-time subscription.
+    :param force_async: Determines whether to force all callbacks to run asynchronously.
+        If `True`, synchronous callbacks will be converted to run asynchronously in a
+        thread pool, using the `asyncio.to_thread` function. If `False`, callbacks
+        will run synchronously or asynchronously as defined.
+    :param event_callback: The callback to be executed when the event occurs.
+    :param success_callback: The callback to be executed when the event execution
+        completes successfully. Default is `None`.
+    :param failure_callback: The callback to be executed when the event execution
+        fails. Default is `None`.
+    :raises PyventusException: If the provided callbacks are invalid.
+    """
+    # Validate callbacks
+    EventHandler.validate_callback(callback=event_callback)
+
+    if success_callback is not None:
+        EventHandler.validate_callback(callback=success_callback)
+
+    if failure_callback is not None:
+        EventHandler.validate_callback(callback=failure_callback)
+
+    # Validate flags
+    if not isinstance(once, bool):
+        raise PyventusException("The 'once' argument must be a boolean value.")
+    if not isinstance(force_async, bool):
+        raise PyventusException("The 'force_async' argument must be a boolean value.")
+
+    # Set the event handler flags
+    self._once: bool = once
+    self._force_async: bool = force_async
+
+    # Set the event handler callbacks
+    self._event_callback: EventCallbackType = event_callback  # type: ignore[type-arg]
+    self._success_callback: SuccessCallbackType | None = success_callback
+    self._failure_callback: FailureCallbackType | None = failure_callback
+
+    # Set the event handler callbacks flags
+    self._is_event_callback_async: bool = EventHandler.is_async(event_callback)
+    self._is_success_callback_async: bool | None = (
+        EventHandler.is_async(success_callback) if success_callback else None
+    )
+    self._is_failure_callback_async: bool | None = (
+        EventHandler.is_async(failure_callback) if failure_callback else None
+    )
+
+    # Set the event handler timestamp
+    self._timestamp: datetime = datetime.now()
+
+
+
+ +
+ +
+ + +

+ __call__ + + + + async + + +

+
__call__(*args: args, **kwargs: kwargs) -> None
+
+ +
+ +

Executes the event flow by invoking the associated callbacks.

+ + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ args + +
+

Positional arguments to be passed to the event callback.

+
+

+ + TYPE: + args + + + DEFAULT: + () + +

+
+ kwargs + +
+

Keyword arguments to be passed to the event callback.

+
+

+ + TYPE: + kwargs + + + DEFAULT: + {} + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

Coroutine

+
+
+ +
+ Source code in pyventus/handlers/event_handler.py +
async def __call__(self, *args: P.args, **kwargs: P.kwargs) -> None:
+    """
+    Executes the event flow by invoking the associated callbacks.
+    :param args: Positional arguments to be passed to the event callback.
+    :param kwargs: Keyword arguments to be passed to the event callback.
+    :return: Coroutine
+    """
+    # Event callback results
+    results: Any | None = None
+
+    try:
+        # Invoke the event callback.
+        if self._is_event_callback_async:
+            results = await self._event_callback(*args, **kwargs)
+        elif self._force_async:
+            results = await to_thread(self._event_callback, *args, **kwargs)
+        else:
+            results = self._event_callback(*args, **kwargs)
+    except Exception as exception:
+        # Log the exception with error level
+        StdOutLogger.error(name=f"{self.__class__.__name__}", action="Exception:", msg=f"{exception}")
+
+        # Invoke the failure callback and pass the exception.
+        if self._failure_callback:
+            if self._is_failure_callback_async:
+                await self._failure_callback(exception)
+            elif self._force_async:
+                await to_thread(self._failure_callback, exception)
+            else:
+                self._failure_callback(exception)
+    else:
+        # Invoke the success callback and pass the results, if any.
+        if self._success_callback:
+            if self._is_success_callback_async:
+                if results is None:
+                    await self._success_callback()
+                else:
+                    await self._success_callback(results)
+            elif self._force_async:
+                if results is None:
+                    await to_thread(self._success_callback)
+                else:
+                    await to_thread(self._success_callback, results)
+            else:
+                if results is None:
+                    self._success_callback()
+                else:
+                    self._success_callback(results)
+
+
+
+ +
+ + + +
+ +
+ +


+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/event-linker/index.html b/0.6/api/event-linker/index.html new file mode 100644 index 0000000..11d9c1f --- /dev/null +++ b/0.6/api/event-linker/index.html @@ -0,0 +1,6707 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Event Linker - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

EventLinker class

+ + +
+ + + + +
+ + +

A base class that acts as a global registry for events and callbacks linkage. It provides +a centralized mechanism for managing event subscriptions, unsubscriptions, and retrieval +of events and their associated event handlers.

+

Notes:

+
    +
  • +

    The EventLinker class can be subclassed to create specific namespaces or contexts + for managing events and event handlers separately. By subclassing the EventLinker, + users can organize event subscriptions and handlers within different scopes, providing + modularity and flexibility in event management. Subclassing also allows users to + configure settings of the EventLinker to suit their specific use cases.

    +
  • +
  • +

    The EventLinker has been implemented with thread safety in mind. All of its methods + synchronize access to prevent race conditions when managing events and event handlers + across multiple threads. This ensures that concurrent operations on the EventLinker + are properly synchronized, avoiding data inconsistencies and race conditions.

    +
  • +
+
+

Read more in the +Pyventus docs for Event Linker.

+ + + + + + +
+ Source code in pyventus/linkers/event_linker.py +
 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
class EventLinker:
+    """
+    A base class that acts as a global registry for events and callbacks linkage. It provides
+    a centralized mechanism for managing event subscriptions, unsubscriptions, and retrieval
+    of events and their associated event handlers.
+
+    **Notes:**
+
+    -   The `EventLinker` class can be subclassed to create specific namespaces or contexts
+        for managing events and event handlers separately. By subclassing the `EventLinker`,
+        users can organize event subscriptions and handlers within different scopes, providing
+        modularity and flexibility in event management. Subclassing also allows users to
+        configure settings of the `EventLinker` to suit their specific use cases.
+
+    -   The `EventLinker` has been implemented with *thread safety* in mind. All of its methods
+        synchronize access to prevent race conditions when managing events and event handlers
+        across multiple threads. This ensures that concurrent operations on the `EventLinker`
+        are properly synchronized, avoiding data inconsistencies and race conditions.
+
+    ---
+    Read more in the
+    [Pyventus docs for Event Linker](https://mdapena.github.io/pyventus/tutorials/event-linker/).
+    """
+
+    @final
+    class EventLinkageWrapper:
+        """
+        A class that serves as a wrapper for event linking operations, providing a simplified
+        interface for subscribing events with their corresponding callbacks.
+
+        **Notes:**
+
+        -   This class can be used as either a decorator or a context manager. When used as a
+            decorator, it automatically subscribes the decorated callback to the provided events.
+            When used as a context manager with the `with` statement, it allows multiple callbacks
+            to be associated with the provided events within the context block.
+
+        -   This class is not intended to be subclassed or manually created.
+            The `EventLinkageWrapper` is used internally as a wrapper for event
+            linking operations.
+        """
+
+        # Event linkage wrapper attributes
+        __slots__ = (
+            "_event_linker",
+            "_events",
+            "_once",
+            "_force_async",
+            "_event_callback",
+            "_success_callback",
+            "_failure_callback",
+        )
+
+        @property
+        def on_event(self) -> Callable[[EventCallbackType], EventCallbackType]:  # type: ignore[type-arg]
+            """
+            Decorator that sets the main callback for the event. This callback
+            will be invoked when the associated event occurs.
+            :return: The decorated callback.
+            """
+
+            def _wrapper(callback: EventCallbackType) -> EventCallbackType:  # type: ignore[type-arg]
+                self._event_callback = callback
+                return callback
+
+            return _wrapper
+
+        @property
+        def on_success(self) -> Callable[[SuccessCallbackType], SuccessCallbackType]:
+            """
+            Decorator that sets the success callback. This callback will be
+            invoked when the event execution completes successfully.
+            :return: The decorated callback.
+            """
+
+            def _wrapper(callback: SuccessCallbackType) -> SuccessCallbackType:
+                self._success_callback = callback
+                return callback
+
+            return _wrapper
+
+        @property
+        def on_failure(self) -> Callable[[FailureCallbackType], FailureCallbackType]:
+            """
+            Decorator that sets the failure callback. This callback
+            will be invoked when the event execution fails.
+            :return: The decorated callback.
+            """
+
+            def _wrapper(callback: FailureCallbackType) -> FailureCallbackType:
+                self._failure_callback = callback
+                return callback
+
+            return _wrapper
+
+        def __init__(
+            self,
+            *events: SubscribableEventType,
+            event_linker: Type["EventLinker"],
+            force_async: bool,
+            once: bool,
+        ) -> None:
+            """
+            Initialize an instance of `EventLinkageWrapper`.
+            :param events: The events to subscribe/link to.
+            :param event_linker: The event linker instance used for subscription.
+            :param force_async: Determines whether to force all callbacks to run asynchronously.
+            :param once: Specifies if the callback is a one-time subscription.
+            """
+            self._event_linker: Type[EventLinker] = event_linker
+            self._events: Tuple[SubscribableEventType, ...] = events
+
+            self._once: bool = once
+            self._force_async: bool = force_async
+            self._event_callback: EventCallbackType | None = None  # type: ignore[type-arg, no-redef, assignment]
+            self._success_callback: SuccessCallbackType | None = None  # type: ignore[no-redef, assignment]
+            self._failure_callback: FailureCallbackType | None = None  # type: ignore[no-redef, assignment]
+
+        def __call__(self, callback: EventCallbackType) -> EventCallbackType:  # type: ignore[type-arg]
+            """
+            Subscribes the provided events to the decorated callback.
+            :param callback: The callback to associate with the events.
+            :return: The decorated callback.
+            """
+            self._event_callback = callback
+            self._event_linker.subscribe(
+                *self._events,
+                event_callback=self._event_callback,
+                success_callback=None,
+                failure_callback=None,
+                force_async=self._force_async,
+                once=self._once,
+            )
+            del self
+            return callback
+
+        def __enter__(self) -> "EventLinker.EventLinkageWrapper":
+            """
+            Enters the linkage context block, allowing multiple
+            callbacks to be associated with the events.
+            :return: The context manager object
+            """
+            return self
+
+        def __exit__(
+            self, exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
+        ) -> None:
+            """
+            Exits the linkage context block, subscribing the provided callbacks within
+            the context to the specified events. Performs any necessary cleanup.
+            :param exc_type: The type of the exception raised, if any.
+            :param exc_val: The exception object raised, if any.
+            :param exc_tb: The traceback information, if any.
+            :return: None
+            """
+            self._event_linker.subscribe(
+                *self._events,
+                event_callback=self._event_callback,
+                success_callback=self._success_callback,
+                failure_callback=self._failure_callback,
+                force_async=self._force_async,
+                once=self._once,
+            )
+            del self
+
+    __registry: Dict[str, List[EventHandler]] = {}
+    """ 
+    A dictionary that serves as a container for storing events and their associated event 
+    handlers. The keys represent registered event names, and the values are lists of event
+    handler objects associated with each event.
+    """
+
+    __max_event_handlers: int | None = None
+    """The maximum number of `EventHandlers` allowed per event, or `None` if there is no limit."""
+
+    __default_success_callback: SuccessCallbackType | None = None
+    """ 
+    Represents the default success callback function that will be assigned to event handlers in 
+    the absence of a specific success callback. This callback will be executed upon successful 
+    completion of the event execution in each event handler.
+    """
+
+    __default_failure_callback: FailureCallbackType | None = None
+    """
+    Represents the default failure callback function that will be assigned to event handlers in 
+    the absence of a specific failure callback. This callback will be executed when the event 
+    execution fails in each event handler.
+    """
+
+    __thread_lock: Lock = Lock()
+    """
+    A `threading.Lock` object used for thread synchronization when accessing and modifying the 
+    event registry to ensure thread safety. It prevents multiple threads from accessing and 
+    modifying the registry simultaneously.
+    """
+
+    __logger: Logger = Logger(name="EventLinker", debug=bool(gettrace() is not None))
+    """
+    The logger used to debug and log information within the `EventLinker` class. The debug mode
+    of the logger depends on the execution environment and the value returned by the `gettrace()`
+    function. The debug mode can also be influenced by subclassing and overridden in subclasses.
+    """
+
+    def __init_subclass__(
+        cls,
+        max_event_handlers: int | None = None,
+        default_success_callback: SuccessCallbackType | None = None,
+        default_failure_callback: FailureCallbackType | None = None,
+        debug: bool | None = None,
+        **kwargs: Any,
+    ) -> None:
+        """
+        Initialize a subclass of `EventLinker`.
+
+        By default, this method sets up the main registry and thread lock object, but
+        it can also be used to configure specific settings of the `EventLinker` subclass.
+
+        :param max_event_handlers: The maximum number of event handlers allowed per event,
+            or `None` if there is no limit.
+        :param default_success_callback: The default callback to assign as the success
+            callback in the event handlers when no specific success callback is provided.
+        :param default_failure_callback: The default callback to assign as the failure
+            callback in the event handlers when no specific failure callback is provided.
+        :param debug: Specifies the debug mode for the subclass logger. If `None`,
+            it is determined based on the execution environment.
+        :param kwargs: The keyword arguments to pass to the superclass
+            `__init_subclass__` method.
+        :raises PyventusException: If `max_event_handlers` is less than 1 or
+            if the provided callbacks are invalid.
+        :return: None
+        """
+        # Call the parent class' __init_subclass__ method
+        super().__init_subclass__(**kwargs)
+
+        # Initialize the main registry
+        cls.__registry = {}
+
+        # Create a lock object for thread synchronization
+        cls.__thread_lock = Lock()
+
+        # Validate the max_event_handlers argument
+        if max_event_handlers is not None and max_event_handlers < 1:
+            raise PyventusException("The 'max_event_handlers' argument must be greater than or equal to 1.")
+
+        # Set the maximum number of event handlers per event
+        cls.__max_event_handlers = max_event_handlers
+
+        # Validate the default success callback, if any
+        if default_success_callback is not None:
+            EventHandler.validate_callback(callback=default_success_callback)
+
+        # Set the default success callback
+        cls.__default_success_callback = default_success_callback
+
+        # Validate the default failure callback, if any
+        if default_failure_callback is not None:
+            EventHandler.validate_callback(callback=default_failure_callback)
+
+        # Set the default failure callback
+        cls.__default_failure_callback = default_failure_callback
+
+        # Validate the debug argument
+        if debug is not None and not isinstance(debug, bool):
+            raise PyventusException("The 'debug' argument must be a boolean value.")
+
+        # Set up the logger
+        cls.__logger = Logger(
+            name=cls.__name__,
+            debug=debug if debug is not None else bool(gettrace() is not None),
+        )
+
+    @classmethod
+    def _get_logger(cls) -> Logger:
+        """
+        Retrieve the class-level logger instance.
+        :return: The class-level logger instance used to debug and log
+            information within the `EventLinker` class.
+        """
+        return cls.__logger
+
+    @classmethod
+    def get_event_name(cls, event: SubscribableEventType) -> str:
+        """
+        Determines the name of the event.
+        :param event: The event to obtain the name for.
+        :return: A string that represents the event name.
+        :raises PyventusException: If the `event` argument is invalid
+            or if the event is not supported.
+        """
+        # Validate the event argument
+        if event is None:
+            raise PyventusException("The 'event' argument cannot be None.")
+
+        if event is Ellipsis:
+            # If the event is Ellipsis, return its type name
+            return type(event).__name__
+        elif isinstance(event, str):
+            if not event:
+                raise PyventusException("String events cannot be empty.")
+            # If the event is a non-empty string, return it as the event name
+            return event
+        elif isinstance(event, type):
+            if not is_dataclass(event) and not issubclass(event, Exception):
+                raise PyventusException("Type events must be either a dataclass or an exception.")
+            # If the event is either a dataclass type or an exception type, return its type name
+            return event.__name__
+        else:
+            # If the event is not supported, raise an exception
+            raise PyventusException("Unsupported event")
+
+    @classmethod
+    def get_max_event_handlers(cls) -> int | None:
+        """
+        Retrieve the maximum number of event handlers allowed per event.
+        :return: The maximum number of event handlers or `None` if there is no limit.
+        """
+        return cls.__max_event_handlers
+
+    @classmethod
+    def get_default_success_callback(cls) -> SuccessCallbackType | None:
+        """
+        Retrieve the default callback to be assigned as the success callback
+        in the event handlers when no specific success callback is provided.
+        :return: The default success callback or `None` if not set.
+        """
+        return cls.__default_success_callback
+
+    @classmethod
+    def get_default_failure_callback(cls) -> FailureCallbackType | None:
+        """
+        Retrieve the default callback to be assigned as the failure callback
+        in the event handlers when no specific failure callback is provided.
+        :return: The default failure callback or `None` if not set.
+        """
+        return cls.__default_failure_callback
+
+    @classmethod
+    def get_registry(cls) -> Mapping[str, List[EventHandler]]:
+        """
+        Retrieve the main registry mapping.
+        :return: A mapping of event names to event handlers.
+        """
+        with cls.__thread_lock:
+            return {event_name: list(event_handlers) for event_name, event_handlers in cls.__registry.items()}
+
+    @classmethod
+    def get_events(cls) -> List[str]:
+        """
+        Retrieve a list of all the registered events.
+        :return: A list of event names.
+        """
+        with cls.__thread_lock:
+            return list(cls.__registry.keys())
+
+    @classmethod
+    def get_event_handlers(cls) -> List[EventHandler]:
+        """
+        Retrieve a list of non-duplicated event handlers
+        that have been registered across all events.
+        :return: A list of event handlers.
+        """
+        with cls.__thread_lock:
+            return list(
+                {event_handler for event_handlers in cls.__registry.values() for event_handler in event_handlers}
+            )
+
+    @classmethod
+    def get_events_by_event_handler(cls, event_handler: EventHandler) -> List[str]:
+        """
+        Retrieve a list of event names associated with the provided event handler.
+        :param event_handler: The handler to retrieve the associated events for.
+        :return: A list of event names.
+        :raise PyventusException: If the `event_handler` argument is `None` or invalid.
+        """
+        # Validate the event_handler argument
+        if event_handler is None:
+            raise PyventusException("The 'event_handler' argument cannot be None.")
+        if not isinstance(event_handler, EventHandler):
+            raise PyventusException("The 'event_handler' argument must be an instance of the EventHandler class.")
+
+        with cls.__thread_lock:
+            return [
+                event_name for event_name, event_handlers in cls.__registry.items() if event_handler in event_handlers
+            ]
+
+    @classmethod
+    def get_event_handlers_by_events(cls, *events: SubscribableEventType) -> List[EventHandler]:
+        """
+        Retrieve a list of non-duplicated event handlers associated with the provided events.
+        :param events: Events to retrieve the event handlers for.
+        :return: A list of event handlers.
+        :raise PyventusException: If the `events` argument is `None`, empty or unsupported.
+        """
+        # Validate the events argument
+        if events is None or len(events) <= 0:
+            raise PyventusException("The 'events' argument cannot be None or empty.")
+
+        # Retrieve all unique event names
+        event_names: Set[str] = {cls.get_event_name(event=event) for event in events}
+
+        with cls.__thread_lock:
+            return list(
+                {event_handler for event_name in event_names for event_handler in cls.__registry.get(event_name, [])}
+            )
+
+    @classmethod
+    def once(cls, *events: SubscribableEventType, force_async: bool = False) -> EventLinkageWrapper:
+        """
+        Decorator that allows you to conveniently subscribe callbacks to the provided events
+        for a single invocation.
+
+        This method can be used as either a decorator or a context manager. When used as a
+        decorator, it automatically subscribes the decorated callback to the provided events.
+        When used as a context manager with the `with` statement, it allows multiple callbacks
+        to be associated with the provided events within the context block.
+
+        :param events: The events to subscribe to.
+        :param force_async: Determines whether to force all callbacks to run asynchronously.
+            If `True`, synchronous callbacks will be converted to run asynchronously in a
+            thread pool, using the `asyncio.to_thread` function. If `False`, callbacks
+            will run synchronously or asynchronously as defined.
+        :return: The decorator that wraps the callback.
+        """
+        return EventLinker.EventLinkageWrapper(*events, event_linker=cls, force_async=force_async, once=True)
+
+    @classmethod
+    def on(cls, *events: SubscribableEventType, force_async: bool = False) -> EventLinkageWrapper:
+        """
+        Decorator that allows you to conveniently subscribe callbacks to the provided events.
+
+        This method can be used as either a decorator or a context manager. When used as a
+        decorator, it automatically subscribes the decorated callback to the provided events.
+        When used as a context manager with the `with` statement, it allows multiple callbacks
+        to be associated with the provided events within the context block.
+
+        :param events: The events to subscribe to.
+        :param force_async: Determines whether to force all callbacks to run asynchronously.
+            If `True`, synchronous callbacks will be converted to run asynchronously in a
+            thread pool, using the `asyncio.to_thread` function. If `False`, callbacks
+            will run synchronously or asynchronously as defined.
+        :return: The decorator that wraps the callback.
+        """
+        return EventLinker.EventLinkageWrapper(*events, event_linker=cls, force_async=force_async, once=False)
+
+    @classmethod
+    def subscribe(
+        cls,
+        *events: SubscribableEventType,
+        event_callback: EventCallbackType,  # type: ignore[type-arg]
+        success_callback: SuccessCallbackType | None = None,
+        failure_callback: FailureCallbackType | None = None,
+        force_async: bool = False,
+        once: bool = False,
+    ) -> EventHandler:
+        """
+        Subscribes callbacks to the provided events.
+        :param events: The events to subscribe to.
+        :param event_callback: The callback to be executed when the event occurs.
+        :param success_callback: The callback to be executed when the event execution completes
+            successfully.
+        :param failure_callback: The callback to be executed when the event execution fails.
+        :param force_async: Determines whether to force all callbacks to run asynchronously.
+            If `True`, synchronous callbacks will be converted to run asynchronously in a
+            thread pool, using the `asyncio.to_thread` function. If `False`, callbacks
+            will run synchronously or asynchronously as defined.
+        :param once: Specifies if the event handler is a one-time subscription.
+        :return: The event handler object associated with the given events.
+        """
+        # Validate the events argument
+        if events is None or len(events) <= 0:
+            raise PyventusException("The 'events' argument cannot be None or empty.")
+
+        # Retrieve all unique event names
+        event_names: Set[str] = {cls.get_event_name(event=event) for event in events}
+
+        # Acquire the lock to ensure exclusive access to the main registry
+        with cls.__thread_lock:
+            # Check if the maximum number of handlers property is set
+            if cls.__max_event_handlers is not None:
+                # For each event name, check if the maximum number of handlers for the event has been exceeded
+                for event_name in event_names:
+                    if len(cls.__registry.get(event_name, [])) >= cls.__max_event_handlers:
+                        raise PyventusException(
+                            f"The event '{event_name}' has exceeded the maximum number of handlers allowed. The "
+                            f"'{EventHandler.get_callback_name(callback=event_callback)}'"
+                            f" callback cannot be subscribed."
+                        )
+
+            # Create a new event handler
+            event_handler: EventHandler = EventHandler(
+                event_callback=event_callback,
+                success_callback=success_callback if success_callback else cls.__default_success_callback,
+                failure_callback=failure_callback if failure_callback else cls.__default_failure_callback,
+                force_async=force_async,
+                once=once,
+            )
+
+            # For each event name, register the event handler
+            for event_name in event_names:
+                # If the event name is not present in the main registry, create a new empty list for it
+                if event_name not in cls.__registry:
+                    cls.__registry[event_name] = []
+
+                # Append the event handler to the list of handlers for the event
+                cls.__registry[event_name].append(event_handler)
+
+                # Log the subscription if debug is enabled
+                if cls.__logger.debug_enabled:  # pragma: no cover
+                    cls.__logger.debug(
+                        action="Subscribed:",
+                        msg=f"{event_handler} {StdOutColors.PURPLE}Event:{StdOutColors.DEFAULT} {event_name}",
+                    )
+
+        # Return the new event handler
+        return event_handler
+
+    @classmethod
+    def unsubscribe(cls, *events: SubscribableEventType, event_handler: EventHandler) -> bool:
+        """
+        Unsubscribes an event handler from the provided events. If there are no more
+        handlers for a particular event, that event is also removed from the registry.
+        :param events: The events to unsubscribe from.
+        :param event_handler: The event handler to unsubscribe.
+        :return: `True` if the event handler associated with the events was found and
+            removed, `False` otherwise.
+        :raises PyventusException: If the `events` argument is `None`, empty, unsupported,
+            or if the `event_handler` argument is `None`, invalid.
+        """
+        # Validate the events argument
+        if events is None or len(events) <= 0:
+            raise PyventusException("The 'events' argument cannot be None or empty.")
+
+        # Validate the event_handler argument
+        if event_handler is None:
+            raise PyventusException("The 'event_handler' argument cannot be None.")
+        if not isinstance(event_handler, EventHandler):
+            raise PyventusException("The 'event_handler' argument must be an instance of the EventHandler class.")
+
+        # Retrieve all unique event names
+        event_names: Set[str] = {cls.get_event_name(event=event) for event in events}
+
+        # A flag indicating whether the event handler was successfully removed
+        deleted: bool = False
+
+        # Obtain the lock to ensure exclusive access to the main registry
+        with cls.__thread_lock:
+            # For each event name, check and remove the event handler if found
+            for event_name in event_names:
+                # Get the list of event handlers for the event name, or an empty list if it doesn't exist
+                event_handlers = cls.__registry.get(event_name, [])
+
+                # Check if the event handler is present in the list of handlers for the event
+                if event_handler in event_handlers:
+                    # Remove the event handler from the list of handlers
+                    event_handlers.remove(event_handler)
+                    deleted = True
+
+                    # If there are no more handlers for the event, remove the event name from the registry
+                    if not event_handlers:
+                        cls.__registry.pop(event_name)
+
+                    # Log the unsubscription if debug is enabled
+                    if cls.__logger.debug_enabled:  # pragma: no cover
+                        cls.__logger.debug(
+                            action="Unsubscribed:",
+                            msg=f"{event_handler} {StdOutColors.PURPLE}Event:{StdOutColors.DEFAULT} {event_name}",
+                        )
+
+        # Return the flag indicating whether the event handler was deleted
+        return deleted
+
+    @classmethod
+    def remove_event_handler(cls, event_handler: EventHandler) -> bool:
+        """
+        Removes an event handler from all subscribed events. If there are no more
+        handlers for a particular event, that event is also removed from the registry.
+        :param event_handler: The event handler to remove.
+        :return: `True` if the event handler was found and removed, `False` otherwise.
+        :raises PyventusException: If the `event_handler` argument is `None` or invalid.
+        """
+        # Validate the event_handler argument
+        if event_handler is None:
+            raise PyventusException("The 'event_handler' argument cannot be None.")
+        if not isinstance(event_handler, EventHandler):
+            raise PyventusException("The 'event_handler' argument must be an instance of the EventHandler class.")
+
+        # A flag indicating if the event handler gets removed
+        deleted: bool = False
+
+        # Acquire the lock to ensure exclusive access to the main registry
+        with cls.__thread_lock:
+            # Iterate through each event and its associated handlers in the main registry
+            for event_name in list(cls.__registry.keys()):
+                # Get the list of event handlers for the event name, or an empty list if it doesn't exist
+                event_handlers = cls.__registry.get(event_name, [])
+
+                # Check if the event handler is present in the list of handlers for the event
+                if event_handler in event_handlers:
+                    # Remove the event handler from the list of handlers
+                    event_handlers.remove(event_handler)
+                    deleted = True
+
+                    # If there are no more handlers for the event, remove the event from the registry
+                    if not event_handlers:
+                        cls.__registry.pop(event_name)
+
+                    # Log the removal of the event handler if debug is enabled
+                    if cls.__logger.debug_enabled:  # pragma: no cover
+                        cls.__logger.debug(
+                            action="Handler Removed:",
+                            msg=f"{event_handler} {StdOutColors.PURPLE}Event:{StdOutColors.DEFAULT} {event_name}",
+                        )
+
+        # Return the flag indicating if the event handler was found and deleted
+        return deleted
+
+    @classmethod
+    def remove_event(cls, event: SubscribableEventType) -> bool:
+        """
+        Removes an event from the registry, including all its event handler subscriptions.
+        :param event: The event to remove.
+        :return: `True` if the event was found and removed, `False` otherwise.
+        """
+        # Get the event name
+        event_name: str = cls.get_event_name(event=event)
+
+        # Acquire the lock to ensure exclusive access to the main registry
+        with cls.__thread_lock:
+            # Check if the event name is present in the main registry
+            if event_name in cls.__registry:
+                # Remove the event from the registry
+                cls.__registry.pop(event_name)
+
+                # Log the removal of the event if debug is enabled
+                if cls.__logger.debug_enabled:  # pragma: no cover
+                    cls.__logger.debug(action="Event Removed:", msg=f"{event_name}")
+
+                # Return True to indicate successful removal
+                return True
+
+        return False
+
+    @classmethod
+    def remove_all(cls) -> bool:
+        """
+        Removes all events and their associated event handlers from the registry.
+        :return: `True` if the events were found and removed, `False` otherwise.
+        """
+        # Acquire the lock to ensure exclusive access to the main registry
+        with cls.__thread_lock:
+            if cls.__registry:
+                # Clear the main registry
+                cls.__registry.clear()
+
+                # Log a debug message if debug is enabled
+                if cls.__logger.debug_enabled:  # pragma: no cover
+                    cls.__logger.debug(msg="All events and handlers were successfully removed.")
+
+                return True
+            else:
+                # Log a debug message if debug is enabled
+                if cls.__logger.debug_enabled:  # pragma: no cover
+                    cls.__logger.debug(msg="The event registry is already empty.")
+
+                return False
+
+
+ + + +
+ + + + + + +

Classes

+ +
+ + + +

+ EventLinkageWrapper + + +

+ + +
+ + +

A class that serves as a wrapper for event linking operations, providing a simplified +interface for subscribing events with their corresponding callbacks.

+

Notes:

+
    +
  • +

    This class can be used as either a decorator or a context manager. When used as a + decorator, it automatically subscribes the decorated callback to the provided events. + When used as a context manager with the with statement, it allows multiple callbacks + to be associated with the provided events within the context block.

    +
  • +
  • +

    This class is not intended to be subclassed or manually created. + The EventLinkageWrapper is used internally as a wrapper for event + linking operations.

    +
  • +
+ + + + + + +
+ Source code in pyventus/linkers/event_linker.py +
@final
+class EventLinkageWrapper:
+    """
+    A class that serves as a wrapper for event linking operations, providing a simplified
+    interface for subscribing events with their corresponding callbacks.
+
+    **Notes:**
+
+    -   This class can be used as either a decorator or a context manager. When used as a
+        decorator, it automatically subscribes the decorated callback to the provided events.
+        When used as a context manager with the `with` statement, it allows multiple callbacks
+        to be associated with the provided events within the context block.
+
+    -   This class is not intended to be subclassed or manually created.
+        The `EventLinkageWrapper` is used internally as a wrapper for event
+        linking operations.
+    """
+
+    # Event linkage wrapper attributes
+    __slots__ = (
+        "_event_linker",
+        "_events",
+        "_once",
+        "_force_async",
+        "_event_callback",
+        "_success_callback",
+        "_failure_callback",
+    )
+
+    @property
+    def on_event(self) -> Callable[[EventCallbackType], EventCallbackType]:  # type: ignore[type-arg]
+        """
+        Decorator that sets the main callback for the event. This callback
+        will be invoked when the associated event occurs.
+        :return: The decorated callback.
+        """
+
+        def _wrapper(callback: EventCallbackType) -> EventCallbackType:  # type: ignore[type-arg]
+            self._event_callback = callback
+            return callback
+
+        return _wrapper
+
+    @property
+    def on_success(self) -> Callable[[SuccessCallbackType], SuccessCallbackType]:
+        """
+        Decorator that sets the success callback. This callback will be
+        invoked when the event execution completes successfully.
+        :return: The decorated callback.
+        """
+
+        def _wrapper(callback: SuccessCallbackType) -> SuccessCallbackType:
+            self._success_callback = callback
+            return callback
+
+        return _wrapper
+
+    @property
+    def on_failure(self) -> Callable[[FailureCallbackType], FailureCallbackType]:
+        """
+        Decorator that sets the failure callback. This callback
+        will be invoked when the event execution fails.
+        :return: The decorated callback.
+        """
+
+        def _wrapper(callback: FailureCallbackType) -> FailureCallbackType:
+            self._failure_callback = callback
+            return callback
+
+        return _wrapper
+
+    def __init__(
+        self,
+        *events: SubscribableEventType,
+        event_linker: Type["EventLinker"],
+        force_async: bool,
+        once: bool,
+    ) -> None:
+        """
+        Initialize an instance of `EventLinkageWrapper`.
+        :param events: The events to subscribe/link to.
+        :param event_linker: The event linker instance used for subscription.
+        :param force_async: Determines whether to force all callbacks to run asynchronously.
+        :param once: Specifies if the callback is a one-time subscription.
+        """
+        self._event_linker: Type[EventLinker] = event_linker
+        self._events: Tuple[SubscribableEventType, ...] = events
+
+        self._once: bool = once
+        self._force_async: bool = force_async
+        self._event_callback: EventCallbackType | None = None  # type: ignore[type-arg, no-redef, assignment]
+        self._success_callback: SuccessCallbackType | None = None  # type: ignore[no-redef, assignment]
+        self._failure_callback: FailureCallbackType | None = None  # type: ignore[no-redef, assignment]
+
+    def __call__(self, callback: EventCallbackType) -> EventCallbackType:  # type: ignore[type-arg]
+        """
+        Subscribes the provided events to the decorated callback.
+        :param callback: The callback to associate with the events.
+        :return: The decorated callback.
+        """
+        self._event_callback = callback
+        self._event_linker.subscribe(
+            *self._events,
+            event_callback=self._event_callback,
+            success_callback=None,
+            failure_callback=None,
+            force_async=self._force_async,
+            once=self._once,
+        )
+        del self
+        return callback
+
+    def __enter__(self) -> "EventLinker.EventLinkageWrapper":
+        """
+        Enters the linkage context block, allowing multiple
+        callbacks to be associated with the events.
+        :return: The context manager object
+        """
+        return self
+
+    def __exit__(
+        self, exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
+    ) -> None:
+        """
+        Exits the linkage context block, subscribing the provided callbacks within
+        the context to the specified events. Performs any necessary cleanup.
+        :param exc_type: The type of the exception raised, if any.
+        :param exc_val: The exception object raised, if any.
+        :param exc_tb: The traceback information, if any.
+        :return: None
+        """
+        self._event_linker.subscribe(
+            *self._events,
+            event_callback=self._event_callback,
+            success_callback=self._success_callback,
+            failure_callback=self._failure_callback,
+            force_async=self._force_async,
+            once=self._once,
+        )
+        del self
+
+
+ + + +
+ + + + + +

Attributes

+ +
+ + + +
+ on_event + + + + property + + +
+
on_event: Callable[[EventCallbackType], EventCallbackType]
+
+ +
+ +

Decorator that sets the main callback for the event. This callback +will be invoked when the associated event occurs.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + Callable[[EventCallbackType], EventCallbackType] + + +
+

The decorated callback.

+
+
+
+ +
+ +
+ + + +
+ on_success + + + + property + + +
+
on_success: Callable[[SuccessCallbackType], SuccessCallbackType]
+
+ +
+ +

Decorator that sets the success callback. This callback will be +invoked when the event execution completes successfully.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + Callable[[SuccessCallbackType], SuccessCallbackType] + + +
+

The decorated callback.

+
+
+
+ +
+ +
+ + + +
+ on_failure + + + + property + + +
+
on_failure: Callable[[FailureCallbackType], FailureCallbackType]
+
+ +
+ +

Decorator that sets the failure callback. This callback +will be invoked when the event execution fails.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + Callable[[FailureCallbackType], FailureCallbackType] + + +
+

The decorated callback.

+
+
+
+ +
+ +

Functions

+ +
+ + +
+ __init__ + + +
+
__init__(*events: SubscribableEventType, event_linker: Type[EventLinker], force_async: bool, once: bool) -> None
+
+ +
+ +

Initialize an instance of EventLinkageWrapper.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ events + +
+

The events to subscribe/link to.

+
+

+ + TYPE: + SubscribableEventType + + + DEFAULT: + () + +

+
+ event_linker + +
+

The event linker instance used for subscription.

+
+

+ + TYPE: + Type[EventLinker] + +

+
+ force_async + +
+

Determines whether to force all callbacks to run asynchronously.

+
+

+ + TYPE: + bool + +

+
+ once + +
+

Specifies if the callback is a one-time subscription.

+
+

+ + TYPE: + bool + +

+
+ +
+ Source code in pyventus/linkers/event_linker.py +
def __init__(
+    self,
+    *events: SubscribableEventType,
+    event_linker: Type["EventLinker"],
+    force_async: bool,
+    once: bool,
+) -> None:
+    """
+    Initialize an instance of `EventLinkageWrapper`.
+    :param events: The events to subscribe/link to.
+    :param event_linker: The event linker instance used for subscription.
+    :param force_async: Determines whether to force all callbacks to run asynchronously.
+    :param once: Specifies if the callback is a one-time subscription.
+    """
+    self._event_linker: Type[EventLinker] = event_linker
+    self._events: Tuple[SubscribableEventType, ...] = events
+
+    self._once: bool = once
+    self._force_async: bool = force_async
+    self._event_callback: EventCallbackType | None = None  # type: ignore[type-arg, no-redef, assignment]
+    self._success_callback: SuccessCallbackType | None = None  # type: ignore[no-redef, assignment]
+    self._failure_callback: FailureCallbackType | None = None  # type: ignore[no-redef, assignment]
+
+
+
+ +
+ +
+ + +
+ __call__ + + +
+
__call__(callback: EventCallbackType) -> EventCallbackType
+
+ +
+ +

Subscribes the provided events to the decorated callback.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ callback + +
+

The callback to associate with the events.

+
+

+ + TYPE: + EventCallbackType + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + EventCallbackType + + +
+

The decorated callback.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
def __call__(self, callback: EventCallbackType) -> EventCallbackType:  # type: ignore[type-arg]
+    """
+    Subscribes the provided events to the decorated callback.
+    :param callback: The callback to associate with the events.
+    :return: The decorated callback.
+    """
+    self._event_callback = callback
+    self._event_linker.subscribe(
+        *self._events,
+        event_callback=self._event_callback,
+        success_callback=None,
+        failure_callback=None,
+        force_async=self._force_async,
+        once=self._once,
+    )
+    del self
+    return callback
+
+
+
+ +
+ +
+ + +
+ __enter__ + + +
+
__enter__() -> EventLinkageWrapper
+
+ +
+ +

Enters the linkage context block, allowing multiple +callbacks to be associated with the events.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + EventLinkageWrapper + + +
+

The context manager object

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
def __enter__(self) -> "EventLinker.EventLinkageWrapper":
+    """
+    Enters the linkage context block, allowing multiple
+    callbacks to be associated with the events.
+    :return: The context manager object
+    """
+    return self
+
+
+
+ +
+ +
+ + +
+ __exit__ + + +
+
__exit__(exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None) -> None
+
+ +
+ +

Exits the linkage context block, subscribing the provided callbacks within +the context to the specified events. Performs any necessary cleanup.

+ + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ exc_type + +
+

The type of the exception raised, if any.

+
+

+ + TYPE: + Type[BaseException] | None + +

+
+ exc_val + +
+

The exception object raised, if any.

+
+

+ + TYPE: + BaseException | None + +

+
+ exc_tb + +
+

The traceback information, if any.

+
+

+ + TYPE: + TracebackType | None + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
def __exit__(
+    self, exc_type: Type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
+) -> None:
+    """
+    Exits the linkage context block, subscribing the provided callbacks within
+    the context to the specified events. Performs any necessary cleanup.
+    :param exc_type: The type of the exception raised, if any.
+    :param exc_val: The exception object raised, if any.
+    :param exc_tb: The traceback information, if any.
+    :return: None
+    """
+    self._event_linker.subscribe(
+        *self._events,
+        event_callback=self._event_callback,
+        success_callback=self._success_callback,
+        failure_callback=self._failure_callback,
+        force_async=self._force_async,
+        once=self._once,
+    )
+    del self
+
+
+
+ +
+ + + +
+ +
+ +
+

Functions

+ +
+ + +

+ __init_subclass__ + + +

+
__init_subclass__(max_event_handlers: int | None = None, default_success_callback: SuccessCallbackType | None = None, default_failure_callback: FailureCallbackType | None = None, debug: bool | None = None, **kwargs: Any) -> None
+
+ +
+ +

Initialize a subclass of EventLinker.

+

By default, this method sets up the main registry and thread lock object, but +it can also be used to configure specific settings of the EventLinker subclass.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ max_event_handlers + +
+

The maximum number of event handlers allowed per event, or None if there is no limit.

+
+

+ + TYPE: + int | None + + + DEFAULT: + None + +

+
+ default_success_callback + +
+

The default callback to assign as the success callback in the event handlers when no specific success callback is provided.

+
+

+ + TYPE: + SuccessCallbackType | None + + + DEFAULT: + None + +

+
+ default_failure_callback + +
+

The default callback to assign as the failure callback in the event handlers when no specific failure callback is provided.

+
+

+ + TYPE: + FailureCallbackType | None + + + DEFAULT: + None + +

+
+ debug + +
+

Specifies the debug mode for the subclass logger. If None, it is determined based on the execution environment.

+
+

+ + TYPE: + bool | None + + + DEFAULT: + None + +

+
+ kwargs + +
+

The keyword arguments to pass to the superclass __init_subclass__ method.

+
+

+ + TYPE: + Any + + + DEFAULT: + {} + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + None + + +
+

None

+
+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If max_event_handlers is less than 1 or if the provided callbacks are invalid.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
def __init_subclass__(
+    cls,
+    max_event_handlers: int | None = None,
+    default_success_callback: SuccessCallbackType | None = None,
+    default_failure_callback: FailureCallbackType | None = None,
+    debug: bool | None = None,
+    **kwargs: Any,
+) -> None:
+    """
+    Initialize a subclass of `EventLinker`.
+
+    By default, this method sets up the main registry and thread lock object, but
+    it can also be used to configure specific settings of the `EventLinker` subclass.
+
+    :param max_event_handlers: The maximum number of event handlers allowed per event,
+        or `None` if there is no limit.
+    :param default_success_callback: The default callback to assign as the success
+        callback in the event handlers when no specific success callback is provided.
+    :param default_failure_callback: The default callback to assign as the failure
+        callback in the event handlers when no specific failure callback is provided.
+    :param debug: Specifies the debug mode for the subclass logger. If `None`,
+        it is determined based on the execution environment.
+    :param kwargs: The keyword arguments to pass to the superclass
+        `__init_subclass__` method.
+    :raises PyventusException: If `max_event_handlers` is less than 1 or
+        if the provided callbacks are invalid.
+    :return: None
+    """
+    # Call the parent class' __init_subclass__ method
+    super().__init_subclass__(**kwargs)
+
+    # Initialize the main registry
+    cls.__registry = {}
+
+    # Create a lock object for thread synchronization
+    cls.__thread_lock = Lock()
+
+    # Validate the max_event_handlers argument
+    if max_event_handlers is not None and max_event_handlers < 1:
+        raise PyventusException("The 'max_event_handlers' argument must be greater than or equal to 1.")
+
+    # Set the maximum number of event handlers per event
+    cls.__max_event_handlers = max_event_handlers
+
+    # Validate the default success callback, if any
+    if default_success_callback is not None:
+        EventHandler.validate_callback(callback=default_success_callback)
+
+    # Set the default success callback
+    cls.__default_success_callback = default_success_callback
+
+    # Validate the default failure callback, if any
+    if default_failure_callback is not None:
+        EventHandler.validate_callback(callback=default_failure_callback)
+
+    # Set the default failure callback
+    cls.__default_failure_callback = default_failure_callback
+
+    # Validate the debug argument
+    if debug is not None and not isinstance(debug, bool):
+        raise PyventusException("The 'debug' argument must be a boolean value.")
+
+    # Set up the logger
+    cls.__logger = Logger(
+        name=cls.__name__,
+        debug=debug if debug is not None else bool(gettrace() is not None),
+    )
+
+
+
+ +
+ +
+ + +

+ get_event_name + + + + classmethod + + +

+
get_event_name(event: SubscribableEventType) -> str
+
+ +
+ +

Determines the name of the event.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The event to obtain the name for.

+
+

+ + TYPE: + SubscribableEventType + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + str + + +
+

A string that represents the event name.

+
+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the event argument is invalid or if the event is not supported.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_event_name(cls, event: SubscribableEventType) -> str:
+    """
+    Determines the name of the event.
+    :param event: The event to obtain the name for.
+    :return: A string that represents the event name.
+    :raises PyventusException: If the `event` argument is invalid
+        or if the event is not supported.
+    """
+    # Validate the event argument
+    if event is None:
+        raise PyventusException("The 'event' argument cannot be None.")
+
+    if event is Ellipsis:
+        # If the event is Ellipsis, return its type name
+        return type(event).__name__
+    elif isinstance(event, str):
+        if not event:
+            raise PyventusException("String events cannot be empty.")
+        # If the event is a non-empty string, return it as the event name
+        return event
+    elif isinstance(event, type):
+        if not is_dataclass(event) and not issubclass(event, Exception):
+            raise PyventusException("Type events must be either a dataclass or an exception.")
+        # If the event is either a dataclass type or an exception type, return its type name
+        return event.__name__
+    else:
+        # If the event is not supported, raise an exception
+        raise PyventusException("Unsupported event")
+
+
+
+ +
+ +
+ + +

+ get_max_event_handlers + + + + classmethod + + +

+
get_max_event_handlers() -> int | None
+
+ +
+ +

Retrieve the maximum number of event handlers allowed per event.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + int | None + + +
+

The maximum number of event handlers or None if there is no limit.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_max_event_handlers(cls) -> int | None:
+    """
+    Retrieve the maximum number of event handlers allowed per event.
+    :return: The maximum number of event handlers or `None` if there is no limit.
+    """
+    return cls.__max_event_handlers
+
+
+
+ +
+ +
+ + +

+ get_default_success_callback + + + + classmethod + + +

+
get_default_success_callback() -> SuccessCallbackType | None
+
+ +
+ +

Retrieve the default callback to be assigned as the success callback +in the event handlers when no specific success callback is provided.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + SuccessCallbackType | None + + +
+

The default success callback or None if not set.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_default_success_callback(cls) -> SuccessCallbackType | None:
+    """
+    Retrieve the default callback to be assigned as the success callback
+    in the event handlers when no specific success callback is provided.
+    :return: The default success callback or `None` if not set.
+    """
+    return cls.__default_success_callback
+
+
+
+ +
+ +
+ + +

+ get_default_failure_callback + + + + classmethod + + +

+
get_default_failure_callback() -> FailureCallbackType | None
+
+ +
+ +

Retrieve the default callback to be assigned as the failure callback +in the event handlers when no specific failure callback is provided.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + FailureCallbackType | None + + +
+

The default failure callback or None if not set.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_default_failure_callback(cls) -> FailureCallbackType | None:
+    """
+    Retrieve the default callback to be assigned as the failure callback
+    in the event handlers when no specific failure callback is provided.
+    :return: The default failure callback or `None` if not set.
+    """
+    return cls.__default_failure_callback
+
+
+
+ +
+ +
+ + +

+ get_registry + + + + classmethod + + +

+
get_registry() -> Mapping[str, List[EventHandler]]
+
+ +
+ +

Retrieve the main registry mapping.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + Mapping[str, List[EventHandler]] + + +
+

A mapping of event names to event handlers.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_registry(cls) -> Mapping[str, List[EventHandler]]:
+    """
+    Retrieve the main registry mapping.
+    :return: A mapping of event names to event handlers.
+    """
+    with cls.__thread_lock:
+        return {event_name: list(event_handlers) for event_name, event_handlers in cls.__registry.items()}
+
+
+
+ +
+ +
+ + +

+ get_events + + + + classmethod + + +

+
get_events() -> List[str]
+
+ +
+ +

Retrieve a list of all the registered events.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + List[str] + + +
+

A list of event names.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_events(cls) -> List[str]:
+    """
+    Retrieve a list of all the registered events.
+    :return: A list of event names.
+    """
+    with cls.__thread_lock:
+        return list(cls.__registry.keys())
+
+
+
+ +
+ +
+ + +

+ get_event_handlers + + + + classmethod + + +

+
get_event_handlers() -> List[EventHandler]
+
+ +
+ +

Retrieve a list of non-duplicated event handlers +that have been registered across all events.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + List[EventHandler] + + +
+

A list of event handlers.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_event_handlers(cls) -> List[EventHandler]:
+    """
+    Retrieve a list of non-duplicated event handlers
+    that have been registered across all events.
+    :return: A list of event handlers.
+    """
+    with cls.__thread_lock:
+        return list(
+            {event_handler for event_handlers in cls.__registry.values() for event_handler in event_handlers}
+        )
+
+
+
+ +
+ +
+ + +

+ get_events_by_event_handler + + + + classmethod + + +

+
get_events_by_event_handler(event_handler: EventHandler) -> List[str]
+
+ +
+ +

Retrieve a list of event names associated with the provided event handler.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event_handler + +
+

The handler to retrieve the associated events for.

+
+

+ + TYPE: + EventHandler + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + List[str] + + +
+

A list of event names.

+
+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the event_handler argument is None or invalid.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_events_by_event_handler(cls, event_handler: EventHandler) -> List[str]:
+    """
+    Retrieve a list of event names associated with the provided event handler.
+    :param event_handler: The handler to retrieve the associated events for.
+    :return: A list of event names.
+    :raise PyventusException: If the `event_handler` argument is `None` or invalid.
+    """
+    # Validate the event_handler argument
+    if event_handler is None:
+        raise PyventusException("The 'event_handler' argument cannot be None.")
+    if not isinstance(event_handler, EventHandler):
+        raise PyventusException("The 'event_handler' argument must be an instance of the EventHandler class.")
+
+    with cls.__thread_lock:
+        return [
+            event_name for event_name, event_handlers in cls.__registry.items() if event_handler in event_handlers
+        ]
+
+
+
+ +
+ +
+ + +

+ get_event_handlers_by_events + + + + classmethod + + +

+
get_event_handlers_by_events(*events: SubscribableEventType) -> List[EventHandler]
+
+ +
+ +

Retrieve a list of non-duplicated event handlers associated with the provided events.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ events + +
+

Events to retrieve the event handlers for.

+
+

+ + TYPE: + SubscribableEventType + + + DEFAULT: + () + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + List[EventHandler] + + +
+

A list of event handlers.

+
+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the events argument is None, empty or unsupported.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def get_event_handlers_by_events(cls, *events: SubscribableEventType) -> List[EventHandler]:
+    """
+    Retrieve a list of non-duplicated event handlers associated with the provided events.
+    :param events: Events to retrieve the event handlers for.
+    :return: A list of event handlers.
+    :raise PyventusException: If the `events` argument is `None`, empty or unsupported.
+    """
+    # Validate the events argument
+    if events is None or len(events) <= 0:
+        raise PyventusException("The 'events' argument cannot be None or empty.")
+
+    # Retrieve all unique event names
+    event_names: Set[str] = {cls.get_event_name(event=event) for event in events}
+
+    with cls.__thread_lock:
+        return list(
+            {event_handler for event_name in event_names for event_handler in cls.__registry.get(event_name, [])}
+        )
+
+
+
+ +
+ +
+ + +

+ once + + + + classmethod + + +

+
once(*events: SubscribableEventType, force_async: bool = False) -> EventLinkageWrapper
+
+ +
+ +

Decorator that allows you to conveniently subscribe callbacks to the provided events +for a single invocation.

+

This method can be used as either a decorator or a context manager. When used as a +decorator, it automatically subscribes the decorated callback to the provided events. +When used as a context manager with the with statement, it allows multiple callbacks +to be associated with the provided events within the context block.

+ + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ events + +
+

The events to subscribe to.

+
+

+ + TYPE: + SubscribableEventType + + + DEFAULT: + () + +

+
+ force_async + +
+

Determines whether to force all callbacks to run asynchronously. If True, synchronous callbacks will be converted to run asynchronously in a thread pool, using the asyncio.to_thread function. If False, callbacks will run synchronously or asynchronously as defined.

+
+

+ + TYPE: + bool + + + DEFAULT: + False + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + EventLinkageWrapper + + +
+

The decorator that wraps the callback.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def once(cls, *events: SubscribableEventType, force_async: bool = False) -> EventLinkageWrapper:
+    """
+    Decorator that allows you to conveniently subscribe callbacks to the provided events
+    for a single invocation.
+
+    This method can be used as either a decorator or a context manager. When used as a
+    decorator, it automatically subscribes the decorated callback to the provided events.
+    When used as a context manager with the `with` statement, it allows multiple callbacks
+    to be associated with the provided events within the context block.
+
+    :param events: The events to subscribe to.
+    :param force_async: Determines whether to force all callbacks to run asynchronously.
+        If `True`, synchronous callbacks will be converted to run asynchronously in a
+        thread pool, using the `asyncio.to_thread` function. If `False`, callbacks
+        will run synchronously or asynchronously as defined.
+    :return: The decorator that wraps the callback.
+    """
+    return EventLinker.EventLinkageWrapper(*events, event_linker=cls, force_async=force_async, once=True)
+
+
+
+ +
+ +
+ + +

+ on + + + + classmethod + + +

+
on(*events: SubscribableEventType, force_async: bool = False) -> EventLinkageWrapper
+
+ +
+ +

Decorator that allows you to conveniently subscribe callbacks to the provided events.

+

This method can be used as either a decorator or a context manager. When used as a +decorator, it automatically subscribes the decorated callback to the provided events. +When used as a context manager with the with statement, it allows multiple callbacks +to be associated with the provided events within the context block.

+ + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ events + +
+

The events to subscribe to.

+
+

+ + TYPE: + SubscribableEventType + + + DEFAULT: + () + +

+
+ force_async + +
+

Determines whether to force all callbacks to run asynchronously. If True, synchronous callbacks will be converted to run asynchronously in a thread pool, using the asyncio.to_thread function. If False, callbacks will run synchronously or asynchronously as defined.

+
+

+ + TYPE: + bool + + + DEFAULT: + False + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + EventLinkageWrapper + + +
+

The decorator that wraps the callback.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def on(cls, *events: SubscribableEventType, force_async: bool = False) -> EventLinkageWrapper:
+    """
+    Decorator that allows you to conveniently subscribe callbacks to the provided events.
+
+    This method can be used as either a decorator or a context manager. When used as a
+    decorator, it automatically subscribes the decorated callback to the provided events.
+    When used as a context manager with the `with` statement, it allows multiple callbacks
+    to be associated with the provided events within the context block.
+
+    :param events: The events to subscribe to.
+    :param force_async: Determines whether to force all callbacks to run asynchronously.
+        If `True`, synchronous callbacks will be converted to run asynchronously in a
+        thread pool, using the `asyncio.to_thread` function. If `False`, callbacks
+        will run synchronously or asynchronously as defined.
+    :return: The decorator that wraps the callback.
+    """
+    return EventLinker.EventLinkageWrapper(*events, event_linker=cls, force_async=force_async, once=False)
+
+
+
+ +
+ +
+ + +

+ subscribe + + + + classmethod + + +

+
subscribe(*events: SubscribableEventType, event_callback: EventCallbackType, success_callback: SuccessCallbackType | None = None, failure_callback: FailureCallbackType | None = None, force_async: bool = False, once: bool = False) -> EventHandler
+
+ +
+ +

Subscribes callbacks to the provided events.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ events + +
+

The events to subscribe to.

+
+

+ + TYPE: + SubscribableEventType + + + DEFAULT: + () + +

+
+ event_callback + +
+

The callback to be executed when the event occurs.

+
+

+ + TYPE: + EventCallbackType + +

+
+ success_callback + +
+

The callback to be executed when the event execution completes successfully.

+
+

+ + TYPE: + SuccessCallbackType | None + + + DEFAULT: + None + +

+
+ failure_callback + +
+

The callback to be executed when the event execution fails.

+
+

+ + TYPE: + FailureCallbackType | None + + + DEFAULT: + None + +

+
+ force_async + +
+

Determines whether to force all callbacks to run asynchronously. If True, synchronous callbacks will be converted to run asynchronously in a thread pool, using the asyncio.to_thread function. If False, callbacks will run synchronously or asynchronously as defined.

+
+

+ + TYPE: + bool + + + DEFAULT: + False + +

+
+ once + +
+

Specifies if the event handler is a one-time subscription.

+
+

+ + TYPE: + bool + + + DEFAULT: + False + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + EventHandler + + +
+

The event handler object associated with the given events.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def subscribe(
+    cls,
+    *events: SubscribableEventType,
+    event_callback: EventCallbackType,  # type: ignore[type-arg]
+    success_callback: SuccessCallbackType | None = None,
+    failure_callback: FailureCallbackType | None = None,
+    force_async: bool = False,
+    once: bool = False,
+) -> EventHandler:
+    """
+    Subscribes callbacks to the provided events.
+    :param events: The events to subscribe to.
+    :param event_callback: The callback to be executed when the event occurs.
+    :param success_callback: The callback to be executed when the event execution completes
+        successfully.
+    :param failure_callback: The callback to be executed when the event execution fails.
+    :param force_async: Determines whether to force all callbacks to run asynchronously.
+        If `True`, synchronous callbacks will be converted to run asynchronously in a
+        thread pool, using the `asyncio.to_thread` function. If `False`, callbacks
+        will run synchronously or asynchronously as defined.
+    :param once: Specifies if the event handler is a one-time subscription.
+    :return: The event handler object associated with the given events.
+    """
+    # Validate the events argument
+    if events is None or len(events) <= 0:
+        raise PyventusException("The 'events' argument cannot be None or empty.")
+
+    # Retrieve all unique event names
+    event_names: Set[str] = {cls.get_event_name(event=event) for event in events}
+
+    # Acquire the lock to ensure exclusive access to the main registry
+    with cls.__thread_lock:
+        # Check if the maximum number of handlers property is set
+        if cls.__max_event_handlers is not None:
+            # For each event name, check if the maximum number of handlers for the event has been exceeded
+            for event_name in event_names:
+                if len(cls.__registry.get(event_name, [])) >= cls.__max_event_handlers:
+                    raise PyventusException(
+                        f"The event '{event_name}' has exceeded the maximum number of handlers allowed. The "
+                        f"'{EventHandler.get_callback_name(callback=event_callback)}'"
+                        f" callback cannot be subscribed."
+                    )
+
+        # Create a new event handler
+        event_handler: EventHandler = EventHandler(
+            event_callback=event_callback,
+            success_callback=success_callback if success_callback else cls.__default_success_callback,
+            failure_callback=failure_callback if failure_callback else cls.__default_failure_callback,
+            force_async=force_async,
+            once=once,
+        )
+
+        # For each event name, register the event handler
+        for event_name in event_names:
+            # If the event name is not present in the main registry, create a new empty list for it
+            if event_name not in cls.__registry:
+                cls.__registry[event_name] = []
+
+            # Append the event handler to the list of handlers for the event
+            cls.__registry[event_name].append(event_handler)
+
+            # Log the subscription if debug is enabled
+            if cls.__logger.debug_enabled:  # pragma: no cover
+                cls.__logger.debug(
+                    action="Subscribed:",
+                    msg=f"{event_handler} {StdOutColors.PURPLE}Event:{StdOutColors.DEFAULT} {event_name}",
+                )
+
+    # Return the new event handler
+    return event_handler
+
+
+
+ +
+ +
+ + +

+ unsubscribe + + + + classmethod + + +

+
unsubscribe(*events: SubscribableEventType, event_handler: EventHandler) -> bool
+
+ +
+ +

Unsubscribes an event handler from the provided events. If there are no more +handlers for a particular event, that event is also removed from the registry.

+ + + + + + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ events + +
+

The events to unsubscribe from.

+
+

+ + TYPE: + SubscribableEventType + + + DEFAULT: + () + +

+
+ event_handler + +
+

The event handler to unsubscribe.

+
+

+ + TYPE: + EventHandler + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + bool + + +
+

True if the event handler associated with the events was found and removed, False otherwise.

+
+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the events argument is None, empty, unsupported, or if the event_handler argument is None, invalid.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def unsubscribe(cls, *events: SubscribableEventType, event_handler: EventHandler) -> bool:
+    """
+    Unsubscribes an event handler from the provided events. If there are no more
+    handlers for a particular event, that event is also removed from the registry.
+    :param events: The events to unsubscribe from.
+    :param event_handler: The event handler to unsubscribe.
+    :return: `True` if the event handler associated with the events was found and
+        removed, `False` otherwise.
+    :raises PyventusException: If the `events` argument is `None`, empty, unsupported,
+        or if the `event_handler` argument is `None`, invalid.
+    """
+    # Validate the events argument
+    if events is None or len(events) <= 0:
+        raise PyventusException("The 'events' argument cannot be None or empty.")
+
+    # Validate the event_handler argument
+    if event_handler is None:
+        raise PyventusException("The 'event_handler' argument cannot be None.")
+    if not isinstance(event_handler, EventHandler):
+        raise PyventusException("The 'event_handler' argument must be an instance of the EventHandler class.")
+
+    # Retrieve all unique event names
+    event_names: Set[str] = {cls.get_event_name(event=event) for event in events}
+
+    # A flag indicating whether the event handler was successfully removed
+    deleted: bool = False
+
+    # Obtain the lock to ensure exclusive access to the main registry
+    with cls.__thread_lock:
+        # For each event name, check and remove the event handler if found
+        for event_name in event_names:
+            # Get the list of event handlers for the event name, or an empty list if it doesn't exist
+            event_handlers = cls.__registry.get(event_name, [])
+
+            # Check if the event handler is present in the list of handlers for the event
+            if event_handler in event_handlers:
+                # Remove the event handler from the list of handlers
+                event_handlers.remove(event_handler)
+                deleted = True
+
+                # If there are no more handlers for the event, remove the event name from the registry
+                if not event_handlers:
+                    cls.__registry.pop(event_name)
+
+                # Log the unsubscription if debug is enabled
+                if cls.__logger.debug_enabled:  # pragma: no cover
+                    cls.__logger.debug(
+                        action="Unsubscribed:",
+                        msg=f"{event_handler} {StdOutColors.PURPLE}Event:{StdOutColors.DEFAULT} {event_name}",
+                    )
+
+    # Return the flag indicating whether the event handler was deleted
+    return deleted
+
+
+
+ +
+ +
+ + +

+ remove_event_handler + + + + classmethod + + +

+
remove_event_handler(event_handler: EventHandler) -> bool
+
+ +
+ +

Removes an event handler from all subscribed events. If there are no more +handlers for a particular event, that event is also removed from the registry.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event_handler + +
+

The event handler to remove.

+
+

+ + TYPE: + EventHandler + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + bool + + +
+

True if the event handler was found and removed, False otherwise.

+
+
+ + + + + + + + + + + + + + + +
RAISESDESCRIPTION
+ + PyventusException + + +
+

If the event_handler argument is None or invalid.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def remove_event_handler(cls, event_handler: EventHandler) -> bool:
+    """
+    Removes an event handler from all subscribed events. If there are no more
+    handlers for a particular event, that event is also removed from the registry.
+    :param event_handler: The event handler to remove.
+    :return: `True` if the event handler was found and removed, `False` otherwise.
+    :raises PyventusException: If the `event_handler` argument is `None` or invalid.
+    """
+    # Validate the event_handler argument
+    if event_handler is None:
+        raise PyventusException("The 'event_handler' argument cannot be None.")
+    if not isinstance(event_handler, EventHandler):
+        raise PyventusException("The 'event_handler' argument must be an instance of the EventHandler class.")
+
+    # A flag indicating if the event handler gets removed
+    deleted: bool = False
+
+    # Acquire the lock to ensure exclusive access to the main registry
+    with cls.__thread_lock:
+        # Iterate through each event and its associated handlers in the main registry
+        for event_name in list(cls.__registry.keys()):
+            # Get the list of event handlers for the event name, or an empty list if it doesn't exist
+            event_handlers = cls.__registry.get(event_name, [])
+
+            # Check if the event handler is present in the list of handlers for the event
+            if event_handler in event_handlers:
+                # Remove the event handler from the list of handlers
+                event_handlers.remove(event_handler)
+                deleted = True
+
+                # If there are no more handlers for the event, remove the event from the registry
+                if not event_handlers:
+                    cls.__registry.pop(event_name)
+
+                # Log the removal of the event handler if debug is enabled
+                if cls.__logger.debug_enabled:  # pragma: no cover
+                    cls.__logger.debug(
+                        action="Handler Removed:",
+                        msg=f"{event_handler} {StdOutColors.PURPLE}Event:{StdOutColors.DEFAULT} {event_name}",
+                    )
+
+    # Return the flag indicating if the event handler was found and deleted
+    return deleted
+
+
+
+ +
+ +
+ + +

+ remove_event + + + + classmethod + + +

+
remove_event(event: SubscribableEventType) -> bool
+
+ +
+ +

Removes an event from the registry, including all its event handler subscriptions.

+ + + + + + + + + + + + + + + +
PARAMETERDESCRIPTION
+ event + +
+

The event to remove.

+
+

+ + TYPE: + SubscribableEventType + +

+
+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + bool + + +
+

True if the event was found and removed, False otherwise.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def remove_event(cls, event: SubscribableEventType) -> bool:
+    """
+    Removes an event from the registry, including all its event handler subscriptions.
+    :param event: The event to remove.
+    :return: `True` if the event was found and removed, `False` otherwise.
+    """
+    # Get the event name
+    event_name: str = cls.get_event_name(event=event)
+
+    # Acquire the lock to ensure exclusive access to the main registry
+    with cls.__thread_lock:
+        # Check if the event name is present in the main registry
+        if event_name in cls.__registry:
+            # Remove the event from the registry
+            cls.__registry.pop(event_name)
+
+            # Log the removal of the event if debug is enabled
+            if cls.__logger.debug_enabled:  # pragma: no cover
+                cls.__logger.debug(action="Event Removed:", msg=f"{event_name}")
+
+            # Return True to indicate successful removal
+            return True
+
+    return False
+
+
+
+ +
+ +
+ + +

+ remove_all + + + + classmethod + + +

+
remove_all() -> bool
+
+ +
+ +

Removes all events and their associated event handlers from the registry.

+ + + + + + + + + + + + + + + +
RETURNSDESCRIPTION
+ + bool + + +
+

True if the events were found and removed, False otherwise.

+
+
+ +
+ Source code in pyventus/linkers/event_linker.py +
@classmethod
+def remove_all(cls) -> bool:
+    """
+    Removes all events and their associated event handlers from the registry.
+    :return: `True` if the events were found and removed, `False` otherwise.
+    """
+    # Acquire the lock to ensure exclusive access to the main registry
+    with cls.__thread_lock:
+        if cls.__registry:
+            # Clear the main registry
+            cls.__registry.clear()
+
+            # Log a debug message if debug is enabled
+            if cls.__logger.debug_enabled:  # pragma: no cover
+                cls.__logger.debug(msg="All events and handlers were successfully removed.")
+
+            return True
+        else:
+            # Log a debug message if debug is enabled
+            if cls.__logger.debug_enabled:  # pragma: no cover
+                cls.__logger.debug(msg="The event registry is already empty.")
+
+            return False
+
+
+
+ +
+ + + +
+ +
+ +


+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/api/index.html b/0.6/api/index.html new file mode 100644 index 0000000..7443e68 --- /dev/null +++ b/0.6/api/index.html @@ -0,0 +1,1302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + API Reference - Pyventus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + + + +
+
+
+ + + + + + + +
+
+
+ + + + + + + + + +
+
+ + + + + + + +

API Reference

+

+   Welcome to the Pyventus API Reference, a comprehensive guide that provides detailed information about + the classes, functions, parameters, attributes, and other components available in Pyventus. +

+ +

+   In the API Reference, you will find detailed documentation for each component, including clear explanations, + parameter details, return values, and usage examples. You can navigate through the reference using the search + functionality or by browsing the different sections and categories to find the specific information you need. +

+ +


+

+

+ Let's explore the Pyventus API Reference! +

+


+ + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/0.6/assets/_mkdocstrings.css b/0.6/assets/_mkdocstrings.css new file mode 100644 index 0000000..b500381 --- /dev/null +++ b/0.6/assets/_mkdocstrings.css @@ -0,0 +1,143 @@ + +/* Avoid breaking parameter names, etc. in table cells. */ +.doc-contents td code { + word-break: normal !important; +} + +/* No line break before first paragraph of descriptions. */ +.doc-md-description, +.doc-md-description>p:first-child { + display: inline; +} + +/* Max width for docstring sections tables. */ +.doc .md-typeset__table, +.doc .md-typeset__table table { + display: table !important; + width: 100%; +} + +.doc .md-typeset__table tr { + display: table-row; +} + +/* Defaults in Spacy table style. */ +.doc-param-default { + float: right; +} + +/* Parameter headings must be inline, not blocks. */ +.doc-heading-parameter { + display: inline; +} + +/* Prefer space on the right, not the left of parameter permalinks. */ +.doc-heading-parameter .headerlink { + margin-left: 0 !important; + margin-right: 0.2rem; +} + +/* Backward-compatibility: docstring section titles in bold. */ +.doc-section-title { + font-weight: bold; +} + +/* Symbols in Navigation and ToC. */ +:root, :host, +[data-md-color-scheme="default"] { + --doc-symbol-parameter-fg-color: #df50af; + --doc-symbol-attribute-fg-color: #953800; + --doc-symbol-function-fg-color: #8250df; + --doc-symbol-method-fg-color: #8250df; + --doc-symbol-class-fg-color: #0550ae; + --doc-symbol-module-fg-color: #5cad0f; + + --doc-symbol-parameter-bg-color: #df50af1a; + --doc-symbol-attribute-bg-color: #9538001a; + --doc-symbol-function-bg-color: #8250df1a; + --doc-symbol-method-bg-color: #8250df1a; + --doc-symbol-class-bg-color: #0550ae1a; + --doc-symbol-module-bg-color: #5cad0f1a; +} + +[data-md-color-scheme="slate"] { + --doc-symbol-parameter-fg-color: #ffa8cc; + --doc-symbol-attribute-fg-color: #ffa657; + --doc-symbol-function-fg-color: #d2a8ff; + --doc-symbol-method-fg-color: #d2a8ff; + --doc-symbol-class-fg-color: #79c0ff; + --doc-symbol-module-fg-color: #baff79; + + --doc-symbol-parameter-bg-color: #ffa8cc1a; + --doc-symbol-attribute-bg-color: #ffa6571a; + --doc-symbol-function-bg-color: #d2a8ff1a; + --doc-symbol-method-bg-color: #d2a8ff1a; + --doc-symbol-class-bg-color: #79c0ff1a; + --doc-symbol-module-bg-color: #baff791a; +} + +code.doc-symbol { + border-radius: .1rem; + font-size: .85em; + padding: 0 .3em; + font-weight: bold; +} + +code.doc-symbol-parameter { + color: var(--doc-symbol-parameter-fg-color); + background-color: var(--doc-symbol-parameter-bg-color); +} + +code.doc-symbol-parameter::after { + content: "param"; +} + +code.doc-symbol-attribute { + color: var(--doc-symbol-attribute-fg-color); + background-color: var(--doc-symbol-attribute-bg-color); +} + +code.doc-symbol-attribute::after { + content: "attr"; +} + +code.doc-symbol-function { + color: var(--doc-symbol-function-fg-color); + background-color: var(--doc-symbol-function-bg-color); +} + +code.doc-symbol-function::after { + content: "func"; +} + +code.doc-symbol-method { + color: var(--doc-symbol-method-fg-color); + background-color: var(--doc-symbol-method-bg-color); +} + +code.doc-symbol-method::after { + content: "meth"; +} + +code.doc-symbol-class { + color: var(--doc-symbol-class-fg-color); + background-color: var(--doc-symbol-class-bg-color); +} + +code.doc-symbol-class::after { + content: "class"; +} + +code.doc-symbol-module { + color: var(--doc-symbol-module-fg-color); + background-color: var(--doc-symbol-module-bg-color); +} + +code.doc-symbol-module::after { + content: "mod"; +} + +.doc-signature .autorefs { + color: inherit; + border-bottom: 1px dotted currentcolor; +} diff --git a/0.6/assets/images/favicon.png b/0.6/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/api/emitters/asyncio/index.png b/0.6/assets/images/social/api/emitters/asyncio/index.png new file mode 100644 index 0000000000000000000000000000000000000000..54b4bf315eb64cb97f7b0040e61ec4984e357936 GIT binary patch literal 47423 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 literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/api/emitters/celery/index.png b/0.6/assets/images/social/api/emitters/celery/index.png new file mode 100644 index 0000000000000000000000000000000000000000..8164659a3cb016578f28e9649a22d7972d38374b GIT binary patch literal 43427 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 JWw)VE{|3&FBqRU; literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/api/emitters/fastapi/index.png b/0.6/assets/images/social/api/emitters/fastapi/index.png new file mode 100644 index 0000000000000000000000000000000000000000..f33b5e7cbd58aedd12a9d362568547e0a38c9596 GIT binary patch literal 45074 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 PAx-_uMwhCzZ6Ey?*$^Wm literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/api/emitters/index.png b/0.6/assets/images/social/api/emitters/index.png new file mode 100644 index 0000000000000000000000000000000000000000..9669d64289d26d3b821ee09eb89dd1faaf6c4c9a GIT binary patch literal 42801 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 `~k2{fa%&>h>1g{QJyOkU_0VcPst4UHaJ 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 literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/api/event-handler.png b/0.6/assets/images/social/api/event-handler.png new file mode 100644 index 0000000000000000000000000000000000000000..07ec0bbecea7294c4e8ab71d1ff947b89ed8b1f0 GIT binary patch literal 39275 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 PJJh~sa2KiO@Z|ph6@gKy literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/api/index.png b/0.6/assets/images/social/api/index.png new file mode 100644 index 0000000000000000000000000000000000000000..5210cf98921956ef24af20d9c4ea378bd2fb9f4d GIT binary patch literal 40741 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 U@b*m)Q&8M{y85}Sb4q9e09#hGaR2}S literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/contributing.png b/0.6/assets/images/social/contributing.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4083b82c2e4292b2f9822cc898454c603eca16 GIT binary patch literal 40764 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

9S)cRUG=Ldv?R3p& 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 literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/getting-started.png b/0.6/assets/images/social/getting-started.png new file mode 100644 index 0000000000000000000000000000000000000000..fb240594d9480e4da3c9fe662d8781e3a4f924ab GIT binary patch literal 43694 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�+y6_CQF@jxA6nsl)vY7i6rvzqkZvva|U||SI8s*Vy@@6 zm?s61l(}&%kiul>`V@}d=Kqw{J0jc}S#Y^+gJ{U*U7Y(E z&<_GR%Y?!@6QNqJRq>&A*7>lJKCDwkPP;=7XCAax_R3(f>Aw+UleZc(GWF%mmbz@Q z!&_-}PR|AQyMsBb$G}aB$!Ce{2Q_C`*0DRCo13HdB%;b-4Z#=Jx$Jou)b1pN*Z9`E zQEPi!Lhfa4IbGO)-v8IYEB3_B_hkV$F}tI)Fn#gUTC*U7Ax|+$LKhg)K*&rN2qNW{ z?;QY#KghSwRsCo_L;>bf6C?QMlCw*Z`c_ImQp`cHyhyn!$yW|vPo~^cUxQ_;nq{kr z$)F9EGk5kb3d7#@8b{0J2i}q*xfE-S zy{zX;y0c zS~*_S&S8wFvP@%l#RqnE?;#uscjmaYp^X<?Rj*2fc6VrojAE4Ih&Q=4w!kxiw%YP$m! z=4O0F>yG5waRs1*_oSfDE|vAT%Nu-E>(0cy6fuH)-lNfYnZ$KZO1Q$jPX#26l*; z=AWU4noEBGOF&Rw-VdMdt?MWKATzc`N^j=0UJ?Xy! z$8?WTflT0gfYK1XCuEKqcbR$`%R{+j0H(u!(PmE~$6wjVR5W-8K6QO!W103Jq~BId z2BkPtqn4 zX+NJe(kw_8EJ@Rj9~sMAQaFJ++uN>;ebbaKjyZQEzQ?fiFTE6ax`NLoKn5LW!-$Ly&33M0=|L zRP1a5>XOSa`Dfkp4ehFf@MauDSqgm`>Ileir0{s&hga;Sak49C#Xm?bobdt1yB80F z2(`^=&%p{C2#p^_)cBHan*0Ab z0L>II^&<2Ykw7>HVxZm23fZ+!6pDQ7nRXOs2x=*LSVynV(v=|Zj*#uS4S?IoFM+g%u92GY#_1eTswpBBO3pLudcG!G()C`ERvp!mkZkNku(etY0Q@F=l6Z4K>TjaV{fYlolMq6_vzU4lmffguJASj|A687H?UV! zcepPP+mI#@*`N74#8!z&R#zxKMmWhU_b6ZfYcs@Y@s^B_!x$ko(`@`vTt+7xYeKO~wx@%{MU5-Rz6VuBmv<IWb+E-J>hD2OnYIf;l6=9PK;ftwhpGY@^y={u=+Fu60(pdvHL&4A|CJ0BeACH?i)mE@B$9A&a55C|A}p4R+nvyVuA>KeR80S2Q%L2u zFP{00CJDj7HcmSeNouWLYxIBcx(}uo+$)ft@m}sYoOgXB2z$Rcsr{7-st*VkHjU9c z|9-)2KlFS)H>gf_N2rZp{m35VubD@mC3znK(tgk8i)U$*{civ2|^m5-Gf}C zMgMtJYq~&Gcc;-SNF`h#kEd;9{lGnj9_KH#{-YIxem2jo(LyA6{{MEnfiLjy@4u~m z{@cgse{}l)ofZGTXxj9DR>S`;0sn1f_CK4zfBUxmcUC~j82$VIV1vKKrw15bZeaYI zYnn3%ig&eDTe`TGWiYEpn5#R!Jgf!51cZz$pkP6qWSn0cG0Xs7z-p}(cvORT5jf~3 z+zncux8L8IZ3JEJL1+ElpuZ3O&TGDwi~~KNSn+5-4_tShvl0D`S9A!P1i2J=*H7M> zhG}UKc7p&TxSvFFb*3PFlPqAl%w3P|mWKkyi$`b-vYjoD!g=tOcrVfcwel6uf>*L$ zk9|Mrz??U&-F4njD_V0v#`UHc&AG=0rlu-k%aPf*ZS3$1sa6j8g`S2-0y5{z~*0Ig)dmpU3gC+5T6 zUlD+JbqPs4X{Q>sxJ!pTFjce!-E=J?{kPVRO_*b3t2u=MvIwTu98&AR6>b=A!`cdgZAzI+*15-91n88pPH|I#cp756JTaDg4aIK%N*t}BThBYs)*~alW52W zTA(G}6>&Kb@}ngI&-HRh#{nHEqL^@P?*hIjI#U8$Z)o6#cH0C^Dq1vj^Yu*?|ADEY z{BXcC&=MSwWdIVWwmO3$+O&pv1|(sD%kGjzXhnlCY5PM&AoPop{4s`(*5kU?UN8mC zv>Jv^9BB7&D35~p8trxb8dV>$@%3$cFjobM{3wv-cef}Wd|#!VNOGAD@K#&5U+ueP zy5F}+uo0AI;2i2zqH^wzyH??H%Q2eUdD|tvLX=|Z=Se0Xb^{IhEsTGJvS0m5;o?$y z6O4x2@KHf;z~-JMWU5o1dyK5PK8SLMhqojhpf4ZC1Bu{q&be~;BCn7Z4Nq+>jO-5E ze#658yVNg_uVBoBA3bBSQw(%OWD!64u=NXitMov>5#?@+K8Dp#C&rGO3*%yWuN+#w z;*oz#vxBw)%vt+r!UJeQ;T4~lAb(R(@L7i`L&GVwe5nZtu)F2@?8%^|M)za5w8zb0 zVJ)a!f+lAdmAQ(+b~A+Jz(_y)|pBu2*_x}fqcHf@90atk~3C`Zo-HRnEF?iB^SKkba=(R@C72h5XyD)f8&*p z@N>QP7HI4%YjV_r?I!0oT#Woy1$}hWFB?9&M@ugOvAndot+UXF6PHDIS!)J!J()=nu~jO0~eH;M%!{;tWf zwduth)v~)&qAixWIFy#ppn9Q+2L=4nK%_l1Hbbkp?$V~?pgl_jfch@(EenpXY{5{_ zKT+KJRa5J!Qb5Mw2Z9TbMR9VJldXy;+g;3Uj1tBkxyH0OX@e@eidezKz58)cN9v)9 zT-o9Gl`JrJb5j2<*sBD6?LahZv#y{*heDxtVrCspp&cYoZ zoDa^zA#JsnfHR!5WIhq^JrP5h2tVaq5ZvO<5oO87GXgk?27jaV)G6dLr=oglv`ak- zbv*9`KJ5LcYIrq+)tu3XuL&!mkzZb{&O(Qor?Pwwk@~kK_0|m@mce85-I_ff)P6Jv_M$szG{UHEsxlZL1p4HA;aChCR2+T*7SAk-?zm#Aos4xyK9sq{~ zH6WOHKyNpS=!7K-oOLY~@*jQA0xN!NDa?dWLnks9E4gkPK$6SiDqn;J8YTzAJ>Nb!0lHsm5<<`lXXs#;NH}GZDePv`ho5tL_({= zrF(A|TD}V;iD71g^hcUR2ON>o{DiyK@=luf6T<1i%VOlV@T72;GQS?Z{W2-ClSQ$c8@ zhi+t+Czy$hr3My7C*9sEG?@c2RG%&Q(-^G|4~;-;!2MWQ?>&NiVl@{BMm}gEG74U? zI2FoI^o<{p4}#{zGOa9grn_SWJZ)m`Xm#jUe@))XHR|SzruF!t4GyYvu$Y1{+niEp zXZ07myC)@6&iK@jw-c_6eP99U2*+l}!IUQusHfC*Tfw`+Z*)5JqeQm_-!4syG=eaX zmfgL^*11-+H?q2u7P;2}`v1#>=02aC-Kv9|wd#49Eb_em6ALF*Q7d~)9qZ_UEFCps zc+L1^$>zyc&Z`)8nddc;acTIjy3#Me#8YlMU4pEvBNx;u2jkG}vHZXb50JnPx?2jH z+%BZT5Db6^qO9p*D!%r>j)KN0#=b)-6FnKO z6d&fMz>$SEsvi);{b3a;uqI#tDeW8e5`IqMDb2~>$mT>Bx8CbJ00N_tSf1O$pnDcX zlxc%-B4XkhSP00*YieWxE?bsk-s2opM(OMZ7D`)<1c>A(=}7@Y7V;t&Jh@H0ZEMgWWq7T}lAM zpK~Md+^BJ$3hhFIED$!+31|idy+<5KKy*mA-L(;%Y`(j{Zgqu7dZM zRTSb)DZ87kG)kcBs-ki#eus-U9es+Qj_5C+W&XMO=tpQu_lw9M*Iz}17TfWX zk2*%q-wuE=F=p6x%&4#Um!}l@Ni=i zg|9jBrj%N;Qu!xYP5jc#Bj5Qf+b)466_jJwacmsx`rg;K=G`+m5m?&hd6Ksj^yQaJ zl3SWaC)H4#~;JlxTJ0I;xY%$#%#iE6w|;F*L}(E$(thin*(vhw9I)@*9zJQ>q4>?g;_ABRQtUc zw6^56h%wGev#w#keBsIc)jsbqxnrCAZoo8th(~pGDi(7Rg`<5*vh?XBYupW;99uQr zft$wSAt5}GXVwIYF66l;`Dxekvw5#9wT?|}J&?sWJ5M#Gkm9}KgGr!~pGJIzXL^V- zaAqOnpXNksH_LZeg8kEVs(6ykX>%9l-y~5K(e^Dv8Z;P3W!}sSTe3m%zY=Tgjc~GL zigaq4zS+hqRrBZIakdOCX56gJq_unbuHgiM+?HtF(T>DvASAS2>LpUK!(`6Nk{hia zJq)L3yni@yOrJ`rNNQIub200I^dgOyuGonTXtJId6aHn$IV%xCPHAZ~OF2a%XV4XC zhiS24hK*6ZiaUdFbqP!PK&`Fs4q2Fw2r$NkI@vJazXG|LonG3l?wi&XJp8b9B zmn;-zJS(4^v~vgVm8lgY42=D+i7KZiT+MPd8nx3mXCuXh9I|7A%usl0`&;jgN3i|L z_51`bUB3zp_s)x?b$nsZY#-i|#h36%f7FwQauMeKwHrlrpqY6Q?ypKaechk*3UzMV zsPVZ?1nsxj5D)&aq#T<2wmE(|mM`36BMNK$N#^7}WTD5Ne*uj$dhGR)nY33$~b6#9zyb&KvwoBjC2y${;+suk$7-8KfCqzKRfqW`gW5yb?$Msek=)d@Go4) z_p)Jr66nu08^-jIkZx zR}PALE$UzK2z9uVgd^_FhS&HOvuKHD98-i3OSQ%ilyY&z$L761`FT}m?_%y~niRRS zC7{RdL4*P_pzqpE>&#KQL8^((0W0Il!=Z zg}I&a`Lppsf~YfB|HwN_DMs}p3zW*Jv_x+o;RVU@dT{aTR8wyuE)jckI?rWV^SOk( zrG=C>=7+(XH^r*3}uE ztC!AhnDVRyw-{e%OC7Jz6A!shz8xi=$ePzKeN@AFn#h15Dx8*2qhTry@ zVy4Mwyxx=C;>$k=n#+8b&-rT#$=BvbOj(>h9sT+Eu{fUm26EfbF>zCH{D;R}iFnN- zOn8T|F(E_AKYV1qbQQE@bUgh1|N9Ml6r}!?zGErB9f2j$YU4-UmS1xINJmb>@+ ze0!>kEXP-miW#0SoU_-Sl~mq+&1ZjjA7ddS?cJT}s&v~yTS-B0SFW3WceP@1X3IWP zoLT&hWqr3IAS|zo?PHh&yT+5x!OI-cO2^z22}YgcN<}m!h}@Fb8CgHyFwW&hs)d$GGjBOPkK3U; zHEW%ym31JEk=Z!5B;TDr8B}A;V@v8YXc+q_;t`GCdVZqnh;cqc$R$c!RC8;^lFR=2 zbTgiE^H8VT%G1NsMk6lTR>3=g3y7kmL7W`R>G^?*!8y`rrw=0h|NR0j%B*u*HFC&p zjfALqQ*RHGjG*|u74t29%_`~=J>d#Z{QFcTxl3{tzTfD{u~c|87-%giegCjce!-rl zDh)cek`5uHG_v|V_5iwwm&f+X(et5}V8?(FT#vU@Ol!&a#O-MHj5pgs<(+wV zJt1M3s$kGx*;xt-N$N&KX8lLcEt1c$VC3+BUiLM=sxnoIRPbmOBVxBX@6#2&^D&*3I?nEe^qCFEhU9hjH&KU9(#IU)Eld<@cA z^Hy9{kx(l}GHCw68pZ(g*!fy6dK(G5&-4mYQZ0=vRD%R9-qXn(!lyaxlT!+6rTOmm4OjO<@o?smE1(cjYVvU-Iz-HjG+!5uJS`{%GG zH)gAB`KnuXi?6z^nXYC)|3EM>^?vnQ$7hT?3mhl*?v4=Bv&{1X6U zwK>U}=CY1ZPwKnY*n+ z-E#8*-ZrQ$o3fWootKlk_!ssGx1veOk36~_FsGL$)TfK7glJAzM*b{3?E4+K|L*#)2>?S55%=C3F;hx z9afPFJHN18NoG>3yQ@8`hu>=;GWaT+eMRF>9jf>S<3W)ZbYp>hCD;OL3v^@1)P=xr z-|ogm-kyd?CZd1Ds`5+~Ho;KUSCi%FU;*|ee&2f49r1ROH2wVq`*ZK0=ez}f3>qY=L{$aL&D*07)FOh3HgaNMW;1BueQ@1o zvOJsNX7~ebzb=V`)_Af|+cu4sa8jq9m?&o@2VILP{rl%p;f5=p#*JcJmPN;fD-h`bA@@vJY*pdl) z<`OKW8~i5psx_5iq~xE*PclXQjJcekS;|(O%b%92Qtd0GcEkt}ms6YV(!cvAMCNTx zs9|ABOGb8sC%}tHe(H#tFv(To z{BXv;(vA;tB+sJB=L7@Vj-Te5XEZnMn$@j{`^XaIjH*}YuZd-FxnDn$l-u zJu6$|AA1mi|3AqHDaRbeg3_ufSL|qkZth`Eg_;FbqQsx6BN7cIL*={Ar#P0I)jz)J zyp)TOzsGL7M%XbxLin>LZPYJoLE8?-Qm+j*KgUetBWH(Z2qM{Y^DNm(twUnWP`KLM zbBFyc7=yd??45a~kEkV_Ow`y;HuMC)$x;0+$sNVH`D=#)W0-SQ(Shcy#rV5wSz%3S z3O0(_l8IYZtOjy`4?e%L9TM>&3)mi%LavBi7k^ivou2PyunupnV+Ip1z-t6mNY;K2NUHCfl z3KB+t%h%K`7EVz%M@*7nVr1t>@9fb?8|P)wZFPzZVb7=4O|4iZ3_fEQUvGBdW6mz< zICA`bc3w4Z{x)l`RtzuB&D=wPNF`wVj|hL<%*PizYw8l5r7{uy2p`u_1Vdr=0j48Q-5ex`jVSbKEvQ z#i>kumTXee_=$Lk@z3>#WJc_y1$FQL5RaM^=qPnO>i1+Hz=V6k)(jgPg<^-#`Xug3xa^=fzdbyX;*KGAD-fT@QT! z5oL(>!Swu8#xtiH+#-^hhMlz+f+<;|R{OZLl9qRn? zaYtO0UR@6LYHe-_QM7#AU?!cV2Ij@_-y2>cvquxAMCgTFMe9Se^MKNsk@e%!9HX|% zQ^o(;0+p6Lr?&6S-tGQ}w$sDNj(*N2*k-V7bcgzh_)+tWh&tbdL4&{P-68ssK@T^z z&C=8qw>8qIo{&L80RI16hoVPKhs@Yss7+lnb|=2*s*X|>l7&!i#r-)c$3jhUu0+P1 zeP{3Wb98KBt0OIM+C4|_thRT^O8I(kT{ivuVRH6#?Y5(&fiI#-!`RXnuQ$`HXgzH(7w`$2QWLh#c zhvW!T#Ju~^EX0zIl#4cQE?LEU-9s5jADt2^@#p|IwD$Xw+`6N;TTo6aI+e0{$G7>; zBBk0PGM${1z9MLmO}R~4M8TLIwTY0*HFlss{ux}6vui!I9m-~YDSwUmv71r9f06b| zGu$PBGz4MP0ituT+BG@n9ZZ+;7<@D*JxH`g5uB|LU&T9VyzxiW={?oq@vHI-*L#{( zK?a%*;i0$Rh+|N61hYTk_y_fe(fPwB#qMwPA=O(VXiR16Dph%j=iMyr&CW{yFs0W? z*4geQ*K7F&eJ9^0%A~!g(%QaieLg096zz@--Kb*-yE^STAIXh1^B^wz!_85ypn&Ni zEQOaY5(@t3t4-+|j^{HEJouLD{UU;9$HZjY zjhwVM+FAO`_N8?e+Qh7fyhtbNpEe|Z@r4CB?)LQPXRLB7*`VMqMr{Z)m`+a#h-ef5 zW7!H&`e2YYy6Z8weS`D71iwq_WX6{!xTWU)w`m{5oXWWk7j}a$b=AnM`NHPZg2iXG z7*DqAeLB=%g(_?#N;D2~nw)kafU{~^b04NFEBXC&=C@D)<$l0SwsPQX-otA{hVpOR zu@)@nM$(USfBer57wkW39c06BIGVCZ7|S?~iWx0PkUL#A^P?-{`Jjl@zqYX{C8EHL z=|C~9^x(rZ+bXNe%nF8A9@)d(zuLtL9%D+yGxQNy@T}7eyEYuWAJ5;ox^}JrE_LgI zpQP^e@G!iJTV%^5t@i=4;KOFC!^WhxvUl1-BoaPi`!G*L|EYv4xkqX8O~9~DmZs?1 zWcp#L|H7XCjb5Rs#p}Bb#TT0m!8d7fqJ!&grkS|BjCm64$tMoe^X-9;66LXw;T2iK zrV;Hua*&dXtNS$?Y>XRiZpW zNI9Y658D`}=MN9c(OJn4!rqH~$LebDMEPb#Ts-c5Uj8zdD;IOa+?$k<4OY~F*N7eq zPO16Jw({i*vacXRcsNb}p^|8VH$i_m`n~OVXmZ=9z_yUTf<@LIhO5&cc^%8ilWsyk z^jj0T|M3cAB909TmMp1}l_gZ8yaeWZsuDqat2-_)>wHMbjt*ZD*C4t%<^)(=J`ESv z*4|EeoLJ$f*EX)WUK0JSd8dcVSwM2-&9hJbsAt+_1n=mv;k~}GeCp>-^w>rC-8h6V zT|pfaUl0n;FkzynxC7f(Gq*FsAI2z~i-xpdSZe%PtGTmD9@nsiE$~gez38RL@!T+* zvWcB4E_|H%AIb7!d{J~39)!I{pXiybX(_t4|pf4 zhvEOfN6gN`rZAJCg8yr|G?r}XGk z^|aJu43h0boWgw;*L3ts-Mqs8mB{lYYbhG^MKj%Q>vXUx#d^VEx&;GY^1AZkcTVW5 zL?dyxd!87QNW9rH2{{DW4I@lX@3@(hgkoQ2?G?21-4;Lu`%ukv87+h$^a& z`+xub)rQy$$MN9e!iM42 zuv;pB0s`@d=!+X3LhJQ;rxV{KdIM1STKQKowm;TVAStwOOvPviwXJO!aga`b_lI0| zMkw(696q53MjfUM=O72o04iL zTjtq%&Y1t8C{FA&w~?D7Ff%s@zOj|LBrb%Vi7lZ|*FL^@fWnuZ8N3h|`LlmwMRM=} zv2BM@Cw7RMYq6%RVXdWrTx~f&>dt+d>djj-LP4^#A8#*36}K$Z5s#S`jOu<=OcQo| z_Q~fp;;5y-n!hlSoOob(yI0}Pn$`y0QOsf_?vaKmQ?A`ek1p#=S`1hX;~t=94BZJK zrZPB_T6K0mnf?cWh@*={?ChMfviWQs}cJne9lP}m9Yu>-eHxa~`ZV*5mNq&u=C{4swt{^))-@cdYY`d79*{`Qj zoJQQ$f_%%KYBHc~`>s#s7I{%fzgCsp0TX%@x}aw7Hjpvrmdqruj{)ewaA|;L#=Wv zIIT`>pP#)9L$0yS?D=URz%A?)dKn#GD4Ddrhz=5RdBYUBWolNQ-~2U?l5;u@`NZIC zoJlfjJH>dc&rvaQXM>)-^f?cKvb9OX(3thqt`axyN(ez$akO>nL_k-`;Oy!-awn9` ztbN|Sg!3%3h~!Dd}{v7P(P7}nhN?rziKX7m>L7;QBj9=gMrRIDD^qdUXtc6Pljhnuc zGxw7m+@YD?pAfU6e()|Z(zx_RFMZWD*RBl=47c?Tk8v)Ial*@$i?w|NH?7I{7Z9tQ z?H*k{dBqCY4|>)Jjzu|bK!7Z`H~4$kHlv78xIaNqkjT_vD5yo3w6VB>veAGrt&oVbtnfqj0&omv>5 z|Cv^K>IZ4n&bmGZ>_#*toNk8iups*p5xKd982mgWhj}Yw=^6&4Ye{;7uyDM@zaq3w zF8n5R`y-@2fz0wtDd;Y;vrbH3fx7jc2Q7YYwT>wH^3V*!8JlyB+Rh^w7MAq0Q{}KY-qsc^U zxAgjtMP%UtMNjaqKUP7h;it;QSqN?6)sg$pEjE3(dT94e5*$odc#`XhG`9> zlT94ZTf;;oT?wYNL%Q2d_85;*va|}Ew9v|>Chg%O<(Ccl_#rJ$m~-4tozn5Q5 zz&@(9aZBj4VVGSz$6g-t6-#)ZOk;dXCuZ6JQU`&YB=hrBEhN|HVUE$el$R@1A8jlR z2as9bm1+g&Vr*`%=sn`@zI(O1`S!RY%C%iBM7WidlJv6!WlSRJbyse}B2j@Z?8Y1l zY}V4#mO8|795+yXUqJOWMp82K*QM_ue(R5Ha9qAmi>Sf71}m19pDi5`+9D6_WTbu- zp^T}=&hdr5aDQ@G%AV{wGFv%Rc*8qn8aQhrcRUt-fVZ}>@2&C6`dHfOJsk-Vnxt%4 z7hbP6q^yAj&2w=l7Xt2M&PnlmXH}hPS-Q0ue!hlJ`T<04Q49UDQhCI|`EQ$nU8IHj zR-S1dWRvEusBd;VUSOLkpnkMJt-1U>tT*k+HVTnOJ8kDTyKn4F51!guBwGMKY|4ZT zDnest*??ogc!YmXVXwoiMb9AH6)k~F8>qa8D)W~JQJZWM2J7xL2o?k3`m;zqae?!<%eu5KA9?`y$>TrZ*p3%&z?-%TgUh;;t4 z8=@IlSKhN2c@@1@`gKY(s`-poWSQiV{!lCCGb9FGL-GMGBwA8a-i#W{M-+RBd8blR z5^Y!(BYV`BnT1@kzV?}FS}VeOj%tjR+Jx_`-$U~PZAoe8bCaVXbH)#R+ZESFfF5zmeh^ z=5lPO%^GOGigEO~VmdM)CoCu~=UGh~JyTIL^wv4n;K6tp!>#(d!R}&N7FPTW!_&kK|HZq6&UG3Z&$ioJJ56E(?-XjZTUrRqm{%&=|cKaZFD zsFi_`^%s(N)0tFVGX*4j#ryp87KAc|JK z+O5HH3n<*p+}7vknIq-Pf|_Xb!7|8WCkl3B0qgTiD55Y0$U`qBN8p5oUt+EUMQ1j~_Mie;$cE!2CH ztPFBEj4n^MWK|GD(?BSQ-s~`HdG*bK`M6hci2ye(vTC6zOb%Vu$WamMghBaSyX#bx zu-m4@YzDc>JPS$K$P!EJs%nC?C@e`=En-&}EH{jz>?txFm|M!&OTf$u`$?oTAIkqa z00Vt>+DbvWu;x|eDS&TlUxO3s3vQd;ff)*am^G*;dc9!EzF>zW+)c)h$J}sy+xEuf zAZ1QHmZ#7cz%xJ~bhXkb!$HbPm-4Qe4%BlXa<&t_3jI%fZvui(8>&l#t|wF&h1t=| zACLI72oSm5A4K+`bX{j_5KrFhcn!tfuD>4e+qdy{LXccNZl~zNQUt83>joWv2RI;s zC_!_>+NOzA*lC$1u5#P{nHPR1`^T{sB~lx!F)xb~#HM^2$48EAUCX$qCfS>2E=~M- zEfdtKoC{9Mg+D4yVT{t>7wbfV^+q6t@h+Vz3C3O4@!|{J^)VB?+ZnMI5= z*J!PsHcWtw0BJIYU7o<_DvyIW=vpqR(Iw1S})$z#|+5-tV&4VfiW1V?GlKJ4Y z2d^QX#}Y!P%bN0E6x37D+rJr<&Nz78Vd=h~KKXx%-~yHgJ35eEPtDh~9G}~t?pVeD zj5|GFp;Ix}aU*DuCqb;z=XV*Aep9v9ax)oO{b&oIm@|?zQkTvhe`JQko8{~0AAd5y zpp5X$M_^=t(Wv~EG4a&1`HaJK{GK=Lm5PVTbH)x(3%l1(RHT;_QF#Nn-Mcdy$QdA4 zW2Z?RKe&02`jYtx|EMSUUvrQCijd4l%%r4+6pxM}<$4d2Qu78bgrR1$uL89ING$i< z5_LoW?99i@FXM(C8WDcq1_P|e)>`YbO7N6VD{qS_7u}H>C5<|Kh{EdO^ln%A2$#FD z$VOPGiwsW7_bF*0nB4Bw0krAjx^c%HwNS6NGKaWzC9exOMBXF{GaxEXjqri<_aww) zoTl%q;?0Q@@x+DA&~}(|@bZu=P0uZ#OoVB+rN5F6HzZ3ejg5o0FgeW|UIm`bu0tYs zZ8NbEHJ2v}unj-scFsCvs|HvmZs*sM`;f6=RU6E72z{+JYd&@*TC#s^GbBJ zHIp_>23sn-n>7uA@2>C{E7qol zeCXlesB`t?0SD2pTKh&RQ2LMfQ|H-|*`eroGl4Y`f7+&R4a$uq+k1Aub-}|9p+=m& zAoS>l#~~8Fwgr@PIud-IWu`{lc)q$1%OM&N0qvsdN^oj{HZjK1fsZIJ^{Xq@Puc;3 z0B4B91y=>e_&_7ac+*#{HM^5g2_!Aam7@hHX@F%j+#GK;+z9?oNtz=f6fMZgsy&xC zJ(`vdod2HqW%8iX%TA%G2!N4KuIj{gBdc>k|Ia6w#{B2RBksGa0c#LSL~w9dv-i*! z5J|#*Bs;Nj$5dCdw`i3O9hIaK!-+G^4&RpVBFO$wbKf9Hq^Sv6bZ+zgQy7fu+MaUk z9`vq@MW1cOn5`xJVi^6lToq*grIH3{I2cK`B8;B+Noq-KpD}^Xi|Nw~t*i?VJH_z@ zT}E9|H8414O^3_uF-AW0q|LPm(TJudSBAM6{xKX@G5p|RCXB_I-=52P8%y)l>DL9c zB=1p9P%0ivg5I+Wu7g*P3v|P!ckAl$yleNLPVMq?Y*7gps)o5e+2ou}CdZV?ir zTE$?tw>YJOgNGC0aItQvu%__g7Ip!1r&D-%tL@YZHYEJ@5z`+ZgO)kaV&u1ihiQ0A zjVOf+GH5s9&VFU>JCpLy)y3vh6B$J+NppPlALa}tEn{rWI&0^eciK?fFRUGa6$Y&n z2R;U6m5))HD+cd@;=Q-)#2m6KQ^+1E#V;p4Y^MaYyGCKznPFn<_B`IY9T)i{MbiIp6tJjXO^ST)ypo2!&q9ZW~_8j%^b3JB#;KI z+;P2kZtriiV4j*l`6h(K9SURqomOjo;@yuui#>LUqt?}ki_<>>{VCeCUj+g&qaDRo zjQ_QFQQ~uS&P}n@lzp(vTJ}apAy@gqTX^;#bXWN2Vc~*rxs7`r#sBzV(}{zB!H3F6 zS<;C0%DLSI`O6#sP15?W3;h2QtSSAsNcw*{P}N_daHj5k=|svG*3F(~##Tn923Mm0 E30E6~fdBvi literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/index.png b/0.6/assets/images/social/index.png new file mode 100644 index 0000000000000000000000000000000000000000..45d6254074898c2e986a02b7af70ec2f37b78c87 GIT binary patch literal 48146 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

GgN!VGujfGE_>07Q5B{YCYJF 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%0Df^A{o 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 literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/tutorials/emitters/asyncio/index.png b/0.6/assets/images/social/tutorials/emitters/asyncio/index.png new file mode 100644 index 0000000000000000000000000000000000000000..54b4bf315eb64cb97f7b0040e61ec4984e357936 GIT binary patch literal 47423 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 literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/tutorials/emitters/celery/index.png b/0.6/assets/images/social/tutorials/emitters/celery/index.png new file mode 100644 index 0000000000000000000000000000000000000000..8164659a3cb016578f28e9649a22d7972d38374b GIT binary patch literal 43427 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 JWw)VE{|3&FBqRU; literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/tutorials/emitters/fastapi/index.png b/0.6/assets/images/social/tutorials/emitters/fastapi/index.png new file mode 100644 index 0000000000000000000000000000000000000000..f33b5e7cbd58aedd12a9d362568547e0a38c9596 GIT binary patch literal 45074 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 PAx-_uMwhCzZ6Ey?*$^Wm literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/tutorials/emitters/index.png b/0.6/assets/images/social/tutorials/emitters/index.png new file mode 100644 index 0000000000000000000000000000000000000000..8b43d8bb1788e164528c604845571dfcc6c89607 GIT binary patch literal 45342 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 Jm9kane*h^1yk`Ia literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/tutorials/emitters/rq/index.png b/0.6/assets/images/social/tutorials/emitters/rq/index.png new file mode 100644 index 0000000000000000000000000000000000000000..072d92f49e118e08f3370934c47af0e80fde442c GIT binary patch literal 41305 zcmeEu_g_=l7cJ9IBi#a|T^ z6sNrYJ`4Uu^MRi!1qI@!^5ciPK56T--Y=g+(Z@e_lVxL*iKwaPemT`O3J@uS<65TBs zk>?`2V$y#0CwmO^`3~+L>@%YLnmEC8!B1PZW2f`KmlOh*Px1VFX~;-<_1`O=aEc56 zUL`yUJoE3B>g~2uzpn!GE?Q9jzG@r!8+@IU9}By`4FA2V5dQzS`+sQf`k$_!#4`9H zRCMcBcNH$G&KPe%IWtrU2^kfVmkOVW(J0>k6A}^6#%WVA2d2hb9yniXv(nv0kt8*I zx2vi5E*-AhRSn(kS(zG|!}KQ%6)%?e54p)E4itaKrG;HeXZl_+u%Rm$k8wgo3L5?5U7}l*&}^ZX~n=G?vsi=&*<*Pplkvn{YPXAY=ajS zoH+$V{;cRKn>1sgSSWC*gXl?aY?nv-5|8_wFmmLO=?*% zHRvMT#-)C9{YJ_vhH{_n-?L;vd0~GTc&ffVguq>C8 z53v6Cf%VJ%@#LN&V+k57jCCuzwM%;;e*UgVL%K2E{Y7Y3p>YVpJzt(B*`4XgV+466 z5rL>FEc4NJs?6O{xQu00=jeG8D*l1OfzdmCtYn*8)ds?6t%A^1;T?X%Lh}S_qN(J) z6Wm#ndlG$tFB=?#TWX7*u)Zkjd9fd`^Ols1p7oe1N{*j$lI+~VOf8!^ac$eB59UcG z%FBkx6mL9^;oNxt3F>_uRklTiLs)o57=L*CacFir)EF6M7bp@x8{Ht=P_5%l48AbK zb@Gt5;Vi7>=paUH?HhKA08t)67;4+f4QHdHKQYxiR$WR(Y;(Uv)!fZmjrXk;46=-v zQc6Mk&ohkK?s(Z5#KjO5xnUOlug1+1k6u2Dm2IjwF{mY8X_B~*G4HIimIjUW-$dJn zWZV5TICRvcQ`F7}R`ZkN%xWoob2lBwhNE>1G>n%;`XZP#DW)O4a zYNFrCtM>HU8cN%^fKdn(328x9JvqoZ51F`cxQ;xzA;r}|SUyCId7_}Y>hJO+%nb|) z(k|gR?n6(TI%jN-+!fQaPo9V$6%CH%bYczTERAL{^>0$o;|o!t?zYZ^H7s0;R25^L z&vmKuBzQv}GKb|~Q9;Iyt=G0!e7|U6y@1(_^7p9-m>FaWM$oh5n;95LT1)!(r%29X zE^7-UXO!Fgt{_*l&L%?YSzC4UE7ovRQTa@WQE?=H`BQJ6vbo19CLiz5 zVx)5AcHYDbFyvJmf>j|zQikRakefw&9YKdEd+TsnbTe#busF>NjVN=}{{FkXwG{}4 zsJBYkDC;l8-;ogzFF80HvRa@wXtV{zPZtx2KT{q&tXr*PfLS{gnwc79d#|qzksuG> ze&ej|(!qaVuf6{@S+I?9xr)J_h#Fsu*We)G!d1CEyCnIx2)6RVaztrW8ajl4_Ig|*g+vBEywkgH&x zg<$D|r*ZUi6=fZFEOorphVi#+g@tn*CgQ#p#D_bPP7ryF65EuUb32^|Z8?FW>ToKs=^wp@HQ(6Q-6q z2*$;fTGxMa0t6EJqx_r8%*y**>)I<}mpEsKFJ}bl%h-l@A&m1OTa&|O2}-8u?wYfg zI2F`6Gc>rJRQQ_I#h9m)bOPDK-#lkE)0a7T%^+Udmw%GqkFjK`DjCCbl=`pKT?d-E_j_kGbl@BZd8k6eNI@bq?NO3Zt1)#qZu*5soRPL$c) zq(tMF`AhZkVoXxd_O`o`I_fO>d__A1q240miY+ZJ^RU`muhbn&dX*PXUcnnTIxW5@ zh@hBZP!Nj{lOoMc+=$rD?f?q?Y*H6LULI+bEz;60w#1kU5wSLtDeo(e6g9w!fo&KZ zpv7mLK)0lE#nfUVE6uV*>4B0!_U5OV9bqhs@(VwL=j|}+?x;CkbK?rc+qbS7ZzCxj zE>_VuQNHiTbJ|#}seJg*ibimY7iO8ZIgd8d$9ClDoMI6{b*;Wf<`U=zU-%5RMWMbe zc9HbO*ClxcWN*gi8Yjx%JM&r7E=5><7R$`ITOCdrnIZ0^@T3|d?3;!ne6m3|+wbs| zt?KR((`%uzAB#gR@BjQISiULS=-cz%p39|xe^gG>>~3ay?+L_eBk~pR z5PExyZOmO6>8PJjO{UB+8GOS`7+?l^TP`6B+n*bsyM2FyF$|xKNXj^`2o+#7;5sxt z_geBA9D4P(+4w2r1?J>%*X({o!JR^}=#g}^B}5uwJKj0&KRYhfGQHZVlRL3XM_tUG z5+yv+i%-~$nv=17x3I6r4&x9%y1Nt86Qdj(c9aufC}R~vz62tLWg=<(?Pe7NnRH*( z^W$wlsB7>oUya+I7+{v2OBRI8!wwaPJO8YQ4ys4X zHnAO&lRhh3>Ix)d(5E}Xl93VoZVnr7Tpg_1a`?*%FkRl>{mM-z!OY{>72iNS7UhYa zb{_P-p-D$y|1uO29q~84$3NGhk1xY)IFS7d(OLE`cMt=QwNH1~1dk%K3v0B4**b)m ztEX$)2_yLl288UCK=NvX0b^JY1-B+kD#9AXU&&9xXm9ayX7)sXKV*>PiK@FTt`JB+ zfa^2>ZUq`jL`KhNA8J0Y}St3%DY&e&R7Y%p#={$|dKQwIeLh;&}3 z;<8rBkB1S*<7*dT!FrM#7q6ovI5W6O{Y0_thZZI^R)nUto1C8atQDRc*Y=50@t^ z9($Z=ciB2`Cy=b4yx5pkJiIZ)Ng2r^H=|QLwKx`f^h5sW5>kTG6Xk7T$owN0-<3O? zp9s@isE91?B*mPk)c+_hOELJ#iAbA&(GGwim8|Ey*E7LQ}_oD8~pTWFLwO3lp zgne9$DCfj+^UA9%01Q z*=K(eF=L2Sz+jcw||3 z=cu`a&6lsb=<>~Vnqrqn|HO!P?QX_A32sgoyIUbSyv1i0AYDn;}I1V#9o8A*LwY8yJ#G9^9RChs0GCVl(7OGas@ z3$s~#K&p$(wW^YK!;d4spLEo1hN}q `~k2{fa%&>h>1g{QJyOkU_0VcPst4UHaJ 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 literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/tutorials/event-linker.png b/0.6/assets/images/social/tutorials/event-linker.png new file mode 100644 index 0000000000000000000000000000000000000000..d80e77515540c7d9c33b9117f986563dfcf8f64c GIT binary patch literal 46885 zcmeEu`9GBFA2&%V+i5`vhqTybEz77>w(R@ZlYI?i83rX(Ldm|%K8!)eGS)beeH~+8 zl5NIrh7g`hr}KUOi0ARs{iIGcTv2&=U(YvnWzxsjbUx{5^WaHFe}PZCM_Z(=4DVm3&YeD`@^`4- z0PS-7jT8;IRL+Xq;CR@i`ro1H_x{d#-zPiL+Iq#1$)vvLU0!eMG*|0CkIEOWMoK7c z?RuJ-vczln32{YBR;4fc(NAJVFN61jpBb$Z9g%+@Dehc7CHU{-9X3klf1j>KQqcbU z6!kcm`rjv|YfYzqKLuxBu%!I`)YN|#e9pik{>|Bpdh{tzhBmXlx#Zr=#% z6Zy^wA()%x+%VMn&xNRejW76`a-Ypo;(JYzLWboPf>@dsr&jiKk+U$`B>d^V>Otlj zhuWUCIH)mm;zr^_sr+?shGki^mbVL6dZKE= z{~X3$LLA0spAaL%VR0dulqgh|11ZI59$$^@{oWD$o#$WQw2U&ou(9OS$>wEjJ#Q6V zi}?GKK>F(7nwNLH!I>_)|6Y2wio3qCM%BVprwHD-UfLE|gwV1WxeNYr7tMbsNr{3~ z1(uhqpo`IoTO%T?OL*{!wpRL0D}Vp{uBKVx0=~iBD91!E<%6S=iK%?F4?}M=GI&(+ z-;fa;f`D5^HdGehH*Wz;tb5bR@YkKM&9QAXqz&N2oUU`+xPsh*Uw+Tm>)DuA$Cqnk zFXx6-NW-n^8PvwG!g$41%dL3Q6@w+;$l`^EIvqRm^1`%N`g+uw0U@WP0edO@6T z-)#g3aoY#%Sk6_*5J(EWcca*zUdhj5UB$V0R|F+nH z5Z~|`()ih8Jmy`Ff{ykJNve1n1orT!6vApTxS=0nM40dLv#L_-|7^&)wK+3s65I8$ z@#JlZ7KD1&Nw1YtY5Gk3KT|c`)>FtE$bRCm3414bC*Bctjzzj+ETc`7gw0c}FXb-) zca3vVoD=sJxx+#^Ot-&300*att@J4#Qu}>IU6ktPRjzmP^zEQ$(MM932i*>?iB}`3 z^!-iYcDlKc34`oM_cKsV|9rmd!l}uJu4gg@8)Je*chI#jrdLmvUY{9^Y^z)zU!~ed z1U;NwPW?2RTAmD-y0QQ{B}nVa`I?aL|Cr%tVw-3M?+lKeUEs!(wniVlY*&tV{4w3V z!(zX;;i>hx7d0MbmidvNmJz*`M~aN%?tbj~mRr}&t$1jW8Smhi6a>Y4)S8Zc>>z~K zhQsjRsyilyL*-p@ev>lUa+%Un`paK0y(4ed&>^fGLLiuGbE?9MFtNKXuXDYKebq;I zuIRSrsM$5}G?ixxB=t{+-xSvWwVZwdVeL>4sj6NJj>f|$;hxs>++SFJC$0lMxaod( zGPBxj9IyNxX8fV`CMy)zSbQE%o}7=w7Btk|!f)5o)g!YWh@kie{i{fXs>2J92Jez{ zJPB$xu%~{O%@j^t8J${Aedys#FVjcL2~~Q;lB~ojOs*0K-@>zQrPD@_NTF#|a2rHT z)ZJTe0*zf*|IN6T54aPuEKrWacO|Vl7mv#A^lDfIWwzMDrpAm)j^&WrapuwAM^kx5 z>%Q;RT?9v-_XEa?+`{56mQHCHEj%Y4N4fU5&j-4wJ@W$5j0GR6zqku+7*=y^!OkWc z)H}DhMn3b5?+yQa!IJ3%-?C;%nc}Hpre5-C1>b?EY1*uEGoI2UC9lyu`Ag>Ob^<9N z!V#z-J6*o2PMo8K8ED60e-q^ShGG3qHq!DV8rOO_xDj(~iD&biNC7=DGLlIqo2S5_ zQAxO^@19H%eOc_0#N|OW{PE4JnGGP?i|32T&RFBgk4RzpyY|{mMU27)!+Vl8(90YA zKRg`%{x}$7{ru2<_w^dP{6_wn6b%z(HluEQvhOBx@%Xrz-VEz$zm5-_b5LWvQzDY4 zKX^EPqptPg?j1M8;;T4sNJ18VD1j(R&m?pEs#Zv^5ZcOKFaclb3uTP@3R7QCOn;ku z!%Y0-qE~utloc#Sa}1fP$7hbth~J&OeI@0E{$Zy!Wi(rzYrT(J^w=c_dYf&w?jNxd zxn2--9pB!B@T9v}5sE@>j6DVspglQ6!#oq)@m|;sImGDA$TAOiXE;^NlX7dGTx%MW z9=Ybu9n~l zyGt;7Cb*emDCBdt#Wdkc@)kVT9sWqG(R}bz_Ji<-zwxybNHiS*#3F=;6)JF0HjmMH z)n<(q978bQ$sbJ(nA#90l&+nle`Z@bVDHJ3-EH;}c9}JXyB<^c$sQH@)!iHRn!<_G zBMwfv-Mw|r+j6OQWwo)sM8V_Ry&8`ywM7FiHsLfqPOYNjrhxuf()gmcM4i8v>ESZf z0lY}wHBBeb^4<*|Nw`yMGcI?af)?_<6opM6zCWw4cnUl|Cds$0vVD%~4YfWqM>m zeL5222wS*zq!(eY;=bDpD9(v|JFOF4MPcdfYe zF6A*38`$7Iy>*3xuNyWP8~7cMnTQcTNtp7g879 zvM2ih8ehSA@$sW_ze!m(!ww0UbCQJs!}%%=LB^#{H3F${^-#QA_{5++$8Xy}4tEL6 zdy}r?cwcy3#he=5s?fuN^cPJ9(nC$ms^Ks&Ita*j+ z$8&M_Ga$9q8Z7t(r)ObB16pjSjRr5fvjWc~G>?^nSgA344(aN;a%`A8C|UpE+^J#@ z#LVba2*lgoX3&knaj&*P!NWdS|I)CbH$5k*?A#d50b|`sq^MZQB$TD{nc;315D%_( zBn|K}Q6dlyEtGLqlIB$qOo0K{H$%>255Nya>cgj$6~C zrnw+pvZPd>sT;?kNi-++8#`@g#b-^X64-)eVBl}++$y~&zDc+Ws zOi#zkZ`Cm5>q(($vQ_HggPe!3)dwzb#1niWAeGEyyGZWan?&Y%9*N171iky^^!HDf z5ba2tZ6xWJz>*``-%H2uo~E2(Ax3ltw>e8?awL}Lr@Z8~Zf{z@T%5e4R;!6RiyWJS zSTf`NXsC@?2Zw|XFpR^#lkna9+ZDXaAIA?!^(8@MdIkCP0r~9b@`y1p>Rl(A042{j zNDb=v{mwVUR-RXXSP4}FLrSae*k5YP%Y*TpS{%&a&X`G#YI5?k7~AoOLRmpIKd zlGhO^gqE9INz6g!)6Y=!L9nXyiP`)d_%2glO6Yq)CE$^FIir1*hIRv#wd%L|Y*n+D zi%W>?gP22Yd1iHf$w;11a0fJIifq=Ln|1%ZPiL*To<3|M?ZdTErZ+W2e;Cf78H5WI z3b~|japFC*Aur$8`B}meDyrsJuOCnww1rdAoHmUi?appemB6fAj9!G8!^S=)oeQ5@ zReeTk3$e9}t2L9E&15w>U~gYwIE&u#vz5zDKL=%W%HPv{{gf?jCUjjrk_qas)s)zk z;)t+JNnTUfP-qr7`IH0MD*hZz;c|stN3H~JzkF6sbtOz2%Jaq*^3$)82y2v>G(tDd{|4|eZbN?myyP2m(aA@LV3BHdo$Ss%8-N4hy=l?z($_-T^HpOL;k zN6~~bm&)Xfg@G*WV5X2MJWMl)gA@M@&2cHtnv-isGhpNL8L{v{#7hRYz(D*)b*m>$ zn2`%5dN>XHP&2js;W11vduqh!xpE5k$wsdhcgzhl8b~q8-TdiJ7q=6BEK)#+99>u` z0_QtjwL>V+uf<&dz(>G7F0WCk4H2#Ce_-^`U&r_m;cMEs#Cdnc^{?HiR@{d!d+iyE zthUYBU}ow%w)O?Do%?*=yeW8>kp2*nYbw|vi4yt36-v)ShO?y%j$BU`)eo&^nqF+u z9)^dBth*Er_}{b_NPYJanfKO#H)T+%a%Y)<>kbcC`)4ayV*0_mY(SzCJhr_XZpD03v4>giUN1-upbYlc8eI|~cHlDFIb&L<<^D?ZGOFQQZaw-&`MGB7 zlsQUxyXaa{Kdk^GUCWV-TuFaOb6h!(o}9k#f?e=+mE%Eiq`fdYqu5zz(&{C4{(eS7 zd5(F8eGzUxr4~ly&AJA58hou6nQ6#nYUz@)!rNbhgi`^VTG)&Y9FT`j ze4TlHFWBb3p;&e!3*Tfzp3lmA3Zg#Qik!=cnn)^`cMrmIUA9#57eH6G4sLNtj5~gc zZ}AP>r&>!LBuR_AE=4azfyxeq8EHxVrJ=2voR;$fa>A1VE2qq=vvh+5`ZX0#Zv0L- z_cD7Yo8BznnruFcenR2sqCxNJ^=o!9cu_s;?Ol(>zUl$-x)iyEo2QB|o*4bj>~<<> zpSd2B%rllZpc6X2Dj#rmtIz0xS^K-O9Ve9lWA&u?s}czyQj*)wAz$v_^esDR`&OO1 zF`sqKQhCZ(7|pfDIn3z8SOkm>blEaR{5cWCW|@UdG0Q4$guh>ihOd|58-o*&qKVJk zKsQf~o&Rm%BouAp2I?7US;om=ryJ^aukbxN;@+uk6N=UKX0Gg{li|$W8ob$%{^CS=XGwd6ETOH8nP^3PD zr1HvtDQ!@VHVNAaOe==M`tYJj(jceWOQZ~PDBhmDeRLUSpX@X&c76r1YnsT+ zMsb6Bw!-gM-y|!$%UZ{YmskegLCfT@JlP1$F-i{LM0h$JzB3Er@zYfuomgI93VC}v z_`wCsI4ujAqDK0*8;8GuJq|zmNNq;^p!|TNy}gP{eL;Ov>dt08Hip$q_P&-kuKdhN z1~P+Mlt|hH3NiS?9@}VT80!_;Xom zX3!ErH3Q3MIBajhI6=vTeGehVeXj?8_cBb4ifA;=<>o04{FUZte#xwOFSiM#T)tyZ zFxV5DX;IZMcBN)U5GcES?4bR4;oTrXr_+2H^I_=GpWUTeAJbTwImc(A?b-Ws~ zbBLg@@!<|S@5v(WNrOBg0{H+-uBOIXA`;4_F8zGq{5IFCIdC;T#>-eSRM@{H`d0@4 zPv8fcyvxI13QFuzkeQL(`)F4g?-%n2=D6EAw2mz_u?G$LxvB}E5%^H{>hb5hLg#(S z%^iK*ij!_D(T=}FEj&-YXM22^i89SZeDk3G>A~0l+>aN5LEPJ8bu#*u5aLrMGW03f zP>C8bCUKu8;t~fFiLh7%B{kn1v%{!g3jcJf=pR?s*ZflVzgem7uU@WYeO~sGA}Ve}!4q z=N9VN>2t7|pJc%@7X&r>q%?2(wf&)TjB4RWPlbpO3eOd7mN{perH<}h=m`%@$TA#G zVDXa_U*zc4hh8LciZ-(4-VfG)x@l@&MRye|K0}rL9K)4&-JK^|>El?^9a1WY2ny;0 zkm^SIvK-+0_#9LijgzJ=39If;>NdWzbCf-KZQuVzEzg>A4jHs(SEc?DyMAc5SQ=>3 z^sbC+owMIbYR$m#MG$8deXCdNrB%YsG#aqaC?mB~oMxudvN*$o+UkY}j3D7DK#=#_ zLKzgcePp~ft);)H5t=`a z>?A293_X4OvOqOYp>!HfAcHV4=6=u35!pAY&kYP;e-$PW-&rIbhnwrqab)%uV3;)CXD@}en{$x&>nko*0GlRVlO>l`vZYz*<~^cB zPlRPnc^T}!`v+vHYjEC}KA!|>X0PKEnon3yUsH662wnihOUPBN?B4A6<60oE?mUDt zMqWS3U;uZr{jPRmN0tnJiq`YR&Tz>OrQ^Ab6*vM%cN|-UTbgD+l@7g6ZBWRH zb=qFx{VQ=us7<)<`aztQ?Gs(~UAMuF)3Su$@JVX-q8MpJCBn;euWJ=z-=-{6RPqeU z(OxX`krj4Bhpjt_tv5yW*^c-7({iq%lfwG7^cZRcDCiwk`tm`y#WeLD*A(D~4{j)T zDz(Q8R7wN%bIcl=k#S=}fo^!eh8vXHBN0tAMYD9^@^W9e&{!;0~Tr`Xv z1csC4+#vww{B*iyd@(t=vyYXDQl4Gmm*~%j5HuGDE(cw~NN7DLbx$DAHbY7J>fonA z{+pa54R`JZ>#OQn-tA)Q-MLf#>f*^lq8OX|8Bs!+2zP6VEOy!vCIm#b@F^kfu(jL| zlV841CfL@ab3HodR-qtVXtoLU(H3>wkhgvQo}wuBZ0S`Vr(}4W_$1b!*PM`hvLJ;s z{JFj|C4Oi%q>&J@M6c;X4BDXs*lB9v7wPAA17Ey(2hPJM_D7M-lU`mC2H|F}ZZ$#`6-v?xW$x%17zkTBYwDD%ht^jTilvLtG@q8}Eb{intrL7_C{z9@k^bbnFbnNrRIu z`;T@Lu>(6&_h_#Se8pHH;MypS^c7YA6?qtkAVx_vMk*T&{ob(=FQ!r=@~5~`;kL)BjIjNk*-S- zOJPT^)7dmZ8JfT#E~oHpCC!=)OlfLDFAGCmA-aa1SdHO+Q>Xxf+;5`c-UUI%y^4b1 z`_qik*Dp_^k;*ZFIQD+Cmgfj03c7Azs8iiU$f+sri)7PX_~(Om$TYy3ig7e7!zZ2p zWcxdr-{_9&!dA!p_W7Ry{L)W^&iaCOO}}WmD6`G{dffDUOy^&oMQYEEjw4ULkHV7q zDhtCmlY9K0(5$9K26PxT5H3yq=Dr^|>?R&mbI0HTpzy!N8*Si|kxg*IT+H3@?Sl ze?{r|>H2LI#c=;2DUy+Lu0pr|ZW@zFmzlxi$x3AG{%dobR@Qsav^h1)RNW{}<%9k6 zaV-7Y(&%PRSb5&}n$$4yyOB2Ks*B}gm)i@keK7cp&oyW?%r`g#gRAd7Ib@C~kxon7 z|68Tul#f8FL-uHm{%xu0|L7R?NJuoYUU%KKYA=&Q0J!7y=Xx0cOC}%M+SkxKI2hkk z>pUgX=(_ew$3X6?%4ILpK5j~bpcgOLZO6M6WW(yDLeKD z_h*L#nA;b~O-5Ff2I`bwW}HVp@-*>Z|HHHZfMw4xFQT*WQZJ7FB3+m5c-xREgBY&we*F~+qA-zLU>HZ;FEtA<0x->>fb%plcTVLkKFR_~a z9CAf`Mrf6F{VLhn(_c5b--h#_l(``%PC4v;Bi{|f$Zu*H@!gfbRQ2s2+Q4tjZu$KRjZ1>A~MpIAy@*9O@58A(CK4P|$hZS5MMF(K)Jov*;^E zwX~<`@GX8iZj8GB)iZQ;X_pZ8mesf=S|;4f#p0o6T4hD%oUAS@X7GWL&L76u84#R6V}8 zL+f!^>*u@Vyn(TgJ%!Rq+SzTnRTzV!yLUW2a~bRod{rBX(ac`XacwACr0t8%(YmDzQX2Z>ctAqyDfhTcJrp=Gq5D%?&7juhRvCjT}vO3O<(?Cbp`A3-0aKZ zq`b}uo?ZMu8qe5LwcIF}ET=dCxYBl0^L}TIq(zA1w^${eZ!Wi1ybHe&`%g702`EBN z5Ylt=ltT1-HcvjUmR>oMk}I(wGfCA=z9${UBR@?wilpI)Qmg%y4iLJ6Pt1GZ_%@H7yS^sN^thq)aZ6I_cfa;nzACF*mdaMqCV+QvKUY-5 zU?-S@Z>u8n8CnMW*xG0<4qrwi+$GX*Htar5W`eoaErEzY6~vcC2!N$NKVPtjOBT;? z{vDYX-aAv~>WA^xhHB;Itb0WkG|vs^3sp4S{hD93OIY62yWfVTUsj7C{t(vbHwxm< z?v(Z+PL;g^e9qyIg2w>(q0TrC|6+eXs3Flf^!UwhZwo&6NUVl0`Z;S@-c*sh2Y|`! zycw3vQg&~}v}??%ekShLTko%@H$!QzFO$hkaFq{XRaI@ea9r!;K2g~;EN5K=jZeba zP-kRxq+rXMvbGbA|Fg3}cW=Ut2WW0T+7XmH|M4Juzd-sJDxaq(qmwjZWXd%$oc}<2 zqsXh4gtG~)+U4kJwSOQo-Ip7FO+{tEkQq|?-gfM$DDOhQy~yafu8~L1>z;JfWS%1Y+{rs%Uxk4~cR70J z$)T%={i(GNi!@OPEDCDKfwSL(rnSF261@XKku!b&XEp$O$YW?6%;YZYUhmI-)Zn8r zpx7VF`8LnX<{*=KUmnUq0vv`#=K~04zaF`{f;t*AJhoxekxRgX;`@b{L9MQ_*|1So zcE_nfb4?{46y9wt8&=kAvffinM>r5j&WBA0F+3tCaZte};$!F(T^09RW8mY8>p@t5 zqwLY7G0ElX%{=XqvZ&4(=AM z2$I)%rf+&HZ|0+_1nAKwaI?$8PWG*_Kgi*uYcMcZyhN!k& zF0}m+F$K9|CZ5#aTT9C&7oDW^Z@JMVL7(%Ppl+u>d-vC`Jjtx(UY~LSwx`g} z&2hz-_+Q4OYkI53X(S(zZO1eQSBB)S^*7Prp+z%+SPI#cWz3@0b{A-xerd`74an5YLZzu9D`6FjvD* zOt%`T9*?V$;|Bk{M(ecfMTfNf@)pj|azAt z#?M#}HZTAb_h0|u@s*3w8;Mc<+U?7?L{WU^WpC%0ieHO^mY#M z%qRW|t#%vbMg33`<~mF!m(a(LDf4USuN)TmNnkkaCt6Laz4(PVR#_Z5YIV@ zWXmAmvAmVmzbhL~K9s-q*2wf%ijyL!elanAy7)EL0e2~Mx|asXV{l)U1nkQ3vjU&=YF2Qj0a#m*%JHMB@#j|*W>-9*f;%K1) zzMns3&+weUKp+mi#WGYmAipdcq)cbWafAMBo4DkDPbu^lU|}xvH~;M|u*SuTKS*D_ z5E;_*-#vZs;uQy{H3X7%3+L{4!uzpPQ^uo_?k{??xk{X4@`F|LYQsP6d$+wml1on9 zK@`ag3z2Ftx0VK8L{^pSa+zE&?f?3d4~a3ZY_FfN zTI%~vz+DhEM@3G)t#~h7IUGY>7cOs$;LSR==j!WLoU07$^yd{K`BzA-;2i)arFUVd zUWyVBqci|1v4yKV z;13oq<{Kok-^ggkWppelfNPkO&t~g2F=+#Kly7jF^c@JOv@Z;8z1N&KUu>h>jeJKW zYp!cE&f-$P|GN3F2i<*UD27sMy$IjDtZ(GhNhMPyQ_x7)+qLEs$C=RJuQ&G!6;f!b zVdxW00B^vE>yMl+5KG9??VysW6vz zn_k-M(+j&x*DkHd{0ssB*FQT)d;;&G0j~88S*C7|#Y3RBsxi}L4E8~`J#Hg!t{%ew zju9m5h|>QTxJI>Z+4R=gudj%l zFRVX$TD;(d0fm3Lv)x913DfuA7Dy?;uZujD$3KR4@4npbo@BfCd-bb;!O3Pn$kyd#acABC{s~&BTzjFR zs%C3%!x6+HcB$2Li8|^sNsHW7bwI5q;R$W@DiPqPy0|f z)QObzNYXKV4)u~_Gq!{ny+l~kcDY`WT$T9ZcPrmS=f@M%=R&1zHm3D_WR6b7P`G3e zv?8kN*5-pw#7?m0t@uu&dW!!II`mk8E8@7|vDuiB!vQ3hx%(NpX{kDJoa=-;pjW>g z%jwDWN4+ZkRrEwqWM*Vo5=`9CH@ayUM(Q7SMASNs45Q@2vV1BH1X4PQAtqQLE6T!| zvgiS4iBpHNZH;4<_+YKNP%gD)wBqeU*fZ1df=ZcB|K;b9^w&4Yjg!~l$1julq7T0h zzzMhX~W)h zH?kGOoj!av&Ok}f_K#e!h54r({8#K(N0NWO+|I1>gGI<_)~l}u&2A!YeIW9fAL%7* z$%y9cH-Ca6T#Q3fUs6=FiP4MSFca>UO!k*XH&-LN23@yw}i$sKk%zP!2dkUn} zbV0=i7$gdDmw$Bh#kK*Y z5*>(C3*vV-Y!(+d5qK^q$Xn9{{IW*r@1x_oD~Fww01AWJtdM$mY3z!cgBnjZsCcN7 zQe$!$6VLqVnr+*Sm1bAS^&&$>Jm#~LvWIb0r`eF79omcKl2I7qE@KzQD9#_IOIRAXv8UDMW2jP zt$e0F)mti6BqdT<_oOPzouNq=Dd=NNz;{|dne@J;;^u_pcl2fIdP!Yg<95<~>);Oj4;hZ_ZF)S0Y6`@iq_V)aev$X}D=%|AzXxXJzeuP^?W zElvXm=@0UzX9@Vl1f)Yi$QDjtHid_x3>xkBBR-O5ma2t~rgN1(6@D^hOl0_TT&h3R zYR|yhEGuT_j$N!G0|WFzeqG8j0{V+}=Mw%7EPTMY-p{iNUWk3E_+M?n18UbQ*R|m} z>&=(FenBRvz#616CH@89@CkZ%&8+Thjr)GR6RBNb9KQja%}2^d3J2Y?c_vKV%Fh; z9`16PqvP|Y{JG{ApUm9yQ0L&}Bx-$rpG#KVc7Kx3oxTNMs7R1w^crWB`p>;Td}QD)&&&e3xw2&04s)s?E2-sr{`NX_W-+G!wo76kv?;#Ef<{_F_pwSG+> zMy{=z!@1*Px!nfw-;&PS_(z>TY|Br%h*2Cq!R49?WU ztw4E=i(Rhh$YeXD33F^&E zD}L(d?}=ICd_zobQ0_+~C{dN6B9<{MRvFf(}@C8ZP66Z z($AhgC9WuNilU1K)Kh?dM&j1vdTs1QKMr2%f8~8$EY}>`?nkGXhN>v*JlM#;0sA|}&?cHbRTbkgvsj1v1HCw2kG zJHiRQ0OagQ_CL0Wp=)`MUyW}AZBb542NKjP;Tfy_LA&pm=HZF#zq9*b`K=k8bb{nk zdDwaN3V-sY{v1eEwgphSWE_5_q!5jEQMb)FK7R4UU>r1#3-ru~5Fl}JRd9VFJUxM; z;ZdQt^}wzy%kTd%dSGD=MZdRmvtRJ8`4RtP`k*MJL??BiwC5poJ*d*qX9Mx|Lb%yk zN{V2Ye8bb^AAD+{pLo+EpdwQ!mw6)c&S$~(tbGT%iI+drm!}TLe!X>3`Gz)$b~>pC zuB+tHA?$WvgOF9&)@HlbaF7^NvdY;%N|ZT^j?y|YtEPB3+N6qe+CZ!5CHFGYh8|A# zoF<*32>xD+5Y0Z~Fm5sgUktH$=+v0fg2_oCCvbA~!^VfPOz9o^4(e`=aIY4(A%Re&sZerH?$ z8ut6>fD4|sOQJUDrpRQqNzj$oJxy;{_DG*(a3-mrH#0!7#TcSJpVV}Y;$A<{Ryi8- zWar*rAEFumAxVdD@yix2paqI^fAT{?l+n}>P~4Lu)-Kd%*Ql;L77moZ4}$Kpf*i4^ z^+aJ*9C^_8y@REY`hq9RNiuGV$4eTa^PpEZ2(eq=dlx_*cml?#Q++V5!2?3d3qKaR zzx5reFE6c>Dg6;IEgKHovR;MHwF*y;arG->H{KS0IH5(~5ignedu`3F!dn(NCuQUR zu6xOQQcVQY+qfn$pIJHd@&Uk4^uvpf%r8(-yw9=ljwT$UaOYVZ+8SF5Nq*$qTz_eg z8l<(BH2psk>C%$Poy1)LR0aN>7aAB11dR5D)7c);CToYuSJhjz#v~*YJCO2exWTem z@BC$+=6_CnIM{|e;V|P>yt>pX2cWRVhkc^pk-w(kX;ka$mG}^pX$I zVSDP7x*xBn-!&#~6F~Wm-5HTWDcHOzF&Qkbl8SXwX}YH9tU~8x z&wUz9iT$$r8wnIyUVgeZ_uG7Ki0}WbY+yBKIyrxU>NCoX7u9N*=9C*>S%Spn1sf(v z>Mxh)@jvqPljl%hdQtX@lTFQj&{x&0u=u;*1ED9sM{GuRO6=g50ekUA2oC6Nx{{SXsUUugnjd4gwp3>nHK@0oe|#W})=Q!OG2?${Xcl zamqy^A90p4ML7<)k~)DfDNa&7DUY}1{hldP0=FV0K_Xr}j+-i_>i5OE05BI+G6X`p zHegLv?LgP~V)|N!)kzq%?tfLX9rdr0AcH7)x|BHBjy}u&+JJb6DvZ%x%0k->@t3Jj@T4tN%RCd9N@oGIwGJ^eKG^uOx*X~ zrSjJ1v7@wqoUUxaC-_r-Y)40bC3i=0A6nhIA@kRw^eI6V_NOYi$tsLJ{s8o`N5q21 zor^+&?zK=GoMcY!&HSEGhmj+fy44KY3ARe6&yWQswOP+*>vO>qy*BE2o^04cb7* z7Gz;0pn1XjW><1v;Gj5vwAB)+BNL>ly@@rRVsG@Umw{$m3^qtGOM$MHWF*1&wCLKU zKMj-8>*Ac=RkoopAdaj1q>X{BSClN?rmN2s%TbeF8y;%SsZ{GcuBt3-dt!N)aC?$g^`&A3 zfQ)25Q^)U9`@^Ru_S>Rl3?K}X`ojQi`R*(1KCyEb4pwPPcN#)S1_ciBLwODu|g=iLWKN}7N28_{;LrJ)gk;)=n+BSic zu#YxUi|QwKrd`9-xNrx*c{50>HN-qUN#xQd1(14yE3Ef z$#GfnmmTTBmbCCnrej6AB082?A<_d9k+`Xcvu~ z=kZo+>-q6neNfE~`Zpce*-BM|+ALldn<7}3p%g`gymd>*P9&vl6^k?NwK?)0eq zC-Dq>Jgh#uV}2FL`Kr{o%#4csHB1X49Bq#foKb?OjY|J{PvQb2J9rE&M$TToT4v{{PDW<9a4 zmD(;If$F|vyO73K_*tpg_T`cf)$`j6L{I4UL<&T4ATEOFwf-goBXu=#2UZ`JB_don zh-$+yk)1+oqU|(f>Uj!|jVGTT{PJ;I?w8L7Ot+gwku{K4)oPmNcnVdFK2yIaNa5Kg z{^s3OX^j$#%hJGP%k88=UwYXRxq|U1ivlMDNe4{iOBzd_(?+)v@uH-ZY!mY6BMkpS z)jDTOpQfSIGU5?K8CwA7WMDu_L*pmyFRTGA+N;lrK?c%9mZIc&&!6lmHA`@ICUqd_ z#8Br+zZ=j9hIQT>+DeJr`;|HjpV+z*7Kq7vWMKvs@%iB9ukB*gsDQ;3pp_EGqeynH zU}{N$v+5pYN>E!P)=3MLBgPOnNMn?WPF&md#?C&jXp_wB&SL#ofEOf29En}Ts{x~( zfN@}J+@7eUT(h8S=`(>M$=~?YyvWEKDDH2~5*IA9{tn|lTn7rGva+YGYnv@hkuuq0 zMzKyO;>A9d2$N#OZ;a(X=fiMaSdF;A_Jglkb`p9Td+b7ZxgEC_YsN?q@DK;cmq zD2IL^sT22(22&_xx6gOR&-ZxqDgcB(;m9i>WmT$n8kA6=w-?Nip0;Sqsb?~pHlE5H z^A6MR8%#CbFTX4^kkiV0Eng5#AQCZnhKk)JNM z-GDvokb;;>ct5}B4)VQ%UjzsGE-5t=6M54Nb@Lc2$7qELn@)*x$w{UU=X)~{{%IR0696ok=l^iL z4Ykg1u}of)2dGCAIK}OLA#9FtF&pED)92d;U%ni1Q7U!R|CYa7X)p?D9GDwOa~iKG zedQ)7TquH1020!bqwRh&VtD+lg^ro6|4exrE7V|&COUSJ^kZwemy`b?7)_=HV>QLC zzdUjvo+m>8)$;`a*b*MC9^Z;;QtCL_ryghN;rcnCp6I%HZM4pnl?`tK<_2H2jlmY? zYDr%K6?>qiSI;bS;}mC=uuCye{9zm>LH(FLPcH+6#Qf5mrx~Jeo{rjnQwbfPzIC)t zi2p>FkWnI#Ff=;0dHzzZo1p75*CPivfqs?w9jMN#o||zJ?yDy>0K^!GLKAx;y@uZc zqz{T>6e%_2kN}l<|Si#tkSBis-paS!!?4O^QSgR zu83O1J?Y)Z<=Ot{E?k;OkvMIMk03ztgVyr5da5I3pgB{M3#f@xq8xCmK=-ydj>Jq@ z><3xQKFJ-8zH;Z?_4{aZQ~kW4ckfJO)l7Thw5Nc91t;(a#*#l6+G5s4+jgW zA8I4qUtsPZFXCgD%aof3?$T13qe|~sdH^$-q^@M#O6_?Ea&<0w9*gy_7*hLkq4`|z z1Q;RQKYIJvWHE0m51hQo_$7zV#Vr|wJD`+OdYk2Je!^M5$>WumK5CKBUwh8CBBnR{ zyl7$$=@+Q#DKhb4XS*|NIlFEO@XS0>ZQxm`!B;YQ3N^m4zIyb-dG z7I8_eah0H^0@t7XVb!egxb^0txD1A;z!QnmcL(~UrSz6p@rSHLc1FvE*zZXx4o)4v zut$m1TO*0=4ywPkhCvk@HHd=^8C!axR}@k9VOjP)dJ=ZXn~JwW0oV4@CL}4f0m!D0 ziLAI8UKbjn!000s%7DwMs0j}>dC%uTh|$cul52Z+yA$&Qv33s?me~5ERQMr|^{!_9P*kr-iEiIxq`R%YR@hF% zU4@ZNJImF;^`o#V_LRyh$eJ*K9QlGis9b)?q}=Hca8b!pykH+SR^w=Pu^h zs1^Ke*%NFd(-%+;YDW;c5**`tA0Q`h(4%<^W#e!+t9F;a=VP4_;x#-!bj@CTegu+! zeIpKP6ID_5az)X^AGR4*qSBZYzr#>nAK+OvRq7C}!#sWo%-dkAU3V&(GkSM07of9} zbZTE-b&kmXntTh;N}p&AGa+AIg?s>=Yxvihf%!IRhxdQ4rnPNH?%c1R+4O!?J{+WK zxcc0w=If4Tm*)0f5*R9;^e|0{ADP%&KL&IYEF!M(;A%VC`eS=?UggaJxV>OjBV#mi zs=pfW4;a}v?O}`W!Pd5FMoX)7RC~+L76=X6EQ`SqqAQq>8Oe6ck2E z!J#kdo_WAq^5iR#g$>h^pI$|NL59)|c(V`qLy>|O2hkzghu@l|2M>N(^d`Di{p?-} zm9&a0yY8$#p}=P7(=q1EEg*Y-Y#iZEK$c!3-|bEruu0h|5Kk%#Sd*-`CVZ~m&fy)` z=S$>TI1u-l2P1E}?dHncV6GWZtK;4glOOhFyi2FS9LGx5>i*I&WKx_>VFfSlHt^sq z#l72`C2Z7tZ5!3O9Yu$cwx0V3r5FzC+QuwXQiE3kP`w%Pr;<$sO*@z-FLW^AG;*LEZ*!!*wUDs4--Y7aCI%TwkB?1CCrOi$`QA>3&2as( zqo^T#8N!w8?Xsuy1egRMH!Bs8~XW#@FMN~>H z*`4?HD(uAe{dB=)G#F3200H*Z*A%p$pLVsbX>jk(PG27Kos^MscJXxurLqS5>N}co zhs~R#ZN{cIZ`i3~`@f6sCJez5EvQLq335k(OsRTQKZq`SMN zyE_yC1p(>q?(UQj>Fx#r;Y)XO=a+Nd@jiFl|KN_tU(Oi{d#}CsT64`gKd~+vw7L{! z>ghbN#%~GXElk?63!$V4lxhp=7$z;j4Y8);?`)#_UuTY zM5j44Z&BX)FqgXMMgQjqhiYNs*xxVTpP0a8WrsJziBCqCYL4)kt;*jmrdY87P5i$8ulALm30Vc(49M-!1o_OeR#%Hpxf6nU#%}s4V zLz(pwGluwePSw$5PqNO>bC+-U=ftt!l@T#BKWBHAGFet8OE0@xT`PF<5=I4jVTZ5A9<`4O3Drh zscI6;k8{5K@7oHYn!^zakJ?}3)oVU_GrM$Ahg@wTKR@+*8>UMkBfD}~10vU^@T z6M6~P5yjr|s!D3An_D2VWru}VL<5)X-yc+QKW?)GCy<-k7SL(sP#Qj-^?vq7VIt(m z@JkRQUV%VT1Zb{5Phe>G$zcPL5No%FN&YK!K!WK@UR`qy(t%K|@Va?0=defg#u*ojUs3Tq zw^EK04PT@a0QRQ8_Dy(8sY|YBCrL`yiacAj3VgGxIEtLnKtw4W$2yp0wq|6-qcI%S zxQVk>ldHi_STZ#wH*bwt!vD|9Z(La8jI$tLk~;&6_jtz<3H_+BnbB-5|d14Df!P{9yJ$nJfbK+DXRyGGv@bRc=6V2!pQK zB&|$kIbC+^ubBbI$x2J(s4lze$)PB%w8L`=U$ELaR;b%hc`|?eSJsi$XtIa2Hx1Vz zNJ|b{vtDVV9Oby(8J0Ic7M6BZ9gSc(j4zt7izn+Q-zqw@eHGY=zz{3$9y?R-hG`0X zG5$DZy|a=HENUWa5S2UhNnNndAg4<39hfQ}{-%ijN~y5lhL&YW(s$*0xNHj4aDGpB zq3M<&EIMCN4f`s{PeJ^#++_BSLr&vB9)EXPtfg!@+B&9GF*sUXqh2ZS#6&FFI8Lbp z1@Y_CavAQr|I$Fjn6c~{E%ve1g@DgsOxwz+onnEqDu@n2;pTzr&rw+-#x#E4$@wh| z+k(dNBgb9K-Y}b+D{uDj6z>%8f0uTgI6lhMsoBoR{p`1NIppieA*Z!SRaz{$7$naI+Ts5HuFRZ>VrvQP7)R$_F{3Ai^~P z?ZK6@12IjX>7>wWUDl&c?zkhjyBDmRi`b9b$2>y2oq1H`kzKXOseSH!^<;$+AV6{Ec%N6ap3jA6c{M&3R_)R7c+V6jihr#z<+u>Gi7# z&$iF-d=2Q#iXSDTj3xGdVRz<9w#xDL zcC3_cWd?ua@h8a>h!{6V!!cx_`vjdQY?e@D&=9{4K|?OFqMA;5I%BV(&s8esjYy5L zW!X71mv)Phi43|r00u0k@H6H?qjedv=FZYVH_4z0h*26xtxy>b zzU{$Fd4?F&RR#s;5>9y33J7L(rOcdH%_6~dN~Yl#wor(NEY~;WlfH0-$YZK4A|(d} znSxlU;UrDRGXJ6oATr5P564q{3kJSV<9d~Ggbpx9(P}i`M^mFjUQ$yC7k%<2{VMQh zLR8R8yK2%Iv&-HP3<*+hT@Delvc(##mOCs*TPhAG43iEH)rZr6pY5dPu0OmiHb6g4 z%{mFlWhgOdRG)iKmNcti|9_P^FrVq`_mJFv{FH_R*m!=7mv!%+~ z{|N1c=j;zfR@UM7j>gafFK^%cFF^$bg)hnD)+K8Y<-cx^|8l)h>U-HzR8ibAWE_-{ z-D{AVft$}yVNo&Qt%dv!cF@0kVI9zCs{aW+f#bzOOqC(=$7SY!m*U_HRgjz=BQ_6L z=`WS2ZVH+J_2^^}pw5T`@4@drZ)IJe6^r zP$b%YXwkvXmNzMHRjB7e}W?{R%3 zg-dy&K#RxdCle0)VFq^S!vs9{2cM~xXls&{l;cY^^$Rh$;$4_r7fO?f`bO$lUad&= zY>6BNN2w6!G(#foRxu!@efCn58QEZKHy8y;v(&@sl$dYA8DW>a?fUN;1Px@~90YXt z8kSy3uhW^h*g+u4GfnT=I40w%p%XMzd7S}ans)CMa%?D+gy2@@fLJs+(|Dw~xn;tg zxm9lMWd9Dy$w~cnJ%=tzm3T&%VDR6?;AZcE-*5+l8EiJlP84!`I1Y%ZwBru5Nn0&* zM*{Rs+wX46UCMz`#1*f|<7f(2I#Z_JeK?r{rPTPay|uIb7XBsc7e!nX{{3}$>vAA; z7{uD9axHY_JiM#_nN)6l8knKn;EQ#<3ktoe)aLC93Yja~dZs+X!U}}j%ir7Lkqi>x zne)c+$vg}LDXBo89Yl!{$hO>jYH9sKFU`3MwXmC<@PJBCg zoCc+Fq~M<&BL1a;pe_SPwj2>K6JrbQ0V{&SMPZI_mU4gx;8`y?Kq5jBiZ!ruklA5O z8Q7Tx8a?1sAsd~zexrH6kh9Y5r~v}My{-KZ0IFk|og)@@=qAg@`)(a%l;6-lS#Aev zTZz;9XROlE+?mMTNS8eDnd<>BMQfvxsr;k0Z^gL?pTD|}ylHO`?U_hr-pBX8Qv>n| zKRhN$MFfx>Sa4i9KG{4(jjMu;b==R8`cM)4;rgI)N?^4LRF~bVBqi+H(x+$UFEWK< z$BdVwTZ=KO9ds>Iruw8az*lDt@xjs_GT?qwZ~Bw=7ITB4|?tel29J?rYZIZAR?nW@F^`qt!=s*G;Un?r!Z zj+gi+w(U=_t5k?s3_YCa8vE>lL__PWcT&858JbSOA3_~6mL0Q>p$hENA@01^*C%Yp zKfQU4Ikh6rwG`afAU1|#IUk?Sv8=s?zjBn>2{xTc%K}@C!K|o~^WYRDh?#O3LFqH- z`lpBJ2IBlorTSeED)LQv1yaRew&!47WD{K=tfnf-nFBuwdc>NH0&M)69d9jo%t) zAmIW{nzO{Qe8$*PX;_cs0@&y~)b$Roh9$A=&JpnMJg z)U^^+%+!dH*N1GEhNP}MNuPOcy81pcov+$4uqG6S&d^&-Q z$D)WEo*5ys{y6)n9n^qNJ+S&Vg)ALulT*eh({)%A9p5$|2<tPa`(^iZf5ovnd^+spkIl29^Rgb?PhU&eP#*j+dkO0Het5 z)1jUT@0>AI=t*+~pgM&Svqfwe3253{A&PaL)|9g#h4`^s%tA5`%W`IqMduikqrk4E zD3gm^sS!!3M9&!{uevZo8r_f@l`wsAxgdFP!FI1`?_kUXJN{!GM!^2%{?p70b4G+w zX$EX-+Lr(Yf&x=XKxzJ8IC7k&45s#mze!BMk;qOj0F)r^Z&-TS8N89FS1c3rS`OqH z`RwkrRcaWrz{({esDzHqLVN98W&5 zW{54Wy~m#Ma~lw1(?+i1yYlS;8x6&cu)fL}$?M3u{?)hO4{DL+^{t;6gO$a#6WcX9 zz{w;4rp11Nir^CViEp%;)MEHvH^#KQEPa`8H6?VNTRx?)llo*)M+`zx7c3J(CbtTB zND~Sr%MMu&CkHv95SLorrsKrL0(bQ6D&9Gw-+urEQmX8N>S)razyZ-P_NqOnJT)2d z4;L7z0>E;FU(2znZAlukxq#GbuOwxEY=3|Bl6%DEyd2F&mobIt1%JYEJe92WQ;38i zF0$|9HTaL$w|SKgMyEku52mJ-l7zlX+nM|2C1ij4frp%v-;x1TBL|+Gz5I>EPwBZM zeMz4>n$|Kd2H#}k*YRC|Q!stm?P?dh_j_MZhXBdLy=Jk`{4bP;U`IlE0f)(P8{H%0 zN0!e%cDlP7Uz$4PzhzooDA6DsBYuImqDk!P31$}q8cD~1nxLSha=9&tgW1-xXQ%jb zs*7O=zM7(Bnt^|bx8G%(9&$>^{vtPbsJS>)D#}HXJt5`Jtq7hHfKH_&1R8vtRaJ?H zfH2gYbECVkvf^RBGZAQ%w}X{B(~q|4HtS6s*~23A_MGejUa9Aq*23T0VT zd(S(q(yIR@w$-<0@A9PfQx?#^q_yBWg|6TC2F>NjmnA2#7F|F=#DboyC~3NnIpvjv z*+CTt0#z0$A3@Zg9cTh6|Jvng{5>T?pyD@_ha}SWekY1oA_~T!mW>CZc zxHykNI=#B{_l(izQ+re&k~lbbQzgh#F0dG2f3SVq^AvFmrphNVi{nAfqoY$NDE2QI z9iJ5m1UM;MiqsScu)PA~cwP+5XX*#}Lu`eO7Q~@@<${K-s^ONSRc>d`d`lJIr709CXJ{wFI?4uN%U8An z9BriotIvav4UJ=v4U5gE#_mCcU4M2FAOzF+ISX&8uI;$8YgIZ2%I3E! z%ion9)u?@#my?%2fkPpH^t}QcGPE1M;5d`5p(B~`St^c%Zb4!9x^R-K-#yi9<^C}d zrk1UcuPW~M*f?7m#;p_jl9sYFnu< z>_Jt0^1($z7izPGN11U=d8V*2KDvAKb7zC9v!nNr_!JfwCBl}=BlGyoK5zy>Mr>LP zc~WUk_qM3-$;h5RweCB-*Y4RSLRx5F^I?6{MFEYs z5d1}A6=?!lAm65Ym`Mi$MOE><2PdmND(n)D<9Ybt;-vPavq?e8t-Zvt4D@Ut<6_)% zV>@MT{BdFAs;a*ZWz;9@-ehQkwg6MDsGxnsnrB3NwYIlBWgd{aXQzke8g&hfW3+i| z?1f4(HVWC^5a0H)U}qg&9{d9Bklq|;4BVge0~^LSgk3@Ne=2p#JeFbb@!)djV(>*V z^mA0FNw6HYHki<~7WN%BwpX_SaIQ-OVd;xg%AjGK+Gie=y%YWlfnImlUdolWVMBw? z@wH~n@hX54>}GwMN_eJxmEZLhO;Tu@K(8+5FIJ2G_XBh>yK*C)2-*stb8rR#Cze!? z6#3a-G{URRCq90{;_95nYus^DQED+x-LD)_7j&ZS_ee zBDw0TbzT*#L+>3m8e11ok+)>G*w%E8FHyuk-Eo{bR#s0V+crZV>!yz9La2j3AWc~q zG7oT*xgu}bBhQ$J)HVUKJc6SotMH%?N&6kjWPcX)TgfyvQtzOchtVdxNU`7*Dd5L( zL&LKJ-tjKgg#s${%DEy?=61_6F6W4ZC~C|{H0+M(KdJuvf+08CD1Y;m=-)@ezCXv| zm5gj<5e^QIV-3a>$~IfQVAW_GkD}h&Uu@H#9M09LTl&FBL+w6uVDE_{6u65_uJ_7I z_0^VOoA#sIK{)3O1}4u6iyrtlTOaT%Lwulk5v?&kr_X*{WF=W(u}S2keoxk*_W897 zy6Oo{H#~@d6j6B2@SrH_7*GHgKukSCunq5zt564zHMFFSx=K# z@wfD6xXUDKY8fLQ(~oS}N!uzdY6?wEL&W%AC4qz5v9sC-SR*_&1pDy6O_Jc+Nigh* zdo5p-5;wisbj^AelF}S+LF6s-z405EHT8Rx22^GmV&Pt-;WGyhEtD=CzH3Je7ImML z?*4W0VdYXR0f9=(xWVr4Rv#q29!T&h)tFU;`2E&rx7%4Ch`z>ZS3Q{ts7a!LtGbOc zlu3Sn0v7bUgXDWWRjNl<@I*uzd)4)`8dJ&fw6C5y1$0DJnsEb`?qAV^1Cln_p^;M+yI7@?u`dMwCEDRU=8X@FUJ2k zVhyj$5BtRW{FrVpEv@YN&wzE$^K_8;24!0fs!9{PxM2MRW1PZB^084=P;`JtI@lb3 zsI4{>xA7)GW(pB93HsBVZ*T)2u-18PGc%qTG9ufF09qhI#HA|(T&jm3s)jf!g*YeJvttQ!{a6y%;=wb6E$QIx9r>KEnR}JiygcI2F$LIFJ?%SzNYK?$CZA-wOerO+rDRBSyfR!WV=bWuXh}>BN@^ow z#dw3- z(#JBOQjtYQ7a))$um2eSX#oX1H<0o6L@A3l?xeZd`q;WV{SH2QK5R8w0m%#XGxOMn z$izy?*uS~do-GAJ>l;-=^z>;kr{jC_jZiVf64`m@DOtcETWQyHK%NzY0hKx`j)d-fPQ} zgLSj)#s^v~`4;e5p2ZkE&db$kKVXf{12<5x<$!-Qv#D(!=vi`kG!s>w^86K|02z~ zU;ZDYInskr1}vv(ySD?Ak;_%eC)>62DNy<&t*k~T#ydC7iHm%u`t*#wD%}T_veSt= z6^Y-O=*piedab20-_=Q!^j@Jx&bgEiZVQjVrro7*TorE!STh6a=1eaIj$LE+6;TbV zP1xbAjGC6kTSq~Fx^6TzAFsZDED8R`#w}&~_WAjxMKC{HiHezuk3o2N+|)pXHzt8^ zMR+_tNLz}v6s8DJu*x+=Up^c+hGj2X<&eUPI zZ@U99M8eFyohs4~a zS$GcC$gJY!Vr>V%we-yqo1)BO|F>B;CyZxA?VmZ$ zmJbILZx z{r>lrA|Hc=f=%5T5OR2e+A0&_Q_#x)+odT^`o2ZRUM;=Alo#^!*p8&QGu3?~7r? ztn4oCr*=2k6g|T{?d9hJPnfRL&x@bvH;8)HgKOGSpe?jvk^waDH;Aqh?7f~=A8SyE z?6%C~|3%7j!NnZebj_U@HAPed0$_|3FL$D%>!y2fPwVT#eJ z9kZ0nD0`->-w1Z1$%=0I;YaV6b}_SS$ZG@3s67F?ZR3rtYAR~EQq3)mbm1fRq zLoI@&n$Q6-9iK3MJ^=fNL+3Ac@3H%zU6bwK2KG3X?*6_;IP@go3rBUy@cxnO{qKrX zHJkifW=|7rd>FR&!x&PCmkw!OAaApSjvDIjoM$NCNQjV;4+J$%ww#85qu1}avyWcu zLZEJDUAfG3~qUX?x`O!f{Dbj_1v6JDVge4k|X;I0q6>8Og zs{aq1e_QTNoidZ}^-Q4GXVukT=SSW!TmUu}q$TBK*JGun^>Kynb!U3;cz~U>%fX`y zXjP)lPGJj^fA?)cMw~a&^JZb)!-gGCXqm5SO{RspbK``J#Z*OCKrCL<`0J^MX5}Z>&^rAG-rp?vA9z2$ZDQ1KHP067 zp&*hm**`;tfHAVzs(5)a?4*fo#rBr_IerX-J4A)F6`otknmRf7PZd@ueIt98EN8T= z5r1-Js3p)rXX1D|!)j`vvltgynwf!I(u)`z?bdJ{W#qx)2&pY7UcZ=;=c3@O6+)&N zV&isq*+O79hdvU^N&?C8s^7VONg&B;tDYnhUIU-pSeq#2U$230;EpUN!7#nT*r+&+ zP9tkdnzxV{i8_ip7=@j)-HQr%WJnp*A7*<~?}(dKC%KR!fN8JKI_9{xbJToi)S3|! zn)nZ>1+5<-zrsCqsHQgOCmUBvn7tMou?XMt!hi-kYC%5{gw#v7LIJrYoKGa4G?om>tK} ztgTAgJZ&SKFQ|w_0c7&#=b+~WLb$%%rrmR8Nqea>+~(b(&Pm11dPZmM;hFC^qur6I z$lIiGPUR|LCYCCyTP{w`*l`@i_}2gUrwuKN#HqVzu|H`+x7V=I1*o1#pCsCAhsBgL zGQcbN(N6BKK^fZ(PTYnsV){!zC@TGug0yOYlW&gbxkNY^gRv}C9I3Z>0@${lF*Yw7 zF`n{W-+(5n9}-ouX30v&kIFEzd#w+Nbd>+6oY^=qT1FnZ=d;Ti!7lU}=nOKc^X*8u zPG7$#jmlpLtViCL34s$Td`tCbY2e-s-8nd+Y#AaCbVj|$p6LyOpXQRZmz9n-KR8!q z?v=wHkkPOvJN6o?T;MWgvPXa?vLLXiwlJ=svD*s0L4fNrwqEm7-Lche>wNWrMntaOv_Ns>6vu^kYOQ z)Nry$!jG!Wuw%{}ydhMx6PMs__}8=nY!saaB>Dhd2vIn0=I7E7f@v*csOwuG9PCrM zP>yk3=_>kuMQ&UuO$P^H?02yZX=Ai>Tey(74%e54!B*rmX1glM@0{j=04f#A<3V!# zv2+|+kXw|_kAaU+&vpgUa{gsC3Hc^CWGUXJa#9_KZvy~v_l!64LiKRSVFxvU??_P{ z7Sm0}6Sm5Q5e&$jcz{T!ylF%OqPZ%?%;NKb6lBGf^XAN`I~_KEr6n{Qq&2>plBDS} zkO!Z%MgF_wA1YpbX2 z)5oS}!}cb@+U0Qz;zk|t>CG1ADnBnNc0$@KYdSTN^I-nV3oIidu>z@Q$ZNt`tPRzh zUAhhf5gow}gn`Kk!lLvF!^`1&C{jnOel82wl#t!OxA&3cyUC32T@HoZ2tl?+U9f~f z@}N?;qy>gi?}1GI<(d8q*%fW%Me8+y*gy4GSOIXLu`{ncAayX43O!Y`Q40_ZZzuCc7$QexOLph7N;j9~N&s&S% z0qgEk8O|X2W|eW-jzhuN3U)xP7k){O#HNkiUjj;x*iIFMoHrL_hiis7x)#T97)tJ% z@8A7|@WN*qc#EOXVn>dUDi3+@j_021V;!t!4&4&~;Bo|6v2 zCBcOOrVh$tJopiI<lMygZ?B_qRM(*$v*o5cqhl$Wf^i z|0~5udEona9r-t~zy0?h-G7Wd;iQTG9zy)z6PN$HDlXr^e~;$=|LPp_b5}>(htK3> zmTsOp8csWAP4y|UJhqDb;c<)q(T7KmxG?Vwyt`t3%UR|_i^orGE6?WJ?@2strLUl> zJ=hN*|3Xgl84a@`@Fv%t-+f9BYKGGrV3J8LGbuADW1S^A*m|(T#^JfXqO=t2*p*RP z=h(GzOF}>k#pmn4e*_~lM=&0>d5AuqIbNhvR@M4>4fCc`;@7$x%$p_7XZFnJpBNT3 zb5-42FxL(zylU*3bqW*)1#jfB+(y}~Idd;h(#`%&&f?On=CeV1zroeoAHU*5NBjpFYc6gLx76s5I?Y@90% zce!o&?Oo-_$l9EnPvR8DIB( z7hAjPk>uxyM4RY>VAD&!{DB_ z`30RWN)~^ve)`wRKeeyc8|bTeU;YJ5G-Q3}73#YP!A~B~Xz?S9%S#i`%B*~6Jh>a; z&D{yYVHGvSKvCY(pnpj6CyYK)K}WNWL$>qF)`z@Xo0F-6DD``tGSvxbT14ZH=M$5% z1lX#^4{T;4Zd350KOWGRc{`cteupbSi2uWfzsi)O~IZc@s=(Xe0-xPhXU%VW@o<}*m z6!V0Kl3YUn`JRhNO7j!J!}cE}7t-1d=;)>Jjnd;srgoCx_tMDX-dwPLZ1J4@_MB{; zgYgybt=lC1@Irc026ckrTpRv792O_$g%UnMPbRFV`s`p_KDusZC$#-cF4)c4#Imu^uLy8E&LCoaCJ3jJvU^3z9s%ys!r2VqT<3*`|;%;+l-Qh95 zG}w?Wt?ukg=(^tR!eV<$_i<_cFIOD>SJD#c+0*M!4Bk))U*R6n+?feeNg6Q_<7_t! zmGv-vEjQ4izKtg&L++PKfomCIBkRlrOBp7oK?WL1bVbfxQ}T$( zv^!UB4SO=wMY7d!h#sJ)5;!uZ*)3( z4QB|*S1la2fE3gJ>_um34eGbygTl!gJB z2J_-=2?o3?_`=x}L*KY#n-G*~)o~e&^HIKd@&-fi)5PQZiR**7ZB7dv?{S(G%wf^W zj4bSGwz5ivHK2_iY)FeT8f^XCX1>NLG?+KvYV6+nD?F9l3Sci%!gt+iA$rGDyr ze>V@e{^Xqz+S!niL$Rn?9;yp&vM8JQ}I^Za!LiqI@h{ZPXHK)E?GeE|(^e zaFK0~;wCiB`F%~4-epAD!zWW%uP1Zn>bH^g&AGZtzO8Nf!=ehFv|kVpA~Ey)aB4i^vGYVN+2Wdd^NEu&VXeFzX3iY{+;1Y^>v6e^S}}v)4LKjy zPu8^FwNZtjk%Ud8EYOfYpAm#+n04V%hf~KlrW{!+_MenInsF74^yqG0 zC`U)}<*L8#^N^axL0Q4@Cxxv|BYyN)S1n`KgF3@3AC;E$1$_2UrCsDIAXs1Jy?D*! zB5_j@@7zI8@s&+q&nEiqots3bcBOc71EI4|Y>y{jF6?jE zJ^nbIx6_Lmdqz1`tO>vrJEiGvay99+LM*l7A>3R z{s`~43v46VG1!XXpIc71Ny6uRX;6?b^jRF!t9@UwHOKUwY7Bva6Z#)#Ih52qA!cW4 zQZ1p%?N*Ysq#=0`JF}lO;d453dU%4$;`&V#)V_y(u^hWc?slhtc!M+M)Se)>^)5Ol z_4i)*Og2wl|H}NGPYW^}53*c4&uF{nSVwJ0ONf>K$M5FozC;|Q2;q2j;urCcM%X%p zuiHv;caDw(K3G+2qEMr&d9QLDcJRNo!}y}B8KVX_Yr7eqH9QkfVc(S`d>W^)@b=HO znW5a<)w%~fzqk7(7vCqWMt}3omsWur9cQ@agGHJb53hdo}tHvv?LX&hog+`cfOv9@=P;LmpCI zRs$xfGiH6qhg>RzXn|iSyhtDlaa}{*V6Aykvws^!ecHQ1k3ny9H61;yHtzI(ib;Y1 z!O6ia|9KX!3dgFILqSt=qi$Abxyi*$aGjDIi73Yk0XZA0dLQ=87 zqm}IKk((xKF0hrY@hIp>CwSUIw}>FwlyV- zmeA!k3f&2xgA#>>5ybZFP_6`QVG^m5nj#_3haS2*YLXo755 zz>}i*%{9)r`QpY%pvwmJ?pA+m$y#fL4ZUB5*$9D~Kt{dVt7sKUTch78{^y8K?@tk* zetsd8m2(>L@on_`-o~atXC1TAEk>3&kB2Vb{}nUc&8&xNrBwrK-6+dl_VJ9+p7tRw zp->Np%}D`d$6qMuHpbXTG%e>n$UDWa*LPZGns4RCj%;9{9Fz@nlVAP2hjICHgb%UU zU8>pE8(7;FHDsvG)f}B0iZ?owW>JP97&&G}RGeYen%AS4TGX=d;&T%=pk;YHA-%6*#`Qb9GkNGIJ}!fI;*nB9Mc`*5gBT zU6SJ%xf(+V$_%HDlGepp-(NVH8u#W%!JjK6uxm$~^v=f!Sm!fZ7^^<8Y<1vTx=o%v z)$40J?{|?qi4MWNW(ScVb+tUc@4n%V#kdk%T=1l$E>)O|bgJY`i$e_YdG{c_UPqV zIXGzwyNALhZ7DkmDNUM|xwgtgo3+9o;APK4QKXBBT<=RRMcAM#no2 zU%hP`c-@QT?;7FC1iu>T|7y*%w#9JF;EDU8jGAvygND+S)aEa5^7`W-9t+*pGT>G zRfN;tF&n`%OnTqj`EARI%z@tO5+W;zg8pJ{c1w%SjvPgAAhRH~?F&;_=P&XA78jeQ zZwGU=$!u(TKAn9EYC-axJ|Zj~et**JU$+*98BO#ugl;xdQ*lf;vbjIoH?3F`>AIXE zPf_LTPF`@F{nR+sUHTndhvByL#CRfJx@m><>XK&0@RvB$)6IJEJ~lbq1HTpvOci;3 zVFeqgkKhfy?M(E#GSlvOa(Cqk=|W9@-xn%tyU_+QR^B@%l8Nv>L|SzTLh}Co_`mKm zFI~)~Q_D^x4DW=!)5k-j^EN`9gT+OcoHIdYU5ced$h9GUrK;H;vp$!j;g6 zvMh_o&T%hxD*IkTJ4<5X`&2mHH9+V3F1I;qz|NdWd{y!&gLrnXGIPZtLU~r5&uYjE`*bGn)oFqfLtOi+*&}5AzULjUQ#Ai z@}1&j>?WtVHLHVctlJVklLpVn{jn%U+}iRq`dQNxr}wAMWXiU2Iil5Dio_L*4<#C& zMT~Q%2{y6*#r{3IffrIVZ^fD$XfAgdi%@gmGHM93NaC}W3f z$d*oP;?Jw6Ps&VNNt9Blb3AdQ1idm2Bas4m$R`i#5J`~n0WY#kZC7ViR}C@S;M|*TBnm+ zHdRh~eV*-8OV~QqMOwAmO4IedSvyYtruDm8$}AQqp%Vq)Q8K z;I#{jm^ktw#&}vuh`rC4gMAMxV+9tTkx^OSP){+perkX6gEM^h*#OC%0{y0MkY$z^ zkA1%$@@j+Ct9*{^!B*AShcu`0SBGe~ZraE{W49k?TWqrK41szvNjSxgmhzX*5gUp9 zor3}Xw}k7J1`Hr%xB`{QLIB~1Zn5j?gL;LAqQ`8Ud-QmIKfa~}S#0oMRr3mXXEruz z9eclYzN?hw?>#iStOE6_MjzfBqBP#v-wO|teaj@gL z=@=U%yy||czI$)*C;FJtQc$veuSh@Z?xD7EZr2d^G@bCqt41r#Gga3awy%6?^6#s> zTjA#zJk?unvjriAp~Syy048e)8D_p@xNc9A1^1wy^wrq$*!?|tTF73@89MQYD!xv4 zv7Gac-fk^W|2?y;^_uk8Nb<}W;_kY9;(k%P?+9W)VKTj0@6o+>&dt-WcR3^)B#UsM zf>|Vd-9vTdI~KQ;h0F(A>@i3tI*eobL#e~#2$#wEf*ZamTWaHa+vzlYf>P|zsD$vs z#*7kQz8I_d`KQLD$E0gH;gWk#YPjkxeIk1@<&s*6>&p&sHFwe(G%7Zi3~22>zHbcH z;;nN_Q_2m@I5~b6f3Ja<%c(Z^M&9?Tt&3xd)M`;#`zOQVVe{WTV3ul@{d9`HXoN1x zi4pbCaJae9($y|1hIqxCFJi%)P2zLgF`C1+RAtt_Gk*74Q`Qp9oLQgz3|1ajto7Dmf@< z%@uqxc5V>SAa`jjCcn3mstB$&K1b?Q>9fC@S1Qr~4U_($luZSDWMPJBycL4&ZpN>2 z;otw{*}n-7C~LUXs#^cAS=c2Z!u1&CLYY97qr7E-`((&n|H4-7sct8v6WAhS)uH5- z=<4Eucka0I2E8-5$F(YC|BBdvwm{~vn_M8Auv4p~vf+Nz0t0ivl2kx)u3^rzXsL&y z6Ol&vJ%#})28lw`-sI=l^3LA+<6~sqH^RFXB`A2G98u=x(l;^(jJgE{;gHfE8JIQ) zW|B5f@2;62rJj=faPX9|B6#j2cw0y~YS&sw>BZJJ#)(1Mu-$`;@XdF@4MKtR)05c# zlt0s@X9|Ld)7Vl%rKbLh#G%aGFmT8>=*>}x3{pXKDeobUTqD24i>3) zkq^?|hu`9wFhWx0KQEpfQ{;EAiJjCPF5Ii=m^ju{QRw@StQ)*+ZvV%9ee||2SC<<> zOY{h7M2z|PL}W4oL0n=maZjN1s8^d(Hn=-w@rO7uUjd@moluI2o&SmrA&S6}jwNqz1*o+(H1 zG~4e&^lUYqq1155*wQdwV0(%{HX^@p!tGTE***qi%p@IY?amfp-vI(XP^LaRRTZ^Y zBeYGR-@bRaC`(NxEfv(1oAF9Rrb45w`_tS%Gc@MHJz%D_j!`awC(V>Nhf}#h<2~T8nEx&6RB}|9SOGo6BT6khN5pudAGI8Si*Z zik+y+3udE&j1o=IPS&*!zWPQ;FlmUpQZppN;*xo=wv~ z|JsMc^k=qHNf}pL3aK%XdDF_;)X`pf!l1V$)s6D}wl8WOIX}Dl7n^MUqWS%CMQvC+ zV?Dt_MbQl*-duT3dnlc98wMr%%3v#KRF=)f0{zODI15h3;L+6zDDE`B9p~w%*B_Us zl~}Y92fC4xJV3i8`k)S;2pP<=zbi&7q_)s64yn&4{tAYJxT;(Us%|bKPDx3MpFBk! z3~2g4?VV*kw!vVQjk68XZ=~6&Sx;vysNoizYXpkPd zao^+P^MBvx{qR5bhy7_Edwrc_X7znv*LnWdnja4d;qQ6bI4rz+X&=6g4cMW-R$EO< zK;2Z$?OB{$Y0#))&^WCNasp<~P;3wT zm8>hZbq>aKmFB2i#=PlOeQNVJP3@0PK1$!vDljK3Qs&fADGFD!K?p8%ItIbS9cQVuth z8t`eO?*uKfk>*X4$jk5d*WEewyjIO6+^pJy-bXyS$j`ysCrII#_}oEyzm$&{&Yh!) znpIBhB+`vqxt_b*ig|&KDmHQ&oJ_8zYE{MUNzEQF!Sv)O_KaDNv>RM@6r5h9vn0@S zq`)~zqX?(WM~+(4mhZL$3@3UxLnv{_tmCOE1Wmaej93vJgedcIoR^GM1D*7%DaP4N z-R9qXb2>*DT85^79#PU(NfLx{`RT$UJv*wIrzALUGwUL zWB`-t8!ziBU2dt)u05y^*KNVaku|t7Ve|HJy=9DWOrP>+L{zysZYg1$j1Fv1I?v^( zpd(vjl105*Zkv3tz?~u@BAk!%BBde-AdY5!?TYRgdMXL?tOBR3ntlc@;ujAWM>&R$ zn1+o*EGTej;RvyS54XhcX3tND6`1Dl{Jhz*;6gax(t-=VjSMB}MrXM2nvN(uK6*NK zG+-cAsU{}ND7?8H_%Kcr(3YY1G|vR?EhikG;{=r*U7{e!TOKM6*2cjtSg~=o!I=im znddxnW5I%5*Y<3ez5l7`FDt@aZy#cx)CZ>H&&FJ&y5IZU6AcJ=Ih>1sV7MPba@62? z;D`*+)}HcD#)2q0!X92 z8d@mct!m|B$(Z%*2C|3FK2Qr&ubQNzPy-X<>F~=;+57vWT|1-EkT-e)+hAXh8GFZm zUOURZfO|jT0)z^A3>6ue8PeTcAf}y&%;AqT@9m3UpYp004oPGbh=SMBrB%G*{dU}( zt8!ss!UIm2u7jshTzYhs&Q9xFe!`ARvoIm+6o5Xy&4 z$3w}qa`G_jNFD+Gk_q0FY-nRg@0_lm{KiS>QyhPNd3iHPc>eQCS7-9kx4uM+!nn6% z7ki#ucg~Q)$;*3y>Cv&dK4~9DllPcYO`fc){KZPo;Z(nXm7}h)>qs`eJV~Xtw=vm| zm?0*Wx?Rm98bM%I!;?DG^8?Z>hO!llJ3(vGLaqG3!)C$?dR+nb?#-A*QaoN$OBL3y zG08Ak&?ePE@b@h3#Z&_FI?f7=jY2@7qAe=18M9n(8CsMWmCjf(|C++#r8l|Br?K5@ zJ_ECtHc53{td%tXd4L^ee2XzFwhcm|h3hu=>9JKfd~G#G#)BJ;KgP%u0Vm42Jy$tq zaq+x{TsqkI}9@?zk=T2ZRCq(qs zPcKQ{^9s|^GFSXR_1xRM0y~gkuU@H?;E zRp>#+7gY~|@Q4eQIFz)fe6<16CS8MXTS6l87j4Buj*)*PLFSV&(k(N5DbmH4-30B# zd^=ivH_rg-4FPF@a-i^@sMi&FOiM`!Tfx$s7m?wihk#b|H?7M<+Fmqz>;i`|3)XT* zE%4-!8dDyi50i`Id8kCjl2JC$Gbhg4SP3a_zW>X%uG4jmgr_(<*P}VWB@K2>EXP*` zRSVlis5u=&#{%@yvGLG;A~BH{`J}CDH#?%GMVB2G1~<4o&dcG;9Xzi-mp7>qX`!do zYz8wicbm+Dpod`uxoGXQuSGgFqpu_{JsoY;VhIB3Ix-4B1_TPx5^B)g4}|w%8KT0j zRqIKhFR=e8OTl)t>N^(}{<)m%$V&GPVbo$Zu1oudfSu2eaYNxPoB^o551@1>n=rC+9Ra=J(T0c~Wzio)~JYA{e@-AF_poTW*m3Ph!K0a$~NYNA` z(1-aH9uZDmKJc;|#1)KA=SLsw?!rVpJSa_~ZpjTKrIfa$M5Z~XY$egM98Zydc0gTA zL%ZRs*G5G1+I`t5g|lRH-d*-VP#F;*;8AL7d~@@Q>z%lRorynwFHVWI!TP@^`0yVZ z>ghiS;9{0#xb~e36XN?Yj`-a)b4avHI$4U? z%J8r8uh0mdbWMvTWlKA0=j&fH0Q?!`QA(sgwwE@-axZ3nJ4$8vNG(nENvKvhK{Z9d z^Ry`iT~>*Pk7yLS3(q_M3f7$b?UohaMtn;%eA-4owf-@5^d5vgkm=XeRFTs~NipGi z-3PQbr*Jx8aEy#iBd@zSXG<%8#J`3k>XM#e;Lw1-&NFdjn5Q+L!_seHHOzY92_hYU zvlNwjsh4QMnQ)0?W?9?a_7YPhj!#`X}%nW0&Z12qE&vLCtXcb_09i-| z2nkiv--^66zQE^({HN5yoe0#EkQeL*)0GE&ZB&6=`p#l}p?FcRKkVN_iX@pajvyQq4F*_bA!Qy4#~ zY5oQ9KVXIt)gEQf4B4{YGqBRn-s~wsIN7yA%G{u&yhV2zZY$Rnm}5R9x;KX(3Rod3 zdSfLLO9(FJfuFsnD>;iLb{y(W2Iev z23%1WB}zm{syeb}#-Fg1K9xd9h5-VY$~5BrjP|)Fr#6S9`gH%m#G<`(w?Bi?{t(2% zdaSPVW&5fP&q-nw&YWrmcNd$oL31|E&Qw&Nr|ZPFA85ou+X&)$ATRK4h8Q>$Z>d^r zh$AQt_Kw9#GbSC%-H?ELp=3HE)M=y&^FOVo=6_mE$%Lknm;-~7=n!z2%nK!zcK^rR9#M?+b`I5oyT;GCmpzHPrBoONEU+b7N~umOSmHfd;4$A#NNlY`RDi74{H_a@-A{gW&|n^3HA` zF&!5(k$e4Jtj4ydL(f|!C8SucVFbJy9JOiZU!bR>N{L;?gKTfpMlItvlno~xoctJ1 zO*^7#jjNaysn!U(khv&&h3T_h%hLCtSK+gJufB&Wi|OUP4=^w2Xkg6OqO?PyP}LS- zA}AHm@rb&3==&zzp2J)2YUMjui8;*(;h|Y}9V(%RIpEfa(o1YBi|IP?`d` zJX;@r%GiaDWq5l+ADYTKGMdyJvgTbnyQ5QuG|dte>w)B0W=dS+26*0YUe)8=apvkv z+-h8?&S667QG!a#nTu2u&~cMN1VBGJtPhsn0l~!kanWU-JgDpKya!xwT8SdWseTk& zrjRnm*pCRHd4oKuN$<{1U5Fu2ji5}>T`L9q}E zZJ-jK>*e)2K{I!OZQ+yQ3E8D_Lg6BwBCy(B4R?zwQ_3el1?pypv4{*%GHlzXR?TmG zU%k${sg_7IG}8rqmSc`s4G()3jPgE^iuGrk7MX%p9W#X;H1`|G?Mrj(hI$n}o4;AN zf`&Ws_-HXSFam`CkOx_cVA?bJ;J65~H^NckyD{(&D^{o4`A2&BS3Jjc|FBEX4lmXo zXwFsRinuRYbdtHJg|R&s!y~VtwWE83!r1F!Oaf(DfP@p=o2O*4rF-)Xlw@G|+H?w{ zCrKl9^UAa^eZe`>&<8v0&p{2JN|oxUVtZ&eSfDI6f9N^o#0aHZ(CE;2Py&L1z;W=x z9q^q@y=>W1K3`fwz8bM6(Iw@pI8#FZyPnzcJ9Fd^9R>R|+ncxGH{BvwdN+*de)w@2 z`xX%|)y(#1YouKq$y^lppbtcc+>J*Ez`qVejgN|x!bK8lI-PLIRT$ugnP;`ri!Ijs zodaAA?=(3eHcV(m-vka+ywW&z?oCNh5Z>nz+AwddEs5yM_jG5LNZl*=`b)_YbBzo= zK?$*O%7{~Tm*p6BUh7R7A33~7%?E;&P;5OC6aHI{s5A#kz_duYzS~&@WtOYG7U`42 zmj|vGCr4K@;25zo4_p})V@1h3EB8`bKJSm<9jt7EwB7ioZt-<)awv7FoV(UD3L8;j zyuhk2HMIjGJf=V3Q4S!KA;9gPX8g1bE1ng_3yYjEuAnck^Zpp~r-bc&z;FD%Rjhe= zj~?db`aKAhmjMO6{o1WBk6&Pe=@)Q`3@R0)b#c<}0@FH zy3d|Kv~wEc=<)dFc&1EYyM#YBD6@CX*sT%OkC<1_RYju z`}&V4S%SmfhZkE^t#_!(34_>8t*z23b{SV}V~%oRM#W;15e`!&5im0jw%S|I^fMo2 zF;v8r-&5dC*2${3wAdIWj`ps%l3K33JX63eRj=CxGE;hs>dP91q=~_B00^nKChLb| zInej$mz(3wAn?Xo_o34`IPGXffU~Wv3zaYXgK?SEiDG%oK3CyYuKxxb+VBf|ew&&!|`F{5>3z%O#h2=F$>* zZpLhISlX{^HB|8QdYCJ(@?1{R;^^x)+_kjoY}9Rdt-)v}S}7Iy(2)?*EHXl;V)hX^ zbf+hKPeS;GNS#VhQ~c^w|I(nwUmg0zQ4)}kj{PlY4uCjYc%^ zHew8K33wRj+`x{5DhCzaHKI#?yo;P0-P4%30tT#ET|Y?naL1GOcu3}+EQu!V539Lv zPd$cn47zURcQ!r~V)xCznn9QTy8D3bGr$=Tu@s zHs()VprMhxlVM6UE4IHo`R%kn=Qllq5w5hUJRJ$a(BE3?klf$UD%1i2j|3MiW?X5} zI{~nLGS{!cATpNGg6mmXj;^ZKFnKpR(1E^vn@m+XcVwAhE|s2WZo9@kDGqOX`bjzx z6(9x7)$@g(n6Kl&XU~6tY-$NXjy1<%HeVA{lpv{)I-()9F9L~Zq71?7#qNi3<``|R zcLE3+JDh@#!{*ap7+e?;5FJW!BJ$8ko)NN$t%ha()^x$j$`WjOZo(a6yxVxFf zD!4XU_d-L+K3Q9G*})V{q-PlZ+TIyaM{KptFCP6qlDAy`h1!pf0BS$x8y6KartP&; zN}iNh@AQ;ofy}KvRT`d<5ZY|}{B^QS47ThaNTn?hzi}8p61-&6Xw<_EIZ^Qvi$iyG zi@-9~Cs6x#s))LmJ0W`1MEH|Pkm;Va{@fWDuL$xi(Zm`$=MzxMD@WI+IgvZ{pnYb@ zCr6huv^d9phz1?Xw8&k+Je=XTfw(26&bhkdXLVK3dB2csc1e+gFH1 zj7Ywte`+;S-*fo8A}cknd658_o{;wA8;^fFQs)1K3pG@zr~rOfr~Vzf~S^#zIQHv7ID>GWlaV4ij3I0tpWY`}TYJrJe7Rf}Z;JgWNyuE~=5uo9} zE4~{yUId7NkAS2=Jq$H_^e%IRh8=|#|61<0-}*NsS{D%g_XjHfKUVtZr*FgyVwe5> ph5un3`+uwWw_w#4JVa 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 CR2*9X literal 0 HcmV?d00001 diff --git a/0.6/assets/images/social/tutorials/index.png b/0.6/assets/images/social/tutorials/index.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2fb6047bd075a5b6486c3433adcf611933ba42 GIT binary patch literal 38768 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 literal 0 HcmV?d00001 diff --git a/0.6/assets/javascripts/bundle.83f73b43.min.js b/0.6/assets/javascripts/bundle.83f73b43.min.js new file mode 100644 index 0000000..43d8b70 --- /dev/null +++ b/0.6/assets/javascripts/bundle.83f73b43.min.js @@ -0,0 +1,16 @@ +"use strict";(()=>{var Wi=Object.create;var gr=Object.defineProperty;var Di=Object.getOwnPropertyDescriptor;var Vi=Object.getOwnPropertyNames,Vt=Object.getOwnPropertySymbols,Ni=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,ao=Object.prototype.propertyIsEnumerable;var io=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,$=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&io(e,r,t[r]);if(Vt)for(var r of Vt(t))ao.call(t,r)&&io(e,r,t[r]);return e};var so=(e,t)=>{var r={};for(var o in e)yr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Vt)for(var o of Vt(e))t.indexOf(o)<0&&ao.call(e,o)&&(r[o]=e[o]);return r};var xr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var zi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Vi(t))!yr.call(e,n)&&n!==r&&gr(e,n,{get:()=>t[n],enumerable:!(o=Di(t,n))||o.enumerable});return e};var Mt=(e,t,r)=>(r=e!=null?Wi(Ni(e)):{},zi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var co=(e,t,r)=>new Promise((o,n)=>{var i=p=>{try{s(r.next(p))}catch(c){n(c)}},a=p=>{try{s(r.throw(p))}catch(c){n(c)}},s=p=>p.done?o(p.value):Promise.resolve(p.value).then(i,a);s((r=r.apply(e,t)).next())});var lo=xr((Er,po)=>{(function(e,t){typeof Er=="object"&&typeof po!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Er,function(){"use strict";function e(r){var o=!0,n=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(k){return!!(k&&k!==document&&k.nodeName!=="HTML"&&k.nodeName!=="BODY"&&"classList"in k&&"contains"in k.classList)}function p(k){var ft=k.type,qe=k.tagName;return!!(qe==="INPUT"&&a[ft]&&!k.readOnly||qe==="TEXTAREA"&&!k.readOnly||k.isContentEditable)}function c(k){k.classList.contains("focus-visible")||(k.classList.add("focus-visible"),k.setAttribute("data-focus-visible-added",""))}function l(k){k.hasAttribute("data-focus-visible-added")&&(k.classList.remove("focus-visible"),k.removeAttribute("data-focus-visible-added"))}function f(k){k.metaKey||k.altKey||k.ctrlKey||(s(r.activeElement)&&c(r.activeElement),o=!0)}function u(k){o=!1}function d(k){s(k.target)&&(o||p(k.target))&&c(k.target)}function y(k){s(k.target)&&(k.target.classList.contains("focus-visible")||k.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(k.target))}function L(k){document.visibilityState==="hidden"&&(n&&(o=!0),X())}function X(){document.addEventListener("mousemove",J),document.addEventListener("mousedown",J),document.addEventListener("mouseup",J),document.addEventListener("pointermove",J),document.addEventListener("pointerdown",J),document.addEventListener("pointerup",J),document.addEventListener("touchmove",J),document.addEventListener("touchstart",J),document.addEventListener("touchend",J)}function te(){document.removeEventListener("mousemove",J),document.removeEventListener("mousedown",J),document.removeEventListener("mouseup",J),document.removeEventListener("pointermove",J),document.removeEventListener("pointerdown",J),document.removeEventListener("pointerup",J),document.removeEventListener("touchmove",J),document.removeEventListener("touchstart",J),document.removeEventListener("touchend",J)}function J(k){k.target.nodeName&&k.target.nodeName.toLowerCase()==="html"||(o=!1,te())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",L,!0),X(),r.addEventListener("focus",d,!0),r.addEventListener("blur",y,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var qr=xr((hy,On)=>{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var $a=/["'&<>]/;On.exports=Pa;function Pa(e){var t=""+e,r=$a.exec(t);if(!r)return t;var o,n="",i=0,a=0;for(i=r.index;i{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof It=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof It=="object"?It.ClipboardJS=r():t.ClipboardJS=r()})(It,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Ui}});var a=i(279),s=i.n(a),p=i(370),c=i.n(p),l=i(817),f=i.n(l);function u(V){try{return document.execCommand(V)}catch(A){return!1}}var d=function(A){var M=f()(A);return u("cut"),M},y=d;function L(V){var A=document.documentElement.getAttribute("dir")==="rtl",M=document.createElement("textarea");M.style.fontSize="12pt",M.style.border="0",M.style.padding="0",M.style.margin="0",M.style.position="absolute",M.style[A?"right":"left"]="-9999px";var F=window.pageYOffset||document.documentElement.scrollTop;return M.style.top="".concat(F,"px"),M.setAttribute("readonly",""),M.value=V,M}var X=function(A,M){var F=L(A);M.container.appendChild(F);var D=f()(F);return u("copy"),F.remove(),D},te=function(A){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},F="";return typeof A=="string"?F=X(A,M):A instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(A==null?void 0:A.type)?F=X(A.value,M):(F=f()(A),u("copy")),F},J=te;function k(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?k=function(M){return typeof M}:k=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},k(V)}var ft=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=A.action,F=M===void 0?"copy":M,D=A.container,Y=A.target,$e=A.text;if(F!=="copy"&&F!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(Y!==void 0)if(Y&&k(Y)==="object"&&Y.nodeType===1){if(F==="copy"&&Y.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(F==="cut"&&(Y.hasAttribute("readonly")||Y.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if($e)return J($e,{container:D});if(Y)return F==="cut"?y(Y):J(Y,{container:D})},qe=ft;function Fe(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fe=function(M){return typeof M}:Fe=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},Fe(V)}function ki(V,A){if(!(V instanceof A))throw new TypeError("Cannot call a class as a function")}function no(V,A){for(var M=0;M0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof D.action=="function"?D.action:this.defaultAction,this.target=typeof D.target=="function"?D.target:this.defaultTarget,this.text=typeof D.text=="function"?D.text:this.defaultText,this.container=Fe(D.container)==="object"?D.container:document.body}},{key:"listenClick",value:function(D){var Y=this;this.listener=c()(D,"click",function($e){return Y.onClick($e)})}},{key:"onClick",value:function(D){var Y=D.delegateTarget||D.currentTarget,$e=this.action(Y)||"copy",Dt=qe({action:$e,container:this.container,target:this.target(Y),text:this.text(Y)});this.emit(Dt?"success":"error",{action:$e,text:Dt,trigger:Y,clearSelection:function(){Y&&Y.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(D){return vr("action",D)}},{key:"defaultTarget",value:function(D){var Y=vr("target",D);if(Y)return document.querySelector(Y)}},{key:"defaultText",value:function(D){return vr("text",D)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(D){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return J(D,Y)}},{key:"cut",value:function(D){return y(D)}},{key:"isSupported",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],Y=typeof D=="string"?[D]:D,$e=!!document.queryCommandSupported;return Y.forEach(function(Dt){$e=$e&&!!document.queryCommandSupported(Dt)}),$e}}]),M}(s()),Ui=Fi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,p){for(;s&&s.nodeType!==n;){if(typeof s.matches=="function"&&s.matches(p))return s;s=s.parentNode}}o.exports=a},438:function(o,n,i){var a=i(828);function s(l,f,u,d,y){var L=c.apply(this,arguments);return l.addEventListener(u,L,y),{destroy:function(){l.removeEventListener(u,L,y)}}}function p(l,f,u,d,y){return typeof l.addEventListener=="function"?s.apply(null,arguments):typeof u=="function"?s.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(L){return s(L,f,u,d,y)}))}function c(l,f,u,d){return function(y){y.delegateTarget=a(y.target,f),y.delegateTarget&&d.call(l,y)}}o.exports=p},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(o,n,i){var a=i(879),s=i(438);function p(u,d,y){if(!u&&!d&&!y)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(y))throw new TypeError("Third argument must be a Function");if(a.node(u))return c(u,d,y);if(a.nodeList(u))return l(u,d,y);if(a.string(u))return f(u,d,y);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(u,d,y){return u.addEventListener(d,y),{destroy:function(){u.removeEventListener(d,y)}}}function l(u,d,y){return Array.prototype.forEach.call(u,function(L){L.addEventListener(d,y)}),{destroy:function(){Array.prototype.forEach.call(u,function(L){L.removeEventListener(d,y)})}}}function f(u,d,y){return s(document.body,u,d,y)}o.exports=p},817:function(o){function n(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var p=window.getSelection(),c=document.createRange();c.selectNodeContents(i),p.removeAllRanges(),p.addRange(c),a=p.toString()}return a}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,a,s){var p=this.e||(this.e={});return(p[i]||(p[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var p=this;function c(){p.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),p=0,c=s.length;for(p;p0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function N(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],a;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function q(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||p(d,L)})},y&&(n[d]=y(n[d])))}function p(d,y){try{c(o[d](y))}catch(L){u(i[0][3],L)}}function c(d){d.value instanceof nt?Promise.resolve(d.value.v).then(l,f):u(i[0][2],d)}function l(d){p("next",d)}function f(d){p("throw",d)}function u(d,y){d(y),i.shift(),i.length&&p(i[0][0],i[0][1])}}function uo(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof he=="function"?he(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(a){return new Promise(function(s,p){a=e[i](a),n(s,p,a.done,a.value)})}}function n(i,a,s,p){Promise.resolve(p).then(function(c){i({value:c,done:s})},a)}}function H(e){return typeof e=="function"}function ut(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var zt=ut(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Qe(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ue=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=he(a),p=s.next();!p.done;p=s.next()){var c=p.value;c.remove(this)}}catch(L){t={error:L}}finally{try{p&&!p.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var l=this.initialTeardown;if(H(l))try{l()}catch(L){i=L instanceof zt?L.errors:[L]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=he(f),d=u.next();!d.done;d=u.next()){var y=d.value;try{ho(y)}catch(L){i=i!=null?i:[],L instanceof zt?i=q(q([],N(i)),N(L.errors)):i.push(L)}}}catch(L){o={error:L}}finally{try{d&&!d.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new zt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ho(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Qe(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Qe(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Tr=Ue.EMPTY;function qt(e){return e instanceof Ue||e&&"closed"in e&&H(e.remove)&&H(e.add)&&H(e.unsubscribe)}function ho(e){H(e)?e():e.unsubscribe()}var Pe={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var dt={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,a=n.isStopped,s=n.observers;return i||a?Tr:(this.currentObservers=null,s.push(r),new Ue(function(){o.currentObservers=null,Qe(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,a=o.isStopped;n?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new j;return r.source=this,r},t.create=function(r,o){return new To(r,o)},t}(j);var To=function(e){oe(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:Tr},t}(g);var _r=function(e){oe(t,e);function t(r){var o=e.call(this)||this;return o._value=r,o}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(r){var o=e.prototype._subscribe.call(this,r);return!o.closed&&r.next(this._value),o},t.prototype.getValue=function(){var r=this,o=r.hasError,n=r.thrownError,i=r._value;if(o)throw n;return this._throwIfClosed(),i},t.prototype.next=function(r){e.prototype.next.call(this,this._value=r)},t}(g);var At={now:function(){return(At.delegate||Date).now()},delegate:void 0};var Ct=function(e){oe(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=At);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,a=o._infiniteTimeWindow,s=o._timestampProvider,p=o._windowTime;n||(i.push(r),!a&&i.push(s.now()+p)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,a=n._buffer,s=a.slice(),p=0;p0?e.prototype.schedule.call(this,r,o):(this.delay=o,this.state=r,this.scheduler.flush(this),this)},t.prototype.execute=function(r,o){return o>0||this.closed?e.prototype.execute.call(this,r,o):this._execute(r,o)},t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!=null&&n>0||n==null&&this.delay>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.flush(this),0)},t}(gt);var Lo=function(e){oe(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(yt);var kr=new Lo(Oo);var Mo=function(e){oe(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n}return t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!==null&&n>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=vt.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var a=r.actions;o!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==o&&(vt.cancelAnimationFrame(o),r._scheduled=void 0)},t}(gt);var _o=function(e){oe(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(yt);var me=new _o(Mo);var S=new j(function(e){return e.complete()});function Yt(e){return e&&H(e.schedule)}function Hr(e){return e[e.length-1]}function Xe(e){return H(Hr(e))?e.pop():void 0}function ke(e){return Yt(Hr(e))?e.pop():void 0}function Bt(e,t){return typeof Hr(e)=="number"?e.pop():t}var xt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Gt(e){return H(e==null?void 0:e.then)}function Jt(e){return H(e[bt])}function Xt(e){return Symbol.asyncIterator&&H(e==null?void 0:e[Symbol.asyncIterator])}function Zt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var er=Zi();function tr(e){return H(e==null?void 0:e[er])}function rr(e){return fo(this,arguments,function(){var r,o,n,i;return Nt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,nt(r.read())];case 3:return o=a.sent(),n=o.value,i=o.done,i?[4,nt(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,nt(n)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function or(e){return H(e==null?void 0:e.getReader)}function U(e){if(e instanceof j)return e;if(e!=null){if(Jt(e))return ea(e);if(xt(e))return ta(e);if(Gt(e))return ra(e);if(Xt(e))return Ao(e);if(tr(e))return oa(e);if(or(e))return na(e)}throw Zt(e)}function ea(e){return new j(function(t){var r=e[bt]();if(H(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function ta(e){return new j(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?b(function(n,i){return e(n,i,o)}):le,Te(1),r?De(t):Qo(function(){return new ir}))}}function jr(e){return e<=0?function(){return S}:E(function(t,r){var o=[];t.subscribe(T(r,function(n){o.push(n),e=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new g}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,p=s===void 0?!0:s;return function(c){var l,f,u,d=0,y=!1,L=!1,X=function(){f==null||f.unsubscribe(),f=void 0},te=function(){X(),l=u=void 0,y=L=!1},J=function(){var k=l;te(),k==null||k.unsubscribe()};return E(function(k,ft){d++,!L&&!y&&X();var qe=u=u!=null?u:r();ft.add(function(){d--,d===0&&!L&&!y&&(f=Ur(J,p))}),qe.subscribe(ft),!l&&d>0&&(l=new at({next:function(Fe){return qe.next(Fe)},error:function(Fe){L=!0,X(),f=Ur(te,n,Fe),qe.error(Fe)},complete:function(){y=!0,X(),f=Ur(te,a),qe.complete()}}),U(k).subscribe(l))})(c)}}function Ur(e,t){for(var r=[],o=2;oe.next(document)),e}function P(e,t=document){return Array.from(t.querySelectorAll(e))}function R(e,t=document){let r=fe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function fe(e,t=document){return t.querySelector(e)||void 0}function Ie(){var e,t,r,o;return(o=(r=(t=(e=document.activeElement)==null?void 0:e.shadowRoot)==null?void 0:t.activeElement)!=null?r:document.activeElement)!=null?o:void 0}var wa=O(h(document.body,"focusin"),h(document.body,"focusout")).pipe(_e(1),Q(void 0),m(()=>Ie()||document.body),G(1));function et(e){return wa.pipe(m(t=>e.contains(t)),K())}function $t(e,t){return C(()=>O(h(e,"mouseenter").pipe(m(()=>!0)),h(e,"mouseleave").pipe(m(()=>!1))).pipe(t?Ht(r=>Le(+!r*t)):le,Q(e.matches(":hover"))))}function Jo(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Jo(e,r)}function x(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)Jo(o,n);return o}function sr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function Tt(e){let t=x("script",{src:e});return C(()=>(document.head.appendChild(t),O(h(t,"load"),h(t,"error").pipe(v(()=>$r(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),_(()=>document.head.removeChild(t)),Te(1))))}var Xo=new g,Ta=C(()=>typeof ResizeObserver=="undefined"?Tt("https://unpkg.com/resize-observer-polyfill"):I(void 0)).pipe(m(()=>new ResizeObserver(e=>e.forEach(t=>Xo.next(t)))),v(e=>O(Ye,I(e)).pipe(_(()=>e.disconnect()))),G(1));function ce(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){let t=e;for(;t.clientWidth===0&&t.parentElement;)t=t.parentElement;return Ta.pipe(w(r=>r.observe(t)),v(r=>Xo.pipe(b(o=>o.target===t),_(()=>r.unobserve(t)))),m(()=>ce(e)),Q(ce(e)))}function St(e){return{width:e.scrollWidth,height:e.scrollHeight}}function cr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}function Zo(e){let t=[],r=e.parentElement;for(;r;)(e.clientWidth>r.clientWidth||e.clientHeight>r.clientHeight)&&t.push(r),r=(e=r).parentElement;return t.length===0&&t.push(document.documentElement),t}function Ve(e){return{x:e.offsetLeft,y:e.offsetTop}}function en(e){let t=e.getBoundingClientRect();return{x:t.x+window.scrollX,y:t.y+window.scrollY}}function tn(e){return O(h(window,"load"),h(window,"resize")).pipe(Me(0,me),m(()=>Ve(e)),Q(Ve(e)))}function pr(e){return{x:e.scrollLeft,y:e.scrollTop}}function Ne(e){return O(h(e,"scroll"),h(window,"scroll"),h(window,"resize")).pipe(Me(0,me),m(()=>pr(e)),Q(pr(e)))}var rn=new g,Sa=C(()=>I(new IntersectionObserver(e=>{for(let t of e)rn.next(t)},{threshold:0}))).pipe(v(e=>O(Ye,I(e)).pipe(_(()=>e.disconnect()))),G(1));function tt(e){return Sa.pipe(w(t=>t.observe(e)),v(t=>rn.pipe(b(({target:r})=>r===e),_(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function on(e,t=16){return Ne(e).pipe(m(({y:r})=>{let o=ce(e),n=St(e);return r>=n.height-o.height-t}),K())}var lr={drawer:R("[data-md-toggle=drawer]"),search:R("[data-md-toggle=search]")};function nn(e){return lr[e].checked}function Je(e,t){lr[e].checked!==t&&lr[e].click()}function ze(e){let t=lr[e];return h(t,"change").pipe(m(()=>t.checked),Q(t.checked))}function Oa(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function La(){return O(h(window,"compositionstart").pipe(m(()=>!0)),h(window,"compositionend").pipe(m(()=>!1))).pipe(Q(!1))}function an(){let e=h(window,"keydown").pipe(b(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:nn("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),b(({mode:t,type:r})=>{if(t==="global"){let o=Ie();if(typeof o!="undefined")return!Oa(o,r)}return!0}),pe());return La().pipe(v(t=>t?S:e))}function ye(){return new URL(location.href)}function lt(e,t=!1){if(B("navigation.instant")&&!t){let r=x("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function sn(){return new g}function cn(){return location.hash.slice(1)}function pn(e){let t=x("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Ma(e){return O(h(window,"hashchange"),e).pipe(m(cn),Q(cn()),b(t=>t.length>0),G(1))}function ln(e){return Ma(e).pipe(m(t=>fe(`[id="${t}"]`)),b(t=>typeof t!="undefined"))}function Pt(e){let t=matchMedia(e);return ar(r=>t.addListener(()=>r(t.matches))).pipe(Q(t.matches))}function mn(){let e=matchMedia("print");return O(h(window,"beforeprint").pipe(m(()=>!0)),h(window,"afterprint").pipe(m(()=>!1))).pipe(Q(e.matches))}function Nr(e,t){return e.pipe(v(r=>r?t():S))}function zr(e,t){return new j(r=>{let o=new XMLHttpRequest;return o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network error"))}),o.addEventListener("abort",()=>{r.complete()}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{var i;if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let a=(i=o.getResponseHeader("Content-Length"))!=null?i:0;t.progress$.next(n.loaded/+a*100)}}),t.progress$.next(5)),o.send(),()=>o.abort()})}function je(e,t){return zr(e,t).pipe(v(r=>r.text()),m(r=>JSON.parse(r)),G(1))}function fn(e,t){let r=new DOMParser;return zr(e,t).pipe(v(o=>o.text()),m(o=>r.parseFromString(o,"text/html")),G(1))}function un(e,t){let r=new DOMParser;return zr(e,t).pipe(v(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),G(1))}function dn(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function hn(){return O(h(window,"scroll",{passive:!0}),h(window,"resize",{passive:!0})).pipe(m(dn),Q(dn()))}function bn(){return{width:innerWidth,height:innerHeight}}function vn(){return h(window,"resize",{passive:!0}).pipe(m(bn),Q(bn()))}function gn(){return z([hn(),vn()]).pipe(m(([e,t])=>({offset:e,size:t})),G(1))}function mr(e,{viewport$:t,header$:r}){let o=t.pipe(ee("size")),n=z([o,r]).pipe(m(()=>Ve(e)));return z([r,t,n]).pipe(m(([{height:i},{offset:a,size:s},{x:p,y:c}])=>({offset:{x:a.x-p,y:a.y-c+i},size:s})))}function _a(e){return h(e,"message",t=>t.data)}function Aa(e){let t=new g;return t.subscribe(r=>e.postMessage(r)),t}function yn(e,t=new Worker(e)){let r=_a(t),o=Aa(t),n=new g;n.subscribe(o);let i=o.pipe(Z(),ie(!0));return n.pipe(Z(),Re(r.pipe(W(i))),pe())}var Ca=R("#__config"),Ot=JSON.parse(Ca.textContent);Ot.base=`${new URL(Ot.base,ye())}`;function xe(){return Ot}function B(e){return Ot.features.includes(e)}function Ee(e,t){return typeof t!="undefined"?Ot.translations[e].replace("#",t.toString()):Ot.translations[e]}function Se(e,t=document){return R(`[data-md-component=${e}]`,t)}function ae(e,t=document){return P(`[data-md-component=${e}]`,t)}function ka(e){let t=R(".md-typeset > :first-child",e);return h(t,"click",{once:!0}).pipe(m(()=>R(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function xn(e){if(!B("announce.dismiss")||!e.childElementCount)return S;if(!e.hidden){let t=R(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return C(()=>{let t=new g;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),ka(e).pipe(w(r=>t.next(r)),_(()=>t.complete()),m(r=>$({ref:e},r)))})}function Ha(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function En(e,t){let r=new g;return r.subscribe(({hidden:o})=>{e.hidden=o}),Ha(e,t).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))}function Rt(e,t){return t==="inline"?x("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"})):x("div",{class:"md-tooltip",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"}))}function wn(...e){return x("div",{class:"md-tooltip2",role:"tooltip"},x("div",{class:"md-tooltip2__inner md-typeset"},e))}function Tn(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return x("aside",{class:"md-annotation",tabIndex:0},Rt(t),x("a",{href:r,class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}else return x("aside",{class:"md-annotation",tabIndex:0},Rt(t),x("span",{class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}function Sn(e){return x("button",{class:"md-clipboard md-icon",title:Ee("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}var Ln=Mt(qr());function Qr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(p=>!e.terms[p]).reduce((p,c)=>[...p,x("del",null,(0,Ln.default)(c))," "],[]).slice(0,-1),i=xe(),a=new URL(e.location,i.base);B("search.highlight")&&a.searchParams.set("h",Object.entries(e.terms).filter(([,p])=>p).reduce((p,[c])=>`${p} ${c}`.trim(),""));let{tags:s}=xe();return x("a",{href:`${a}`,class:"md-search-result__link",tabIndex:-1},x("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&x("div",{class:"md-search-result__icon md-icon"}),r>0&&x("h1",null,e.title),r<=0&&x("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&x("nav",{class:"md-tags"},e.tags.map(p=>{let c=s?p in s?`md-tag-icon md-tag--${s[p]}`:"md-tag-icon":"";return x("span",{class:`md-tag ${c}`},p)})),o>0&&n.length>0&&x("p",{class:"md-search-result__terms"},Ee("search.result.term.missing"),": ",...n)))}function Mn(e){let t=e[0].score,r=[...e],o=xe(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),a=r.findIndex(l=>l.scoreQr(l,1)),...p.length?[x("details",{class:"md-search-result__more"},x("summary",{tabIndex:-1},x("div",null,p.length>0&&p.length===1?Ee("search.result.more.one"):Ee("search.result.more.other",p.length))),...p.map(l=>Qr(l,1)))]:[]];return x("li",{class:"md-search-result__item"},c)}function _n(e){return x("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>x("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?sr(r):r)))}function Kr(e){let t=`tabbed-control tabbed-control--${e}`;return x("div",{class:t,hidden:!0},x("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function An(e){return x("div",{class:"md-typeset__scrollwrap"},x("div",{class:"md-typeset__table"},e))}function Ra(e){var o;let t=xe(),r=new URL(`../${e.version}/`,t.base);return x("li",{class:"md-version__item"},x("a",{href:`${r}`,class:"md-version__link"},e.title,((o=t.version)==null?void 0:o.alias)&&e.aliases.length>0&&x("span",{class:"md-version__alias"},e.aliases[0])))}function Cn(e,t){var o;let r=xe();return e=e.filter(n=>{var i;return!((i=n.properties)!=null&&i.hidden)}),x("div",{class:"md-version"},x("button",{class:"md-version__current","aria-label":Ee("select.version")},t.title,((o=r.version)==null?void 0:o.alias)&&t.aliases.length>0&&x("span",{class:"md-version__alias"},t.aliases[0])),x("ul",{class:"md-version__list"},e.map(Ra)))}var Ia=0;function ja(e){let t=z([et(e),$t(e)]).pipe(m(([o,n])=>o||n),K()),r=C(()=>Zo(e)).pipe(ne(Ne),pt(1),He(t),m(()=>en(e)));return t.pipe(Ae(o=>o),v(()=>z([t,r])),m(([o,n])=>({active:o,offset:n})),pe())}function Fa(e,t){let{content$:r,viewport$:o}=t,n=`__tooltip2_${Ia++}`;return C(()=>{let i=new g,a=new _r(!1);i.pipe(Z(),ie(!1)).subscribe(a);let s=a.pipe(Ht(c=>Le(+!c*250,kr)),K(),v(c=>c?r:S),w(c=>c.id=n),pe());z([i.pipe(m(({active:c})=>c)),s.pipe(v(c=>$t(c,250)),Q(!1))]).pipe(m(c=>c.some(l=>l))).subscribe(a);let p=a.pipe(b(c=>c),re(s,o),m(([c,l,{size:f}])=>{let u=e.getBoundingClientRect(),d=u.width/2;if(l.role==="tooltip")return{x:d,y:8+u.height};if(u.y>=f.height/2){let{height:y}=ce(l);return{x:d,y:-16-y}}else return{x:d,y:16+u.height}}));return z([s,i,p]).subscribe(([c,{offset:l},f])=>{c.style.setProperty("--md-tooltip-host-x",`${l.x}px`),c.style.setProperty("--md-tooltip-host-y",`${l.y}px`),c.style.setProperty("--md-tooltip-x",`${f.x}px`),c.style.setProperty("--md-tooltip-y",`${f.y}px`),c.classList.toggle("md-tooltip2--top",f.y<0),c.classList.toggle("md-tooltip2--bottom",f.y>=0)}),a.pipe(b(c=>c),re(s,(c,l)=>l),b(c=>c.role==="tooltip")).subscribe(c=>{let l=ce(R(":scope > *",c));c.style.setProperty("--md-tooltip-width",`${l.width}px`),c.style.setProperty("--md-tooltip-tail","0px")}),a.pipe(K(),ve(me),re(s)).subscribe(([c,l])=>{l.classList.toggle("md-tooltip2--active",c)}),z([a.pipe(b(c=>c)),s]).subscribe(([c,l])=>{l.role==="dialog"?(e.setAttribute("aria-controls",n),e.setAttribute("aria-haspopup","dialog")):e.setAttribute("aria-describedby",n)}),a.pipe(b(c=>!c)).subscribe(()=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-describedby"),e.removeAttribute("aria-haspopup")}),ja(e).pipe(w(c=>i.next(c)),_(()=>i.complete()),m(c=>$({ref:e},c)))})}function mt(e,{viewport$:t},r=document.body){return Fa(e,{content$:new j(o=>{let n=e.title,i=wn(n);return o.next(i),e.removeAttribute("title"),r.append(i),()=>{i.remove(),e.setAttribute("title",n)}}),viewport$:t})}function Ua(e,t){let r=C(()=>z([tn(e),Ne(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:a,height:s}=ce(e);return{x:o-i.x+a/2,y:n-i.y+s/2}}));return et(e).pipe(v(o=>r.pipe(m(n=>({active:o,offset:n})),Te(+!o||1/0))))}function kn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return C(()=>{let i=new g,a=i.pipe(Z(),ie(!0));return i.subscribe({next({offset:s}){e.style.setProperty("--md-tooltip-x",`${s.x}px`),e.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),tt(e).pipe(W(a)).subscribe(s=>{e.toggleAttribute("data-md-visible",s)}),O(i.pipe(b(({active:s})=>s)),i.pipe(_e(250),b(({active:s})=>!s))).subscribe({next({active:s}){s?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Me(16,me)).subscribe(({active:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(pt(125,me),b(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?e.style.setProperty("--md-tooltip-0",`${-s}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),h(n,"click").pipe(W(a),b(s=>!(s.metaKey||s.ctrlKey))).subscribe(s=>{s.stopPropagation(),s.preventDefault()}),h(n,"mousedown").pipe(W(a),re(i)).subscribe(([s,{active:p}])=>{var c;if(s.button!==0||s.metaKey||s.ctrlKey)s.preventDefault();else if(p){s.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(c=Ie())==null||c.blur()}}),r.pipe(W(a),b(s=>s===o),Ge(125)).subscribe(()=>e.focus()),Ua(e,t).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))})}function Wa(e){return e.tagName==="CODE"?P(".c, .c1, .cm",e):[e]}function Da(e){let t=[];for(let r of Wa(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let a;for(;a=/(\(\d+\))(!)?/.exec(i.textContent);){let[,s,p]=a;if(typeof p=="undefined"){let c=i.splitText(a.index);i=c.splitText(s.length),t.push(c)}else{i.textContent=s,t.push(i);break}}}}return t}function Hn(e,t){t.append(...Array.from(e.childNodes))}function fr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,a=new Map;for(let s of Da(t)){let[,p]=s.textContent.match(/\((\d+)\)/);fe(`:scope > li:nth-child(${p})`,e)&&(a.set(p,Tn(p,i)),s.replaceWith(a.get(p)))}return a.size===0?S:C(()=>{let s=new g,p=s.pipe(Z(),ie(!0)),c=[];for(let[l,f]of a)c.push([R(".md-typeset",f),R(`:scope > li:nth-child(${l})`,e)]);return o.pipe(W(p)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of c)l?Hn(f,u):Hn(u,f)}),O(...[...a].map(([,l])=>kn(l,t,{target$:r}))).pipe(_(()=>s.complete()),pe())})}function $n(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return $n(t)}}function Pn(e,t){return C(()=>{let r=$n(e);return typeof r!="undefined"?fr(r,e,t):S})}var Rn=Mt(Br());var Va=0;function In(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return In(t)}}function Na(e){return ge(e).pipe(m(({width:t})=>({scrollable:St(e).width>t})),ee("scrollable"))}function jn(e,t){let{matches:r}=matchMedia("(hover)"),o=C(()=>{let n=new g,i=n.pipe(jr(1));n.subscribe(({scrollable:c})=>{c&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let a=[];if(Rn.default.isSupported()&&(e.closest(".copy")||B("content.code.copy")&&!e.closest(".no-copy"))){let c=e.closest("pre");c.id=`__code_${Va++}`;let l=Sn(c.id);c.insertBefore(l,e),B("content.tooltips")&&a.push(mt(l,{viewport$}))}let s=e.closest(".highlight");if(s instanceof HTMLElement){let c=In(s);if(typeof c!="undefined"&&(s.classList.contains("annotate")||B("content.code.annotate"))){let l=fr(c,e,t);a.push(ge(s).pipe(W(i),m(({width:f,height:u})=>f&&u),K(),v(f=>f?l:S)))}}return P(":scope > span[id]",e).length&&e.classList.add("md-code__content"),Na(e).pipe(w(c=>n.next(c)),_(()=>n.complete()),m(c=>$({ref:e},c)),Re(...a))});return B("content.lazy")?tt(e).pipe(b(n=>n),Te(1),v(()=>o)):o}function za(e,{target$:t,print$:r}){let o=!0;return O(t.pipe(m(n=>n.closest("details:not([open])")),b(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(b(n=>n||!o),w(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Fn(e,t){return C(()=>{let r=new g;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),za(e,t).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}var Un=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel p,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel p{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel,.nodeLabel p{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}a .nodeLabel{text-decoration:underline}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var Gr,Qa=0;function Ka(){return typeof mermaid=="undefined"||mermaid instanceof Element?Tt("https://unpkg.com/mermaid@11/dist/mermaid.min.js"):I(void 0)}function Wn(e){return e.classList.remove("mermaid"),Gr||(Gr=Ka().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Un,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),G(1))),Gr.subscribe(()=>co(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${Qa++}`,r=x("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),a=r.attachShadow({mode:"closed"});a.innerHTML=n,e.replaceWith(r),i==null||i(a)})),Gr.pipe(m(()=>({ref:e})))}var Dn=x("table");function Vn(e){return e.replaceWith(Dn),Dn.replaceWith(An(e)),I({ref:e})}function Ya(e){let t=e.find(r=>r.checked)||e[0];return O(...e.map(r=>h(r,"change").pipe(m(()=>R(`label[for="${r.id}"]`))))).pipe(Q(R(`label[for="${t.id}"]`)),m(r=>({active:r})))}function Nn(e,{viewport$:t,target$:r}){let o=R(".tabbed-labels",e),n=P(":scope > input",e),i=Kr("prev");e.append(i);let a=Kr("next");return e.append(a),C(()=>{let s=new g,p=s.pipe(Z(),ie(!0));z([s,ge(e),tt(e)]).pipe(W(p),Me(1,me)).subscribe({next([{active:c},l]){let f=Ve(c),{width:u}=ce(c);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let d=pr(o);(f.xd.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),z([Ne(o),ge(o)]).pipe(W(p)).subscribe(([c,l])=>{let f=St(o);i.hidden=c.x<16,a.hidden=c.x>f.width-l.width-16}),O(h(i,"click").pipe(m(()=>-1)),h(a,"click").pipe(m(()=>1))).pipe(W(p)).subscribe(c=>{let{width:l}=ce(o);o.scrollBy({left:l*c,behavior:"smooth"})}),r.pipe(W(p),b(c=>n.includes(c))).subscribe(c=>c.click()),o.classList.add("tabbed-labels--linked");for(let c of n){let l=R(`label[for="${c.id}"]`);l.replaceChildren(x("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),h(l.firstElementChild,"click").pipe(W(p),b(f=>!(f.metaKey||f.ctrlKey)),w(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return B("content.tabs.link")&&s.pipe(Ce(1),re(t)).subscribe(([{active:c},{offset:l}])=>{let f=c.innerText.trim();if(c.hasAttribute("data-md-switching"))c.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let y of P("[data-tabs]"))for(let L of P(":scope > input",y)){let X=R(`label[for="${L.id}"]`);if(X!==c&&X.innerText.trim()===f){X.setAttribute("data-md-switching",""),L.click();break}}window.scrollTo({top:e.offsetTop-u});let d=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...d])])}}),s.pipe(W(p)).subscribe(()=>{for(let c of P("audio, video",e))c.pause()}),Ya(n).pipe(w(c=>s.next(c)),_(()=>s.complete()),m(c=>$({ref:e},c)))}).pipe(Ke(se))}function zn(e,{viewport$:t,target$:r,print$:o}){return O(...P(".annotate:not(.highlight)",e).map(n=>Pn(n,{target$:r,print$:o})),...P("pre:not(.mermaid) > code",e).map(n=>jn(n,{target$:r,print$:o})),...P("pre.mermaid",e).map(n=>Wn(n)),...P("table:not([class])",e).map(n=>Vn(n)),...P("details",e).map(n=>Fn(n,{target$:r,print$:o})),...P("[data-tabs]",e).map(n=>Nn(n,{viewport$:t,target$:r})),...P("[title]",e).filter(()=>B("content.tooltips")).map(n=>mt(n,{viewport$:t})))}function Ba(e,{alert$:t}){return t.pipe(v(r=>O(I(!0),I(!1).pipe(Ge(2e3))).pipe(m(o=>({message:r,active:o})))))}function qn(e,t){let r=R(".md-typeset",e);return C(()=>{let o=new g;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),Ba(e,t).pipe(w(n=>o.next(n)),_(()=>o.complete()),m(n=>$({ref:e},n)))})}var Ga=0;function Ja(e,t){document.body.append(e);let{width:r}=ce(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=cr(t),n=typeof o!="undefined"?Ne(o):I({x:0,y:0}),i=O(et(t),$t(t)).pipe(K());return z([i,n]).pipe(m(([a,s])=>{let{x:p,y:c}=Ve(t),l=ce(t),f=t.closest("table");return f&&t.parentElement&&(p+=f.offsetLeft+t.parentElement.offsetLeft,c+=f.offsetTop+t.parentElement.offsetTop),{active:a,offset:{x:p-s.x+l.width/2-r/2,y:c-s.y+l.height+8}}}))}function Qn(e){let t=e.title;if(!t.length)return S;let r=`__tooltip_${Ga++}`,o=Rt(r,"inline"),n=R(".md-typeset",o);return n.innerHTML=t,C(()=>{let i=new g;return i.subscribe({next({offset:a}){o.style.setProperty("--md-tooltip-x",`${a.x}px`),o.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),O(i.pipe(b(({active:a})=>a)),i.pipe(_e(250),b(({active:a})=>!a))).subscribe({next({active:a}){a?(e.insertAdjacentElement("afterend",o),e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe(Me(16,me)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(pt(125,me),b(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?o.style.setProperty("--md-tooltip-0",`${-a}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),Ja(o,e).pipe(w(a=>i.next(a)),_(()=>i.complete()),m(a=>$({ref:e},a)))}).pipe(Ke(se))}function Xa({viewport$:e}){if(!B("header.autohide"))return I(!1);let t=e.pipe(m(({offset:{y:n}})=>n),Be(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),K()),o=ze("search");return z([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),K(),v(n=>n?r:I(!1)),Q(!1))}function Kn(e,t){return C(()=>z([ge(e),Xa(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),K((r,o)=>r.height===o.height&&r.hidden===o.hidden),G(1))}function Yn(e,{header$:t,main$:r}){return C(()=>{let o=new g,n=o.pipe(Z(),ie(!0));o.pipe(ee("active"),He(t)).subscribe(([{active:a},{hidden:s}])=>{e.classList.toggle("md-header--shadow",a&&!s),e.hidden=s});let i=ue(P("[title]",e)).pipe(b(()=>B("content.tooltips")),ne(a=>Qn(a)));return r.subscribe(o),t.pipe(W(n),m(a=>$({ref:e},a)),Re(i.pipe(W(n))))})}function Za(e,{viewport$:t,header$:r}){return mr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=ce(e);return{active:o>=n}}),ee("active"))}function Bn(e,t){return C(()=>{let r=new g;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=fe(".md-content h1");return typeof o=="undefined"?S:Za(o,t).pipe(w(n=>r.next(n)),_(()=>r.complete()),m(n=>$({ref:e},n)))})}function Gn(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),K()),n=o.pipe(v(()=>ge(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),ee("bottom"))));return z([o,n,t]).pipe(m(([i,{top:a,bottom:s},{offset:{y:p},size:{height:c}}])=>(c=Math.max(0,c-Math.max(0,a-p,i)-Math.max(0,c+p-s)),{offset:a-i,height:c,active:a-i<=p})),K((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function es(e){let t=__md_get("__palette")||{index:e.findIndex(o=>matchMedia(o.getAttribute("data-md-color-media")).matches)},r=Math.max(0,Math.min(t.index,e.length-1));return I(...e).pipe(ne(o=>h(o,"change").pipe(m(()=>o))),Q(e[r]),m(o=>({index:e.indexOf(o),color:{media:o.getAttribute("data-md-color-media"),scheme:o.getAttribute("data-md-color-scheme"),primary:o.getAttribute("data-md-color-primary"),accent:o.getAttribute("data-md-color-accent")}})),G(1))}function Jn(e){let t=P("input",e),r=x("meta",{name:"theme-color"});document.head.appendChild(r);let o=x("meta",{name:"color-scheme"});document.head.appendChild(o);let n=Pt("(prefers-color-scheme: light)");return C(()=>{let i=new g;return i.subscribe(a=>{if(document.body.setAttribute("data-md-color-switching",""),a.color.media==="(prefers-color-scheme)"){let s=matchMedia("(prefers-color-scheme: light)"),p=document.querySelector(s.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");a.color.scheme=p.getAttribute("data-md-color-scheme"),a.color.primary=p.getAttribute("data-md-color-primary"),a.color.accent=p.getAttribute("data-md-color-accent")}for(let[s,p]of Object.entries(a.color))document.body.setAttribute(`data-md-color-${s}`,p);for(let s=0;sa.key==="Enter"),re(i,(a,s)=>s)).subscribe(({index:a})=>{a=(a+1)%t.length,t[a].click(),t[a].focus()}),i.pipe(m(()=>{let a=Se("header"),s=window.getComputedStyle(a);return o.content=s.colorScheme,s.backgroundColor.match(/\d+/g).map(p=>(+p).toString(16).padStart(2,"0")).join("")})).subscribe(a=>r.content=`#${a}`),i.pipe(ve(se)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),es(t).pipe(W(n.pipe(Ce(1))),ct(),w(a=>i.next(a)),_(()=>i.complete()),m(a=>$({ref:e},a)))})}function Xn(e,{progress$:t}){return C(()=>{let r=new g;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(w(o=>r.next({value:o})),_(()=>r.complete()),m(o=>({ref:e,value:o})))})}var Jr=Mt(Br());function ts(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function Zn({alert$:e}){Jr.default.isSupported()&&new j(t=>{new Jr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||ts(R(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),m(()=>Ee("clipboard.copied"))).subscribe(e)}function ei(e,t){return e.protocol=t.protocol,e.hostname=t.hostname,e}function rs(e,t){let r=new Map;for(let o of P("url",e)){let n=R("loc",o),i=[ei(new URL(n.textContent),t)];r.set(`${i[0]}`,i);for(let a of P("[rel=alternate]",o)){let s=a.getAttribute("href");s!=null&&i.push(ei(new URL(s),t))}}return r}function ur(e){return un(new URL("sitemap.xml",e)).pipe(m(t=>rs(t,new URL(e))),de(()=>I(new Map)))}function os(e,t){if(!(e.target instanceof Element))return S;let r=e.target.closest("a");if(r===null)return S;if(r.target||e.metaKey||e.ctrlKey)return S;let o=new URL(r.href);return o.search=o.hash="",t.has(`${o}`)?(e.preventDefault(),I(new URL(r.href))):S}function ti(e){let t=new Map;for(let r of P(":scope > *",e.head))t.set(r.outerHTML,r);return t}function ri(e){for(let t of P("[href], [src]",e))for(let r of["href","src"]){let o=t.getAttribute(r);if(o&&!/^(?:[a-z]+:)?\/\//i.test(o)){t[r]=t[r];break}}return I(e)}function ns(e){for(let o of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...B("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let n=fe(o),i=fe(o,e);typeof n!="undefined"&&typeof i!="undefined"&&n.replaceWith(i)}let t=ti(document);for(let[o,n]of ti(e))t.has(o)?t.delete(o):document.head.appendChild(n);for(let o of t.values()){let n=o.getAttribute("name");n!=="theme-color"&&n!=="color-scheme"&&o.remove()}let r=Se("container");return We(P("script",r)).pipe(v(o=>{let n=e.createElement("script");if(o.src){for(let i of o.getAttributeNames())n.setAttribute(i,o.getAttribute(i));return o.replaceWith(n),new j(i=>{n.onload=()=>i.complete()})}else return n.textContent=o.textContent,o.replaceWith(n),S}),Z(),ie(document))}function oi({location$:e,viewport$:t,progress$:r}){let o=xe();if(location.protocol==="file:")return S;let n=ur(o.base);I(document).subscribe(ri);let i=h(document.body,"click").pipe(He(n),v(([p,c])=>os(p,c)),pe()),a=h(window,"popstate").pipe(m(ye),pe());i.pipe(re(t)).subscribe(([p,{offset:c}])=>{history.replaceState(c,""),history.pushState(null,"",p)}),O(i,a).subscribe(e);let s=e.pipe(ee("pathname"),v(p=>fn(p,{progress$:r}).pipe(de(()=>(lt(p,!0),S)))),v(ri),v(ns),pe());return O(s.pipe(re(e,(p,c)=>c)),s.pipe(v(()=>e),ee("pathname"),v(()=>e),ee("hash")),e.pipe(K((p,c)=>p.pathname===c.pathname&&p.hash===c.hash),v(()=>i),w(()=>history.back()))).subscribe(p=>{var c,l;history.state!==null||!p.hash?window.scrollTo(0,(l=(c=history.state)==null?void 0:c.y)!=null?l:0):(history.scrollRestoration="auto",pn(p.hash),history.scrollRestoration="manual")}),e.subscribe(()=>{history.scrollRestoration="manual"}),h(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),t.pipe(ee("offset"),_e(100)).subscribe(({offset:p})=>{history.replaceState(p,"")}),s}var ni=Mt(qr());function ii(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,a)=>`${i}${a}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return a=>(0,ni.default)(a).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function jt(e){return e.type===1}function dr(e){return e.type===3}function ai(e,t){let r=yn(e);return O(I(location.protocol!=="file:"),ze("search")).pipe(Ae(o=>o),v(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:B("search.suggest")}}})),r}function si(e){var l;let{selectedVersionSitemap:t,selectedVersionBaseURL:r,currentLocation:o,currentBaseURL:n}=e,i=(l=Xr(n))==null?void 0:l.pathname;if(i===void 0)return;let a=ss(o.pathname,i);if(a===void 0)return;let s=ps(t.keys());if(!t.has(s))return;let p=Xr(a,s);if(!p||!t.has(p.href))return;let c=Xr(a,r);if(c)return c.hash=o.hash,c.search=o.search,c}function Xr(e,t){try{return new URL(e,t)}catch(r){return}}function ss(e,t){if(e.startsWith(t))return e.slice(t.length)}function cs(e,t){let r=Math.min(e.length,t.length),o;for(o=0;oS)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:a,aliases:s})=>a===i||s.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),v(n=>h(document.body,"click").pipe(b(i=>!i.metaKey&&!i.ctrlKey),re(o),v(([i,a])=>{if(i.target instanceof Element){let s=i.target.closest("a");if(s&&!s.target&&n.has(s.href)){let p=s.href;return!i.target.closest(".md-version")&&n.get(p)===a?S:(i.preventDefault(),I(new URL(p)))}}return S}),v(i=>ur(i).pipe(m(a=>{var s;return(s=si({selectedVersionSitemap:a,selectedVersionBaseURL:i,currentLocation:ye(),currentBaseURL:t.base}))!=null?s:i})))))).subscribe(n=>lt(n,!0)),z([r,o]).subscribe(([n,i])=>{R(".md-header__topic").appendChild(Cn(n,i))}),e.pipe(v(()=>o)).subscribe(n=>{var a;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let s=((a=t.version)==null?void 0:a.default)||"latest";Array.isArray(s)||(s=[s]);e:for(let p of s)for(let c of n.aliases.concat(n.version))if(new RegExp(p,"i").test(c)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let s of ae("outdated"))s.hidden=!1})}function ls(e,{worker$:t}){let{searchParams:r}=ye();r.has("q")&&(Je("search",!0),e.value=r.get("q"),e.focus(),ze("search").pipe(Ae(i=>!i)).subscribe(()=>{let i=ye();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=et(e),n=O(t.pipe(Ae(jt)),h(e,"keyup"),o).pipe(m(()=>e.value),K());return z([n,o]).pipe(m(([i,a])=>({value:i,focus:a})),G(1))}function pi(e,{worker$:t}){let r=new g,o=r.pipe(Z(),ie(!0));z([t.pipe(Ae(jt)),r],(i,a)=>a).pipe(ee("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(ee("focus")).subscribe(({focus:i})=>{i&&Je("search",i)}),h(e.form,"reset").pipe(W(o)).subscribe(()=>e.focus());let n=R("header [for=__search]");return h(n,"click").subscribe(()=>e.focus()),ls(e,{worker$:t}).pipe(w(i=>r.next(i)),_(()=>r.complete()),m(i=>$({ref:e},i)),G(1))}function li(e,{worker$:t,query$:r}){let o=new g,n=on(e.parentElement).pipe(b(Boolean)),i=e.parentElement,a=R(":scope > :first-child",e),s=R(":scope > :last-child",e);ze("search").subscribe(l=>s.setAttribute("role",l?"list":"presentation")),o.pipe(re(r),Wr(t.pipe(Ae(jt)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:a.textContent=f.length?Ee("search.result.none"):Ee("search.result.placeholder");break;case 1:a.textContent=Ee("search.result.one");break;default:let u=sr(l.length);a.textContent=Ee("search.result.other",u)}});let p=o.pipe(w(()=>s.innerHTML=""),v(({items:l})=>O(I(...l.slice(0,10)),I(...l.slice(10)).pipe(Be(4),Vr(n),v(([f])=>f)))),m(Mn),pe());return p.subscribe(l=>s.appendChild(l)),p.pipe(ne(l=>{let f=fe("details",l);return typeof f=="undefined"?S:h(f,"toggle").pipe(W(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(b(dr),m(({data:l})=>l)).pipe(w(l=>o.next(l)),_(()=>o.complete()),m(l=>$({ref:e},l)))}function ms(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=ye();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function mi(e,t){let r=new g,o=r.pipe(Z(),ie(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),h(e,"click").pipe(W(o)).subscribe(n=>n.preventDefault()),ms(e,t).pipe(w(n=>r.next(n)),_(()=>r.complete()),m(n=>$({ref:e},n)))}function fi(e,{worker$:t,keyboard$:r}){let o=new g,n=Se("search-query"),i=O(h(n,"keydown"),h(n,"focus")).pipe(ve(se),m(()=>n.value),K());return o.pipe(He(i),m(([{suggest:s},p])=>{let c=p.split(/([\s-]+)/);if(s!=null&&s.length&&c[c.length-1]){let l=s[s.length-1];l.startsWith(c[c.length-1])&&(c[c.length-1]=l)}else c.length=0;return c})).subscribe(s=>e.innerHTML=s.join("").replace(/\s/g," ")),r.pipe(b(({mode:s})=>s==="search")).subscribe(s=>{switch(s.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(b(dr),m(({data:s})=>s)).pipe(w(s=>o.next(s)),_(()=>o.complete()),m(()=>({ref:e})))}function ui(e,{index$:t,keyboard$:r}){let o=xe();try{let n=ai(o.search,t),i=Se("search-query",e),a=Se("search-result",e);h(e,"click").pipe(b(({target:p})=>p instanceof Element&&!!p.closest("a"))).subscribe(()=>Je("search",!1)),r.pipe(b(({mode:p})=>p==="search")).subscribe(p=>{let c=Ie();switch(p.type){case"Enter":if(c===i){let l=new Map;for(let f of P(":first-child [href]",a)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,d])=>d-u);f.click()}p.claim()}break;case"Escape":case"Tab":Je("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof c=="undefined")i.focus();else{let l=[i,...P(":not(details) > [href], summary, details[open] [href]",a)],f=Math.max(0,(Math.max(0,l.indexOf(c))+l.length+(p.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}p.claim();break;default:i!==Ie()&&i.focus()}}),r.pipe(b(({mode:p})=>p==="global")).subscribe(p=>{switch(p.type){case"f":case"s":case"/":i.focus(),i.select(),p.claim();break}});let s=pi(i,{worker$:n});return O(s,li(a,{worker$:n,query$:s})).pipe(Re(...ae("search-share",e).map(p=>mi(p,{query$:s})),...ae("search-suggest",e).map(p=>fi(p,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,Ye}}function di(e,{index$:t,location$:r}){return z([t,r.pipe(Q(ye()),b(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>ii(o.config)(n.searchParams.get("h"))),m(o=>{var a;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let s=i.nextNode();s;s=i.nextNode())if((a=s.parentElement)!=null&&a.offsetHeight){let p=s.textContent,c=o(p);c.length>p.length&&n.set(s,c)}for(let[s,p]of n){let{childNodes:c}=x("span",null,p);s.replaceWith(...Array.from(c))}return{ref:e,nodes:n}}))}function fs(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return z([r,t]).pipe(m(([{offset:i,height:a},{offset:{y:s}}])=>(a=a+Math.min(n,Math.max(0,s-i))-n,{height:a,locked:s>=i+n})),K((i,a)=>i.height===a.height&&i.locked===a.locked))}function Zr(e,o){var n=o,{header$:t}=n,r=so(n,["header$"]);let i=R(".md-sidebar__scrollwrap",e),{y:a}=Ve(i);return C(()=>{let s=new g,p=s.pipe(Z(),ie(!0)),c=s.pipe(Me(0,me));return c.pipe(re(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*a}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),c.pipe(Ae()).subscribe(()=>{for(let l of P(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=ce(f);f.scrollTo({top:u-d/2})}}}),ue(P("label[tabindex]",e)).pipe(ne(l=>h(l,"click").pipe(ve(se),m(()=>l),W(p)))).subscribe(l=>{let f=R(`[id="${l.htmlFor}"]`);R(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),fs(e,r).pipe(w(l=>s.next(l)),_(()=>s.complete()),m(l=>$({ref:e},l)))})}function hi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return st(je(`${r}/releases/latest`).pipe(de(()=>S),m(o=>({version:o.tag_name})),De({})),je(r).pipe(de(()=>S),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),De({}))).pipe(m(([o,n])=>$($({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return je(r).pipe(m(o=>({repositories:o.public_repos})),De({}))}}function bi(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return st(je(`${r}/releases/permalink/latest`).pipe(de(()=>S),m(({tag_name:o})=>({version:o})),De({})),je(r).pipe(de(()=>S),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),De({}))).pipe(m(([o,n])=>$($({},o),n)))}function vi(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return hi(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return bi(r,o)}return S}var us;function ds(e){return us||(us=C(()=>{let t=__md_get("__source",sessionStorage);if(t)return I(t);if(ae("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return S}return vi(e.href).pipe(w(o=>__md_set("__source",o,sessionStorage)))}).pipe(de(()=>S),b(t=>Object.keys(t).length>0),m(t=>({facts:t})),G(1)))}function gi(e){let t=R(":scope > :last-child",e);return C(()=>{let r=new g;return r.subscribe(({facts:o})=>{t.appendChild(_n(o)),t.classList.add("md-source__repository--active")}),ds(e).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}function hs(e,{viewport$:t,header$:r}){return ge(document.body).pipe(v(()=>mr(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),ee("hidden"))}function yi(e,t){return C(()=>{let r=new g;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(B("navigation.tabs.sticky")?I({hidden:!1}):hs(e,t)).pipe(w(o=>r.next(o)),_(()=>r.complete()),m(o=>$({ref:e},o)))})}function bs(e,{viewport$:t,header$:r}){let o=new Map,n=P(".md-nav__link",e);for(let s of n){let p=decodeURIComponent(s.hash.substring(1)),c=fe(`[id="${p}"]`);typeof c!="undefined"&&o.set(s,c)}let i=r.pipe(ee("height"),m(({height:s})=>{let p=Se("main"),c=R(":scope > :first-child",p);return s+.8*(c.offsetTop-p.offsetTop)}),pe());return ge(document.body).pipe(ee("height"),v(s=>C(()=>{let p=[];return I([...o].reduce((c,[l,f])=>{for(;p.length&&o.get(p[p.length-1]).tagName>=f.tagName;)p.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let d=f.offsetParent;for(;d;d=d.offsetParent)u+=d.offsetTop;return c.set([...p=[...p,l]].reverse(),u)},new Map))}).pipe(m(p=>new Map([...p].sort(([,c],[,l])=>c-l))),He(i),v(([p,c])=>t.pipe(Fr(([l,f],{offset:{y:u},size:d})=>{let y=u+d.height>=Math.floor(s.height);for(;f.length;){let[,L]=f[0];if(L-c=u&&!y)f=[l.pop(),...f];else break}return[l,f]},[[],[...p]]),K((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([s,p])=>({prev:s.map(([c])=>c),next:p.map(([c])=>c)})),Q({prev:[],next:[]}),Be(2,1),m(([s,p])=>s.prev.length{let i=new g,a=i.pipe(Z(),ie(!0));if(i.subscribe(({prev:s,next:p})=>{for(let[c]of p)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[l]]of s.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",c===s.length-1)}),B("toc.follow")){let s=O(t.pipe(_e(1),m(()=>{})),t.pipe(_e(250),m(()=>"smooth")));i.pipe(b(({prev:p})=>p.length>0),He(o.pipe(ve(se))),re(s)).subscribe(([[{prev:p}],c])=>{let[l]=p[p.length-1];if(l.offsetHeight){let f=cr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=ce(f);f.scrollTo({top:u-d/2,behavior:c})}}})}return B("navigation.tracking")&&t.pipe(W(a),ee("offset"),_e(250),Ce(1),W(n.pipe(Ce(1))),ct({delay:250}),re(i)).subscribe(([,{prev:s}])=>{let p=ye(),c=s[s.length-1];if(c&&c.length){let[l]=c,{hash:f}=new URL(l.href);p.hash!==f&&(p.hash=f,history.replaceState({},"",`${p}`))}else p.hash="",history.replaceState({},"",`${p}`)}),bs(e,{viewport$:t,header$:r}).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))})}function vs(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:a}})=>a),Be(2,1),m(([a,s])=>a>s&&s>0),K()),i=r.pipe(m(({active:a})=>a));return z([i,n]).pipe(m(([a,s])=>!(a&&s)),K(),W(o.pipe(Ce(1))),ie(!0),ct({delay:250}),m(a=>({hidden:a})))}function Ei(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new g,a=i.pipe(Z(),ie(!0));return i.subscribe({next({hidden:s}){e.hidden=s,s?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(W(a),ee("height")).subscribe(({height:s})=>{e.style.top=`${s+16}px`}),h(e,"click").subscribe(s=>{s.preventDefault(),window.scrollTo({top:0})}),vs(e,{viewport$:t,main$:o,target$:n}).pipe(w(s=>i.next(s)),_(()=>i.complete()),m(s=>$({ref:e},s)))}function wi({document$:e,viewport$:t}){e.pipe(v(()=>P(".md-ellipsis")),ne(r=>tt(r).pipe(W(e.pipe(Ce(1))),b(o=>o),m(()=>r),Te(1))),b(r=>r.offsetWidth{let o=r.innerText,n=r.closest("a")||r;return n.title=o,B("content.tooltips")?mt(n,{viewport$:t}).pipe(W(e.pipe(Ce(1))),_(()=>n.removeAttribute("title"))):S})).subscribe(),B("content.tooltips")&&e.pipe(v(()=>P(".md-status")),ne(r=>mt(r,{viewport$:t}))).subscribe()}function Ti({document$:e,tablet$:t}){e.pipe(v(()=>P(".md-toggle--indeterminate")),w(r=>{r.indeterminate=!0,r.checked=!1}),ne(r=>h(r,"change").pipe(Dr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),re(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function gs(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Si({document$:e}){e.pipe(v(()=>P("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),b(gs),ne(t=>h(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Oi({viewport$:e,tablet$:t}){z([ze("search"),t]).pipe(m(([r,o])=>r&&!o),v(r=>I(r).pipe(Ge(r?400:100))),re(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function ys(){return location.protocol==="file:"?Tt(`${new URL("search/search_index.js",eo.base)}`).pipe(m(()=>__index),G(1)):je(new URL("search/search_index.json",eo.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var ot=Go(),Ut=sn(),Lt=ln(Ut),to=an(),Oe=gn(),hr=Pt("(min-width: 960px)"),Mi=Pt("(min-width: 1220px)"),_i=mn(),eo=xe(),Ai=document.forms.namedItem("search")?ys():Ye,ro=new g;Zn({alert$:ro});var oo=new g;B("navigation.instant")&&oi({location$:Ut,viewport$:Oe,progress$:oo}).subscribe(ot);var Li;((Li=eo.version)==null?void 0:Li.provider)==="mike"&&ci({document$:ot});O(Ut,Lt).pipe(Ge(125)).subscribe(()=>{Je("drawer",!1),Je("search",!1)});to.pipe(b(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=fe("link[rel=prev]");typeof t!="undefined"&<(t);break;case"n":case".":let r=fe("link[rel=next]");typeof r!="undefined"&<(r);break;case"Enter":let o=Ie();o instanceof HTMLLabelElement&&o.click()}});wi({viewport$:Oe,document$:ot});Ti({document$:ot,tablet$:hr});Si({document$:ot});Oi({viewport$:Oe,tablet$:hr});var rt=Kn(Se("header"),{viewport$:Oe}),Ft=ot.pipe(m(()=>Se("main")),v(e=>Gn(e,{viewport$:Oe,header$:rt})),G(1)),xs=O(...ae("consent").map(e=>En(e,{target$:Lt})),...ae("dialog").map(e=>qn(e,{alert$:ro})),...ae("palette").map(e=>Jn(e)),...ae("progress").map(e=>Xn(e,{progress$:oo})),...ae("search").map(e=>ui(e,{index$:Ai,keyboard$:to})),...ae("source").map(e=>gi(e))),Es=C(()=>O(...ae("announce").map(e=>xn(e)),...ae("content").map(e=>zn(e,{viewport$:Oe,target$:Lt,print$:_i})),...ae("content").map(e=>B("search.highlight")?di(e,{index$:Ai,location$:Ut}):S),...ae("header").map(e=>Yn(e,{viewport$:Oe,header$:rt,main$:Ft})),...ae("header-title").map(e=>Bn(e,{viewport$:Oe,header$:rt})),...ae("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Nr(Mi,()=>Zr(e,{viewport$:Oe,header$:rt,main$:Ft})):Nr(hr,()=>Zr(e,{viewport$:Oe,header$:rt,main$:Ft}))),...ae("tabs").map(e=>yi(e,{viewport$:Oe,header$:rt})),...ae("toc").map(e=>xi(e,{viewport$:Oe,header$:rt,main$:Ft,target$:Lt})),...ae("top").map(e=>Ei(e,{viewport$:Oe,header$:rt,main$:Ft,target$:Lt})))),Ci=ot.pipe(v(()=>Es),Re(xs),G(1));Ci.subscribe();window.document$=ot;window.location$=Ut;window.target$=Lt;window.keyboard$=to;window.viewport$=Oe;window.tablet$=hr;window.screen$=Mi;window.print$=_i;window.alert$=ro;window.progress$=oo;window.component$=Ci;})(); +//# sourceMappingURL=bundle.83f73b43.min.js.map + diff --git a/0.6/assets/javascripts/bundle.83f73b43.min.js.map b/0.6/assets/javascripts/bundle.83f73b43.min.js.map new file mode 100644 index 0000000..fe920b7 --- /dev/null +++ b/0.6/assets/javascripts/bundle.83f73b43.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/escape-html/index.js", "node_modules/clipboard/dist/clipboard.js", "src/templates/assets/javascripts/bundle.ts", "node_modules/tslib/tslib.es6.mjs", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/BehaviorSubject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/QueueAction.ts", "node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts", "node_modules/rxjs/src/internal/scheduler/queue.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/EmptyError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/debounce.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/throwIfEmpty.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/first.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/templates/assets/javascripts/browser/document/index.ts", "src/templates/assets/javascripts/browser/element/_/index.ts", "src/templates/assets/javascripts/browser/element/focus/index.ts", "src/templates/assets/javascripts/browser/element/hover/index.ts", "src/templates/assets/javascripts/utilities/h/index.ts", "src/templates/assets/javascripts/utilities/round/index.ts", "src/templates/assets/javascripts/browser/script/index.ts", "src/templates/assets/javascripts/browser/element/size/_/index.ts", "src/templates/assets/javascripts/browser/element/size/content/index.ts", "src/templates/assets/javascripts/browser/element/offset/_/index.ts", "src/templates/assets/javascripts/browser/element/offset/content/index.ts", "src/templates/assets/javascripts/browser/element/visibility/index.ts", "src/templates/assets/javascripts/browser/toggle/index.ts", "src/templates/assets/javascripts/browser/keyboard/index.ts", "src/templates/assets/javascripts/browser/location/_/index.ts", "src/templates/assets/javascripts/browser/location/hash/index.ts", "src/templates/assets/javascripts/browser/media/index.ts", "src/templates/assets/javascripts/browser/request/index.ts", "src/templates/assets/javascripts/browser/viewport/offset/index.ts", "src/templates/assets/javascripts/browser/viewport/size/index.ts", "src/templates/assets/javascripts/browser/viewport/_/index.ts", "src/templates/assets/javascripts/browser/viewport/at/index.ts", "src/templates/assets/javascripts/browser/worker/index.ts", "src/templates/assets/javascripts/_/index.ts", "src/templates/assets/javascripts/components/_/index.ts", "src/templates/assets/javascripts/components/announce/index.ts", "src/templates/assets/javascripts/components/consent/index.ts", "src/templates/assets/javascripts/templates/tooltip/index.tsx", "src/templates/assets/javascripts/templates/annotation/index.tsx", "src/templates/assets/javascripts/templates/clipboard/index.tsx", "src/templates/assets/javascripts/templates/search/index.tsx", "src/templates/assets/javascripts/templates/source/index.tsx", "src/templates/assets/javascripts/templates/tabbed/index.tsx", "src/templates/assets/javascripts/templates/table/index.tsx", "src/templates/assets/javascripts/templates/version/index.tsx", "src/templates/assets/javascripts/components/tooltip2/index.ts", "src/templates/assets/javascripts/components/content/annotation/_/index.ts", "src/templates/assets/javascripts/components/content/annotation/list/index.ts", "src/templates/assets/javascripts/components/content/annotation/block/index.ts", "src/templates/assets/javascripts/components/content/code/_/index.ts", "src/templates/assets/javascripts/components/content/details/index.ts", "src/templates/assets/javascripts/components/content/mermaid/index.css", "src/templates/assets/javascripts/components/content/mermaid/index.ts", "src/templates/assets/javascripts/components/content/table/index.ts", "src/templates/assets/javascripts/components/content/tabs/index.ts", "src/templates/assets/javascripts/components/content/_/index.ts", "src/templates/assets/javascripts/components/dialog/index.ts", "src/templates/assets/javascripts/components/tooltip/index.ts", "src/templates/assets/javascripts/components/header/_/index.ts", "src/templates/assets/javascripts/components/header/title/index.ts", "src/templates/assets/javascripts/components/main/index.ts", "src/templates/assets/javascripts/components/palette/index.ts", "src/templates/assets/javascripts/components/progress/index.ts", "src/templates/assets/javascripts/integrations/clipboard/index.ts", "src/templates/assets/javascripts/integrations/sitemap/index.ts", "src/templates/assets/javascripts/integrations/instant/index.ts", "src/templates/assets/javascripts/integrations/search/highlighter/index.ts", "src/templates/assets/javascripts/integrations/search/worker/message/index.ts", "src/templates/assets/javascripts/integrations/search/worker/_/index.ts", "src/templates/assets/javascripts/integrations/version/findurl/index.ts", "src/templates/assets/javascripts/integrations/version/index.ts", "src/templates/assets/javascripts/components/search/query/index.ts", "src/templates/assets/javascripts/components/search/result/index.ts", "src/templates/assets/javascripts/components/search/share/index.ts", "src/templates/assets/javascripts/components/search/suggest/index.ts", "src/templates/assets/javascripts/components/search/_/index.ts", "src/templates/assets/javascripts/components/search/highlight/index.ts", "src/templates/assets/javascripts/components/sidebar/index.ts", "src/templates/assets/javascripts/components/source/facts/github/index.ts", "src/templates/assets/javascripts/components/source/facts/gitlab/index.ts", "src/templates/assets/javascripts/components/source/facts/_/index.ts", "src/templates/assets/javascripts/components/source/_/index.ts", "src/templates/assets/javascripts/components/tabs/index.ts", "src/templates/assets/javascripts/components/toc/index.ts", "src/templates/assets/javascripts/components/top/index.ts", "src/templates/assets/javascripts/patches/ellipsis/index.ts", "src/templates/assets/javascripts/patches/indeterminate/index.ts", "src/templates/assets/javascripts/patches/scrollfix/index.ts", "src/templates/assets/javascripts/patches/scrolllock/index.ts", "src/templates/assets/javascripts/polyfills/index.ts"], + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*\n * Copyright (c) 2016-2024 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"focus-visible\"\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getActiveElement,\n getOptionalElement,\n requestJSON,\n setLocation,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchScript,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountProgress,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantNavigation,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchEllipsis,\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Functions - @todo refactor\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch search index\n *\n * @returns Search index observable\n */\nfunction fetchSearchIndex(): Observable {\n if (location.protocol === \"file:\") {\n return watchScript(\n `${new URL(\"search/search_index.js\", config.base)}`\n )\n .pipe(\n // @ts-ignore - @todo fix typings\n map(() => __index),\n shareReplay(1)\n )\n } else {\n return requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget(location$)\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? fetchSearchIndex()\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up progress indicator */\nconst progress$ = new Subject()\n\n/* Set up instant navigation, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantNavigation({ location$, viewport$, progress$ })\n .subscribe(document$)\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"link[rel=prev]\")\n if (typeof prev !== \"undefined\")\n setLocation(prev)\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"link[rel=next]\")\n if (typeof next !== \"undefined\")\n setLocation(next)\n break\n\n /* Expand navigation, see https://bit.ly/3ZjG5io */\n case \"Enter\":\n const active = getActiveElement()\n if (active instanceof HTMLLabelElement)\n active.click()\n }\n })\n\n/* Set up patches */\npatchEllipsis({ viewport$, document$ })\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Progress bar */\n ...getComponentElements(\"progress\")\n .map(el => mountProgress(el, { progress$ })),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, {\n viewport$, header$, main$, target$\n })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.progress$ = progress$ /* Progress indicator subject */\nwindow.component$ = component$ /* Component observable */\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification, subscriber: Subscriber) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification(value: T) {\n return createNotification('N', value, undefined) as NextNotification;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber | Observer; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber | Observer) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver implements Observer {\n constructor(private partialObserver: Partial>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber extends Subscriber {\n constructor(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification, subscriber: Subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction,\n ...fns: UnaryFunction[]\n): UnaryFunction;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift(operator?: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction,\n ...operations: OperatorFunction[]\n ): Observable;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver(value: any): value is Observer {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value: any): value is Subscriber {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate(\n init: (liftedSource: Observable, subscriber: Subscriber) => (() => void) | void\n): OperatorFunction {\n return (source: Observable) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber, liftedSource: Observable) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber extends Subscriber {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends Observable implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable: any = new Observable();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer,\n source?: Observable\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n\n getValue(): T {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n\n next(value: T): void {\n super.next((this._value = value));\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject extends Subject {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n", "import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction extends Action {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\nimport { TimerHandle } from './timerHandle';\n\nexport class QueueAction extends AsyncAction {\n constructor(protected scheduler: QueueScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return delay > 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay);\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n\n // Otherwise flush the scheduler starting with this action.\n scheduler.flush(this);\n\n // HACK: In the past, this was returning `void`. However, `void` isn't a valid\n // `TimerHandle`, and generally the return value here isn't really used. So the\n // compromise is to return `0` which is both \"falsy\" and a valid `TimerHandle`,\n // as opposed to refactoring every other instanceo of `requestAsyncId`.\n return 0;\n }\n}\n", "import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n", "import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\n\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated Renamed to {@link queueScheduler}. Will be removed in v8.\n */\nexport const queue = queueScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction extends AsyncAction {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested animation frame and set the scheduled flag to\n // undefined so the next AnimationFrameAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n animationFrameProvider.cancelAnimationFrame(id as number);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:

\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable(obj: any): obj is AsyncIterable {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator(readableStream: ReadableStreamLike): AsyncGenerator {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike(obj: any): obj is ReadableStreamLike {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an