Add capability to parse user sessions by browser session, tab session, and url/domain of app (#33)

* Utility function to parse a continuous log to set of logs representing
user sessions

* Add checking tab Id is missing from log

* WIP --

* Provide a configurable options to parse user sessions

* Address PR review, create Session and Sessions classes

* Add modified __init__.py file

* refactor(sessions): refactors the session and sessions classes to reconcile the mismatched initialization approach and methods

linting and formatting are also bundled into the commit

* style(lint): lints files after rebase

---------

Co-authored-by: Madeline Diep <MDiep@FCMD.local>
Co-authored-by: Evan Jones <evan.a.jones3@gmail.com>
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index b477a54..1066640 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -30,24 +30,24 @@
       - id: end-of-file-fixer
       - id: mixed-line-ending
     repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.4.0
+    rev: v4.5.0
   - repo: https://github.com/commitizen-tools/commitizen
-    rev: 3.8.0 # automatically updated by Commitizen
+    rev: v3.18.0 # automatically updated by Commitizen
     hooks:
       - id: commitizen
         stages: [commit-msg]
   - hooks:
       - id: flake8
     repo: https://github.com/pycqa/flake8
-    rev: 6.1.0
+    rev: 7.0.0
   - hooks:
       - id: black
     repo: https://github.com/psf/black
-    rev: 23.7.0
+    rev: 24.2.0
   - hooks:
       - args:
           - --profile
           - black
         id: isort
     repo: https://github.com/PyCQA/isort
-    rev: 5.12.0
+    rev: 5.13.2
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index 082fb71..da78629 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -14,7 +14,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
 # Read the Docs configuration file
 # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
 
@@ -41,7 +40,5 @@
 
 # Optionally set the version of Python and requirements required to build your docs
 python:
-   install:
-   - requirements: docs/requirements.txt
-
-
+  install:
+    - requirements: docs/requirements.txt
diff --git a/distill/__init__.py b/distill/__init__.py
index 2c08495..d2fa0c2 100644
--- a/distill/__init__.py
+++ b/distill/__init__.py
@@ -33,6 +33,8 @@
 )
 from distill.segmentation.segmentation_error import SegmentationError
 from distill.segmentation.segments import Segments
