liburlparser 1.5.0__tar.gz → 1.6.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. liburlparser-1.6.1/.github/workflows/cmake.yml +79 -0
  2. liburlparser-1.6.1/.github/workflows/docs.yml +72 -0
  3. liburlparser-1.6.1/.github/workflows/wheels.yml +124 -0
  4. liburlparser-1.6.1/.gitmodules +7 -0
  5. {liburlparser-1.5.0 → liburlparser-1.6.1}/CMakeLists.txt +1 -1
  6. {liburlparser-1.5.0 → liburlparser-1.6.1}/PKG-INFO +6 -4
  7. {liburlparser-1.5.0 → liburlparser-1.6.1}/README.md +1 -0
  8. liburlparser-1.6.1/docs/cpp/Doxyfile.in +63 -0
  9. liburlparser-1.6.1/docs/cpp/header.html +31 -0
  10. liburlparser-1.6.1/docs/cpp/images/interface-arch.svg +1 -0
  11. liburlparser-1.6.1/docs/cpp/images/url-parsing-process.svg +1 -0
  12. liburlparser-1.6.1/docs/cpp/mainpage.md +260 -0
  13. liburlparser-1.6.1/docs/python/docs/api/host.md +409 -0
  14. liburlparser-1.6.1/docs/python/docs/api/psl.md +97 -0
  15. liburlparser-1.6.1/docs/python/docs/api/url.md +277 -0
  16. liburlparser-1.6.1/docs/python/docs/examples.md +236 -0
  17. liburlparser-1.6.1/docs/python/docs/index.md +86 -0
  18. liburlparser-1.6.1/docs/python/docs/installation.md +91 -0
  19. liburlparser-1.6.1/docs/python/docs/performance.md +178 -0
  20. liburlparser-1.6.1/docs/python/docs/usage/advanced.md +541 -0
  21. liburlparser-1.6.1/docs/python/docs/usage/basic.md +162 -0
  22. liburlparser-1.6.1/docs/python/docs/usage/cli.md +15 -0
  23. liburlparser-1.6.1/docs/python/mkdocs.yml +39 -0
  24. {liburlparser-1.5.0 → liburlparser-1.6.1}/include/urlparser.h +152 -29
  25. liburlparser-1.6.1/public_suffix_list.dat +15790 -0
  26. {liburlparser-1.5.0 → liburlparser-1.6.1}/pyproject.toml +9 -6
  27. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/liburlparser/__init__.py +5 -1
  28. liburlparser-1.6.1/src/liburlparser/__main__.py +44 -0
  29. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/liburlparser/core.py +3 -0
  30. liburlparser-1.6.1/src/liburlparser/utils.py +18 -0
  31. liburlparser-1.6.1/tests/python/test_cli_subprocess.py +122 -0
  32. liburlparser-1.5.0/.github/workflows/cmake.yml +0 -43
  33. liburlparser-1.5.0/.github/workflows/wheels.yml +0 -98
  34. liburlparser-1.5.0/.gitmodules +0 -4
  35. liburlparser-1.5.0/.ruff_cache/.gitignore +0 -2
  36. liburlparser-1.5.0/.ruff_cache/0.7.0/1045475550077068025 +0 -0
  37. liburlparser-1.5.0/.ruff_cache/0.7.0/4604544773037589564 +0 -0
  38. liburlparser-1.5.0/.ruff_cache/CACHEDIR.TAG +0 -1
  39. liburlparser-1.5.0/docs/Doxyfile.in +0 -19
  40. liburlparser-1.5.0/src/liburlparser/__main__.py +0 -33
  41. {liburlparser-1.5.0 → liburlparser-1.6.1}/.clang-format +0 -0
  42. {liburlparser-1.5.0 → liburlparser-1.6.1}/.gitignore +0 -0
  43. {liburlparser-1.5.0 → liburlparser-1.6.1}/LICENSE +0 -0
  44. {liburlparser-1.5.0 → liburlparser-1.6.1}/cmake/PyProject.cmake +0 -0
  45. {liburlparser-1.5.0 → liburlparser-1.6.1}/conda.recipe/meta.yaml +0 -0
  46. {liburlparser-1.5.0 → liburlparser-1.6.1}/docs/images/logo/liburlparser-logo-1.svg +0 -0
  47. {liburlparser-1.5.0 → liburlparser-1.6.1}/docs/images/logo/liburlparser-logo-2.svg +0 -0
  48. {liburlparser-1.5.0 → liburlparser-1.6.1}/examples/common.h +0 -0
  49. {liburlparser-1.5.0 → liburlparser-1.6.1}/examples/main.cpp +0 -0
  50. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/binding/about.cpp +0 -0
  51. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/binding/bind_core/main.cpp +0 -0
  52. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/psl.cpp +0 -0
  53. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/psl.h +0 -0
  54. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/url.cpp +0 -0
  55. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/url.h +0 -0
  56. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/urlparser_host.cpp +0 -0
  57. {liburlparser-1.5.0 → liburlparser-1.6.1}/src/urlparser_url.cpp +0 -0
  58. {liburlparser-1.5.0 → liburlparser-1.6.1}/tests/cpp/common.h +0 -0
  59. {liburlparser-1.5.0 → liburlparser-1.6.1}/tests/cpp/test_host.cpp +0 -0
  60. {liburlparser-1.5.0 → liburlparser-1.6.1}/tests/cpp/test_url.cpp +0 -0
  61. {liburlparser-1.5.0 → liburlparser-1.6.1}/tests/data/host_data.csv +0 -0
  62. {liburlparser-1.5.0 → liburlparser-1.6.1}/tests/data/url_data.csv +0 -0
  63. {liburlparser-1.5.0 → liburlparser-1.6.1}/tests/python/test_extra.py +0 -0
  64. {liburlparser-1.5.0 → liburlparser-1.6.1}/tests/python/test_host.py +0 -0
  65. {liburlparser-1.5.0 → liburlparser-1.6.1}/tests/python/test_url.py +0 -0