+from distill.sessions.session import Session
+from distill.sessions.sessions import Sessions
 from distill.utils.crud import epoch_to_datetime, getUUID
 
 __all__ = [
@@ -40,6 +42,8 @@
     "Segment_Type",
     "Segments",
     "SegmentationError",
+    "Sessions",
+    "Session",
     "graph",
     "createDiGraph",
     "sankey",
diff --git a/distill/sessions/__init__.py b/distill/sessions/__init__.py
new file mode 100644
index 0000000..60db7e8
--- /dev/null
+++ b/distill/sessions/__init__.py
@@ -0,0 +1,15 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
diff --git a/distill/sessions/session.py b/distill/sessions/session.py
new file mode 100644
index 0000000..5c752b5
--- /dev/null
+++ b/distill/sessions/session.py
@@ -0,0 +1,65 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import json
+
+
+class Session:
+    """
+    Distill's sessions package.
+
+    Allows the user to parse UserALE log data to user sessions.
+    """
+
+    def __init__(self, session={}):
+        """
+        Initializes a Session object.  This object contains\
+        metadata for the associated Session.
+
+        :param session: a set of key value pair representing a session
+        """
+
+        self.session = session
+        self.session_name = list(session.keys())[0]
+        self.num_logs = len(list(session.values())[0])
+        self.logs = list(session.values())[0]
+
+    def __str__(self):
+        return json.dumps(self.session)
+
+    def get_session_name(self):
+        """
+        Gets the name of a given session.
+
+        :return: The session name of the given session.
+        """
+        return self.session_name
+
+    def get_num_logs(self):
+        """
+        Gets the number of logs within a given session.
+
+        :return: The number of logs within the given session.
+        """
+        return self.num_logs
+
+    def get_logs(self):
+        """
+        Gets the logs within a given session.
+
+        :return: The logs within the given session.
+        """
+        return self.logs
diff --git a/distill/sessions/sessions.py b/distill/sessions/sessions.py
new file mode 100644
index 0000000..5e1ed29
--- /dev/null
+++ b/distill/sessions/sessions.py
@@ -0,0 +1,182 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from enum import Enum
+from typing import Dict, Optional
+
+from distill.sessions.session import Session
+from distill.sessions.utils import (
+    chunk_by_domain,
+    chunk_by_idle_time,
+    chunk_by_tabId,
+    flatten_dict,
+    group_by_user,
+)
+
+
+class Sessions_Type(Enum):
+    TAB = "tab"
+    DOMAIN = "domain"
+    DEFAULT = "default"
+
+
+class Sessions:
+    """
+    A collection of Session objects.
+    """
+
+    def __init__(self, logs: Optional[Dict] = None, sessions=[], **kwargs):
+        """
+        Sessions initialization function.
+
+        :param logs ({}): Optional, Userale logs in the form of dictionary, if provided,
+            the logs will be parsed into sessions on initialization
+        :param sessions ({}): A dictionary that describe the parsed logs to sessions
+        **kwargs, Additional arguments passed to the user session parsing function,
+            if logs are provided
+        """
+        self.sessions = sessions
+        self.sessions_type = Sessions_Type.DEFAULT
+
+        # Chunk on initialization
+        if logs:
+            self.create_from_logs(logs, **kwargs)
+
+    def __iter__(self):
+        """
+        Allows Sessions to be iterable.
+        """
+        return iter(self.sessions)
+
+    def __len__(self):
+        """
+        Allows Sessions to return the number of sessions it contains.
+        """
+        return len(self.sessions)
+
+    def __str__(self):
+        """
+        Creates a readable string for Sessions.
+        """
+        sessions_in_str = "{"
+        for session in self.sessions:
+            # Remove the bracket
+            sessions_in_str += str(session)[1:-1] + ","
+        sessions_in_str = sessions_in_str[:-1] + "}"
+        # Remove the last "," and add the closing bracket
+        return sessions_in_str
+
+    def get_sessions_type(self):
+        """
+        Gets the type of a groupings/parsing that were used to create the sessions.
+
+        :return: The sessions type.
+        """
+        return self.sessions_type
+
+    def get_session_list(self):
+        """
+        Returns a list of Session objects in Sessions.
+
+        :return: A list of session objects.
+        """
+        return self.sessions
+
+    def get_session_names(self):
+        """
+        Returns the names session names (key of the session dictionary).
+
+        :return: A list of session names
+        """
+        session_names = []
+        for session in self.sessions:
+            session_names.append(session.get_session_name())
+        return session_names
+
+    def create_from_logs(
+        self, logs, inactive_interval_s=60, group_by_type="None", url_re="."
+    ):
+        """
+        Separate a raw log to sets of user sessions.
+
+        A user session is defined by: unique session ID,
+        user ID, and separated by idle time that exceeds
+        the specified inactive_interval (in seconds).
+        By default, the interval is 60 seconds. This set
+        is further separated by the windows tab in which
+        the user activities occurred.
+
+        :param logs: Userale logs in the form of dictionary
+        :param inactive_interval_s: Threshold of inactivity (no logged activity)
+            in seconds
+        :param url_re: Regular expression to filter the log
+        :param group_by_type: either group by tab, URL, browser (None)
+        :return: A dictionary that represent sets of user sessions
+        """
+        data_by_users = {}
+        data_by_users = group_by_user(logs)
+
+        chunk_data_by_users_sessions = {}
+        for user in data_by_users:
+            user_session_sets = {}
+            # Sort the logs associated by each users so we can create sets accordingly
+            sorted_data = sorted(
+                data_by_users[user],
+                key=lambda item: item.get("clientTime", item.get("endTime")),
+            )
+            chunked_group = {}
+            # Separate by browser tab
+            if group_by_type == "tab":
+                chunked_group = chunk_by_tabId(sorted_data)
+                for g_id in chunked_group:
+                    # For each set, detect if there is an idle time between the logs
+                    # that exceed X seconds
+                    user_session_sets[g_id] = chunk_by_idle_time(
+                        chunked_group[g_id], inactive_interval_s
+                    )
+                chunk_data_by_users_sessions[user] = user_session_sets
+            # Separate by domain application
+            elif group_by_type == "domain":
+                # Do something
+                chunked_group = chunk_by_domain(sorted_data, url_re)
+                for g_id in chunked_group:
+                    # For each set, detect if there is an idle time between the logs
+                    # that exceed X seconds
+                    user_session_sets[g_id] = chunk_by_idle_time(
+                        chunked_group[g_id], inactive_interval_s
+                    )
+                chunk_data_by_users_sessions[user] = user_session_sets
+            else:
+                # For each set, detect if there is an idle time between the logs
+                # that exceed X seconds
+                chunk_data_by_users_sessions[user] = chunk_by_idle_time(
+                    sorted_data, inactive_interval_s
+                )
+
+        # Flatten the structure into a collection of sessions
+        flattened_results = flatten_dict(chunk_data_by_users_sessions)
+        parsed_sessions = []
+        for result in flattened_results:
+            parsed_sessions.append(Session({result: flattened_results[result]}))
+
+        # Update the sessions
+        self.sessions = parsed_sessions
+
+        # Set the sessions type
+        if group_by_type == "tab":
+            self.sessions_type = Sessions_Type.TAB
+        elif group_by_type == "domain":
+            self.sessions_type = Sessions_Type.DOMAIN
diff --git a/distill/sessions/utils.py b/distill/sessions/utils.py
new file mode 100644
index 0000000..d33a80e
--- /dev/null
+++ b/distill/sessions/utils.py
@@ -0,0 +1,176 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import re
+from urllib.parse import urlparse
+
+
+##############################
+# SUPPORTING FUNCTIONS FOR PARSING SESSION #
+###############################
+def group_by_user(log):
+    """
+    A helper function to create separate logs associated with unique users
+    where a unique user to is the browserSessionId
+    :param log: Userale log in the form of dictionary
+    :return: A dictionary that represent logs belonging to unique users
+    """
+    grouped_data = {}
+    for d in log:
+        # Create a combination of the two key values userId and sessionID
+        sessionId = d.get("browserSessionId", "")
+        combined_key = str(sessionId)
+        if combined_key not in grouped_data:
+            grouped_data[combined_key] = []
+        grouped_data[combined_key].append(d)
+    return grouped_data
+
+
+def chunk_by_idle_time(log, inactive_interval_s=60):
+    """
+    This function will divide/chunk sets which clientTime is
+    separated by idle time where idle time is defined as
+    period of inactivity that exceeds the specified
+    inactive_interval (in seconds). By default, the
+    interval is 60 seconds.
+
+    :param log: Userale log in the form of dictionary
+    :param inactive_interval_s: Threshold of inactivity (no logged activity) in seconds
+    :return: A dictionary that represent sets of logs separated by the idle time
+    """
+    separated_sets = {}
+    current_set = []
+    # Assume that clientTime is in the integer (unix time) which expressed
+    # in milliseconds
+    difference_in_ms = inactive_interval_s * 1000
+
+    # Initialize the current timestamp
+    if len(log) > 0:
+        if "clientTime" in log[0]:
+            previous_timestamp = log[0]["clientTime"]
+        else:
+            previous_timestamp = log[0]["endTime"]
+
+    for item in log:
+        if "clientTime" in item:
+            current_timestamp = item["clientTime"]
+        else:
+            current_timestamp = item["endTime"]
+        if current_timestamp - previous_timestamp > difference_in_ms:
+            # If the current set is not empty, add it to the list of sets
+            if current_set:
+                key = "time" + str(current_timestamp)
+                separated_sets[key] = current_set
+                current_set = []
+
+        # Add the current item to the current set and update the previous
+        # timestamp
+        current_set.append(item)
+        previous_timestamp = current_timestamp
+
+    # Add the last set if it's not empty
+    if current_set:
+        key = "time" + str(current_timestamp)
+        separated_sets[key] = current_set
+    return separated_sets
+
+
+def chunk_by_tabId(log):
+    """
+    Separate logs by their browserSessionId
+    :param log: Userale log in the form of dictionary
+    :return: A dictionary that represent sets separated by unique browserSessionId
+    """
+    grouped_data = {}
+    for key in log:
+        # Depending on the log types, tabID can be inside the details element
+        if "browserSessionId" in key:
+            tab_key = "tab" + str(key["httpSessionId"])
+        else:
+            tab_key = "unknown"
+        if tab_key not in grouped_data:
+            grouped_data[tab_key] = []
+        grouped_data[tab_key].append(key)
+    return grouped_data
+
+
+def match_url(url, pattern):
+    # Escape dots in the pattern since dot is a special character in regex
+    # and replace '*' with '.*' to match any characters sequence
+    regex_pattern = re.escape(pattern).replace("\\*", ".*")
+
+    # Add anchors to match the entire string
+    regex_pattern = "^" + regex_pattern + "$"
+
+    # Compile the regex pattern
+    compiled_pattern = re.compile(regex_pattern)
+
+    # Check if the URL matches the pattern
+    return bool(compiled_pattern.match(url))
+
+
+def flatten_dict(orig_dict, sep="_"):
+    """
+    Given a possibly nested dictionary containing logs, make a flat
+    dictionary where each key-value pair represent one user session
+    """
+    new_dict = {}
+    for first_key in orig_dict:
+        if isinstance(orig_dict[first_key], dict):
+            for second_key in orig_dict[first_key]:
+                if isinstance(orig_dict[first_key][second_key], dict):
+                    for time_key in orig_dict[first_key][second_key]:
+                        combined_key = first_key + sep + second_key + sep + time_key
+                        new_dict[combined_key] = orig_dict[first_key][second_key][
+                            time_key
+                        ]
+                else:
+                    combined_key = first_key + sep + second_key
+                    new_dict[combined_key] = orig_dict[first_key][second_key]
+        else:
+            new_dict[first_key] = orig_dict[first_key]
+
+    return new_dict
+
+
+def chunk_by_domain(log, re):
+    """
+    Separate logs by the site that users interact with
+    :param log: Userale log in the form of dictionary
+    :param log:
+    :return: A dictionary that represent sets separated by unique browserSessionId
+    """
+    grouped_data = {}
+    for key in log:
+        # Depending on the log types, tabID can be inside the details element
+        if "pageUrl" in key:
+            domain = "domain" + urlparse(key["pageUrl"]).netloc
+            # Filter with the "re" parameter
+            if re != ".":
+                if match_url(domain, re):
+                    domain_key = "domain" + re
+                else:
+                    # Does not match, so we are skipping it
+                    continue
+            else:
+                domain_key = domain
+        else:
+            domain_key = "unknown"
+
+        if domain_key not in grouped_data:
+            grouped_data[domain_key] = []
+        grouped_data[domain_key].append(key)
+    return grouped_data
diff --git a/poetry.lock b/poetry.lock
index 00150db..c33c377 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -23,65 +23,69 @@
 
 [[package]]
 name = "attrs"
-version = "23.1.0"
+version = "23.2.0"
 description = "Classes Without Boilerplate"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"},
-    {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"},
+    {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"},
+    {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"},
 ]
 
 [package.extras]
 cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
-dev = ["attrs[docs,tests]", "pre-commit"]
+dev = ["attrs[tests]", "pre-commit"]
 docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"]
 tests = ["attrs[tests-no-zope]", "zope-interface"]
-tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"]
+tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"]
 
 [[package]]
 name = "babel"
-version = "2.12.1"
+version = "2.14.0"
 description = "Internationalization utilities"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"},
-    {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"},
+    {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
+    {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
 ]
 
 [package.dependencies]
 pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""}
 
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+
 [[package]]
 name = "black"
-version = "23.7.0"
+version = "23.12.1"
 description = "The uncompromising code formatter."
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"},
-    {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"},
-    {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"},
-    {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"},
-    {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"},
-    {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"},
-    {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"},
-    {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"},
-    {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"},
-    {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"},
-    {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"},
-    {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"},
-    {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"},
-    {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"},
-    {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"},
-    {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"},
-    {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"},
-    {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"},
-    {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"},
-    {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"},
-    {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"},
-    {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"},
+    {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"},
+    {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"},
+    {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"},
+    {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"},
+    {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"},
+    {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"},
+    {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"},
+    {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"},
+    {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"},
+    {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"},
+    {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"},
+    {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"},
+    {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"},
+    {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"},
+    {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"},
+    {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"},
+    {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"},
+    {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"},
+    {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"},
+    {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"},
+    {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"},
+    {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"},
 ]
 
 [package.dependencies]
@@ -91,23 +95,23 @@
 pathspec = ">=0.9.0"
 platformdirs = ">=2"
 tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
-typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
+typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""}
 
 [package.extras]
 colorama = ["colorama (>=0.4.3)"]
-d = ["aiohttp (>=3.7.4)"]
+d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"]
 jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
 uvloop = ["uvloop (>=0.15.2)"]
 
 [[package]]
 name = "certifi"
-version = "2023.7.22"
+version = "2024.2.2"
 description = "Python package for providing Mozilla's CA Bundle."
 optional = false
 python-versions = ">=3.6"
 files = [
-    {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"},
-    {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"},
+    {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
+    {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
 ]
 
 [[package]]
@@ -123,86 +127,101 @@
 
 [[package]]
 name = "charset-normalizer"
-version = "3.2.0"
+version = "3.3.2"
 description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
 optional = false
 python-versions = ">=3.7.0"
 files = [
-    {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"},
-    {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"},
-    {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"},
-    {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"},
-    {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"},
-    {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"},
-    {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"},
+    {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+    {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+    {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+    {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+    {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+    {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+    {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+    {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
 ]
 
 [[package]]
@@ -221,17 +240,17 @@
 
 [[package]]
 name = "codespell"
-version = "2.2.5"
+version = "2.2.6"
 description = "Codespell"
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 files = [
-    {file = "codespell-2.2.5-py3-none-any.whl", hash = "sha256:efa037f54b73c84f7bd14ce8e853d5f822cdd6386ef0ff32e957a3919435b9ec"},
-    {file = "codespell-2.2.5.tar.gz", hash = "sha256:6d9faddf6eedb692bf80c9a94ec13ab4f5fb585aabae5f3750727148d7b5be56"},
+    {file = "codespell-2.2.6-py3-none-any.whl", hash = "sha256:9ee9a3e5df0990604013ac2a9f22fa8e57669c827124a2e961fe8a1da4cacc07"},
+    {file = "codespell-2.2.6.tar.gz", hash = "sha256:a8c65d8eb3faa03deabab6b3bbe798bea72e1799c7e9e955d57eca4096abcff9"},
 ]
 
 [package.extras]
-dev = ["Pygments", "build", "chardet", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli"]
+dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
 hard-encoding-detection = ["chardet"]
 toml = ["tomli"]
 types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
@@ -249,63 +268,63 @@
 
 [[package]]
 name = "coverage"
-version = "7.3.0"
+version = "7.4.3"
 description = "Code coverage measurement for Python"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "coverage-7.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5"},
-    {file = "coverage-7.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637"},
-    {file = "coverage-7.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af"},
-    {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1"},
-    {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12"},
-    {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689"},
-    {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977"},
-    {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51"},
-    {file = "coverage-7.3.0-cp310-cp310-win32.whl", hash = "sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527"},
-    {file = "coverage-7.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1"},
-    {file = "coverage-7.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f"},
-    {file = "coverage-7.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d"},
-    {file = "coverage-7.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd"},
-    {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7"},
-    {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a"},
-    {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74"},
-    {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214"},
-    {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f"},
-    {file = "coverage-7.3.0-cp311-cp311-win32.whl", hash = "sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482"},
-    {file = "coverage-7.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70"},
-    {file = "coverage-7.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b"},
-    {file = "coverage-7.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446"},
-    {file = "coverage-7.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071"},
-    {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe"},
-    {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a"},
-    {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873"},
-    {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2"},
-    {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b"},
-    {file = "coverage-7.3.0-cp312-cp312-win32.whl", hash = "sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321"},
-    {file = "coverage-7.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479"},
-    {file = "coverage-7.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1"},
-    {file = "coverage-7.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd"},
-    {file = "coverage-7.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e"},
-    {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54"},
-    {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254"},
-    {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0"},
-    {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84"},
-    {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985"},
-    {file = "coverage-7.3.0-cp38-cp38-win32.whl", hash = "sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9"},
-    {file = "coverage-7.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543"},
-    {file = "coverage-7.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba"},
-    {file = "coverage-7.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393"},
-    {file = "coverage-7.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28"},
-    {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95"},
-    {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a"},
-    {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34"},
-    {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e"},
-    {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54"},
-    {file = "coverage-7.3.0-cp39-cp39-win32.whl", hash = "sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3"},
-    {file = "coverage-7.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e"},
-    {file = "coverage-7.3.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0"},
-    {file = "coverage-7.3.0.tar.gz", hash = "sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865"},
+    {file = "coverage-7.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8580b827d4746d47294c0e0b92854c85a92c2227927433998f0d3320ae8a71b6"},
+    {file = "coverage-7.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718187eeb9849fc6cc23e0d9b092bc2348821c5e1a901c9f8975df0bc785bfd4"},
+    {file = "coverage-7.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:767b35c3a246bcb55b8044fd3a43b8cd553dd1f9f2c1eeb87a302b1f8daa0524"},
+    {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae7f19afe0cce50039e2c782bff379c7e347cba335429678450b8fe81c4ef96d"},
+    {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba3a8aaed13770e970b3df46980cb068d1c24af1a1968b7818b69af8c4347efb"},
+    {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee866acc0861caebb4f2ab79f0b94dbfbdbfadc19f82e6e9c93930f74e11d7a0"},
+    {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:506edb1dd49e13a2d4cac6a5173317b82a23c9d6e8df63efb4f0380de0fbccbc"},
+    {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd6545d97c98a192c5ac995d21c894b581f1fd14cf389be90724d21808b657e2"},
+    {file = "coverage-7.4.3-cp310-cp310-win32.whl", hash = "sha256:f6a09b360d67e589236a44f0c39218a8efba2593b6abdccc300a8862cffc2f94"},
+    {file = "coverage-7.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:18d90523ce7553dd0b7e23cbb28865db23cddfd683a38fb224115f7826de78d0"},
+    {file = "coverage-7.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbbe5e739d45a52f3200a771c6d2c7acf89eb2524890a4a3aa1a7fa0695d2a47"},
+    {file = "coverage-7.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:489763b2d037b164846ebac0cbd368b8a4ca56385c4090807ff9fad817de4113"},
+    {file = "coverage-7.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451f433ad901b3bb00184d83fd83d135fb682d780b38af7944c9faeecb1e0bfe"},
+    {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcc66e222cf4c719fe7722a403888b1f5e1682d1679bd780e2b26c18bb648cdc"},
+    {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ec74cfef2d985e145baae90d9b1b32f85e1741b04cd967aaf9cfa84c1334f3"},
+    {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:abbbd8093c5229c72d4c2926afaee0e6e3140de69d5dcd918b2921f2f0c8baba"},
+    {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:35eb581efdacf7b7422af677b92170da4ef34500467381e805944a3201df2079"},
+    {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8249b1c7334be8f8c3abcaaa996e1e4927b0e5a23b65f5bf6cfe3180d8ca7840"},
+    {file = "coverage-7.4.3-cp311-cp311-win32.whl", hash = "sha256:cf30900aa1ba595312ae41978b95e256e419d8a823af79ce670835409fc02ad3"},
+    {file = "coverage-7.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:18c7320695c949de11a351742ee001849912fd57e62a706d83dfc1581897fa2e"},
+    {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"},
+    {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"},
+    {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"},
+    {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"},
+    {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"},
+    {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"},
+    {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"},
+    {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"},
+    {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"},
+    {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"},
+    {file = "coverage-7.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28ca2098939eabab044ad68850aac8f8db6bf0b29bc7f2887d05889b17346454"},
+    {file = "coverage-7.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:280459f0a03cecbe8800786cdc23067a8fc64c0bd51dc614008d9c36e1659d7e"},
+    {file = "coverage-7.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0cdedd3500e0511eac1517bf560149764b7d8e65cb800d8bf1c63ebf39edd2"},
+    {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a9babb9466fe1da12417a4aed923e90124a534736de6201794a3aea9d98484e"},
+    {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dec9de46a33cf2dd87a5254af095a409ea3bf952d85ad339751e7de6d962cde6"},
+    {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:16bae383a9cc5abab9bb05c10a3e5a52e0a788325dc9ba8499e821885928968c"},
+    {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2c854ce44e1ee31bda4e318af1dbcfc929026d12c5ed030095ad98197eeeaed0"},
+    {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ce8c50520f57ec57aa21a63ea4f325c7b657386b3f02ccaedeccf9ebe27686e1"},
+    {file = "coverage-7.4.3-cp38-cp38-win32.whl", hash = "sha256:708a3369dcf055c00ddeeaa2b20f0dd1ce664eeabde6623e516c5228b753654f"},
+    {file = "coverage-7.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:1bf25fbca0c8d121a3e92a2a0555c7e5bc981aee5c3fdaf4bb7809f410f696b9"},
+    {file = "coverage-7.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b253094dbe1b431d3a4ac2f053b6d7ede2664ac559705a704f621742e034f1f"},
+    {file = "coverage-7.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77fbfc5720cceac9c200054b9fab50cb2a7d79660609200ab83f5db96162d20c"},
+    {file = "coverage-7.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6679060424faa9c11808598504c3ab472de4531c571ab2befa32f4971835788e"},
+    {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af154d617c875b52651dd8dd17a31270c495082f3d55f6128e7629658d63765"},
+    {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8640f1fde5e1b8e3439fe482cdc2b0bb6c329f4bb161927c28d2e8879c6029ee"},
+    {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:69b9f6f66c0af29642e73a520b6fed25ff9fd69a25975ebe6acb297234eda501"},
+    {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0842571634f39016a6c03e9d4aba502be652a6e4455fadb73cd3a3a49173e38f"},
+    {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a78ed23b08e8ab524551f52953a8a05d61c3a760781762aac49f8de6eede8c45"},
+    {file = "coverage-7.4.3-cp39-cp39-win32.whl", hash = "sha256:c0524de3ff096e15fcbfe8f056fdb4ea0bf497d584454f344d59fce069d3e6e9"},
+    {file = "coverage-7.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:0209a6369ccce576b43bb227dc8322d8ef9e323d089c6f3f26a597b09cb4d2aa"},
+    {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"},
+    {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"},
 ]
 
 [package.dependencies]
@@ -316,13 +335,13 @@
 
 [[package]]
 name = "distlib"
-version = "0.3.7"
+version = "0.3.8"
 description = "Distribution utilities"
 optional = false
 python-versions = "*"
 files = [
-    {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"},
-    {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"},
+    {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"},
+    {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"},
 ]
 
 [[package]]
@@ -338,28 +357,29 @@
 
 [[package]]
 name = "filelock"
-version = "3.12.2"
+version = "3.13.1"
 description = "A platform independent file lock."
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 files = [
-    {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"},
-    {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"},
+    {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
+    {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
 ]
 
 [package.extras]
-docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
-testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"]
+typing = ["typing-extensions (>=4.8)"]
 
 [[package]]
 name = "identify"
-version = "2.5.27"
+version = "2.5.35"
 description = "File identification library for Python"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "identify-2.5.27-py2.py3-none-any.whl", hash = "sha256:fdb527b2dfe24602809b2201e033c2a113d7bdf716db3ca8e3243f735dcecaba"},
-    {file = "identify-2.5.27.tar.gz", hash = "sha256:287b75b04a0e22d727bc9a41f0d4f3c1bcada97490fa6eabb5b28f0e9097e733"},
+    {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"},
+    {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"},
 ]
 
 [package.extras]
@@ -367,13 +387,13 @@
 
 [[package]]
 name = "idna"
-version = "3.4"
+version = "3.6"
 description = "Internationalized Domain Names in Applications (IDNA)"
 optional = false
 python-versions = ">=3.5"
 files = [
-    {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
-    {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
+    {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
+    {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
 ]
 
 [[package]]
@@ -389,22 +409,22 @@
 
 [[package]]
 name = "importlib-metadata"
-version = "6.8.0"
+version = "7.0.2"
 description = "Read metadata from Python packages"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"},
-    {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"},
+    {file = "importlib_metadata-7.0.2-py3-none-any.whl", hash = "sha256:f4bc4c0c070c490abf4ce96d715f68e95923320370efb66143df00199bb6c100"},
+    {file = "importlib_metadata-7.0.2.tar.gz", hash = "sha256:198f568f3230878cb1b44fbd7975f87906c22336dba2e4a7f05278c281fbd792"},
 ]
 
 [package.dependencies]
 zipp = ">=0.5"
 
 [package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
 perf = ["ipython"]
-testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
+testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"]
 
 [[package]]
 name = "iniconfig"
@@ -419,13 +439,13 @@
 
 [[package]]
 name = "jinja2"
-version = "3.1.2"
+version = "3.1.3"
 description = "A very fast and expressive template engine."
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
-    {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
+    {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
+    {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
 ]
 
 [package.dependencies]
@@ -436,71 +456,71 @@
 
 [[package]]
 name = "markupsafe"
-version = "2.1.3"
+version = "2.1.5"
 description = "Safely add untrusted strings to HTML/XML markup."
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"},
-    {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
-    {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"},
-    {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"},
-    {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"},
-    {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"},
-    {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+    {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+    {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+    {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+    {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+    {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+    {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+    {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
 ]
 
 [[package]]
@@ -689,47 +709,58 @@
 
 [[package]]
 name = "numpy"
-version = "1.25.2"
+version = "1.26.4"
 description = "Fundamental package for array computing in Python"
 optional = false
 python-versions = ">=3.9"
 files = [
-    {file = "numpy-1.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db3ccc4e37a6873045580d413fe79b68e47a681af8db2e046f1dacfa11f86eb3"},
-    {file = "numpy-1.25.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:90319e4f002795ccfc9050110bbbaa16c944b1c37c0baeea43c5fb881693ae1f"},
-    {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4a913e29b418d096e696ddd422d8a5d13ffba4ea91f9f60440a3b759b0187"},
-    {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f08f2e037bba04e707eebf4bc934f1972a315c883a9e0ebfa8a7756eabf9e357"},
-    {file = "numpy-1.25.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bec1e7213c7cb00d67093247f8c4db156fd03075f49876957dca4711306d39c9"},
-    {file = "numpy-1.25.2-cp310-cp310-win32.whl", hash = "sha256:7dc869c0c75988e1c693d0e2d5b26034644399dd929bc049db55395b1379e044"},
-    {file = "numpy-1.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:834b386f2b8210dca38c71a6e0f4fd6922f7d3fcff935dbe3a570945acb1b545"},
-    {file = "numpy-1.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5462d19336db4560041517dbb7759c21d181a67cb01b36ca109b2ae37d32418"},
-    {file = "numpy-1.25.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5652ea24d33585ea39eb6a6a15dac87a1206a692719ff45d53c5282e66d4a8f"},
-    {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d60fbae8e0019865fc4784745814cff1c421df5afee233db6d88ab4f14655a2"},
-    {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e7f0f7f6d0eee8364b9a6304c2845b9c491ac706048c7e8cf47b83123b8dbf"},
-    {file = "numpy-1.25.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bb33d5a1cf360304754913a350edda36d5b8c5331a8237268c48f91253c3a364"},
-    {file = "numpy-1.25.2-cp311-cp311-win32.whl", hash = "sha256:5883c06bb92f2e6c8181df7b39971a5fb436288db58b5a1c3967702d4278691d"},
-    {file = "numpy-1.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:5c97325a0ba6f9d041feb9390924614b60b99209a71a69c876f71052521d42a4"},
-    {file = "numpy-1.25.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b79e513d7aac42ae918db3ad1341a015488530d0bb2a6abcbdd10a3a829ccfd3"},
-    {file = "numpy-1.25.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb942bfb6f84df5ce05dbf4b46673ffed0d3da59f13635ea9b926af3deb76926"},
-    {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e0746410e73384e70d286f93abf2520035250aad8c5714240b0492a7302fdca"},
-    {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7806500e4f5bdd04095e849265e55de20d8cc4b661b038957354327f6d9b295"},
-    {file = "numpy-1.25.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8b77775f4b7df768967a7c8b3567e309f617dd5e99aeb886fa14dc1a0791141f"},
-    {file = "numpy-1.25.2-cp39-cp39-win32.whl", hash = "sha256:2792d23d62ec51e50ce4d4b7d73de8f67a2fd3ea710dcbc8563a51a03fb07b01"},
-    {file = "numpy-1.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:76b4115d42a7dfc5d485d358728cdd8719be33cc5ec6ec08632a5d6fca2ed380"},
-    {file = "numpy-1.25.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1a1329e26f46230bf77b02cc19e900db9b52f398d6722ca853349a782d4cff55"},
-    {file = "numpy-1.25.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3abc71e8b6edba80a01a52e66d83c5d14433cbcd26a40c329ec7ed09f37901"},
-    {file = "numpy-1.25.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b9735c27cea5d995496f46a8b1cd7b408b3f34b6d50459d9ac8fe3a20cc17bf"},
-    {file = "numpy-1.25.2.tar.gz", hash = "sha256:fd608e19c8d7c55021dffd43bfe5492fab8cc105cc8986f813f8c3c048b38760"},
+    {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"},
+    {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"},
+    {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"},
+    {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"},
+    {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"},
+    {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"},
+    {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"},
+    {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"},
+    {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"},
+    {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"},
+    {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"},
+    {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"},
+    {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"},
+    {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"},
+    {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"},
+    {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"},
+    {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"},
+    {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"},
+    {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"},
+    {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"},
+    {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"},
+    {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"},
+    {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"},
+    {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"},
+    {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"},
+    {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"},
+    {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"},
+    {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"},
+    {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"},
+    {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"},
+    {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"},
+    {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"},
+    {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"},
+    {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"},
+    {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"},
+    {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"},
 ]
 
 [[package]]
 name = "packaging"
-version = "23.1"
+version = "23.2"
 description = "Core utilities for Python packages"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"},
-    {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"},
+    {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+    {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
 ]
 
 [[package]]
@@ -800,39 +831,39 @@
 
 [[package]]
 name = "pathspec"
-version = "0.11.2"
+version = "0.12.1"
 description = "Utility library for gitignore style pattern matching of file paths."
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 files = [
-    {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"},
-    {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"},
+    {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
+    {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
 ]
 
 [[package]]
 name = "platformdirs"
-version = "3.10.0"
+version = "4.2.0"
 description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 files = [
-    {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"},
-    {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"},
+    {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
+    {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
 ]
 
 [package.extras]
-docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
+docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
 
 [[package]]
 name = "plotly"
-version = "5.16.1"
+version = "5.19.0"
 description = "An open-source, interactive data visualization library for Python"
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
 files = [
-    {file = "plotly-5.16.1-py2.py3-none-any.whl", hash = "sha256:19cc34f339acd4e624177806c14df22f388f23fb70658b03aad959a0e650a0dc"},
-    {file = "plotly-5.16.1.tar.gz", hash = "sha256:295ac25edeb18c893abb71dcadcea075b78fd6fdf07cee4217a4e1009667925b"},
+    {file = "plotly-5.19.0-py3-none-any.whl", hash = "sha256:906abcc5f15945765328c5d47edaa884bc99f5985fbc61e8cd4dc361f4ff8f5a"},
+    {file = "plotly-5.19.0.tar.gz", hash = "sha256:5ea91a56571292ade3e3bc9bf712eba0b95a1fb0a941375d978cc79432e055f4"},
 ]
 
 [package.dependencies]
@@ -841,13 +872,13 @@
 
 [[package]]
 name = "pluggy"
-version = "1.2.0"
+version = "1.4.0"
 description = "plugin and hook calling mechanisms for python"
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 files = [
-    {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"},
-    {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"},
+    {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
+    {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
 ]
 
 [package.extras]
@@ -856,13 +887,13 @@
 
 [[package]]
 name = "pre-commit"
-version = "3.3.3"
+version = "3.5.0"
 description = "A framework for managing and maintaining multi-language pre-commit hooks."
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "pre_commit-3.3.3-py2.py3-none-any.whl", hash = "sha256:10badb65d6a38caff29703362271d7dca483d01da88f9d7e05d0b97171c136cb"},
-    {file = "pre_commit-3.3.3.tar.gz", hash = "sha256:a2256f489cd913d575c145132ae196fe335da32d91a8294b7afe6622335dd023"},
+    {file = "pre_commit-3.5.0-py2.py3-none-any.whl", hash = "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660"},
+    {file = "pre_commit-3.5.0.tar.gz", hash = "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32"},
 ]
 
 [package.dependencies]
@@ -885,17 +916,18 @@
 
 [[package]]
 name = "pygments"
-version = "2.16.1"
+version = "2.17.2"
 description = "Pygments is a syntax highlighting package written in Python."
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"},
-    {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"},
+    {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
+    {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
 ]
 
 [package.extras]
 plugins = ["importlib-metadata"]
+windows-terminal = ["colorama (>=0.4.6)"]
 
 [[package]]
 name = "pytest"
@@ -956,13 +988,13 @@
 
 [[package]]
 name = "pytest-mock"
-version = "3.11.1"
+version = "3.12.0"
 description = "Thin-wrapper around the mock package for easier use with pytest"
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 files = [
-    {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"},
-    {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"},
+    {file = "pytest-mock-3.12.0.tar.gz", hash = "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9"},
+    {file = "pytest_mock-3.12.0-py3-none-any.whl", hash = "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f"},
 ]
 
 [package.dependencies]
@@ -973,13 +1005,13 @@
 
 [[package]]
 name = "python-dateutil"
-version = "2.8.2"
+version = "2.9.0.post0"
 description = "Extensions to the standard Python datetime module"
 optional = false
 python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
 files = [
-    {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
-    {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+    {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
+    {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
 ]
 
 [package.dependencies]
@@ -987,13 +1019,13 @@
 
 [[package]]
 name = "python-dotenv"
-version = "1.0.0"
+version = "1.0.1"
 description = "Read key-value pairs from a .env file and set them as environment variables"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"},
-    {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"},
+    {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"},
+    {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"},
 ]
 
 [package.extras]
@@ -1001,13 +1033,13 @@
 
 [[package]]
 name = "pytz"
-version = "2023.3"
+version = "2024.1"
 description = "World timezone definitions, modern and historical"
 optional = false
 python-versions = "*"
 files = [
-    {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"},
-    {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"},
+    {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
+    {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
 ]
 
 [[package]]
@@ -1334,24 +1366,24 @@
 
 [[package]]
 name = "types-pytz"
-version = "2023.3.0.1"
+version = "2024.1.0.20240203"
 description = "Typing stubs for pytz"
 optional = false
-python-versions = "*"
+python-versions = ">=3.8"
 files = [
-    {file = "types-pytz-2023.3.0.1.tar.gz", hash = "sha256:1a7b8d4aac70981cfa24478a41eadfcd96a087c986d6f150d77e3ceb3c2bdfab"},
-    {file = "types_pytz-2023.3.0.1-py3-none-any.whl", hash = "sha256:65152e872137926bb67a8fe6cc9cfd794365df86650c5d5fdc7b167b0f38892e"},
+    {file = "types-pytz-2024.1.0.20240203.tar.gz", hash = "sha256:c93751ee20dfc6e054a0148f8f5227b9a00b79c90a4d3c9f464711a73179c89e"},
+    {file = "types_pytz-2024.1.0.20240203-py3-none-any.whl", hash = "sha256:9679eef0365db3af91ef7722c199dbb75ee5c1b67e3c4dd7bfbeb1b8a71c21a3"},
 ]
 
 [[package]]
 name = "types-pyyaml"
-version = "6.0.12.11"
+version = "6.0.12.12"
 description = "Typing stubs for PyYAML"
 optional = false
 python-versions = "*"
 files = [
-    {file = "types-PyYAML-6.0.12.11.tar.gz", hash = "sha256:7d340b19ca28cddfdba438ee638cd4084bde213e501a3978738543e27094775b"},
-    {file = "types_PyYAML-6.0.12.11-py3-none-any.whl", hash = "sha256:a461508f3096d1d5810ec5ab95d7eeecb651f3a15b71959999988942063bf01d"},
+    {file = "types-PyYAML-6.0.12.12.tar.gz", hash = "sha256:334373d392fde0fdf95af5c3f1661885fa10c52167b14593eb856289e1855062"},
+    {file = "types_PyYAML-6.0.12.12-py3-none-any.whl", hash = "sha256:c05bc6c158facb0676674b7f11fe3960db4f389718e19e62bd2b84d6205cfd24"},
 ]
 
 [[package]]
@@ -1367,65 +1399,65 @@
 
 [[package]]
 name = "typing-extensions"
-version = "4.7.1"
-description = "Backported and Experimental Type Hints for Python 3.7+"
+version = "4.10.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 files = [
-    {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"},
-    {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"},
+    {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"},
+    {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"},
 ]
 
 [[package]]
 name = "urllib3"
-version = "2.0.7"
+version = "2.2.1"
 description = "HTTP library with thread-safe connection pooling, file post, and more."
 optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
 files = [
-    {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"},
-    {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"},
+    {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
+    {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
 ]
 
 [package.extras]
 brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
-secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
+h2 = ["h2 (>=4,<5)"]
 socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
 zstd = ["zstandard (>=0.18.0)"]
 
 [[package]]
 name = "virtualenv"
-version = "20.24.3"
+version = "20.25.1"
 description = "Virtual Python Environment builder"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "virtualenv-20.24.3-py3-none-any.whl", hash = "sha256:95a6e9398b4967fbcb5fef2acec5efaf9aa4972049d9ae41f95e0972a683fd02"},
-    {file = "virtualenv-20.24.3.tar.gz", hash = "sha256:e5c3b4ce817b0b328af041506a2a299418c98747c4b1e68cb7527e74ced23efc"},
+    {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"},
+    {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"},
 ]
 
 [package.dependencies]
 distlib = ">=0.3.7,<1"
 filelock = ">=3.12.2,<4"
-platformdirs = ">=3.9.1,<4"
+platformdirs = ">=3.9.1,<5"
 
 [package.extras]
-docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
 test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
 
 [[package]]
 name = "zipp"
-version = "3.16.2"
+version = "3.17.0"
 description = "Backport of pathlib-compatible object wrapper for zip files"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"},
-    {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"},
+    {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"},
+    {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"},
 ]
 
 [package.extras]
-docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"]
 testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"]
 
 [metadata]
diff --git a/tests/__init__.py b/tests/__init__.py
index 3f479e9..1fd9e00 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -13,4 +13,4 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-#
\ No newline at end of file
+#
diff --git a/tests/data/sample_data_multiusers.json b/tests/data/sample_data_multiusers.json
new file mode 100644
index 0000000..b269c88
--- /dev/null
+++ b/tests/data/sample_data_multiusers.json
@@ -0,0 +1,5216 @@
+[
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446912781,
+		"microTime": 0,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446912781,
+		"microTime": 0,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3237,
+		"startTime": 1708446909544,
+		"endTime": 1708446912781,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446912900,
+		"microTime": 0.2,
+		"location": {
+			"x": 153,
+			"y": 72
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseup",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"clicks": 1,
+			"ctrl": false,
+			"alt": false,
+			"shift": false,
+			"meta": false
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446912900,
+		"microTime": 0.2,
+		"location": {
+			"x": 153,
+			"y": 72
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "click",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"clicks": 1,
+			"ctrl": false,
+			"alt": false,
+			"shift": false,
+			"meta": false
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3356,
+		"startTime": 1708446909544,
+		"endTime": 1708446912900,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "form",
+		"path": [
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446913049,
+		"microTime": 0.1,
+		"location": {
+			"x": 216,
+			"y": 99
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3505,
+		"startTime": 1708446909544,
+		"endTime": 1708446913049,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446913766,
+		"microTime": 0.9,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "keydown",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446914182,
+		"microTime": 0,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "keydown",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446914184,
+		"microTime": 0.8,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "input",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 4640,
+		"startTime": 1708446909544,
+		"endTime": 1708446914184,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "div",
+		"path": [
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446916111,
+		"microTime": 0.7,
+		"location": {
+			"x": 332,
+			"y": 206
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 6567,
+		"startTime": 1708446909544,
+		"endTime": 1708446916111,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "html",
+		"path": [
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446916140,
+		"microTime": 0.8,
+		"location": {
+			"x": 341,
+			"y": 213
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 6596,
+		"startTime": 1708446909544,
+		"endTime": 1708446916140,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708446916368,
+		"microTime": 0.3,
+		"location": {
+			"x": 349,
+			"y": 209
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446898329",
+		"httpSessionId": "3bd09cce555e2e0face7e362e87538f8",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447006174,
+		"microTime": 0.3,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "keydown",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447006177,
+		"microTime": 0.1,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "input",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 2698,
+		"startTime": 1708447003479,
+		"endTime": 1708447006177,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "form",
+		"path": [
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447006954,
+		"microTime": 0.1,
+		"location": {
+			"x": 382,
+			"y": 143
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3475,
+		"startTime": 1708447003479,
+		"endTime": 1708447006954,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007203,
+		"microTime": 0.5,
+		"location": {
+			"x": 366,
+			"y": 189
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3724,
+		"startTime": 1708447003479,
+		"endTime": 1708447007203,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007323,
+		"microTime": 0.3,
+		"location": {
+			"x": 368,
+			"y": 201
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mousedown",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"clicks": 1,
+			"ctrl": false,
+			"alt": false,
+			"shift": false,
+			"meta": false
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007325,
+		"microTime": 0.7,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "change",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3846,
+		"startTime": 1708447003479,
+		"endTime": 1708447007325,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007326,
+		"microTime": 0.9,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "input#url",
+		"path": [
+			"input#url",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007326,
+		"microTime": 0.9,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3847,
+		"startTime": 1708447003479,
+		"endTime": 1708447007326,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007327,
+		"microTime": 0.4,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007327,
+		"microTime": 0.4,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3848,
+		"startTime": 1708447003479,
+		"endTime": 1708447007327,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007455,
+		"microTime": 0.2,
+		"location": {
+			"x": 369,
+			"y": 201
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseup",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"clicks": 1,
+			"ctrl": false,
+			"alt": false,
+			"shift": false,
+			"meta": false
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "button",
+		"path": [
+			"button",
+			"div",
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007455,
+		"microTime": 0.2,
+		"location": {
+			"x": 369,
+			"y": 201
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "click",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"clicks": 1,
+			"ctrl": false,
+			"alt": false,
+			"shift": false,
+			"meta": false
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3976,
+		"startTime": 1708447003479,
+		"endTime": 1708447007455,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 3979,
+		"startTime": 1708447003479,
+		"endTime": 1708447007458,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "form",
+		"path": [
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007458,
+		"microTime": 0,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "submit",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447007586,
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"logType": "custom",
+		"userAction": false,
+		"details": {
+			"pageLoadTime": 2
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"type": "load"
+	},
+	{
+		"target": "form",
+		"path": [
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447009532,
+		"microTime": 0.5,
+		"location": {
+			"x": 379,
+			"y": 144
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "body",
+		"path": [
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447009591,
+		"microTime": 0.3,
+		"location": {
+			"x": 385,
+			"y": 51
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "form",
+		"path": [
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 59,
+		"startTime": 1708447009532,
+		"endTime": 1708447009591,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1",
+		"path": [
+			"h1",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447009611,
+		"microTime": 0.2,
+		"location": {
+			"x": 383,
+			"y": 45
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "form",
+		"path": [
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 79,
+		"startTime": 1708447009532,
+		"endTime": 1708447009611,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "html",
+		"path": [
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447009806,
+		"microTime": 0.7,
+		"location": {
+			"x": 371,
+			"y": 2
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "form",
+		"path": [
+			"form",
+			"body",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 274,
+		"startTime": 1708447009532,
+		"endTime": 1708447009806,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/optionsPage.html?",
+		"pageTitle": "User ALE Web Extension - Options",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447010094,
+		"microTime": 0,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 400,
+			"height": 219
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446999738",
+		"httpSessionId": "55032f909df7a309a51f750d3da5a379",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447010221,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195017,
+			"incognito": false,
+			"index": 0,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "Extensions - User ALE Extension",
+			"url": "chrome://extensions/?id=glifkfgngpmliakinpibmjodbclonhjd",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "loading",
+		"url": "chrome://extensions/?id=glifkfgngpmliakinpibmjodbclonhjd",
+		"type": "tabs.onUpdated",
+		"httpSession": null
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447010225,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195017,
+			"incognito": false,
+			"index": 0,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "Extensions - User ALE Extension",
+			"url": "chrome://extensions/?id=glifkfgngpmliakinpibmjodbclonhjd",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "complete",
+		"type": "tabs.onUpdated",
+		"httpSession": null
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447010226,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195017,
+			"incognito": false,
+			"index": 0,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "Extensions - User ALE Extension",
+			"url": "chrome://extensions/?id=glifkfgngpmliakinpibmjodbclonhjd",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"newZoomFactor": 1,
+		"oldZoomFactor": 1,
+		"tabId": 602195017,
+		"zoomSettings": {
+			"mode": "automatic",
+			"scope": "per-origin"
+		},
+		"type": "tabs.onZoomChange",
+		"httpSession": null
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447011852,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://github.githubassets.com/favicons/favicon.svg",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": true,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "Verify two-factor authentication",
+			"url": "https://github.com/apache/flagon-distill/issues",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"tabId": 602195154,
+		"windowId": 602194905,
+		"type": "tabs.onActivated",
+		"httpSession": "a431dffa47502b473a915619dc6747ab"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447011854,
+		"microTime": 0.8,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447011844,
+		"microTime": 0.1,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "resize",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"width": 1280,
+			"height": 680
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447013236,
+		"microTime": 0.2,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447013269,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://beam.apache.org/images/favicon.ico",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195158,
+			"incognito": false,
+			"index": 3,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "Case Studies",
+			"url": "https://beam.apache.org/case-studies/",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"tabId": 602195158,
+		"windowId": 602194905,
+		"type": "tabs.onActivated",
+		"httpSession": "72798a8ad776417183b1aa14e03c3132"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447013278,
+		"microTime": 0.4,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447013260,
+		"microTime": 0.2,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "resize",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"width": 1280,
+			"height": 680
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447014463,
+		"microTime": 0.2,
+		"location": {
+			"x": 678,
+			"y": 7
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447014502,
+		"microTime": 0.1,
+		"location": {
+			"x": 595,
+			"y": 43
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 39,
+		"startTime": 1708447014463,
+		"endTime": 1708447014502,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447014592,
+		"microTime": 0.4,
+		"location": {
+			"x": 496,
+			"y": 54
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 129,
+		"startTime": 1708447014463,
+		"endTime": 1708447014592,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "div.navbar-links",
+		"path": [
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447014641,
+		"microTime": 0.7,
+		"location": {
+			"x": 459,
+			"y": 60
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 178,
+		"startTime": 1708447014463,
+		"endTime": 1708447014641,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447014946,
+		"microTime": 0.2,
+		"location": {
+			"x": 452,
+			"y": 65
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "img.banner-img-desktop",
+		"path": [
+			"img.banner-img-desktop",
+			"a",
+			"div.swiper-slide swiper-slide-active",
+			"div#swiper-wrapper-0b96163d25f2977f.swiper-wrapper",
+			"div.top-banners swiper swiper-initialized swiper-horizontal swiper-pointer-events swiper-backface-hidden",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015034,
+		"microTime": 0.5,
+		"location": {
+			"x": 410,
+			"y": 97
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 2,
+		"duration": 571,
+		"startTime": 1708447014463,
+		"endTime": 1708447015034,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015123,
+		"microTime": 0.3,
+		"location": {
+			"x": 281,
+			"y": 93
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "div.navbar-links",
+		"path": [
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015378,
+		"microTime": 0.6,
+		"location": {
+			"x": 210,
+			"y": 61
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 3,
+		"duration": 915,
+		"startTime": 1708447014463,
+		"endTime": 1708447015378,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015437,
+		"microTime": 0.4,
+		"location": {
+			"x": 200,
+			"y": 54
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 3,
+		"duration": 974,
+		"startTime": 1708447014463,
+		"endTime": 1708447015437,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015615,
+		"microTime": 0.3,
+		"location": {
+			"x": 195,
+			"y": 50
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mousedown",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"clicks": 1,
+			"ctrl": false,
+			"alt": false,
+			"shift": false,
+			"meta": false
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015621,
+		"microTime": 0.3,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015621,
+		"microTime": 0.3,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 3,
+		"duration": 1158,
+		"startTime": 1708447014463,
+		"endTime": 1708447015621,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015752,
+		"microTime": 0.8,
+		"location": {
+			"x": 195,
+			"y": 50
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseup",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"clicks": 1,
+			"ctrl": false,
+			"alt": false,
+			"shift": false,
+			"meta": false
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447015752,
+		"microTime": 0.8,
+		"location": {
+			"x": 195,
+			"y": 50
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "click",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"clicks": 1,
+			"ctrl": false,
+			"alt": false,
+			"shift": false,
+			"meta": false
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 3,
+		"duration": 1289,
+		"startTime": 1708447014463,
+		"endTime": 1708447015752,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016146,
+		"microTime": 0.2,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "a.navbar-link",
+		"path": [
+			"a.navbar-link",
+			"div.navbar-links",
+			"div.navbar-bar-left",
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016146,
+		"microTime": 0.2,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 3,
+		"duration": 1683,
+		"startTime": 1708447014463,
+		"endTime": 1708447016146,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": true,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/case-studies/",
+		"pageTitle": "Case Studies",
+		"pageReferrer": "https://beam.apache.org/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016148,
+		"microTime": 0.4,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016161,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195158,
+			"incognito": false,
+			"index": 3,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "beam.apache.org/about/",
+			"url": "https://beam.apache.org/about/",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "loading",
+		"url": "https://beam.apache.org/about/",
+		"type": "tabs.onUpdated",
+		"httpSession": "72798a8ad776417183b1aa14e03c3132"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016165,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195158,
+			"incognito": false,
+			"index": 3,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "beam.apache.org/about/",
+			"url": "https://beam.apache.org/about/",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"newZoomFactor": 1,
+		"oldZoomFactor": 1,
+		"tabId": 602195158,
+		"zoomSettings": {
+			"mode": "automatic",
+			"scope": "per-origin"
+		},
+		"type": "tabs.onZoomChange",
+		"httpSession": "72798a8ad776417183b1aa14e03c3132"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016168,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195158,
+			"incognito": false,
+			"index": 3,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "About",
+			"url": "https://beam.apache.org/about/",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"title": "About",
+		"type": "tabs.onUpdated",
+		"httpSession": "72798a8ad776417183b1aa14e03c3132"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016459,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195158,
+			"incognito": false,
+			"index": 3,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "About",
+			"url": "https://beam.apache.org/about/",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "complete",
+		"type": "tabs.onUpdated",
+		"httpSession": "72798a8ad776417183b1aa14e03c3132"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016459,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://beam.apache.org/images/favicon.ico",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195158,
+			"incognito": false,
+			"index": 3,
+			"mutedInfo": {
+				"muted": false
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "About",
+			"url": "https://beam.apache.org/about/",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"favIconUrl": "https://beam.apache.org/images/favicon.ico",
+		"type": "tabs.onUpdated",
+		"httpSession": "72798a8ad776417183b1aa14e03c3132"
+	},
+	{
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016556,
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"logType": "custom",
+		"userAction": false,
+		"details": {
+			"pageLoadTime": 15
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"type": "load"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447016995,
+		"microTime": 0.4,
+		"location": {
+			"x": 192,
+			"y": 65
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "img.banner-img-desktop",
+		"path": [
+			"img.banner-img-desktop",
+			"a",
+			"div.swiper-slide swiper-slide-active",
+			"div#swiper-wrapper-26c4b215eb4fdb09.swiper-wrapper",
+			"div.top-banners swiper swiper-initialized swiper-horizontal swiper-pointer-events swiper-backface-hidden",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447017014,
+		"microTime": 0.9,
+		"location": {
+			"x": 178,
+			"y": 142
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 19,
+		"startTime": 1708447016995,
+		"endTime": 1708447017014,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "div.clearfix container-main-content center",
+		"path": [
+			"div.clearfix container-main-content center",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447017034,
+		"microTime": 0.6,
+		"location": {
+			"x": 173,
+			"y": 195
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 39,
+		"startTime": 1708447016995,
+		"endTime": 1708447017034,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "img.about-graph-img-desktop",
+		"path": [
+			"img.about-graph-img-desktop",
+			"div.about-graph-container",
+			"div.body__contained body__section-nav",
+			"div.clearfix container-main-content center",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447019500,
+		"microTime": 0.9,
+		"location": {
+			"x": 474,
+			"y": 507
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 2505,
+		"startTime": 1708447016995,
+		"endTime": 1708447019500,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "p",
+		"path": [
+			"p",
+			"div.body__contained body__section-nav",
+			"div.clearfix container-main-content center",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447019506,
+		"microTime": 0.3,
+		"location": {
+			"x": 544,
+			"y": 406
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 2511,
+		"startTime": 1708447016995,
+		"endTime": 1708447019506,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h2#why-apache-beam",
+		"path": [
+			"h2#why-apache-beam",
+			"div.body__contained body__section-nav",
+			"div.clearfix container-main-content center",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447019537,
+		"microTime": 0.5,
+		"location": {
+			"x": 620,
+			"y": 308
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 2542,
+		"startTime": 1708447016995,
+		"endTime": 1708447019537,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "h1#about",
+		"path": [
+			"h1#about",
+			"div.body__contained body__section-nav",
+			"div.clearfix container-main-content center",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447019811,
+		"microTime": 0.9,
+		"location": {
+			"x": 600,
+			"y": 175
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 1,
+		"duration": 2816,
+		"startTime": 1708447016995,
+		"endTime": 1708447019811,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "nav.navigation-bar-desktop",
+		"path": [
+			"nav.navigation-bar-desktop",
+			"body.body",
+			"html.no-js",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447019831,
+		"microTime": 0,
+		"location": {
+			"x": 589,
+			"y": 93
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://beam.apache.org/about/",
+		"pageTitle": "About",
+		"pageReferrer": "https://beam.apache.org/case-studies/",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447020315,
+		"microTime": 0,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446947239",
+		"httpSessionId": "72798a8ad776417183b1aa14e03c3132",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447020329,
+		"microTime": 0.4,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447020335,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://github.githubassets.com/favicons/favicon.svg",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": true,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "Verify two-factor authentication",
+			"url": "https://github.com/apache/flagon-distill/issues",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"tabId": 602195154,
+		"windowId": 602194905,
+		"type": "tabs.onActivated",
+		"httpSession": "a431dffa47502b473a915619dc6747ab"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447022427,
+		"microTime": 0.8,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447026223,
+		"microTime": 0.9,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447026337,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": true,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+			"url": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "loading",
+		"url": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+		"type": "tabs.onUpdated",
+		"httpSession": "a431dffa47502b473a915619dc6747ab"
+	},
+	{
+		"target": "div.container clearfix width-full text-center",
+		"path": [
+			"div.container clearfix width-full text-center",
+			"div.header header-logged-out width-full pt-5 pb-4",
+			"div.position-relative js-header-wrapper ",
+			"div.logged-in env-production page-responsive session-authentication",
+			"body.logged-in env-production page-responsive session-authentication",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447026318,
+		"microTime": 0.2,
+		"location": {
+			"x": 528,
+			"y": 52
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "div.header header-logged-out width-full pt-5 pb-4",
+		"path": [
+			"div.header header-logged-out width-full pt-5 pb-4",
+			"div.position-relative js-header-wrapper ",
+			"div.logged-in env-production page-responsive session-authentication",
+			"body.logged-in env-production page-responsive session-authentication",
+			"html",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"count": 2,
+		"duration": 49375,
+		"startTime": 1708446976943,
+		"endTime": 1708447026318,
+		"type": "mouseover",
+		"logType": "interval",
+		"targetChange": true,
+		"typeChange": false,
+		"userAction": false,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://github.com/apache/flagon-distill/issues",
+		"pageTitle": "Verify two-factor authentication",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447026329,
+		"microTime": 0.2,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446976421",
+		"httpSessionId": "a431dffa47502b473a915619dc6747ab",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447026341,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "dis - Google Search",
+			"url": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"mutedInfo": {
+			"muted": false,
+			"reason": "user"
+		},
+		"title": "dis - Google Search",
+		"type": "tabs.onUpdated",
+		"httpSession": "a431dffa47502b473a915619dc6747ab"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447026341,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "dis - Google Search",
+			"url": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"newZoomFactor": 0.8,
+		"oldZoomFactor": 0.8,
+		"tabId": 602195154,
+		"zoomSettings": {
+			"mode": "automatic",
+			"scope": "per-origin"
+		},
+		"type": "tabs.onZoomChange",
+		"httpSession": "a431dffa47502b473a915619dc6747ab"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447026904,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "dis - Google Search",
+			"url": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "loading",
+		"type": "tabs.onUpdated",
+		"httpSession": "a431dffa47502b473a915619dc6747ab"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447026905,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "dis - Google Search",
+			"url": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"newZoomFactor": 0.8,
+		"oldZoomFactor": 0.8,
+		"tabId": 602195154,
+		"zoomSettings": {
+			"mode": "automatic",
+			"scope": "per-origin"
+		},
+		"type": "tabs.onZoomChange",
+		"httpSession": "a431dffa47502b473a915619dc6747ab"
+	},
+	{
+		"pageUrl": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+		"pageTitle": "dis - Google Search",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447027240,
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"logType": "custom",
+		"userAction": false,
+		"details": {
+			"pageLoadTime": null
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708447027077",
+		"httpSessionId": "c17566612e806fca47588ce701deec40",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"type": "load"
+	},
+	{
+		"target": "#document",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+		"pageTitle": "dis - Google Search",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447027435,
+		"microTime": 0,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "load",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708447027077",
+		"httpSessionId": "c17566612e806fca47588ce701deec40",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447027442,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "dis - Google Search",
+			"url": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "complete",
+		"type": "tabs.onUpdated",
+		"httpSession": "c17566612e806fca47588ce701deec40"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447027444,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://www.google.com/favicon.ico",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "dis - Google Search",
+			"url": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"favIconUrl": "https://www.google.com/favicon.ico",
+		"type": "tabs.onUpdated",
+		"httpSession": "c17566612e806fca47588ce701deec40"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+		"pageTitle": "dis - Google Search",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032143,
+		"microTime": 0.1,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "focus",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708447027077",
+		"httpSessionId": "c17566612e806fca47588ce701deec40",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032169,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+			"url": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "loading",
+		"url": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+		"type": "tabs.onUpdated",
+		"httpSession": "c17566612e806fca47588ce701deec40"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032173,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://incubator-flagon-distill.readthedocs.io/favicon.ico",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+			"url": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"favIconUrl": "https://incubator-flagon-distill.readthedocs.io/favicon.ico",
+		"type": "tabs.onUpdated",
+		"httpSession": "c17566612e806fca47588ce701deec40"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032173,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://incubator-flagon-distill.readthedocs.io/favicon.ico",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+			"url": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"newZoomFactor": 1,
+		"oldZoomFactor": 1,
+		"tabId": 602195154,
+		"zoomSettings": {
+			"mode": "automatic",
+			"scope": "per-origin"
+		},
+		"type": "tabs.onZoomChange",
+		"httpSession": "c17566612e806fca47588ce701deec40"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032178,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://incubator-flagon-distill.readthedocs.io/favicon.ico",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "loading",
+			"title": "Installation Guide — Apache Distill 0.1.3 documentation",
+			"url": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"title": "Installation Guide — Apache Distill 0.1.3 documentation",
+		"type": "tabs.onUpdated",
+		"httpSession": "c17566612e806fca47588ce701deec40"
+	},
+	{
+		"target": "Window",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://www.google.com/search?q=dis&rlz=1C1CHBF_enUS987US987&oq=dis&gs_lcrp=EgZjaHJvbWUyBggAEEUYPDIGCAEQRRg5Mg0IAhAAGIMBGLEDGIAEMhMIAxAuGIMBGMcBGLEDGNEDGIAEMgoIBBAAGLEDGIAEMhAIBRAAGIMBGLEDGIAEGIoFMgYIBhBFGDwyBggHEEUYPNIBCDIwNzZqMGo0qAIAsAIA&sourceid=chrome&ie=UTF-8",
+		"pageTitle": "dis - Google Search",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032172,
+		"microTime": 0.3,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1580,
+			"height": 740
+		},
+		"type": "blur",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708447027077",
+		"httpSessionId": "c17566612e806fca47588ce701deec40",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+		"pageTitle": "Installation Guide — Apache Distill 0.1.3 documentation",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032533,
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"logType": "custom",
+		"userAction": false,
+		"details": {
+			"pageLoadTime": null
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446826867",
+		"httpSessionId": "4f3c8a727266e5c52e53f719679b6977",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"type": "load"
+	},
+	{
+		"target": "#document",
+		"path": [
+			"Window"
+		],
+		"pageUrl": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+		"pageTitle": "Installation Guide — Apache Distill 0.1.3 documentation",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032644,
+		"microTime": 0.9,
+		"location": {
+			"x": null,
+			"y": null
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "load",
+		"logType": "raw",
+		"userAction": true,
+		"details": {
+			"window": true
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446826867",
+		"httpSessionId": "4f3c8a727266e5c52e53f719679b6977",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{
+		"pageUrl": "chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html",
+		"pageTitle": "",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447032646,
+		"scrnRes": {
+			"width": 0,
+			"height": 0
+		},
+		"logType": "custom",
+		"userAction": true,
+		"details": {
+			"active": true,
+			"audible": false,
+			"autoDiscardable": true,
+			"discarded": false,
+			"favIconUrl": "https://incubator-flagon-distill.readthedocs.io/favicon.ico",
+			"groupId": -1,
+			"height": 592,
+			"highlighted": true,
+			"id": 602195154,
+			"incognito": false,
+			"index": 2,
+			"mutedInfo": {
+				"muted": false,
+				"reason": "user"
+			},
+			"pinned": false,
+			"selected": true,
+			"status": "complete",
+			"title": "Installation Guide — Apache Distill 0.1.3 documentation",
+			"url": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+			"width": 1264,
+			"windowId": 602194905
+		},
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446670458",
+		"httpSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc",
+		"status": "complete",
+		"type": "tabs.onUpdated",
+		"httpSession": "4f3c8a727266e5c52e53f719679b6977"
+	},
+	{
+		"target": "div.wy-nav-content",
+		"path": [
+			"div.wy-nav-content",
+			"section.wy-nav-content-wrap",
+			"div.wy-grid-for-nav",
+			"body.wy-body-for-nav",
+			"html.writer-html5",
+			"#document",
+			"Window"
+		],
+		"pageUrl": "https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill",
+		"pageTitle": "Installation Guide — Apache Distill 0.1.3 documentation",
+		"pageReferrer": "",
+		"browser": {
+			"browser": "chrome",
+			"version": "114.0.0"
+		},
+		"clientTime": 1708447035566,
+		"microTime": 0.8,
+		"location": {
+			"x": 350,
+			"y": 174
+		},
+		"scrnRes": {
+			"width": 1264,
+			"height": 592
+		},
+		"type": "mouseover",
+		"logType": "raw",
+		"userAction": true,
+		"details": null,
+		"userId": "MD",
+		"toolVersion": "",
+		"toolName": "",
+		"useraleVersion": "2.4.0",
+		"sessionID": "session_1708446826867",
+		"httpSessionId": "4f3c8a727266e5c52e53f719679b6977",
+		"browserSessionId": "06b0db1ab30e8e92819ba3d4091b83bc"
+	},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622797541,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":false,"details":{"pageLoadTime":6},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","type":"load","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622799410,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://beam.apache.org/images/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195158,"incognito":false,"index":3,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"complete","title":"About","url":"https://beam.apache.org/about/","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","tabId":602195158,"windowId":602194905,"type":"tabs.onActivated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622803102,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://beam.apache.org/images/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195158,"incognito":false,"index":3,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"loading","title":"About","url":"https://beam.apache.org/about/","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622803104,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://beam.apache.org/images/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195158,"incognito":false,"index":3,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"loading","title":"About","url":"https://beam.apache.org/about/","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","favIconUrl":"https://beam.apache.org/images/favicon.ico","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622803104,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://beam.apache.org/images/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195158,"incognito":false,"index":3,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"loading","title":"About","url":"https://beam.apache.org/about/","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":1,"oldZoomFactor":1,"tabId":602195158,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622803478,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://beam.apache.org/images/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195158,"incognito":false,"index":3,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"complete","title":"About","url":"https://beam.apache.org/about/","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"complete","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622803589,"scrnRes":{"width":1264,"height":832},"logType":"custom","userAction":false,"details":{"pageLoadTime":4},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","type":"load"},
+	{"target":"a.dropdown-toggle navbar-link","path":["a.dropdown-toggle navbar-link","li.dropdown navbar-dropdown navbar-dropdown-documentation","div.navbar-links","div.navbar-bar-left","nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622804465,"microTime":0,"location":{"x":385,"y":56},"scrnRes":{"width":1264,"height":832},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"nav.navigation-bar-desktop","path":["nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622804495,"microTime":0.9,"location":{"x":289,"y":26},"scrnRes":{"width":1264,"height":832},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a.dropdown-toggle navbar-link","path":["a.dropdown-toggle navbar-link","li.dropdown navbar-dropdown navbar-dropdown-documentation","div.navbar-links","div.navbar-bar-left","nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"count":1,"duration":30,"startTime":1708622804465,"endTime":1708622804495,"type":"mouseover","logType":"interval","targetChange":true,"typeChange":false,"userAction":false,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"Window","path":["Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622804907,"microTime":0.4,"location":{"x":null,"y":null},"scrnRes":{"width":1264,"height":832},"type":"blur","logType":"raw","userAction":true,"details":{"window":true},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622804927,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"","groupId":-1,"height":832,"highlighted":true,"id":602195017,"incognito":false,"index":0,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"complete","title":"Extensions","url":"chrome://extensions/","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","tabId":602195017,"windowId":602194905,"type":"tabs.onActivated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622807423,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"","groupId":-1,"height":832,"highlighted":true,"id":602195017,"incognito":false,"index":0,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"loading","title":"Extensions","url":"chrome://extensions/?errors=glifkfgngpmliakinpibmjodbclonhjd","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","url":"chrome://extensions/?errors=glifkfgngpmliakinpibmjodbclonhjd","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622807424,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"","groupId":-1,"height":832,"highlighted":true,"id":602195017,"incognito":false,"index":0,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"complete","title":"Extensions","url":"chrome://extensions/?errors=glifkfgngpmliakinpibmjodbclonhjd","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"complete","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622807425,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"","groupId":-1,"height":832,"highlighted":true,"id":602195017,"incognito":false,"index":0,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"complete","title":"Extensions","url":"chrome://extensions/?errors=glifkfgngpmliakinpibmjodbclonhjd","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":1,"oldZoomFactor":1,"tabId":602195017,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622811173,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","tabId":602195153,"windowId":602194905,"type":"tabs.onActivated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622813165,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622813166,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622813167,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":0.8,"oldZoomFactor":0.8,"tabId":602195153,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622813391,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622813392,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":0.8,"oldZoomFactor":0.8,"tabId":602195153,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622813754,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622813755,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":0.8,"oldZoomFactor":0.8,"tabId":602195153,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":null},
+	{"pageUrl":"https://github.com/apache/flagon-useralejs/tree/test","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814045,"scrnRes":{"width":1580,"height":1040},"logType":"custom","userAction":false,"details":{"pageLoadTime":null},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","type":"load"},
+	{"target":"a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive intent-mouse","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/tree/test","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814146,"microTime":0.8,"location":{"x":285,"y":88},"scrnRes":{"width":1580,"height":1040},"type":"mouseup","logType":"raw","userAction":true,"details":{"clicks":1,"ctrl":false,"alt":false,"shift":false,"meta":false},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive intent-mouse","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/tree/test","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814146,"microTime":0.8,"location":{"x":285,"y":88},"scrnRes":{"width":1580,"height":1040},"type":"click","logType":"raw","userAction":true,"details":{"clicks":1,"ctrl":false,"alt":false,"shift":false,"meta":false},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814339,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814341,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":0.8,"oldZoomFactor":0.8,"tabId":602195153,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"target":"#document","path":["Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/tree/test","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814340,"microTime":0.1,"location":{"x":null,"y":null},"scrnRes":{"width":1580,"height":1040},"type":"load","logType":"raw","userAction":true,"details":{"window":true},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814348,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"complete","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814406,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814407,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"complete","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814408,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/tree/test","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":0.8,"oldZoomFactor":0.8,"tabId":602195153,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814428,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","url":"https://github.com/apache/flagon-useralejs/pulls","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814429,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"complete","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814429,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":0.8,"oldZoomFactor":0.8,"tabId":602195153,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814430,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814639,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"github.com/apache/flagon-useralejs/pulls","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","title":"github.com/apache/flagon-useralejs/pulls","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814641,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","title":"apache/flagon-useralejs at test","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814647,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814648,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"complete","type":"tabs.onUpdated","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622814648,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://github.githubassets.com/favicons/favicon.svg","groupId":-1,"height":832,"highlighted":true,"id":602195153,"incognito":false,"index":1,"mutedInfo":{"muted":true,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"apache/flagon-useralejs at test","url":"https://github.com/apache/flagon-useralejs/pulls","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":0.8,"oldZoomFactor":0.8,"tabId":602195153,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":"e7fc13e66e90540725f6c1c6074de227"},
+	{"target":"a#actions-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#actions-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622817336,"microTime":0.4,"location":{"x":375,"y":77},"scrnRes":{"width":1580,"height":1040},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive intent-mouse","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"count":1,"duration":3190,"startTime":1708622814146,"endTime":1708622817336,"type":"click","logType":"interval","targetChange":true,"typeChange":true,"userAction":false,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"ul.list-style-none","path":["ul.list-style-none","nav","div.AppHeader-context-full","div.AppHeader-context","div.AppHeader-globalBar-start","div.AppHeader-globalBar pb-2 js-global-bar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622817381,"microTime":0.3,"location":{"x":541,"y":31},"scrnRes":{"width":1580,"height":1040},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive intent-mouse","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"count":1,"duration":3235,"startTime":1708622814146,"endTime":1708622817381,"type":"click","logType":"interval","targetChange":true,"typeChange":true,"userAction":false,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"div.AppHeader-globalBar pb-2 js-global-bar","path":["div.AppHeader-globalBar pb-2 js-global-bar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622817412,"microTime":0.3,"location":{"x":642,"y":3},"scrnRes":{"width":1580,"height":1040},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive intent-mouse","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"count":1,"duration":3266,"startTime":1708622814146,"endTime":1708622817412,"type":"click","logType":"interval","targetChange":true,"typeChange":true,"userAction":false,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622819421,"microTime":0.5,"location":{"x":null,"y":null},"scrnRes":{"width":1580,"height":1040},"type":"blur","logType":"raw","userAction":true,"details":{"window":true},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622819421,"microTime":0.5,"location":{"x":null,"y":null},"scrnRes":{"width":1580,"height":1040},"type":"blur","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","path":["a#pull-requests-tab.UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item","li.d-inline-flex","ul.UnderlineNav-body list-style-none","nav.js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav","div.AppHeader-localBar","header.AppHeader","div.position-relative js-header-wrapper ","div.logged-in env-production page-responsive","body.logged-in env-production page-responsive intent-mouse","html","#document","Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"count":1,"duration":5275,"startTime":1708622814146,"endTime":1708622819421,"type":"click","logType":"interval","targetChange":false,"typeChange":true,"userAction":false,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622819439,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://incubator-flagon-distill.readthedocs.io/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195154,"incognito":false,"index":2,"mutedInfo":{"muted":false,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"Installation Guide — Apache Distill 0.1.3 documentation","url":"https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","tabId":602195154,"windowId":602194905,"type":"tabs.onActivated","httpSession":null},
+	{"target":"Window","path":["Window"],"pageUrl":"https://github.com/apache/flagon-useralejs/pulls","pageTitle":"apache/flagon-useralejs at test","pageReferrer":"https://github.com/apache/flagon-useralejs","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622819441,"microTime":0.1,"location":{"x":null,"y":null},"scrnRes":{"width":1580,"height":1040},"type":"blur","logType":"raw","userAction":true,"details":{"window":true},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446819236","httpSessionId":"e7fc13e66e90540725f6c1c6074de227","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622821527,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://incubator-flagon-distill.readthedocs.io/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195154,"incognito":false,"index":2,"mutedInfo":{"muted":false,"reason":"user"},"pinned":false,"selected":true,"status":"loading","title":"Installation Guide — Apache Distill 0.1.3 documentation","url":"https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill-in-an-virtual-environment","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"loading","url":"https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill-in-an-virtual-environment","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622821529,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://incubator-flagon-distill.readthedocs.io/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195154,"incognito":false,"index":2,"mutedInfo":{"muted":false,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"Installation Guide — Apache Distill 0.1.3 documentation","url":"https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill-in-an-virtual-environment","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","status":"complete","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622821531,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://incubator-flagon-distill.readthedocs.io/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195154,"incognito":false,"index":2,"mutedInfo":{"muted":false,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"Installation Guide — Apache Distill 0.1.3 documentation","url":"https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill-in-an-virtual-environment","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","newZoomFactor":1,"oldZoomFactor":1,"tabId":602195154,"zoomSettings":{"mode":"automatic","scope":"per-origin"},"type":"tabs.onZoomChange","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622821531,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://incubator-flagon-distill.readthedocs.io/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195154,"incognito":false,"index":2,"mutedInfo":{"muted":false,"reason":"user"},"pinned":false,"selected":true,"status":"complete","title":"Installation Guide — Apache Distill 0.1.3 documentation","url":"https://incubator-flagon-distill.readthedocs.io/en/stable/installation.html#installing-apache-distill-in-an-virtual-environment","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","favIconUrl":"https://incubator-flagon-distill.readthedocs.io/favicon.ico","type":"tabs.onUpdated","httpSession":null},
+	{"pageUrl":"chrome-extension://glifkfgngpmliakinpibmjodbclonhjd/_generated_background_page.html","pageTitle":"","pageReferrer":"","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622825708,"scrnRes":{"width":0,"height":0},"logType":"custom","userAction":true,"details":{"active":true,"audible":false,"autoDiscardable":true,"discarded":false,"favIconUrl":"https://beam.apache.org/images/favicon.ico","groupId":-1,"height":832,"highlighted":true,"id":602195158,"incognito":false,"index":3,"mutedInfo":{"muted":false},"pinned":false,"selected":true,"status":"complete","title":"About","url":"https://beam.apache.org/about/","width":1264,"windowId":602194905},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708622797436","httpSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918","tabId":602195158,"windowId":602194905,"type":"tabs.onActivated","httpSession":"72798a8ad776417183b1aa14e03c3132"},
+	{"target":"Window","path":["Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622825710,"microTime":0.5,"location":{"x":null,"y":null},"scrnRes":{"width":1264,"height":832},"type":"focus","logType":"raw","userAction":true,"details":{"window":true},"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"nav.navigation-bar-desktop","path":["nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622826819,"microTime":0.8,"location":{"x":678,"y":5},"scrnRes":{"width":1264,"height":832},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a.dropdown-toggle navbar-link","path":["a.dropdown-toggle navbar-link","li.dropdown navbar-dropdown navbar-dropdown-documentation","div.navbar-links","div.navbar-bar-left","nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"count":1,"duration":22354,"startTime":1708622804465,"endTime":1708622826819,"type":"mouseover","logType":"interval","targetChange":true,"typeChange":false,"userAction":false,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a.navbar-link","path":["a.navbar-link","div.navbar-links","div.navbar-bar-left","nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622826858,"microTime":0.2,"location":{"x":548,"y":56},"scrnRes":{"width":1264,"height":832},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a.dropdown-toggle navbar-link","path":["a.dropdown-toggle navbar-link","li.dropdown navbar-dropdown navbar-dropdown-documentation","div.navbar-links","div.navbar-bar-left","nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"count":1,"duration":22393,"startTime":1708622804465,"endTime":1708622826858,"type":"mouseover","logType":"interval","targetChange":true,"typeChange":false,"userAction":false,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"nav.navigation-bar-desktop","path":["nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622826869,"microTime":0.4,"location":{"x":481,"y":71},"scrnRes":{"width":1264,"height":832},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a.dropdown-toggle navbar-link","path":["a.dropdown-toggle navbar-link","li.dropdown navbar-dropdown navbar-dropdown-documentation","div.navbar-links","div.navbar-bar-left","nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"count":1,"duration":22404,"startTime":1708622804465,"endTime":1708622826869,"type":"mouseover","logType":"interval","targetChange":true,"typeChange":false,"userAction":false,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"},
+	{"target":"a.dropdown-toggle navbar-link","path":["a.dropdown-toggle navbar-link","li.dropdown navbar-dropdown navbar-dropdown-documentation","div.navbar-links","div.navbar-bar-left","nav.navigation-bar-desktop","body.body","html.no-js","#document","Window"],"pageUrl":"https://beam.apache.org/about/","pageTitle":"About","pageReferrer":"https://beam.apache.org/case-studies/","browser":{"browser":"chrome","version":"114.0.0"},"clientTime":1708622827255,"microTime":0.1,"location":{"x":353,"y":57},"scrnRes":{"width":1264,"height":832},"type":"mouseover","logType":"raw","userAction":true,"details":null,"userId":"MD","toolVersion":"","toolName":"","useraleVersion":"2.4.0","sessionID":"session_1708446947239","httpSessionId":"72798a8ad776417183b1aa14e03c3132","browserSessionId":"9486d2f32a8f9d4ef0dae14430c3b918"}
+]
diff --git a/tests/data_config.py b/tests/data_config.py
index 566177a..35f0289 100644
--- a/tests/data_config.py
+++ b/tests/data_config.py
@@ -15,6 +15,7 @@
 # limitations under the License.
 #
 """Module defines common test data"""
+
 from pathlib import Path
 
 _THIS_DIR = Path(__file__).parent
diff --git a/tests/test_segment.py b/tests/test_segment.py
index 5b01b0d..784d52f 100644
--- a/tests/test_segment.py
+++ b/tests/test_segment.py
@@ -1424,14 +1424,13 @@
     with open("./test.csv", "r") as file:
         lines = file.readlines()
 
-        assert len(lines) == 4
-        assert (
-            lines[0]
-            == "Segment Name,Start Time,End Time,Number of Logs,Generate Field"
-            " Name,Generate Matched Values,Segment Type\n"
-        )
-        assert lines[1] == "0,1623691890459,1623691994888,7,,,Segment_Type.DEADSPACE\n"
-        assert lines[2] == "1,1623691991900,1623693994900,15,,,Segment_Type.DEADSPACE\n"
-        assert lines[3] == "2,1623693994550,1623697997550,3,,,Segment_Type.DEADSPACE\n"
+    assert len(lines) == 4
+    assert (
+        lines[0] == "Segment Name,Start Time,End Time,Number of Logs,Generate Field"
+        " Name,Generate Matched Values,Segment Type\n"
+    )
+    assert lines[1] == "0,1623691890459,1623691994888,7,,,Segment_Type.DEADSPACE\n"
+    assert lines[2] == "1,1623691991900,1623693994900,15,,,Segment_Type.DEADSPACE\n"
+    assert lines[3] == "2,1623693994550,1623697997550,3,,,Segment_Type.DEADSPACE\n"
 
     os.remove("./test.csv")
diff --git a/tests/test_segments.py b/tests/test_segments.py
index 853501d..ca16cee 100644
--- a/tests/test_segments.py
+++ b/tests/test_segments.py
@@ -524,8 +524,7 @@
     segments = distill.Segments([segment])
 
     assert (
-        str(segments)
-        == "Segments: [\n"
+        str(segments) == "Segments: [\n"
         "Segment: segment_name=segment_name, start=1, end=2, num_logs=5, "
         "generate_field_name=None, generate_matched_values=None, segment_type=None\n"
         "]"
diff --git a/tests/test_sessions.py b/tests/test_sessions.py
new file mode 100644
index 0000000..434cdd2
--- /dev/null
+++ b/tests/test_sessions.py
@@ -0,0 +1,95 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# @TODO add header with description of file
+
+import json
+import os
+
+# Util Tests
+from distill.sessions.sessions import Sessions
+from tests.data_config import DATA_DIR
+
+
+def test_chunk_to_user_sessions_by_default():
+    # Load in file and convert to raw data
+    file = os.path.join(DATA_DIR, "sample_data_multiusers.json")
+    with open(file) as json_file:
+        raw_data = json.load(json_file)
+
+    result = Sessions(logs=raw_data)
+
+    # Get the session names from the parsed session
+    session_names = result.get_session_names()
+    unique_user_names = set()
+
+    for name in session_names:
+        # The first part of the session names represent user identifier
+        user_name = name.split("_")[0]
+        unique_user_names.add(user_name)
+
+    # Assert that there are two distinct users
+    assert len(unique_user_names) == 2
+
+
+def test_chunk_to_user_sessions_by_tab():
+    # Load in file and convert to raw data
+    file = os.path.join(DATA_DIR, "sample_data_multiusers.json")
+    with open(file) as json_file:
+        raw_data = json.load(json_file)
+
+    result_tab = Sessions(raw_data, group_by_type="tab")
+
+    # Get the session names from the parsed session
+    session_names = result_tab.get_session_names()
+    unique_tab = set()
+
+    for name in session_names:
+        # The second part of the session names represent user identifier
+        name_parts = name.split("_")
+        if name_parts[0] == "9486d2f32a8f9d4ef0dae14430c3b918":
+            unique_tab.add(name_parts[1])
+
+    # Assert that there 3 distinct tabs for user: 9486d2f32a8f9d4ef0dae14430c3b918
+    assert len(unique_tab) == 3
+
+
+def test_chunk_to_user_sessions_by_domain():
+    # Load in file and convert to raw data
+    file = os.path.join(DATA_DIR, "sample_data_multiusers.json")
+    with open(file) as json_file:
+        raw_data = json.load(json_file)
+
+    # Assert that there is logs with pageURL
+    # include www.google.com for user: 06b0db1ab30e8e92819ba3d4091b83bc
+    # But none for user: 9486d2f32a8f9d4ef0dae14430c3b918
+    result_url = Sessions(raw_data, group_by_type="domain", url_re="*.google.*")
+
+    # Get the session names from the parsed session
+    session_names = result_url.get_session_names()
+    domain_names_user1 = set()
+    domain_names_user2 = set()
+
+    for name in session_names:
+        # The second part of the session names represent user identifier
+        name_parts = name.split("_")
+        if name_parts[0] == "9486d2f32a8f9d4ef0dae14430c3b918":
+            domain_names_user1.add(name_parts[1])
+        elif name_parts[0] == "06b0db1ab30e8e92819ba3d4091b83bc":
+            domain_names_user2.add(name_parts[1])
+
+    assert "domain*.google.*" not in domain_names_user1
+    assert "domain*.google.*" in domain_names_user2