@@ -0,0 +1,79 @@
1
+ name: CPP_BUILD_TEST_DOC
2
+ on:
3
+ workflow_dispatch:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - master
8
+ release:
9
+ types:
10
+ - published
11
+
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ build-project:
19
+ name: Build Project
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - name: Checkout the repository
23
+ uses: actions/checkout@v4
24
+ with:
25
+ submodules: true
26
+
27
+ # - name: Installing required packages
28
+ # run: sudo apt install -y build-essential cmake # libgtest-dev libgmock-dev
29
+
30
+ - name: Configure the project
31
+ uses: threeal/cmake-action@v1.3.0
32
+ with:
33
+ options: BUILD_PYTHON=on
34
+
35
+ # Step 3: Determine release type
36
+
37
+ - name: Build the project
38
+ run: cmake --build build
39
+
40
+ - name: Test the project
41
+ run: ctest --test-dir build -V
42
+
43
+ # - uses: actions/upload-artifact@v4
44
+ # with:
45
+ # path: build/*urlparser*
46
+
47
+ - name: Create ZIP archive
48
+ uses: vimtor/action-zip@v1.2
49
+ with:
50
+ files: build/*urlparser*
51
+ recursive: true
52
+ dest: liburlparser-build-ubuntu.zip
53
+
54
+
55
+ - name: Determine release type
56
+ id: release_type
57
+ run: |
58
+ if [[ "${{ github.ref }}" =~ ^refs/tags/v.*$ ]]; then
59
+ echo "RELEASE_NAME=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
60
+ echo "IS_TAG=true" >> $GITHUB_ENV
61
+ else
62
+ echo "RELEASE_NAME=__beta__" >> $GITHUB_ENV
63
+ echo "IS_TAG=false" >> $GITHUB_ENV
64
+ fi
65
+ shell: bash # Use bash for all platforms
66
+
67
+
68
+
69
+ # Step 4: Create or update release
70
+ - name: Create or update release
71
+ id: create_release
72
+ uses: softprops/action-gh-release@v2
73
+ with:
74
+ tag_name: ${{ env.RELEASE_NAME }}
75
+ name: ${{ env.RELEASE_NAME }}
76
+ draft: false
77
+ prerelease: ${{ env.IS_TAG == 'false' }}
78
+ files: dist/*
79
+ token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,72 @@
1
+ name: Build and Deploy Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ release:
8
+ types: [published]
9
+ workflow_dispatch:
10
+
11
+ jobs:
12
+ python-docs:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - name: Checkout
16
+ uses: actions/checkout@v3
17
+ with:
18
+ fetch-depth: 0
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v4
22
+ with:
23
+ python-version: '3.x'
24
+
25
+ - name: Install dependencies
26
+ run: pip install mkdocs
27
+
28
+ - name: Build
29
+ run: |
30
+ cd docs/python
31
+ mkdocs build
32
+
33
+ - name: Deploy
34
+ uses: JamesIves/github-pages-deploy-action@v4
35
+ with:
36
+ folder: docs/python/site
37
+ branch: gh-pages
38
+ target-folder: docs/python
39
+
40
+
41
+ cpp-docs:
42
+ runs-on: ubuntu-latest
43
+ steps:
44
+ - name: Checkout
45
+ uses: actions/checkout@v3
46
+ with:
47
+ fetch-depth: 0
48
+ submodules: true
49
+
50
+ - name: Install Doxygen
51
+ run: sudo apt-get install -y doxygen graphviz
52
+
53
+ - name: Configure CMake
54
+ run: cmake -B build
55
+
56
+ - name: Generate Doxygen documentation
57
+ run: cmake --build build --target docs
58
+
59
+ - name: Deploy
60
+ uses: JamesIves/github-pages-deploy-action@v4
61
+ with:
62
+ folder: build/html
63
+ branch: gh-pages
64
+ target-folder: docs/cpp
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
@@ -0,0 +1,124 @@
1
+ name: PYTHON_BUILD_TEST_DEPLOY
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ push:
7
+ branches:
8
+ - master
9
+ tags:
10
+ - "v*"
11
+
12
+ env:
13
+ FORCE_COLOR: 3
14
+
15
+ concurrency:
16
+ group: github.workflow−{{ github.workflow }}-{{ github.ref }}
17
+ cancel-in-progress: true
18
+
19
+ jobs:
20
+ build_sdist:
21
+ name: Build SDist
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ with:
26
+ submodules: false
27
+
28
+ - uses: actions/setup-python@v4
29
+ with:
30
+ python-version: "3.x"
31
+
32
+ # - name: Ruff Check
33
+ # run: pipx run ruff check .
34
+
35
+ - name: Build SDist
36
+ run: pipx run build --sdist
37
+
38
+ - name: Check metadata
39
+ run: pipx run twine check dist/*
40
+
41
+ - uses: actions/upload-artifact@v4
42
+ with:
43
+ path: dist/*.tar.gz
44
+ overwrite: true
45
+
46
+
47
+ build_wheels:
48
+ name: Wheels on ${{ matrix.os }}
49
+ runs-on: ${{ matrix.os }}
50
+ strategy:
51
+ fail-fast: true
52
+ matrix:
53
+ os: [ubuntu-latest, windows-latest]
54
+
55
+ steps:
56
+ - uses: actions/checkout@v4
57
+ with:
58
+ submodules: true
59
+
60
+ - name: Build wheels
61
+ uses: pypa/cibuildwheel@v2.16.5
62
+ env:
63
+ # CIBW_ARCHS_MACOS: universal2
64
+ # CIBW_ARCHS_WINDOWS: auto ARM64
65
+ # Disable building PyPy wheels on all platforms
66
+ CIBW_SKIP: pp*
67
+ # CIBW_PRERELEASE_PYTHONS: true
68
+
69
+ - name: Verify clean directory
70
+ run: git diff --exit-code
71
+ shell: bash
72
+
73
+ - uses: actions/upload-artifact@v4
74
+ with:
75
+ name: wheelhouse-${{ matrix.os }}
76
+ path: wheelhouse/*.whl
77
+ overwrite: false
78
+
79
+
80
+ release:
81
+ name: Release Assets and Upload to PyPI
82
+ needs: [build_wheels, build_sdist]
83
+ runs-on: ubuntu-latest
84
+
85
+ steps:
86
+ # Determine release type
87
+ - name: Determine release type
88
+ id: release_type
89
+ run: |
90
+ if [[ "${{ github.ref }}" =~ ^refs/tags/v.*$ ]]; then
91
+ echo "RELEASE_NAME=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
92
+ echo "IS_TAG=true" >> $GITHUB_ENV
93
+ else
94
+ echo "RELEASE_NAME=__beta__" >> $GITHUB_ENV
95
+ echo "IS_TAG=false" >> $GITHUB_ENV
96
+ fi
97
+ shell: bash # Use bash for all platforms
98
+
99
+ - uses: actions/download-artifact@v4
100
+ with:
101
+ path: dist
102
+ merge-multiple: true
103
+
104
+
105
+ - name: List dist directory
106
+ run: tree --du -shaC . # Ensure the directory is not empty
107
+
108
+ - name: Create or update release
109
+ id: create_release
110
+ uses: softprops/action-gh-release@v2
111
+ with:
112
+ tag_name: ${{ env.RELEASE_NAME }}
113
+ name: ${{ env.RELEASE_NAME }}
114
+ draft: false
115
+ prerelease: ${{ env.IS_TAG == 'false' }}
116
+ files: dist/*
117
+ token: ${{ secrets.GITHUB_TOKEN }}
118
+
119
+ - name: Publishing to PyPi
120
+ uses: pypa/gh-action-pypi-publish@release/v1
121
+ if: startsWith(github.ref, 'refs/tags/')
122
+ with:
123
+ password: ${{ secrets.PYPI_PASSWORD }}
124
+ user: ${{ secrets.PYPI_USERNAME }}
@@ -0,0 +1,7 @@
1
+ [submodule "third_party/googletest"]
2
+ path = third_party/googletest
3
+ url = https://github.com/google/googletest.git
4
+ shallow = true
5
+ [submodule "third_party/doxygen-awesome-css"]
6
+ path = third_party/doxygen-awesome-css
7
+ url = https://github.com/jothepro/doxygen-awesome-css.git
@@ -214,7 +214,7 @@ message(STATUS "Doxygen_FOUND : ${Doxygen_FOUND}")
214
214
  # Find Doxygen package
215
215
  if (Doxygen_FOUND)
216
216
  # Configure Doxyfile.in template
217
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
217
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/cpp/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
218
218
 
219
219
  # Add target to generate documentation
220
220
  add_custom_target(docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: liburlparser
3
- Version: 1.5.0
3
+ Version: 1.6.1
4
4
  Summary: Fastest Url parser in the world
5
5
  Author-Email: Mohammad Raziei <mohammadraziei1375@gmail.com>
6
6
  Classifier: Development Status :: 4 - Beta
@@ -13,16 +13,17 @@ Classifier: Programming Language :: Python :: 3.8
13
13
  Classifier: Programming Language :: Python :: 3.9
14
14
  Classifier: Programming Language :: Python :: 3.10
15
15
  Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
16
17
  Project-URL: Homepage, https://github.com/mohammadraziei/liburlparser
17
- Project-URL: Bug tracker, https://github.com/mohammadraziei/liburlparser/issues
18
+ Project-URL: Bug Tracker, https://github.com/mohammadraziei/liburlparser/issues
18
19
  Project-URL: Document, https://mohammadraziei.github.io/liburlparser/latest
19
20
  Requires-Python: >=3.8
20
21
  Requires-Dist: filelock
22
+ Provides-Extra: test
21
23
  Requires-Dist: pytest-xdist; extra == "test"
22
24
  Requires-Dist: requests; extra == "test"
23
- Requires-Dist: requests; extra == "online"
24
- Provides-Extra: test
25
25
  Provides-Extra: online
26
+ Requires-Dist: requests; extra == "online"
26
27
  Description-Content-Type: text/markdown
27
28
 
28
29
  <p align="center">
@@ -54,6 +55,7 @@ Description-Content-Type: text/markdown
54
55
  [![SonarCloud](https://sonarcloud.io/images/project_badges/sonarcloud-white.svg)](https://sonarcloud.io/summary/new_code?id=MohammadRaziei_liburlparser)
55
56
 
56
57
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=MohammadRaziei_liburlparser&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=MohammadRaziei_liburlparser)
58
+ [![CodeFactor](https://www.codefactor.io/repository/github/mohammadraziei/liburlparser/badge/master)](https://www.codefactor.io/repository/github/mohammadraziei/liburlparser/overview/master)
57
59
  [![snyk.io](https://snyk.io/advisor/python/liburlparser/badge.svg)](https://snyk.io/advisor/python/liburlparser)
58
60
 
59
61
  [//]: # ([![View site - GH Pages]&#40;https://img.shields.io/badge/View_site-GH_Pages-2ea44f?style=for-the-badge&#41;]&#40;https://mohammadraziei.github.io/liburlparser/&#41;)
@@ -27,6 +27,7 @@
27
27
  [![SonarCloud](https://sonarcloud.io/images/project_badges/sonarcloud-white.svg)](https://sonarcloud.io/summary/new_code?id=MohammadRaziei_liburlparser)
28
28
 
29
29
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=MohammadRaziei_liburlparser&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=MohammadRaziei_liburlparser)
30
+ [![CodeFactor](https://www.codefactor.io/repository/github/mohammadraziei/liburlparser/badge/master)](https://www.codefactor.io/repository/github/mohammadraziei/liburlparser/overview/master)
30
31
  [![snyk.io](https://snyk.io/advisor/python/liburlparser/badge.svg)](https://snyk.io/advisor/python/liburlparser)
31
32
 
32
33
  [//]: # ([![View site - GH Pages]&#40;https://img.shields.io/badge/View_site-GH_Pages-2ea44f?style=for-the-badge&#41;]&#40;https://mohammadraziei.github.io/liburlparser/&#41;)
@@ -0,0 +1,63 @@
1
+ # Doxyfile.in
2
+
3
+ # Project information
4
+ PROJECT_NAME = @PROJECT_NAME@
5
+ PROJECT_VERSION = @PyProject_VERSION@
6
+ OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@
7
+ GENERATE_HTML = YES
8
+ GENERATE_LATEX = NO
9
+
10
+ # Source code
11
+ INPUT = @PROJECT_SOURCE_DIR@/include/urlparser.h @PROJECT_SOURCE_DIR@/include @PROJECT_SOURCE_DIR@/docs/cpp/mainpage.md @PROJECT_SOURCE_DIR@/docs/cpp/images
12
+ FILE_PATTERNS = *.cpp *.h *.hpp *.md *.svg
13
+ RECURSIVE = YES
14
+ EXCLUDE_PATTERNS = */tests*/* */build/* */dist/*
15
+
16
+ # Documentation settings
17
+ EXTRACT_ALL = YES
18
+ EXTRACT_PRIVATE = NO
19
+ EXTRACT_PACKAGE = YES
20
+ EXTRACT_STATIC = YES
21
+ EXTRACT_LOCAL_CLASSES = YES
22
+ HIDE_UNDOC_MEMBERS = NO
23
+ HIDE_UNDOC_CLASSES = NO
24
+ HIDE_SCOPE_NAMES = NO
25
+ SHOW_INCLUDE_FILES = YES
26
+ SHOW_GROUPED_MEMB_INC = YES
27
+ SORT_MEMBER_DOCS = YES
28
+ SORT_BRIEF_DOCS = YES
29
+ SORT_MEMBERS_CTORS_1ST = YES
30
+ SORT_GROUP_NAMES = YES
31
+
32
+ # Diagrams and graphs
33
+ HAVE_DOT = YES
34
+ UML_LOOK = YES
35
+ CALL_GRAPH = YES
36
+ CALLER_GRAPH = YES
37
+ DOT_IMAGE_FORMAT = SVG
38
+ INTERACTIVE_SVG = YES
39
+
40
+ # HTML output
41
+ HTML_DYNAMIC_SECTIONS = YES
42
+ HTML_TIMESTAMP = YES
43
+ SEARCHENGINE = YES
44
+ GENERATE_TREEVIEW = YES
45
+ DISABLE_INDEX = NO
46
+ FULL_SIDEBAR = NO
47
+ HTML_COLORSTYLE = LIGHT # required with Doxygen >= 1.9.5
48
+
49
+ USE_MDFILE_AS_MAINPAGE = @PROJECT_SOURCE_DIR@/docs/cpp/mainpage.md
50
+
51
+ # Image handling
52
+ IMAGE_PATH = @PROJECT_SOURCE_DIR@/docs/cpp/images
53
+
54
+ # HTML styling with awesome-css
55
+ HTML_EXTRA_STYLESHEET = @PROJECT_SOURCE_DIR@/third_party/doxygen-awesome-css/doxygen-awesome.css
56
+ HTML_EXTRA_FILES = @PROJECT_SOURCE_DIR@/third_party/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js \
57
+ @PROJECT_SOURCE_DIR@/third_party/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js \
58
+ @PROJECT_SOURCE_DIR@/third_party/doxygen-awesome-css/doxygen-awesome-paragraph-link.js \
59
+ @PROJECT_SOURCE_DIR@/third_party/doxygen-awesome-css/doxygen-awesome-interactive-toc.js
60
+
61
+ HTML_HEADER = @PROJECT_SOURCE_DIR@/docs/cpp/header.html
62
+
63
+ # End of Doxyfile.in
@@ -0,0 +1,31 @@
1
+ <!-- HTML header for doxygen 1.9.1-->
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7
+ <meta name="generator" content="Doxygen $doxygenversion"/>
8
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
9
+ <!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
10
+ <!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
11
+ <link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
12
+ <script type="text/javascript" src="$relpath^jquery.js"></script>
13
+ <script type="text/javascript" src="$relpath^dynsections.js"></script>
14
+ $treeview
15
+ $search
16
+ $mathjax
17
+ <link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
18
+ $extrastylesheet
19
+ <script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script>
20
+ <script type="text/javascript" src="$relpath^doxygen-awesome-fragment-copy-button.js"></script>
21
+ <script type="text/javascript" src="$relpath^doxygen-awesome-paragraph-link.js"></script>
22
+ <script type="text/javascript" src="$relpath^doxygen-awesome-interactive-toc.js"></script>
23
+ <script type="text/javascript">
24
+ DoxygenAwesomeDarkModeToggle.init()
25
+ DoxygenAwesomeFragmentCopyButton.init()
26
+ DoxygenAwesomeParagraphLink.init()
27
+ DoxygenAwesomeInteractiveToc.init()
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
@@ -0,0 +1 @@
1
+ <svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="0 0 545.7000122070312 860" style="max-width: 545.7000122070312px;" class="flowchart" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="mermaid-7de2j9j8b9n"><style>#mermaid-7de2j9j8b9n{font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,Helvetica;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-7de2j9j8b9n .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-7de2j9j8b9n .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-7de2j9j8b9n .error-icon{fill:#dddddd;}#mermaid-7de2j9j8b9n .error-text{fill:#222222;stroke:#222222;}#mermaid-7de2j9j8b9n .edge-thickness-normal{stroke-width:1px;}#mermaid-7de2j9j8b9n .edge-thickness-thick{stroke-width:3.5px;}#mermaid-7de2j9j8b9n .edge-pattern-solid{stroke-dasharray:0;}#mermaid-7de2j9j8b9n .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-7de2j9j8b9n .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-7de2j9j8b9n .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-7de2j9j8b9n .marker{fill:#999;stroke:#999;}#mermaid-7de2j9j8b9n .marker.cross{stroke:#999;}#mermaid-7de2j9j8b9n svg{font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,Helvetica;font-size:16px;}#mermaid-7de2j9j8b9n p{margin:0;}#mermaid-7de2j9j8b9n .label{font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,Helvetica;color:#333;}#mermaid-7de2j9j8b9n .cluster-label text{fill:#444;}#mermaid-7de2j9j8b9n .cluster-label span{color:#444;}#mermaid-7de2j9j8b9n .cluster-label span p{background-color:transparent;}#mermaid-7de2j9j8b9n .label text,#mermaid-7de2j9j8b9n span{fill:#333;color:#333;}#mermaid-7de2j9j8b9n .node rect,#mermaid-7de2j9j8b9n .node circle,#mermaid-7de2j9j8b9n .node ellipse,#mermaid-7de2j9j8b9n .node polygon,#mermaid-7de2j9j8b9n .node path{fill:#ffffff;stroke:#dddddd;stroke-width:1px;}#mermaid-7de2j9j8b9n .rough-node .label text,#mermaid-7de2j9j8b9n .node .label text,#mermaid-7de2j9j8b9n .image-shape .label,#mermaid-7de2j9j8b9n .icon-shape .label{text-anchor:middle;}#mermaid-7de2j9j8b9n .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-7de2j9j8b9n .rough-node .label,#mermaid-7de2j9j8b9n .node .label,#mermaid-7de2j9j8b9n .image-shape .label,#mermaid-7de2j9j8b9n .icon-shape .label{text-align:center;}#mermaid-7de2j9j8b9n .node.clickable{cursor:pointer;}#mermaid-7de2j9j8b9n .root .anchor path{fill:#999!important;stroke-width:0;stroke:#999;}#mermaid-7de2j9j8b9n .arrowheadPath{fill:#0b0b0b;}#mermaid-7de2j9j8b9n .edgePath .path{stroke:#999;stroke-width:2.0px;}#mermaid-7de2j9j8b9n .flowchart-link{stroke:#999;fill:none;}#mermaid-7de2j9j8b9n .edgeLabel{background-color:#ffffff;text-align:center;}#mermaid-7de2j9j8b9n .edgeLabel p{background-color:#ffffff;}#mermaid-7de2j9j8b9n .edgeLabel rect{opacity:0.5;background-color:#ffffff;fill:#ffffff;}#mermaid-7de2j9j8b9n .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#mermaid-7de2j9j8b9n .cluster rect{fill:#f8f8f8;stroke:#dddddd;stroke-width:1px;}#mermaid-7de2j9j8b9n .cluster text{fill:#444;}#mermaid-7de2j9j8b9n .cluster span{color:#444;}#mermaid-7de2j9j8b9n div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,Helvetica;font-size:12px;background:#dddddd;border:1px solid hsl(0, 0%, 76.6666666667%);border-radius:2px;pointer-events:none;z-index:100;}#mermaid-7de2j9j8b9n .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-7de2j9j8b9n rect.text{fill:none;stroke-width:0;}#mermaid-7de2j9j8b9n .icon-shape,#mermaid-7de2j9j8b9n .image-shape{background-color:#ffffff;text-align:center;}#mermaid-7de2j9j8b9n .icon-shape p,#mermaid-7de2j9j8b9n .image-shape p{background-color:#ffffff;padding:2px;}#mermaid-7de2j9j8b9n .icon-shape rect,#mermaid-7de2j9j8b9n .image-shape rect{opacity:0.5;background-color:#ffffff;fill:#ffffff;}#mermaid-7de2j9j8b9n :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="8" markerWidth="8" markerUnits="userSpaceOnUse" refY="5" refX="5" viewBox="0 0 10 10" class="marker flowchart-v2" id="mermaid-7de2j9j8b9n_flowchart-v2-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"></path></marker><marker orient="auto" markerHeight="8" markerWidth="8" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart-v2" id="mermaid-7de2j9j8b9n_flowchart-v2-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"></path></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart-v2" id="mermaid-7de2j9j8b9n_flowchart-v2-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"></circle></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart-v2" id="mermaid-7de2j9j8b9n_flowchart-v2-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"></circle></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart-v2" id="mermaid-7de2j9j8b9n_flowchart-v2-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"></path></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart-v2" id="mermaid-7de2j9j8b9n_flowchart-v2-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"></path></marker><g class="root"><g class="clusters"><g data-look="classic" id="subGraph2" class="cluster"><rect height="104" width="222.29375076293945" y="314" x="44.584373474121094" style=""></rect><g transform="translate(107.92499732971191, 314)" class="cluster-label"><foreignObject height="24" width="95.61250305175781"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>Binding Layer</p></span></div></foreignObject></g></g><g data-look="classic" id="subGraph1" class="cluster"><rect height="360" width="514.96875" y="492" x="22.731246948242188" style=""></rect><g transform="translate(214.5906219482422, 492)" class="cluster-label"><foreignObject height="24" width="131.25"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>Core Library (C++)</p></span></div></foreignObject></g></g><g data-look="classic" id="subGraph0" class="cluster"><rect height="232" width="474.93749809265137" y="8" x="8" style=""></rect><g transform="translate(193.23749828338623, 8)" class="cluster-label"><foreignObject height="24" width="104.4625015258789"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>User Interfaces</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_PythonAPI_NanoBind_0" d="M159.313,215L159.313,219.167C159.313,223.333,159.313,231.667,159.313,242C159.313,252.333,159.313,264.667,159.313,277C159.313,289.333,159.313,301.667,159.313,311.333C159.313,321,159.313,328,159.313,331.5L159.313,335"></path><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_CLI_PythonAPI_0" d="M159.313,87L159.313,93.167C159.313,99.333,159.313,111.667,159.313,123.333C159.313,135,159.313,146,159.313,151.5L159.313,157"></path><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_CppAPI_UrlClass_0" d="M406.206,215L409.423,219.167C412.64,223.333,419.073,231.667,422.29,242C425.506,252.333,425.506,264.667,425.506,277C425.506,289.333,425.506,301.667,425.506,316.5C425.506,331.333,425.506,348.667,425.506,366C425.506,383.333,425.506,400.667,425.506,415.5C425.506,430.333,425.506,442.667,425.506,455C425.506,467.333,425.506,479.667,425.506,489.333C425.506,499,425.506,506,425.506,509.5L425.506,513"></path><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_CppAPI_HostClass_0" d="M347.952,215L342.179,219.167C336.405,223.333,324.859,231.667,319.086,242C313.313,252.333,313.313,264.667,313.313,277C313.313,289.333,313.313,301.667,313.313,316.5C313.313,331.333,313.313,348.667,313.313,366C313.313,383.333,313.313,400.667,313.313,415.5C313.313,430.333,313.313,442.667,313.313,455C313.313,467.333,313.313,479.667,313.313,494.5C313.313,509.333,313.313,526.667,313.313,546C313.313,565.333,313.313,586.667,313.313,602.833C313.313,619,313.313,630,313.313,635.5L313.313,641"></path><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_NanoBind_UrlClass_0" d="M188.542,393L193.053,397.167C197.563,401.333,206.585,409.667,211.096,420C215.606,430.333,215.606,442.667,215.606,455C215.606,467.333,215.606,479.667,237.077,491.152C258.547,502.638,301.489,513.276,322.959,518.595L344.43,523.914"></path><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_NanoBind_HostClass_0" d="M163.505,393L164.152,397.167C164.799,401.333,166.093,409.667,166.74,420C167.387,430.333,167.387,442.667,167.387,455C167.387,467.333,167.387,479.667,167.387,494.5C167.387,509.333,167.387,526.667,167.387,546C167.387,565.333,167.387,586.667,180.837,603.232C194.287,619.798,221.187,631.596,234.637,637.495L248.087,643.393"></path><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_NanoBind_PSL_0" d="M130.825,393L126.428,397.167C122.032,401.333,113.239,409.667,108.843,420C104.447,430.333,104.447,442.667,104.447,455C104.447,467.333,104.447,479.667,104.447,494.5C104.447,509.333,104.447,526.667,104.447,546C104.447,565.333,104.447,586.667,104.447,608C104.447,629.333,104.447,650.667,104.447,672C104.447,693.333,104.447,714.667,114.87,731.174C125.293,747.682,146.14,759.363,156.563,765.204L166.986,771.045"></path><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_UrlClass_HostClass_0" d="M425.506,571L425.506,577.167C425.506,583.333,425.506,595.667,415.275,607.67C405.044,619.673,384.581,631.345,374.35,637.182L364.119,643.018"></path><path marker-end="url(#mermaid-7de2j9j8b9n_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_HostClass_PSL_0" d="M313.313,699L313.313,705.167C313.313,711.333,313.313,723.667,304.745,735.627C296.177,747.586,279.041,759.173,270.473,764.966L261.905,770.759"></path></g><g class="edgeLabels"><g transform="translate(159.3125, 277)" class="edgeLabel"><g transform="translate(-15.5, -12)" class="label"><foreignObject height="24" width="31"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>uses</p></span></div></foreignObject></g></g><g transform="translate(159.3125, 124)" class="edgeLabel"><g transform="translate(-15.5, -12)" class="label"><foreignObject height="24" width="31"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>uses</p></span></div></foreignObject></g></g><g transform="translate(425.5062484741211, 366)" class="edgeLabel"><g transform="translate(-44.650001525878906, -12)" class="label"><foreignObject height="24" width="89.30000305175781"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>direct access</p></span></div></foreignObject></g></g><g transform="translate(313.3125, 455)" class="edgeLabel"><g transform="translate(-44.650001525878906, -12)" class="label"><foreignObject height="24" width="89.30000305175781"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>direct access</p></span></div></foreignObject></g></g><g transform="translate(215.6062469482422, 455)" class="edgeLabel"><g transform="translate(-28.21875, -12)" class="label"><foreignObject height="24" width="56.4375"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>exposes</p></span></div></foreignObject></g></g><g transform="translate(167.3874969482422, 544)" class="edgeLabel"><g transform="translate(-28.21875, -12)" class="label"><foreignObject height="24" width="56.4375"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>exposes</p></span></div></foreignObject></g></g><g transform="translate(104.44687271118164, 608)" class="edgeLabel"><g transform="translate(-28.21875, -12)" class="label"><foreignObject height="24" width="56.4375"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>exposes</p></span></div></foreignObject></g></g><g transform="translate(425.5062484741211, 608)" class="edgeLabel"><g transform="translate(-29.556249618530273, -12)" class="label"><foreignObject height="24" width="59.11249923706055"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>contains</p></span></div></foreignObject></g></g><g transform="translate(313.3125, 736)" class="edgeLabel"><g transform="translate(-15.5, -12)" class="label"><foreignObject height="24" width="31"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" class="labelBkg" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"><p>uses</p></span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(159.3125, 188)" id="flowchart-PythonAPI-0" class="node default"><rect height="54" width="137.5374984741211" y="-27" x="-68.76874923706055" style="" class="basic label-container"></rect><g transform="translate(-38.76874923706055, -12)" style="" class="label"><rect></rect><foreignObject height="24" width="77.5374984741211"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>Python API</p></span></div></foreignObject></g></g><g transform="translate(159.3125, 60)" id="flowchart-CLI-1" class="node default"><rect height="54" width="232.625" y="-27" x="-116.3125" style="" class="basic label-container"></rect><g transform="translate(-86.3125, -12)" style="" class="label"><rect></rect><foreignObject height="24" width="172.625"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>Command Line Interface</p></span></div></foreignObject></g></g><g transform="translate(385.3624954223633, 188)" id="flowchart-CppAPI-2" class="node default"><rect height="54" width="119.72500228881836" y="-27" x="-59.86250114440918" style="" class="basic label-container"></rect><g transform="translate(-29.86250114440918, -12)" style="" class="label"><rect></rect><foreignObject height="24" width="59.72500228881836"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>C++ API</p></span></div></foreignObject></g></g><g transform="translate(425.5062484741211, 544)" id="flowchart-UrlClass-3" class="node default"><rect height="54" width="154.38750457763672" y="-27" x="-77.19375228881836" style="" class="basic label-container"></rect><g transform="translate(-47.19375228881836, -12)" style="" class="label"><rect></rect><foreignObject height="24" width="94.38750457763672"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>TLD::Url Class</p></span></div></foreignObject></g></g><g transform="translate(313.3125, 672)" id="flowchart-HostClass-4" class="node default"><rect height="54" width="166.9000015258789" y="-27" x="-83.45000076293945" style="" class="basic label-container"></rect><g transform="translate(-53.45000076293945, -12)" style="" class="label"><rect></rect><foreignObject height="24" width="106.9000015258789"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>TLD::Host Class</p></span></div></foreignObject></g></g><g transform="translate(218.65937423706055, 800)" id="flowchart-PSL-5" class="node default"><rect height="54" width="173.7375030517578" y="-27" x="-86.8687515258789" style="" class="basic label-container"></rect><g transform="translate(-56.868751525878906, -12)" style="" class="label"><rect></rect><foreignObject height="24" width="113.73750305175781"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>Public Suffix List</p></span></div></foreignObject></g></g><g transform="translate(159.3125, 366)" id="flowchart-NanoBind-6" class="node default"><rect height="54" width="127.38750457763672" y="-27" x="-63.69375228881836" style="" class="basic label-container"></rect><g transform="translate(-33.69375228881836, -12)" style="" class="label"><rect></rect><foreignObject height="24" width="67.38750457763672"><div style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel"><p>nanobind</p></span></div></foreignObject></g></g></g></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg aria-roledescription="sequence" role="graphics-document document" viewBox="-50 -10 1508 751" style="max-width: 1508px;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="mermaid-x8wexpovqdm"><g><rect class="actor actor-bottom" ry="3" rx="3" name="PublicSuffixList" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="1258"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="697.5" x="1333"><tspan dy="0" x="1333">PublicSuffixList</tspan></text></g><g><rect class="actor actor-bottom" ry="3" rx="3" name="HostClass" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="1007"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="697.5" x="1082"><tspan dy="0" x="1082">HostClass</tspan></text></g><g><rect class="actor actor-bottom" ry="3" rx="3" name="UrlClass" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="800"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="697.5" x="875"><tspan dy="0" x="875">UrlClass</tspan></text></g><g><rect class="actor actor-bottom" ry="3" rx="3" name="&quot;PSL&quot;" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="600"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="697.5" x="675"><tspan dy="0" x="675">PublicSuffixList</tspan></text></g><g><rect class="actor actor-bottom" ry="3" rx="3" name="&quot;Host&quot;" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="400"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="697.5" x="475"><tspan dy="0" x="475">HostClass</tspan></text></g><g><rect class="actor actor-bottom" ry="3" rx="3" name="&quot;Url&quot;" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="200"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="697.5" x="275"><tspan dy="0" x="275">UrlClass</tspan></text></g><g><rect class="actor actor-bottom" ry="3" rx="3" name="User" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="0"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="697.5" x="75"><tspan dy="0" x="75">User</tspan></text></g><g><line name="PublicSuffixList" stroke="#999" stroke-width="0.5px" class="actor-line 200" y2="665" x2="1333" y1="65" x1="1333" id="actor20"></line><g id="root-20"><rect class="actor actor-top" ry="3" rx="3" name="PublicSuffixList" height="65" width="150" stroke="#666" fill="#eaeaea" y="0" x="1258"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="32.5" x="1333"><tspan dy="0" x="1333">PublicSuffixList</tspan></text></g></g><g><line name="HostClass" stroke="#999" stroke-width="0.5px" class="actor-line 200" y2="665" x2="1082" y1="65" x1="1082" id="actor19"></line><g id="root-19"><rect class="actor actor-top" ry="3" rx="3" name="HostClass" height="65" width="150" stroke="#666" fill="#eaeaea" y="0" x="1007"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="32.5" x="1082"><tspan dy="0" x="1082">HostClass</tspan></text></g></g><g><line name="UrlClass" stroke="#999" stroke-width="0.5px" class="actor-line 200" y2="665" x2="875" y1="65" x1="875" id="actor18"></line><g id="root-18"><rect class="actor actor-top" ry="3" rx="3" name="UrlClass" height="65" width="150" stroke="#666" fill="#eaeaea" y="0" x="800"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="32.5" x="875"><tspan dy="0" x="875">UrlClass</tspan></text></g></g><g><line name="&quot;PSL&quot;" stroke="#999" stroke-width="0.5px" class="actor-line 200" y2="665" x2="675" y1="65" x1="675" id="actor17"></line><g id="root-17"><rect class="actor actor-top" ry="3" rx="3" name="&quot;PSL&quot;" height="65" width="150" stroke="#666" fill="#eaeaea" y="0" x="600"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="32.5" x="675"><tspan dy="0" x="675">PublicSuffixList</tspan></text></g></g><g><line name="&quot;Host&quot;" stroke="#999" stroke-width="0.5px" class="actor-line 200" y2="665" x2="475" y1="65" x1="475" id="actor16"></line><g id="root-16"><rect class="actor actor-top" ry="3" rx="3" name="&quot;Host&quot;" height="65" width="150" stroke="#666" fill="#eaeaea" y="0" x="400"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="32.5" x="475"><tspan dy="0" x="475">HostClass</tspan></text></g></g><g><line name="&quot;Url&quot;" stroke="#999" stroke-width="0.5px" class="actor-line 200" y2="665" x2="275" y1="65" x1="275" id="actor15"></line><g id="root-15"><rect class="actor actor-top" ry="3" rx="3" name="&quot;Url&quot;" height="65" width="150" stroke="#666" fill="#eaeaea" y="0" x="200"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="32.5" x="275"><tspan dy="0" x="275">UrlClass</tspan></text></g></g><g><line name="User" stroke="#999" stroke-width="0.5px" class="actor-line 200" y2="665" x2="75" y1="65" x1="75" id="actor14"></line><g id="root-14"><rect class="actor actor-top" ry="3" rx="3" name="User" height="65" width="150" stroke="#666" fill="#eaeaea" y="0" x="0"></rect><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor actor-box" alignment-baseline="central" dominant-baseline="central" y="32.5" x="75"><tspan dy="0" x="75">User</tspan></text></g></g><style>#mermaid-x8wexpovqdm{font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,Helvetica;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-x8wexpovqdm .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-x8wexpovqdm .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-x8wexpovqdm .error-icon{fill:#dddddd;}#mermaid-x8wexpovqdm .error-text{fill:#222222;stroke:#222222;}#mermaid-x8wexpovqdm .edge-thickness-normal{stroke-width:1px;}#mermaid-x8wexpovqdm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-x8wexpovqdm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-x8wexpovqdm .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-x8wexpovqdm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-x8wexpovqdm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-x8wexpovqdm .marker{fill:#999;stroke:#999;}#mermaid-x8wexpovqdm .marker.cross{stroke:#999;}#mermaid-x8wexpovqdm svg{font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,Helvetica;font-size:16px;}#mermaid-x8wexpovqdm p{margin:0;}#mermaid-x8wexpovqdm .actor{stroke:#cccccc;fill:#ffffff;}#mermaid-x8wexpovqdm text.actor&gt;tspan{fill:#333;stroke:none;}#mermaid-x8wexpovqdm .actor-line{stroke:#cccccc;}#mermaid-x8wexpovqdm .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#999999;}#mermaid-x8wexpovqdm .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#999999;}#mermaid-x8wexpovqdm #arrowhead path{fill:#999999;stroke:#999999;}#mermaid-x8wexpovqdm .sequenceNumber{fill:#666666;}#mermaid-x8wexpovqdm #sequencenumber{fill:#999999;}#mermaid-x8wexpovqdm #crosshead path{fill:#999999;stroke:#999999;}#mermaid-x8wexpovqdm .messageText{fill:#333333;stroke:none;}#mermaid-x8wexpovqdm .labelBox{stroke:#dddddd;fill:#ffffff;}#mermaid-x8wexpovqdm .labelText,#mermaid-x8wexpovqdm .labelText&gt;tspan{fill:#333;stroke:none;}#mermaid-x8wexpovqdm .loopText,#mermaid-x8wexpovqdm .loopText&gt;tspan{fill:#333;stroke:none;}#mermaid-x8wexpovqdm .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#dddddd;fill:#dddddd;}#mermaid-x8wexpovqdm .note{stroke:#e6d280;fill:#fff5ad;}#mermaid-x8wexpovqdm .noteText,#mermaid-x8wexpovqdm .noteText&gt;tspan{fill:#333;stroke:none;}#mermaid-x8wexpovqdm .activation0{fill:hsl(-120, 0%, 91.7647058824%);stroke:hsl(-120, 0%, 81.7647058824%);}#mermaid-x8wexpovqdm .activation1{fill:hsl(-120, 0%, 91.7647058824%);stroke:hsl(-120, 0%, 81.7647058824%);}#mermaid-x8wexpovqdm .activation2{fill:hsl(-120, 0%, 91.7647058824%);stroke:hsl(-120, 0%, 81.7647058824%);}#mermaid-x8wexpovqdm .actorPopupMenu{position:absolute;}#mermaid-x8wexpovqdm .actorPopupMenuPanel{position:absolute;fill:#ffffff;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-x8wexpovqdm .actor-man line{stroke:#cccccc;fill:#ffffff;}#mermaid-x8wexpovqdm .actor-man circle,#mermaid-x8wexpovqdm line{stroke:#cccccc;fill:#ffffff;stroke-width:2px;}#mermaid-x8wexpovqdm :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g></g><defs><symbol height="24" width="24" id="computer"><path d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z" transform="scale(.5)"></path></symbol></defs><defs><symbol clip-rule="evenodd" fill-rule="evenodd" id="database"><path d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z" transform="scale(.5)"></path></symbol></defs><defs><symbol height="24" width="24" id="clock"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z" transform="scale(.5)"></path></symbol></defs><defs><marker orient="auto-start-reverse" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="7.9" id="arrowhead"><path d="M -1 0 L 10 5 L 0 10 z"></path></marker></defs><defs><marker refY="4.5" refX="4" orient="auto" markerHeight="8" markerWidth="15" id="crosshead"><path style="stroke-dasharray: 0, 0;" d="M 1,2 L 6,7 M 6,2 L 1,7" stroke-width="1pt" stroke="#000000" fill="none"></path></marker></defs><defs><marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="15.5" id="filled-head"><path d="M 18,7 L9,13 L14,7 L9,1 Z"></path></marker></defs><defs><marker orient="auto" markerHeight="40" markerWidth="60" refY="15" refX="15" id="sequencenumber"><circle r="6" cy="15" cx="15"></circle></marker></defs><g><rect class="activation0" height="424" width="10" stroke="#666" fill="#EDF2AE" y="117" x="870"></rect></g><g><rect class="activation0" height="236" width="10" stroke="#666" fill="#EDF2AE" y="253" x="1077"></rect></g><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="80" x="474">Create Url(url_string)</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="117" x2="871" y1="117" x1="76"></line><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="132" x="880">Parse URL components</text><path style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" d="M 880,169 C 940,159 940,199 880,189"></path><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="214" x="979">Parse hostname</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="251" x2="1078" y1="251" x1="880"></line><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="266" x="1208">Check against PSL</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="303" x2="1329" y1="303" x1="1087"></line><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="318" x="1211">Return suffix information</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="355" x2="1090" y1="355" x1="1332"></line><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="370" x="1087">Extract subdomain, domain, suffix</text><path style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" d="M 1087,407 C 1147,397 1147,437 1087,427"></path><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="452" x="980">Return Host object</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="489" x2="883" y1="489" x1="1077"></line><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="504" x="475">Return complete Url object</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="541" x2="79" y1="541" x1="870"></line><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="556" x="474">Access components (protocol, path, etc.)</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="593" x2="871" y1="593" x1="76"></line><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="608" x="577">Access domain components (domain, suffix, etc.)</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="645" x2="1078" y1="645" x1="76"></line></svg>