From 5926a7c0ddb8755a5e504e6f077e081f5f4c7674 Mon Sep 17 00:00:00 2001 From: Iurii Pliner Date: Mon, 23 Dec 2024 18:51:52 +0000 Subject: [PATCH 01/43] Add support for Python 3.13 (#1080) Signed-off-by: Iurii Pliner --- .circleci/config.yml | 1 + setup.py | 1 + tox.ini | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 26109fcd..4eaf808f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -79,6 +79,7 @@ workflows: - "3.10" - "3.11" - "3.12" + - "3.13" - test_nooptionals: matrix: parameters: diff --git a/setup.py b/setup.py index 1665ed7c..0d5d887f 100644 --- a/setup.py +++ b/setup.py @@ -42,6 +42,7 @@ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: System :: Monitoring", diff --git a/tox.ini b/tox.ini index 354ad69c..deb74e14 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = coverage-clean,py{3.9,3.10,3.11,3.12,py3.9,3.9-nooptionals},coverage-report,flake8,isort,mypy +envlist = coverage-clean,py{3.9,3.10,3.11,3.12,3.13,py3.9,3.9-nooptionals},coverage-report,flake8,isort,mypy [testenv] deps = From ecf344b0bfacadcc0f255916bbf7f10b68c7e537 Mon Sep 17 00:00:00 2001 From: Arianna Vespri <36129782+vesari@users.noreply.github.com> Date: Fri, 17 Jan 2025 19:10:32 +0100 Subject: [PATCH 02/43] Correct nh sample span structure and parsing (#1082) * Add test for nh with more spans * Allow for span arrays to be of whatever length and for delta lists to be None * Allow for spans to be None, condense spans and deltas composition Signed-off-by: Arianna Vespri --- prometheus_client/openmetrics/parser.py | 83 ++++++++++++++----------- prometheus_client/samples.py | 6 +- tests/openmetrics/test_parser.py | 12 ++++ 3 files changed, 63 insertions(+), 38 deletions(-) diff --git a/prometheus_client/openmetrics/parser.py b/prometheus_client/openmetrics/parser.py index 1d270915..d967e83b 100644 --- a/prometheus_client/openmetrics/parser.py +++ b/prometheus_client/openmetrics/parser.py @@ -307,12 +307,11 @@ def _parse_nh_sample(text, suffixes): def _parse_nh_struct(text): pattern = r'(\w+):\s*([^,}]+)' - - re_spans = re.compile(r'(positive_spans|negative_spans):\[(\d+:\d+,\d+:\d+)\]') + re_spans = re.compile(r'(positive_spans|negative_spans):\[(\d+:\d+(,\d+:\d+)*)\]') re_deltas = re.compile(r'(positive_deltas|negative_deltas):\[(-?\d+(?:,-?\d+)*)\]') items = dict(re.findall(pattern, text)) - spans = dict(re_spans.findall(text)) + span_matches = re_spans.findall(text) deltas = dict(re_deltas.findall(text)) count_value = int(items['count']) @@ -321,38 +320,11 @@ def _parse_nh_struct(text): zero_threshold = float(items['zero_threshold']) zero_count = int(items['zero_count']) - try: - pos_spans_text = spans['positive_spans'] - elems = pos_spans_text.split(',') - arg1 = [int(x) for x in elems[0].split(':')] - arg2 = [int(x) for x in elems[1].split(':')] - pos_spans = (BucketSpan(arg1[0], arg1[1]), BucketSpan(arg2[0], arg2[1])) - except KeyError: - pos_spans = None - - try: - neg_spans_text = spans['negative_spans'] - elems = neg_spans_text.split(',') - arg1 = [int(x) for x in elems[0].split(':')] - arg2 = [int(x) for x in elems[1].split(':')] - neg_spans = (BucketSpan(arg1[0], arg1[1]), BucketSpan(arg2[0], arg2[1])) - except KeyError: - neg_spans = None - - try: - pos_deltas_text = deltas['positive_deltas'] - elems = pos_deltas_text.split(',') - pos_deltas = tuple([int(x) for x in elems]) - except KeyError: - pos_deltas = None - - try: - neg_deltas_text = deltas['negative_deltas'] - elems = neg_deltas_text.split(',') - neg_deltas = tuple([int(x) for x in elems]) - except KeyError: - neg_deltas = None - + pos_spans = _compose_spans(span_matches, 'positive_spans') + neg_spans = _compose_spans(span_matches, 'negative_spans') + pos_deltas = _compose_deltas(deltas, 'positive_deltas') + neg_deltas = _compose_deltas(deltas, 'negative_deltas') + return NativeHistogram( count_value=count_value, sum_value=sum_value, @@ -364,6 +336,47 @@ def _parse_nh_struct(text): pos_deltas=pos_deltas, neg_deltas=neg_deltas ) + + +def _compose_spans(span_matches, spans_name): + """Takes a list of span matches (expected to be a list of tuples) and a string + (the expected span list name) and processes the list so that the values extracted + from the span matches can be used to compose a tuple of BucketSpan objects""" + spans = {} + for match in span_matches: + # Extract the key from the match (first element of the tuple). + key = match[0] + # Extract the value from the match (second element of the tuple). + # Split the value string by commas to get individual pairs, + # split each pair by ':' to get start and end, and convert them to integers. + value = [tuple(map(int, pair.split(':'))) for pair in match[1].split(',')] + # Store the processed value in the spans dictionary with the key. + spans[key] = value + if spans_name not in spans: + return None + out_spans = [] + # Iterate over each start and end tuple in the list of tuples for the specified spans_name. + for start, end in spans[spans_name]: + # Compose a BucketSpan object with the start and end values + # and append it to the out_spans list. + out_spans.append(BucketSpan(start, end)) + # Convert to tuple + out_spans_tuple = tuple(out_spans) + return out_spans_tuple + + +def _compose_deltas(deltas, deltas_name): + """Takes a list of deltas matches (a dictionary) and a string (the expected delta list name), + and processes its elements to compose a tuple of integers representing the deltas""" + if deltas_name not in deltas: + return None + out_deltas = deltas.get(deltas_name) + if out_deltas is not None and out_deltas.strip(): + elems = out_deltas.split(',') + # Convert each element in the list elems to an integer + # after stripping whitespace and create a tuple from these integers. + out_deltas_tuple = tuple(int(x.strip()) for x in elems) + return out_deltas_tuple def _group_for_sample(sample, name, typ): diff --git a/prometheus_client/samples.py b/prometheus_client/samples.py index b57a5d48..16e03c04 100644 --- a/prometheus_client/samples.py +++ b/prometheus_client/samples.py @@ -1,4 +1,4 @@ -from typing import Dict, NamedTuple, Optional, Sequence, Tuple, Union +from typing import Dict, NamedTuple, Optional, Sequence, Union class Timestamp: @@ -47,8 +47,8 @@ class NativeHistogram(NamedTuple): schema: int zero_threshold: float zero_count: float - pos_spans: Optional[Tuple[BucketSpan, BucketSpan]] = None - neg_spans: Optional[Tuple[BucketSpan, BucketSpan]] = None + pos_spans: Optional[Sequence[BucketSpan]] = None + neg_spans: Optional[Sequence[BucketSpan]] = None pos_deltas: Optional[Sequence[int]] = None neg_deltas: Optional[Sequence[int]] = None diff --git a/tests/openmetrics/test_parser.py b/tests/openmetrics/test_parser.py index 019929e6..aeaa6ed6 100644 --- a/tests/openmetrics/test_parser.py +++ b/tests/openmetrics/test_parser.py @@ -242,6 +242,18 @@ def test_native_histogram_utf8_stress(self): hfm.add_sample("native{histogram", {'xx{} # {}': ' EOF # {}}}'}, None, None, None, NativeHistogram(24, 100, 0, 0.001, 4, (BucketSpan(0, 2), BucketSpan(1, 2)), (BucketSpan(0, 2), BucketSpan(1, 2)), (2, 1, -3, 3), (2, 1, -2, 3))) self.assertEqual([hfm], families) + def test_native_histogram_three_pos_spans_no_neg_spans_or_deltas(self): + families = text_string_to_metric_families("""# TYPE nhsp histogram +# HELP nhsp Is a basic example of a native histogram with three spans +nhsp {count:4,sum:6,schema:3,zero_threshold:2.938735877055719e-39,zero_count:1,positive_spans:[0:1,7:1,4:1],positive_deltas:[1,0,0]} +# EOF +""") + families = list(families) + + hfm = HistogramMetricFamily("nhsp", "Is a basic example of a native histogram with three spans") + hfm.add_sample("nhsp", None, None, None, None, NativeHistogram(4, 6, 3, 2.938735877055719e-39, 1, (BucketSpan(0, 1), BucketSpan(7, 1), BucketSpan(4, 1)), None, (1, 0, 0), None)) + self.assertEqual([hfm], families) + def test_native_histogram_with_labels(self): families = text_string_to_metric_families("""# TYPE hist_w_labels histogram # HELP hist_w_labels Is a basic example of a native histogram with labels From b0a6f1202308e77784c8614c834aad5a73c5a256 Mon Sep 17 00:00:00 2001 From: Chris Marchbanks Date: Tue, 21 Jan 2025 10:20:03 -0700 Subject: [PATCH 03/43] Migrate from setup.py to pyproject.toml (#1084) Update the project configuration to use a pyproject.toml file instead of setup.py. This is the preferred tool and will allow easier integration with other tools in the future. We can also get rid of MANIFEST.in as the cache and compiled files are automatically excluded. Signed-off-by: Chris Marchbanks --- MANIFEST.in | 4 ---- pyproject.toml | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 51 -------------------------------------------------- tox.ini | 4 ++-- 4 files changed, 51 insertions(+), 57 deletions(-) delete mode 100644 MANIFEST.in create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index cad821dd..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,4 +0,0 @@ -graft tests -global-exclude *.py[cod] -prune __pycache__ -prune */__pycache__ diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..05b17551 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,49 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + +[project] +name = "prometheus_client" +version = "0.21.1" +description = "Python client for the Prometheus monitoring system." +readme = "README.md" +license = { file = "LICENSE" } +requires-python = ">=3.9" +authors = [ + { name = "The Prometheus Authors", email = "prometheus-developers@googlegroups.com" }, +] +keywords = [ + "prometheus", + "monitoring", + "instrumentation", + "client", +] +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: Information Technology", + "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Topic :: System :: Monitoring", + "License :: OSI Approved :: Apache Software License", +] + +[project.optional-dependencies] +twisted = [ + "twisted", +] + +[project.urls] +Homepage = "https://github.com/prometheus/client_python" +Documentation = "https://prometheus.github.io/client_python/" + +[tool.setuptools.package-data] +prometheus_client = ['py.typed'] diff --git a/setup.py b/setup.py deleted file mode 100644 index 0d5d887f..00000000 --- a/setup.py +++ /dev/null @@ -1,51 +0,0 @@ -from os import path - -from setuptools import setup - -with open(path.join(path.abspath(path.dirname(__file__)), 'README.md')) as f: - long_description = f.read() - - -setup( - name="prometheus_client", - version="0.21.0", - author="Brian Brazil", - author_email="brian.brazil@robustperception.io", - description="Python client for the Prometheus monitoring system.", - long_description=long_description, - long_description_content_type='text/markdown', - license="Apache Software License 2.0", - keywords="prometheus monitoring instrumentation client", - url="https://github.com/prometheus/client_python", - packages=[ - 'prometheus_client', - 'prometheus_client.bridge', - 'prometheus_client.openmetrics', - 'prometheus_client.twisted', - ], - package_data={ - 'prometheus_client': ['py.typed'] - }, - extras_require={ - 'twisted': ['twisted'], - }, - test_suite="tests", - python_requires=">=3.9", - classifiers=[ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "Intended Audience :: Information Technology", - "Intended Audience :: System Administrators", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - "Topic :: System :: Monitoring", - "License :: OSI Approved :: Apache Software License", - ], -) diff --git a/tox.ini b/tox.ini index deb74e14..157a8bb2 100644 --- a/tox.ini +++ b/tox.ini @@ -34,14 +34,14 @@ deps = flake8-import-order==0.18.2 skip_install = true commands = - flake8 prometheus_client/ tests/ setup.py + flake8 prometheus_client/ tests/ [testenv:isort] deps = isort==5.10.1 skip_install = true commands = - isort --check prometheus_client/ tests/ setup.py + isort --check prometheus_client/ tests/ [testenv:mypy] deps = From 46eae7bae88f76951f7246d9f359f2dd5eeff110 Mon Sep 17 00:00:00 2001 From: Mallika Muralidharan <179001939+mallika-mur@users.noreply.github.com> Date: Tue, 28 Jan 2025 20:49:46 +0100 Subject: [PATCH 04/43] Changed pushgateway.md (#1083) * Changed pushgateway.md --------- Signed-off-by: Mallika Muralidharan Signed-off-by: Mallika Muralidharan Signed-off-by: Mallika Muralidharan <179001939+mallika-mur@users.noreply.github.com> Co-authored-by: Mallika Muralidharan --- docs/content/exporting/pushgateway.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/content/exporting/pushgateway.md b/docs/content/exporting/pushgateway.md index f1ea5e43..bf5eb112 100644 --- a/docs/content/exporting/pushgateway.md +++ b/docs/content/exporting/pushgateway.md @@ -5,6 +5,9 @@ weight: 3 The [Pushgateway](https://github.com/prometheus/pushgateway) allows ephemeral and batch jobs to expose their metrics to Prometheus. +Since Prometheus may not be able to scrape such a target, the targets can +push their metrics to a separate instance of the Pushgateway, +which then exposes these metrics to Prometheus. ```python from prometheus_client import CollectorRegistry, Gauge, push_to_gateway @@ -18,16 +21,20 @@ push_to_gateway('localhost:9091', job='batchA', registry=registry) A separate registry is used, as the default registry may contain other metrics such as those from the Process Collector. -Pushgateway functions take a grouping key. `push_to_gateway` replaces metrics -with the same grouping key, `pushadd_to_gateway` only replaces metrics with the -same name and grouping key and `delete_from_gateway` deletes metrics with the -given job and grouping key. See the +Pushgateway functions take a grouping key. +1. `push_to_gateway` replaces metrics +with the same grouping key. +2. `pushadd_to_gateway` only replaces metrics with the +same name and grouping key. +3. `delete_from_gateway` deletes metrics with the +given job and grouping key. +4. `instance_ip_grouping_key` returns a grouping key with the instance label set +to the host's IP address. + +See the [Pushgateway documentation](https://github.com/prometheus/pushgateway/blob/master/README.md) for more information. -`instance_ip_grouping_key` returns a grouping key with the instance label set -to the host's IP address. - # Handlers for authentication If the push gateway you are connecting to is protected with HTTP Basic Auth, From de8bb4adf7ebbb73eb50ed4ae9e941ed2f961d0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20G=C3=A4bler?= <34601603+dg98@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:05:56 +0100 Subject: [PATCH 05/43] Fix order-dependent flaky tests related to UTF-8 support (#1093) * Fix order-dependent flaky tests related to UTF-8 support * Add context-manager for legacy validation --------- Signed-off-by: Dennis Gaebler --- tests/test_core.py | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/tests/test_core.py b/tests/test_core.py index f28c9abc..284bce09 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -109,10 +109,9 @@ def test_inc_not_observable(self): assert_not_observable(counter.inc) def test_exemplar_invalid_label_name(self): - enable_legacy_validation() - self.assertRaises(ValueError, self.counter.inc, exemplar={':o)': 'smile'}) - self.assertRaises(ValueError, self.counter.inc, exemplar={'1': 'number'}) - disable_legacy_validation() + with LegacyValidationContextManager(): + self.assertRaises(ValueError, self.counter.inc, exemplar={':o)': 'smile'}) + self.assertRaises(ValueError, self.counter.inc, exemplar={'1': 'number'}) self.counter.inc(exemplar={':o)': 'smile'}) self.counter.inc(exemplar={'1': 'number'}) @@ -510,12 +509,11 @@ def test_block_decorator_with_label(self): self.assertEqual(1, value('hl_bucket', {'le': '+Inf', 'l': 'a'})) def test_exemplar_invalid_legacy_label_name(self): - enable_legacy_validation() - self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={':o)': 'smile'}) - self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={'1': 'number'}) - + with LegacyValidationContextManager(): + self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={':o)': 'smile'}) + self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={'1': 'number'}) + def test_exemplar_invalid_label_name(self): - disable_legacy_validation() self.histogram.observe(3.0, exemplar={':o)': 'smile'}) self.histogram.observe(3.0, exemplar={'1': 'number'}) @@ -660,18 +658,17 @@ def test_labels_by_kwarg(self): self.assertRaises(ValueError, self.two_labels.labels, {'a': 'x'}, b='y') def test_invalid_legacy_names_raise(self): - enable_legacy_validation() - self.assertRaises(ValueError, Counter, '', 'help') - self.assertRaises(ValueError, Counter, '^', 'help') - self.assertRaises(ValueError, Counter, '', 'help', namespace='&') - self.assertRaises(ValueError, Counter, '', 'help', subsystem='(') - self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['^']) - self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['a:b']) - self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['__reserved']) - self.assertRaises(ValueError, Summary, 'c_total', '', labelnames=['quantile']) + with LegacyValidationContextManager(): + self.assertRaises(ValueError, Counter, '', 'help') + self.assertRaises(ValueError, Counter, '^', 'help') + self.assertRaises(ValueError, Counter, '', 'help', namespace='&') + self.assertRaises(ValueError, Counter, '', 'help', subsystem='(') + self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['^']) + self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['a:b']) + self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['__reserved']) + self.assertRaises(ValueError, Summary, 'c_total', '', labelnames=['quantile']) def test_invalid_names_raise(self): - disable_legacy_validation() self.assertRaises(ValueError, Counter, '', 'help') self.assertRaises(ValueError, Counter, '', 'help', namespace='&') self.assertRaises(ValueError, Counter, '', 'help', subsystem='(') @@ -1007,5 +1004,13 @@ def test_restricted_registry_does_not_yield_while_locked(self): self.assertFalse(registry._lock.locked()) +class LegacyValidationContextManager: + def __enter__(self): + enable_legacy_validation() + + def __exit__(self, exc_type, exc_value, exc_tb): + disable_legacy_validation() + + if __name__ == '__main__': unittest.main() From e3bfa1f10195b6959c5f49503762d07a47e1654c Mon Sep 17 00:00:00 2001 From: Chris Marchbanks Date: Mon, 3 Mar 2025 09:22:16 -0700 Subject: [PATCH 06/43] Update versions for docs Github actions (#1096) With the deprecation of artifact@v3 the docs pipeline is no longer working. Upgrade all of the versions while in the file. Signed-off-by: Chris Marchbanks --- .github/workflows/github-pages.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index 4302b706..f7b864ab 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -13,6 +13,7 @@ permissions: contents: read pages: write id-token: write + actions: read # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. @@ -39,13 +40,13 @@ jobs: #- name: Install Dart Sass # run: sudo snap install dart-sass - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Setup Pages id: pages - uses: actions/configure-pages@v3 + uses: actions/configure-pages@v5 - name: Install Node.js dependencies run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" working-directory: ./docs @@ -61,7 +62,7 @@ jobs: --baseURL "${{ steps.pages.outputs.base_url }}/" working-directory: ./docs - name: Upload artifact - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v3 with: path: ./docs/public @@ -75,4 +76,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 From c1ff3b28d32ff78a1a6ec0ddd8f81b70ca365b3f Mon Sep 17 00:00:00 2001 From: "Ethan S. Chen" Date: Tue, 18 Mar 2025 22:50:01 +0800 Subject: [PATCH 07/43] Update docs (#1097) Signed-off-by: Ethan S. Chen --- .github/workflows/github-pages.yaml | 2 +- docs/.gitignore | 2 +- docs/README.md | 39 +- docs/content/_index.md | 48 +- docs/content/getting-started/_index.md | 4 - .../getting-started/three-step-demo.md | 48 -- docs/hugo.toml | 101 +++- docs/themes/hugo-geekdoc/.nvmrc | 1 + docs/themes/hugo-geekdoc/README.md | 2 +- docs/themes/hugo-geekdoc/VERSION | 2 +- docs/themes/hugo-geekdoc/data/assets.json | 502 ++++++++++++++---- docs/themes/hugo-geekdoc/eslint.config.js | 22 + docs/themes/hugo-geekdoc/i18n/am.yaml | 52 ++ docs/themes/hugo-geekdoc/i18n/da.yaml | 53 ++ docs/themes/hugo-geekdoc/i18n/fr.yaml | 53 ++ docs/themes/hugo-geekdoc/i18n/oc.yaml | 53 ++ docs/themes/hugo-geekdoc/layouts/404.html | 2 +- .../hugo-geekdoc/layouts/_default/baseof.html | 13 +- .../hugo-geekdoc/layouts/_default/list.html | 1 + .../hugo-geekdoc/layouts/_default/single.html | 2 + .../layouts/_default/taxonomy.html | 2 + .../hugo-geekdoc/layouts/_default/terms.html | 2 + .../layouts/partials/head/others.html | 2 +- .../layouts/partials/language.html | 2 +- ...menu-nextprev.html => menu-bundle-np.html} | 57 +- .../layouts/partials/menu-bundle.html | 7 +- .../layouts/partials/menu-extra.html | 9 +- .../layouts/partials/menu-filetree-np.html | 107 ++++ .../partials/microformats/opengraph.html | 2 +- .../layouts/partials/microformats/schema.html | 4 +- .../partials/microformats/twitter_cards.html | 2 +- .../layouts/partials/page-metadata.html | 13 + .../hugo-geekdoc/layouts/partials/search.html | 2 +- .../layouts/partials/site-header.html | 4 +- .../hugo-geekdoc/layouts/posts/list.html | 2 + .../hugo-geekdoc/layouts/posts/single.html | 2 +- .../layouts/shortcodes/audio.html | 23 + .../layouts/shortcodes/avatar.html | 57 ++ .../layouts/shortcodes/columns.html | 2 +- .../hugo-geekdoc/layouts/shortcodes/gist.html | 1 + .../hugo-geekdoc/layouts/shortcodes/hint.html | 11 +- .../hugo-geekdoc/layouts/shortcodes/img.html | 50 +- .../layouts/shortcodes/progress.html | 3 +- .../layouts/shortcodes/propertylist.html | 5 +- .../layouts/shortcodes/toc-tree.html | 36 +- .../static/favicon/android-chrome-144x144.png | Bin 4506 -> 2246 bytes .../static/favicon/android-chrome-192x192.png | Bin 6247 -> 3210 bytes .../static/favicon/android-chrome-256x256.png | Bin 8700 -> 4149 bytes .../static/favicon/android-chrome-36x36.png | Bin 1185 -> 682 bytes .../static/favicon/android-chrome-384x384.png | Bin 14691 -> 7255 bytes .../static/favicon/android-chrome-48x48.png | Bin 1454 -> 785 bytes .../static/favicon/android-chrome-512x512.png | Bin 21745 -> 10167 bytes .../static/favicon/android-chrome-72x72.png | Bin 2173 -> 1228 bytes .../static/favicon/android-chrome-96x96.png | Bin 2902 -> 1455 bytes .../favicon/apple-touch-icon-1024x1024.png | Bin 44655 -> 28555 bytes .../favicon/apple-touch-icon-114x114.png | Bin 3939 -> 1817 bytes .../favicon/apple-touch-icon-120x120.png | Bin 3848 -> 1708 bytes .../favicon/apple-touch-icon-144x144.png | Bin 4651 -> 2446 bytes .../favicon/apple-touch-icon-152x152.png | Bin 4904 -> 2581 bytes .../favicon/apple-touch-icon-167x167.png | Bin 5418 -> 2881 bytes .../favicon/apple-touch-icon-180x180.png | Bin 5488 -> 2714 bytes .../static/favicon/apple-touch-icon-57x57.png | Bin 1935 -> 982 bytes .../static/favicon/apple-touch-icon-60x60.png | Bin 1986 -> 932 bytes .../static/favicon/apple-touch-icon-72x72.png | Bin 2173 -> 1273 bytes .../static/favicon/apple-touch-icon-76x76.png | Bin 2307 -> 1257 bytes .../favicon/apple-touch-icon-precomposed.png | Bin 5488 -> 2714 bytes .../static/favicon/apple-touch-icon.png | Bin 5488 -> 2714 bytes .../apple-touch-startup-image-1125x2436.png | Bin 90067 -> 34421 bytes .../apple-touch-startup-image-1136x640.png | Bin 35771 -> 14264 bytes .../apple-touch-startup-image-1170x2532.png | Bin 96814 -> 35593 bytes .../apple-touch-startup-image-1179x2556.png | Bin 0 -> 36122 bytes .../apple-touch-startup-image-1242x2208.png | Bin 99127 -> 38178 bytes .../apple-touch-startup-image-1242x2688.png | Bin 105836 -> 38449 bytes .../apple-touch-startup-image-1284x2778.png | Bin 109562 -> 40415 bytes .../apple-touch-startup-image-1290x2796.png | Bin 0 -> 38496 bytes .../apple-touch-startup-image-1334x750.png | Bin 45112 -> 17849 bytes .../apple-touch-startup-image-1488x2266.png | Bin 0 -> 46150 bytes .../apple-touch-startup-image-1536x2048.png | Bin 126468 -> 48063 bytes .../apple-touch-startup-image-1620x2160.png | Bin 139509 -> 50761 bytes .../apple-touch-startup-image-1640x2160.png | Bin 0 -> 51512 bytes .../apple-touch-startup-image-1668x2224.png | Bin 143774 -> 52584 bytes .../apple-touch-startup-image-1668x2388.png | Bin 145114 -> 53231 bytes .../apple-touch-startup-image-1792x828.png | Bin 53255 -> 19743 bytes .../apple-touch-startup-image-2048x1536.png | Bin 129401 -> 47501 bytes .../apple-touch-startup-image-2048x2732.png | Bin 204315 -> 68870 bytes .../apple-touch-startup-image-2160x1620.png | Bin 142250 -> 50168 bytes .../apple-touch-startup-image-2160x1640.png | Bin 0 -> 50719 bytes .../apple-touch-startup-image-2208x1242.png | Bin 100183 -> 36319 bytes .../apple-touch-startup-image-2224x1668.png | Bin 145637 -> 52053 bytes .../apple-touch-startup-image-2266x1488.png | Bin 0 -> 45351 bytes .../apple-touch-startup-image-2388x1668.png | Bin 146825 -> 52019 bytes .../apple-touch-startup-image-2436x1125.png | Bin 88281 -> 31694 bytes .../apple-touch-startup-image-2532x1170.png | Bin 94235 -> 32612 bytes .../apple-touch-startup-image-2556x1179.png | Bin 0 -> 33061 bytes .../apple-touch-startup-image-2688x1242.png | Bin 102979 -> 35333 bytes .../apple-touch-startup-image-2732x2048.png | Bin 205972 -> 67100 bytes .../apple-touch-startup-image-2778x1284.png | Bin 111486 -> 37048 bytes .../apple-touch-startup-image-2796x1290.png | Bin 0 -> 37351 bytes .../apple-touch-startup-image-640x1136.png | Bin 35116 -> 15332 bytes .../apple-touch-startup-image-750x1334.png | Bin 45375 -> 19095 bytes .../apple-touch-startup-image-828x1792.png | Bin 54274 -> 22015 bytes .../static/favicon/browserconfig.xml | 8 +- .../static/favicon/favicon-16x16.png | Bin 616 -> 422 bytes .../static/favicon/favicon-32x32.png | Bin 1140 -> 699 bytes .../static/favicon/favicon-48x48.png | Bin 1900 -> 846 bytes .../hugo-geekdoc/static/favicon/favicon.ico | Bin 33310 -> 33310 bytes .../{manifest.json => manifest.webmanifest} | 25 +- .../static/favicon/mstile-144x144.png | Bin 4506 -> 2246 bytes .../static/favicon/mstile-150x150.png | Bin 4412 -> 2104 bytes .../static/favicon/mstile-310x150.png | Bin 4257 -> 2127 bytes .../static/favicon/mstile-310x310.png | Bin 10949 -> 5496 bytes .../static/favicon/mstile-70x70.png | Bin 2125 -> 1113 bytes .../static/fonts/GeekdocIcons.woff | Bin 6140 -> 6140 bytes .../static/fonts/GeekdocIcons.woff2 | Bin 5084 -> 5084 bytes .../static/js/110-f4b990d9.chunk.min.js | 1 + .../static/js/116-341f79d9.chunk.min.js | 1 - .../static/js/118-f1de6a20.chunk.min.js | 1 - .../static/js/12-0b8427d1.chunk.min.js | 1 + .../static/js/130-3b252fb9.chunk.min.js | 1 + .../static/js/164-f339d58d.chunk.min.js | 1 + .../static/js/165-06872da1.chunk.min.js | 2 + ... => 165-06872da1.chunk.min.js.LICENSE.txt} | 8 +- .../static/js/175-405e6b1c.chunk.min.js | 1 + .../static/js/19-86f47ecd.chunk.min.js | 1 - .../static/js/237-c0a3f3fe.chunk.min.js | 1 + .../static/js/240-cd383fa4.chunk.min.js | 1 + .../static/js/244-c41eb325.chunk.min.js | 1 + .../static/js/354-5c1850f7.chunk.min.js | 1 + .../static/js/355-ef4f96e9.chunk.min.js | 1 + .../static/js/357-e9bfa102.chunk.min.js | 1 + .../static/js/361-f7cd601a.chunk.min.js | 1 - .../static/js/383-e450e912.chunk.min.js | 1 + .../static/js/387-3546ecdc.chunk.min.js | 1 + .../static/js/391-549a9d24.chunk.min.js | 1 + .../static/js/410-ec3f5ed1.chunk.min.js | 1 + .../static/js/413-c02a8543.chunk.min.js | 1 + .../static/js/417-65958f5a.chunk.min.js | 1 + .../static/js/423-897d7f17.chunk.min.js | 1 - .../static/js/430-cc171d93.chunk.min.js | 1 - .../static/js/433-f2655a46.chunk.min.js | 1 - .../static/js/438-760c9ed3.chunk.min.js | 1 - .../static/js/452-e65d6d68.chunk.min.js | 1 + .../static/js/476-86e5cf96.chunk.min.js | 1 - .../static/js/485-3b9fa0c4.chunk.min.js | 1 + .../static/js/506-6950d52c.chunk.min.js | 1 - .../static/js/519-8d0cec7f.chunk.min.js | 1 - .../static/js/535-dcead599.chunk.min.js | 1 - .../static/js/540-ae28fd42.chunk.min.js | 1 + .../static/js/545-8e970b03.chunk.min.js | 1 - .../static/js/545-bfa2b46e.chunk.min.js | 1 + .../static/js/546-560b35c2.chunk.min.js | 1 - .../static/js/56-09931933.chunk.min.js | 1 + .../static/js/567-6c3220fd.chunk.min.js | 1 + .../static/js/579-9222afff.chunk.min.js | 1 - .../static/js/626-1706197a.chunk.min.js | 1 - .../static/js/632-7a25d3c6.chunk.min.js | 1 + .../static/js/637-86fbbecd.chunk.min.js | 2 - .../js/637-86fbbecd.chunk.min.js.LICENSE.txt | 9 - .../static/js/639-88c6538a.chunk.min.js | 1 - .../static/js/642-12e7dea2.chunk.min.js | 1 - .../static/js/648-b5ba4bb4.chunk.min.js | 1 + .../static/js/662-17acb8f4.chunk.min.js | 2 - .../static/js/664-ed5252a5.chunk.min.js | 1 + .../static/js/691-2a6930fd.chunk.min.js | 1 + .../static/js/720-970f726e.chunk.min.js | 1 + .../static/js/723-47eb515a.chunk.min.js | 1 + .../static/js/728-5df4a5e5.chunk.min.js | 1 - .../static/js/729-32b017b3.chunk.min.js | 1 - .../static/js/731-6d56a3c0.chunk.min.js | 1 + .../static/js/732-8e5770e7.chunk.min.js | 1 + .../static/js/747-b55f0f97.chunk.min.js | 1 - .../static/js/758-5696af5a.chunk.min.js | 1 + .../static/js/76-732e78f1.chunk.min.js | 1 - .../static/js/771-942a62df.chunk.min.js | 1 - .../static/js/773-8f0c4fb8.chunk.min.js | 1 - .../static/js/81-4e653aac.chunk.min.js | 1 - .../static/js/813-0d3c16f5.chunk.min.js | 1 - .../static/js/825-445b5bd5.chunk.min.js | 1 + .../static/js/890-c9907c95.chunk.min.js | 1 + .../static/js/940-25dfc794.chunk.min.js | 1 - .../static/js/978-382bed37.chunk.min.js | 1 + .../js/colortheme-01ea3db1.bundle.min.js | 1 + .../js/colortheme-d3e4d351.bundle.min.js | 1 - .../static/js/katex-13a419d8.bundle.min.js | 1 + .../static/js/katex-d4d5881d.bundle.min.js | 1 - .../static/js/main-2e274343.bundle.min.js | 2 + ...> main-2e274343.bundle.min.js.LICENSE.txt} | 0 .../static/js/main-924a1933.bundle.min.js | 2 - .../static/js/mermaid-c274c389.bundle.min.js | 2 + ...mermaid-c274c389.bundle.min.js.LICENSE.txt | 7 + .../static/js/mermaid-d305d450.bundle.min.js | 1 - .../static/js/search-16a110ff.bundle.min.js | 2 + .../search-16a110ff.bundle.min.js.LICENSE.txt | 7 + .../static/js/search-9719be99.bundle.min.js | 2 - .../search-9719be99.bundle.min.js.LICENSE.txt | 7 - .../static/katex-66092164.min.css | 1 - .../static/katex-a0da2a32.min.css | 1 + .../hugo-geekdoc/static/main-252d384c.min.css | 1 - .../hugo-geekdoc/static/main-b53472e8.min.css | 1 + ...35ccc12.min.css => print-72068949.min.css} | 2 +- docs/themes/hugo-geekdoc/theme.toml | 2 +- 201 files changed, 1216 insertions(+), 355 deletions(-) delete mode 100644 docs/content/getting-started/_index.md delete mode 100644 docs/content/getting-started/three-step-demo.md create mode 100644 docs/themes/hugo-geekdoc/.nvmrc create mode 100644 docs/themes/hugo-geekdoc/eslint.config.js create mode 100644 docs/themes/hugo-geekdoc/i18n/am.yaml create mode 100644 docs/themes/hugo-geekdoc/i18n/da.yaml create mode 100644 docs/themes/hugo-geekdoc/i18n/fr.yaml create mode 100644 docs/themes/hugo-geekdoc/i18n/oc.yaml rename docs/themes/hugo-geekdoc/layouts/partials/{menu-nextprev.html => menu-bundle-np.html} (57%) create mode 100644 docs/themes/hugo-geekdoc/layouts/partials/menu-filetree-np.html create mode 100644 docs/themes/hugo-geekdoc/layouts/partials/page-metadata.html create mode 100644 docs/themes/hugo-geekdoc/layouts/shortcodes/audio.html create mode 100644 docs/themes/hugo-geekdoc/layouts/shortcodes/avatar.html create mode 100644 docs/themes/hugo-geekdoc/layouts/shortcodes/gist.html create mode 100644 docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1179x2556.png create mode 100644 docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1290x2796.png create mode 100644 docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1488x2266.png create mode 100644 docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1640x2160.png create mode 100644 docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2160x1640.png create mode 100644 docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2266x1488.png create mode 100644 docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2556x1179.png create mode 100644 docs/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2796x1290.png rename docs/themes/hugo-geekdoc/static/favicon/{manifest.json => manifest.webmanifest} (64%) create mode 100644 docs/themes/hugo-geekdoc/static/js/110-f4b990d9.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/116-341f79d9.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/118-f1de6a20.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/12-0b8427d1.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/130-3b252fb9.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/164-f339d58d.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/165-06872da1.chunk.min.js rename docs/themes/hugo-geekdoc/static/js/{662-17acb8f4.chunk.min.js.LICENSE.txt => 165-06872da1.chunk.min.js.LICENSE.txt} (56%) create mode 100644 docs/themes/hugo-geekdoc/static/js/175-405e6b1c.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/19-86f47ecd.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/237-c0a3f3fe.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/240-cd383fa4.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/244-c41eb325.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/354-5c1850f7.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/355-ef4f96e9.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/357-e9bfa102.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/361-f7cd601a.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/383-e450e912.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/387-3546ecdc.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/391-549a9d24.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/410-ec3f5ed1.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/413-c02a8543.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/417-65958f5a.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/423-897d7f17.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/430-cc171d93.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/433-f2655a46.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/438-760c9ed3.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/452-e65d6d68.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/476-86e5cf96.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/485-3b9fa0c4.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/506-6950d52c.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/519-8d0cec7f.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/535-dcead599.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/540-ae28fd42.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/545-8e970b03.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/545-bfa2b46e.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/546-560b35c2.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/56-09931933.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/567-6c3220fd.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/579-9222afff.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/626-1706197a.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/632-7a25d3c6.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/637-86fbbecd.chunk.min.js.LICENSE.txt delete mode 100644 docs/themes/hugo-geekdoc/static/js/639-88c6538a.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/642-12e7dea2.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/648-b5ba4bb4.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/662-17acb8f4.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/664-ed5252a5.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/691-2a6930fd.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/720-970f726e.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/723-47eb515a.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/728-5df4a5e5.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/729-32b017b3.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/731-6d56a3c0.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/732-8e5770e7.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/747-b55f0f97.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/758-5696af5a.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/76-732e78f1.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/771-942a62df.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/773-8f0c4fb8.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/81-4e653aac.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/813-0d3c16f5.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/825-445b5bd5.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/890-c9907c95.chunk.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/940-25dfc794.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/978-382bed37.chunk.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/colortheme-01ea3db1.bundle.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/colortheme-d3e4d351.bundle.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/katex-13a419d8.bundle.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/katex-d4d5881d.bundle.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/main-2e274343.bundle.min.js rename docs/themes/hugo-geekdoc/static/js/{main-924a1933.bundle.min.js.LICENSE.txt => main-2e274343.bundle.min.js.LICENSE.txt} (100%) delete mode 100644 docs/themes/hugo-geekdoc/static/js/main-924a1933.bundle.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/mermaid-c274c389.bundle.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/mermaid-c274c389.bundle.min.js.LICENSE.txt delete mode 100644 docs/themes/hugo-geekdoc/static/js/mermaid-d305d450.bundle.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/search-16a110ff.bundle.min.js create mode 100644 docs/themes/hugo-geekdoc/static/js/search-16a110ff.bundle.min.js.LICENSE.txt delete mode 100644 docs/themes/hugo-geekdoc/static/js/search-9719be99.bundle.min.js delete mode 100644 docs/themes/hugo-geekdoc/static/js/search-9719be99.bundle.min.js.LICENSE.txt delete mode 100644 docs/themes/hugo-geekdoc/static/katex-66092164.min.css create mode 100644 docs/themes/hugo-geekdoc/static/katex-a0da2a32.min.css delete mode 100644 docs/themes/hugo-geekdoc/static/main-252d384c.min.css create mode 100644 docs/themes/hugo-geekdoc/static/main-b53472e8.min.css rename docs/themes/hugo-geekdoc/static/{print-735ccc12.min.css => print-72068949.min.css} (75%) diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index f7b864ab..621f2d73 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -31,7 +31,7 @@ jobs: build: runs-on: ubuntu-latest env: - HUGO_VERSION: 0.115.4 + HUGO_VERSION: 0.145.0 steps: - name: Install Hugo CLI run: | diff --git a/docs/.gitignore b/docs/.gitignore index 2a8645fe..5c41f011 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1 +1 @@ -.hugo_build.lock +.hugo_build.lock \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index e9248d5d..a9e5c37a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,37 +1,32 @@ -Docs ----- +# Docs This directory contains [hugo](https://gohugo.io) documentation to be published in Github pages. -Run Locally ------------ +## Dependencies -``` +- [Geekdocs v1.5.0](https://github.com/thegeeklab/hugo-geekdoc/releases/tag/v1.5.0) +- [Hugo v0.145.0](https://github.com/gohugoio/hugo/releases/tag/v0.145.0) + +## Run Locally + +To serve the documentation locally, run the following command: + +```shell hugo server -D ``` This will serve the docs on [http://localhost:1313](http://localhost:1313). -Deploy to Github Pages ----------------------- - -Changes to the `main` branch will be deployed automatically with Github actions. - -Update Geekdocs ---------------- +## Update Geekdocs The docs use the [Geekdocs](https://geekdocs.de/) theme. The theme is checked in to Github in the `./docs/themes/hugo-geekdoc/` folder. To update [Geekdocs](https://geekdocs.de/), remove the current folder and create a new one with the latest [release](https://github.com/thegeeklab/hugo-geekdoc/releases). There are no local modifications in `./docs/themes/hugo-geekdoc/`. -Notes ------ - -Here's how the initial `docs/` folder was set up: - -``` -hugo new site docs -cd docs/ +```shell +rm -rf ./docs/themes/hugo-geekdoc mkdir -p themes/hugo-geekdoc/ -curl -L https://github.com/thegeeklab/hugo-geekdoc/releases/download/v0.41.1/hugo-geekdoc.tar.gz | tar -xz -C themes/hugo-geekdoc/ --strip-components=1 +curl -L https://github.com/thegeeklab/hugo-geekdoc/releases/latest/download/hugo-geekdoc.tar.gz | tar -xz -C themes/hugo-geekdoc/ --strip-components=1 ``` -Create the initial `hugo.toml` file as described in [https://geekdocs.de/usage/getting-started/](https://geekdocs.de/usage/getting-started/). +## Deploy to Github Pages + +Changes to the `master` branch will be deployed automatically with Github actions. diff --git a/docs/content/_index.md b/docs/content/_index.md index e8c571d2..1be1b90c 100644 --- a/docs/content/_index.md +++ b/docs/content/_index.md @@ -1,5 +1,49 @@ --- -title: "client_python" +title: client_python +weight: 1 --- -This is the documentation for the [Prometheus Python client library](https://github.com/prometheus/client_python). +This tutorial shows the quickest way to get started with the Prometheus Python library. + +**One**: Install the client: + +```shell +pip install prometheus-client +``` + +**Two**: Paste the following into a Python interpreter: + +```python +from prometheus_client import start_http_server, Summary +import random +import time + +# Create a metric to track time spent and requests made. +REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request') + +# Decorate function with metric. +@REQUEST_TIME.time() +def process_request(t): + """A dummy function that takes some time.""" + time.sleep(t) + +if __name__ == '__main__': + # Start up the server to expose the metrics. + start_http_server(8000) + # Generate some requests. + while True: + process_request(random.random()) +``` + +**Three**: Visit [http://localhost:8000/](http://localhost:8000/) to view the metrics. + +From one easy to use decorator you get: + +* `request_processing_seconds_count`: Number of times this function was called. +* `request_processing_seconds_sum`: Total amount of time spent in this function. + +Prometheus's `rate` function allows calculation of both requests per second, +and latency over time from this data. + +In addition if you're on Linux the `process` metrics expose CPU, memory and +other information about the process for free! diff --git a/docs/content/getting-started/_index.md b/docs/content/getting-started/_index.md deleted file mode 100644 index 42726911..00000000 --- a/docs/content/getting-started/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: Getting Started -weight: 1 ---- diff --git a/docs/content/getting-started/three-step-demo.md b/docs/content/getting-started/three-step-demo.md deleted file mode 100644 index bf06e39f..00000000 --- a/docs/content/getting-started/three-step-demo.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Three Step Demo -weight: 1 ---- - -This tutorial shows the quickest way to get started with the Prometheus Python library. - -# Three Step Demo - -**One**: Install the client: -``` -pip install prometheus-client -``` - -**Two**: Paste the following into a Python interpreter: -```python -from prometheus_client import start_http_server, Summary -import random -import time - -# Create a metric to track time spent and requests made. -REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request') - -# Decorate function with metric. -@REQUEST_TIME.time() -def process_request(t): - """A dummy function that takes some time.""" - time.sleep(t) - -if __name__ == '__main__': - # Start up the server to expose the metrics. - start_http_server(8000) - # Generate some requests. - while True: - process_request(random.random()) -``` - -**Three**: Visit [http://localhost:8000/](http://localhost:8000/) to view the metrics. - -From one easy to use decorator you get: - * `request_processing_seconds_count`: Number of times this function was called. - * `request_processing_seconds_sum`: Total amount of time spent in this function. - -Prometheus's `rate` function allows calculation of both requests per second, -and latency over time from this data. - -In addition if you're on Linux the `process` metrics expose CPU, memory and -other information about the process for free! diff --git a/docs/hugo.toml b/docs/hugo.toml index 08885493..9e3e6037 100644 --- a/docs/hugo.toml +++ b/docs/hugo.toml @@ -5,20 +5,19 @@ theme = "hugo-geekdoc" pluralizeListTitles = false -# Geekdoc required configuration -#pygmentsUseClasses = true -pygmentsUseClasses = false +# Required to get well formatted code blocks +pygmentsUseClasses = true pygmentsCodeFences = true disablePathToLower = true -# geekdocFileTreeSortBy = "linkTitle" +enableGitInfo = true # Required if you want to render robots.txt template enableRobotsTXT = true -# Needed for mermaid shortcodes [markup] [markup.goldmark.renderer] - # Needed for mermaid shortcode + # Needed for mermaid shortcode or when nesting shortcodes (e.g. img within + # columns or tabs) unsafe = true [markup.tableOfContents] startLevel = 1 @@ -28,3 +27,93 @@ enableRobotsTXT = true [taxonomies] tag = "tags" + +[params] +# (Optional, default 6) Set how many table of contents levels to be showed on page. +# Use false to hide ToC, note that 0 will default to 6 (https://gohugo.io/functions/default/) +# You can also specify this parameter per page in front matter. +geekdocToC = 3 + +# (Optional, default static/brand.svg) Set the path to a logo for the Geekdoc +# relative to your 'static/' folder. +geekdocLogo = "brand.svg" + +# (Optional, default false) Render menu from data file in 'data/menu/main.yaml'. +# See also https://geekdocs.de/usage/menus/#bundle-menu. +geekdocMenuBundle = false + +# (Optional, default false) Collapse all menu entries, can not be overwritten +# per page if enabled. Can be enabled per page via 'geekdocCollapseSection'. +geekdocCollapseAllSections = false + +# (Optional, default true) Show page navigation links at the bottom of each docs page. +geekdocNextPrev = true + +# (Optional, default true) Show a breadcrumb navigation bar at the top of each docs page. +# You can also specify this parameter per page in front matter. +geekdocBreadcrumb = true + +# (Optional, default none) Set source repository location. Used for 'Edit page' links. +# You can also specify this parameter per page in front matter. +geekdocRepo = "https://github.com/prometheus/client_python" + +# (Optional, default none) Enable 'Edit page' links. Requires 'geekdocRepo' param +# and the path must point to the parent directory of the 'content' folder. +# You can also specify this parameter per page in front matter. +geekdocEditPath = "edit/master/docs" + +# (Optional, default false) Show last modification date of the page in the header. +# Keep in mind that last modification date works best if `enableGitInfo` is set to true. +geekdocPageLastmod = true + +# (Optional, default true) Enables search function with flexsearch. +# Index is built on the fly and might slow down your website. +geekdocSearch = true + +# (Optional, default false) Display search results with the parent folder as prefix. This +# option allows you to distinguish between files with the same name in different folders. +# NOTE: This parameter only applies when 'geekdocSearch = true'. +geekdocSearchShowParent = true + +# (Optional, default true) Add an anchor link to headlines. +geekdocAnchor = true + +# (Optional, default true) Copy anchor url to clipboard on click. +geekdocAnchorCopy = true + +# (Optional, default true) Enable or disable image lazy loading for images rendered +# by the 'img' shortcode. +geekdocImageLazyLoading = true + +# (Optional, default false) Set HTMl to .Site.Home.Permalink if enabled. It might be required +# if a subdirectory is used within Hugos BaseURL. +# See https://developer.mozilla.org/de/docs/Web/HTML/Element/base. +geekdocOverwriteHTMLBase = false + +# (Optional, default true) Enable or disable the JavaScript based color theme toggle switch. The CSS based +# user preference mode still works. +geekdocDarkModeToggle = true + +# (Optional, default false) Auto-decrease brightness of images and add a slightly grayscale to avoid +# bright spots while using the dark mode. +geekdocDarkModeDim = false + +# (Optional, default false) Enforce code blocks to always use the dark color theme. +geekdocDarkModeCode = false + +# (Optional, default true) Display a "Back to top" link in the site footer. +geekdocBackToTop = true + +# (Optional, default false) Enable or disable adding tags for post pages automatically to the navigation sidebar. +geekdocTagsToMenu = true + +# (Optional, default 'title') Configure how to sort file-tree menu entries. Possible options are 'title', 'linktitle', +# 'date', 'publishdate', 'expirydate' or 'lastmod'. Every option can be used with a reverse modifier as well +# e.g. 'title_reverse'. +geekdocFileTreeSortBy = "title" + +# (Optional, default none) Adds a "Content licensed under " line to the footer. +# Could be used if you want to define a default license for your content. +[params.geekdocContentLicense] + name = "Apache License 2.0" + link = "https://github.com/prometheus/client_python/blob/master/LICENSE" diff --git a/docs/themes/hugo-geekdoc/.nvmrc b/docs/themes/hugo-geekdoc/.nvmrc new file mode 100644 index 00000000..b009dfb9 --- /dev/null +++ b/docs/themes/hugo-geekdoc/.nvmrc @@ -0,0 +1 @@ +lts/* diff --git a/docs/themes/hugo-geekdoc/README.md b/docs/themes/hugo-geekdoc/README.md index 99358d83..b03365fb 100644 --- a/docs/themes/hugo-geekdoc/README.md +++ b/docs/themes/hugo-geekdoc/README.md @@ -1,7 +1,7 @@ # Geekdoc [![Build Status](https://ci.thegeeklab.de/api/badges/thegeeklab/hugo-geekdoc/status.svg)](https://ci.thegeeklab.de/repos/thegeeklab/hugo-geekdoc) -[![Hugo Version](https://img.shields.io/badge/hugo-0.112-blue.svg)](https://gohugo.io) +[![Hugo Version](https://img.shields.io/badge/hugo-0.124-blue.svg)](https://gohugo.io) [![GitHub release](https://img.shields.io/github/v/release/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/releases/latest) [![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors) [![License: MIT](https://img.shields.io/github/license/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE) diff --git a/docs/themes/hugo-geekdoc/VERSION b/docs/themes/hugo-geekdoc/VERSION index d0cca40a..2e7bd910 100644 --- a/docs/themes/hugo-geekdoc/VERSION +++ b/docs/themes/hugo-geekdoc/VERSION @@ -1 +1 @@ -v0.41.1 +v1.5.0 diff --git a/docs/themes/hugo-geekdoc/data/assets.json b/docs/themes/hugo-geekdoc/data/assets.json index 9a34ed54..29e02b0d 100644 --- a/docs/themes/hugo-geekdoc/data/assets.json +++ b/docs/themes/hugo-geekdoc/data/assets.json @@ -1,155 +1,451 @@ { "main.js": { - "src": "js/main-924a1933.bundle.min.js", - "integrity": "sha512-0QF6awwW0WbBo491yytmULiHrc9gx94bloJ9MSXIvdJh3YHWw7CWyeX2YXu0rzOQefJp4jW/I6ZjUDYpNVFhdA==" + "src": "js/main-2e274343.bundle.min.js", + "integrity": "sha512-Atj/tzetkQMROhw9Vq9Eg5cDA5Zw0j04fDL3AZNrqod5fQqakcgtNBSMvmEIOLPq6YiWX5Qu9x89m71mc/YjmA==" }, "colortheme.js": { - "src": "js/colortheme-d3e4d351.bundle.min.js", - "integrity": "sha512-HpQogL/VeKqG/v1qYOfJOgFUzBnQvW4yO4tAJO+54IiwbLbB9feROdeaYf7dpO6o5tSHsSZhaYLhtLMRlEgpJQ==" + "src": "js/colortheme-01ea3db1.bundle.min.js", + "integrity": "sha512-HC/hlLHETnfrQ4/mC/m71pSucEoWaEohD68gPOYu1LV31pQJoTNAYrmugK/FE9cHB9S9k+lL6yMJY1wd9/KGaQ==" }, "mermaid.js": { - "src": "js/mermaid-d305d450.bundle.min.js", - "integrity": "sha512-TASG03QptoVv1mkfOL47vm5A5kvmyOrnsi8PXhc82j1+FuHZuMOHXc2x5/jGEkOxbKi7mum0h/W7qYhrV29raw==" + "src": "js/mermaid-c274c389.bundle.min.js", + "integrity": "sha512-EXY62vn1+kNduAXY+yQZi81u98IWTkjuvEj55Ge8rAIKWEUG/dddkwfkT+Nc0yoje7w27Ff1WJ9Wy8DYctmq4A==" }, "katex.js": { - "src": "js/katex-d4d5881d.bundle.min.js", - "integrity": "sha512-M8CLtMTu/HVXo11Et+lv3OqPanLf5Bl+GljNAn2yQuLclg/ZpZK1KUpHDRsZJhmkhCcCH90+bVj5CW3lLlmBgg==" + "src": "js/katex-13a419d8.bundle.min.js", + "integrity": "sha512-6MAwLoWro9jZYvZmrGTfM5oe46Ycf/V5eXGyEAIwvuxxxmbqJttAxkkJE/00mOO11Fb21BmI1udcGRb8CbFpWw==" }, "search.js": { - "src": "js/search-9719be99.bundle.min.js", - "integrity": "sha512-/7NZxFUEbalC/8RKDgfAsHFDI42/Ydp33uJmCLckZgnO+kuz9LrTfmPFfVJxPJ31StMxa3MTQ5Jq049CmNK4pw==" + "src": "js/search-16a110ff.bundle.min.js", + "integrity": "sha512-3GlBrQ51hc6WxYIDcSvYztzli9Qk6DwulVxXhZHNP/oSaK0kulRkdrMSunRTd1eb1SJE08VI/YLylmxZ5SV0hw==" }, - "js/637-86fbbecd.chunk.min.js": { - "src": "js/637-86fbbecd.chunk.min.js", - "integrity": "sha512-vD1y0C4MPPV/JhEKmNVAye9SQg7mB5v87nLf63keSALdnM7P+L0ybjEn2MzYzVTzs6JnOCryM7A6/t0TkYucDA==" + "js/664-ed5252a5.chunk.min.js": { + "src": "js/664-ed5252a5.chunk.min.js", + "integrity": "sha512-9omg+hspX9YOzPdRzN6S5swqg1DLRMxHRUyDd6e6ECkkn6h7YrLzLrdRbbtIk0gAsnpzT9luk7XFvAO2wsrXZg==" }, - "js/116-341f79d9.chunk.min.js": { - "src": "js/116-341f79d9.chunk.min.js", - "integrity": "sha512-F7tq1KsF5mnJl0AAA6x2jZcx8x69kEZrUIZJJM4RZ1KlEO79yrrFHf4CZRvhNrYOxmkBpkQ84U9J0vFtRPKjTw==" + "js/485-3b9fa0c4.chunk.min.js": { + "src": "js/485-3b9fa0c4.chunk.min.js", + "integrity": "sha512-ho38krMSQfeNoX46V7dFr28Hnn2bOpO9QWLB0sxZuX2GP6xwemk7cxLiGE9dM3qYGOlrU0eLqRvzPeoxFsF2Jw==" }, - "js/545-8e970b03.chunk.min.js": { - "src": "js/545-8e970b03.chunk.min.js", - "integrity": "sha512-vDOXX1FstnT8UMkRIAMn6z4ucL8LVqI5kZw+T7LrD8pGC9xtKwwhWcmNeqnngc7FHc5Ogt7ppXBNp+uFPUgrJg==" + "js/417-65958f5a.chunk.min.js": { + "src": "js/417-65958f5a.chunk.min.js", + "integrity": "sha512-bjVOwri6TCc8gl4cHEshCj9dWqVYQis5TVOaQHyWntIeK1WbiB1Q2/AcHlnTT4ROpK2uh5IiyRjUkVJvXB/PVw==" }, - "js/728-5df4a5e5.chunk.min.js": { - "src": "js/728-5df4a5e5.chunk.min.js", - "integrity": "sha512-vX2dPV1VjOgv8DP4XbZ9xk9ZzHS9hPAUwPfHM8UG42efxXxH/qCqTpyavqob98onxR2FuiF+j1Vn56d3wqsgaw==" + "js/978-382bed37.chunk.min.js": { + "src": "js/978-382bed37.chunk.min.js", + "integrity": "sha512-+2O8x3RNKRlmtGca+J3x+K/62n6rKSS3qIPwtm2vWRKIccYHA5LT9ENlSyvyh4LpaHwd2Dojq6DVGZIAT6Wnhg==" }, - "js/81-4e653aac.chunk.min.js": { - "src": "js/81-4e653aac.chunk.min.js", - "integrity": "sha512-a80h3DpDlMG6HhYXv9n9Q7r1M+rQX5kfJ7sFhfmPHlDRVimult9nn7vvTHFzTzmMFM+tLcfg4pZGd+AkxPcjEw==" + "js/244-c41eb325.chunk.min.js": { + "src": "js/244-c41eb325.chunk.min.js", + "integrity": "sha512-2A6PJtt6+TmkDMr7/jIJ07MIFy2ipT58aSUfZAeIeCi6dXTeoG/5fTT1zLZecZh5GsXGMpNyqKkqZqVwbWzc0A==" }, - "js/430-cc171d93.chunk.min.js": { - "src": "js/430-cc171d93.chunk.min.js", - "integrity": "sha512-cqQyiIE22ZPo2PIPR4eb0DPSu1TWjxgJUKrIIyfVF48gc2vdLKnbHzWBZg6MpiOWYmUvJb5Ki+n5U6qEvNp2KQ==" + "js/354-5c1850f7.chunk.min.js": { + "src": "js/354-5c1850f7.chunk.min.js", + "integrity": "sha512-NvmJwSFujfF+S1n5AbVS+8QvypWYyMyQdui3bP/cMi1XUl+5AB1ou0O4yMC85o0JtZMDImZieFUYNoM8yTHKXw==" }, - "js/729-32b017b3.chunk.min.js": { - "src": "js/729-32b017b3.chunk.min.js", - "integrity": "sha512-KAW7lnN0NHmIzfD6aIwVaU3TcpUkO8ladLrbOE83zq80NOJH/MGS4Ep+2rIfQZTvZP+a7nqZLHkmezfs27c2pw==" + "js/825-445b5bd5.chunk.min.js": { + "src": "js/825-445b5bd5.chunk.min.js", + "integrity": "sha512-NOqFursH5QZiDD7gx0AtWI1DckXYyBkJgt1Gv347PB5otVKbJWQ+s+xdx0GK3pVI2VK6mRCyjqapm3tnxxfEYg==" }, - "js/773-8f0c4fb8.chunk.min.js": { - "src": "js/773-8f0c4fb8.chunk.min.js", - "integrity": "sha512-HxtbZvs0J28pB9fImN8n82aprG/GW0QenIBzC7BHWhEUX6IhmxTeBqG4IZFbbAURG17VegOr2UlJg6w0qaX9gw==" + "js/632-7a25d3c6.chunk.min.js": { + "src": "js/632-7a25d3c6.chunk.min.js", + "integrity": "sha512-PFbvM8X5viF9mjaWocBoQgeM+KSuznQEEXUtaqbdQSEedobqaHx0Q3Dn9ZYj2d20GGy/HZ9wRSppFw5yTdzC1w==" }, - "js/433-f2655a46.chunk.min.js": { - "src": "js/433-f2655a46.chunk.min.js", - "integrity": "sha512-/yMUz6rxhVpvCPpQG+f28jFgdJK+X/5/3XWVsrAE2FHC57jxnHaL7SxZluZ4klUl0YsRCrhxAQj8maNspwwH1Q==" + "js/545-bfa2b46e.chunk.min.js": { + "src": "js/545-bfa2b46e.chunk.min.js", + "integrity": "sha512-OnH4AMYVIBwonc5gh4Uzp45VbP5cDn/9zhXxDDSXHVNWrO3sHG1lA7yhXFEJ1mll+GGihSe1ev81h+SlQmg5Gg==" }, - "js/546-560b35c2.chunk.min.js": { - "src": "js/546-560b35c2.chunk.min.js", - "integrity": "sha512-am1/hYno7/cFQ8reHZqnbsth2KcphvKqLfkueVIm8I/i/6f9u+bbc0Z6zpYTLysl3oWddYXqyeO58zXoJoDVIA==" + "js/413-c02a8543.chunk.min.js": { + "src": "js/413-c02a8543.chunk.min.js", + "integrity": "sha512-Aa//KQ7fjdgdywKY9oeq2Uf6OHJp/pZ4B0qCFfF+YIuY2+3p4fVXVZN/gvxKle9CDDtfnqhZH2ni9o+Mgnv0Sg==" }, - "js/118-f1de6a20.chunk.min.js": { - "src": "js/118-f1de6a20.chunk.min.js", - "integrity": "sha512-tikydCOmBT1keN0AlCqvkpvbV1gB9U8lVXX8wmrS6fQ2faNc8DnH1QV9dzAlLtGeA1p8HAXnh+AevnVKxhXVbg==" + "js/540-ae28fd42.chunk.min.js": { + "src": "js/540-ae28fd42.chunk.min.js", + "integrity": "sha512-0i637ntjWOeUhb3hduyWJNcs/m8Fqa1BHgX++swq8/3SspywUV77sZy4NmnazHVXoMg4BLu1RMr7caAb9iJu6A==" }, - "js/19-86f47ecd.chunk.min.js": { - "src": "js/19-86f47ecd.chunk.min.js", - "integrity": "sha512-qRG0UrV25Kr/36tJTPZ49QobR6a/zv2BRAMDzSZwjlPgqSwse1HtgP9EEZtn59b1Vq7ayB1LoWfB9MZ9Gcm7Gw==" + "js/391-549a9d24.chunk.min.js": { + "src": "js/391-549a9d24.chunk.min.js", + "integrity": "sha512-aty4EWAqEyrg6iKWtLcl+5hBkQVP8ZffyeP1XlKEqRswjATpDiRpzpy+5sSTaMo+ZQuim88zQtIFcQQbrteoYA==" }, - "js/361-f7cd601a.chunk.min.js": { - "src": "js/361-f7cd601a.chunk.min.js", - "integrity": "sha512-7kwaFQhXUyiM/v2v0n6vI9wz6nSAu7sz2236r+MbwT0r4aBxYqeOxij+PkGnTUqR2n1UExnbWKjuruDi9V/H5g==" + "js/56-09931933.chunk.min.js": { + "src": "js/56-09931933.chunk.min.js", + "integrity": "sha512-RI+ajv2yYUjfck1pGhd31E+MmsEYcTuA7TGRp4vO9lC43SnWaNgSSwQnETy0SAX3oDBJai8sPcMX6+Mivtn6kw==" }, - "js/519-8d0cec7f.chunk.min.js": { - "src": "js/519-8d0cec7f.chunk.min.js", - "integrity": "sha512-tFsZN3iyUMIMeB/b4E1PZNOFDKqMM4Fes63RGNkHNhtRTL/AIUpqPcTKZ+Fi2ZTdyYvPSTtjc5urnzLUi196Wg==" + "js/732-8e5770e7.chunk.min.js": { + "src": "js/732-8e5770e7.chunk.min.js", + "integrity": "sha512-02TlRFXaL+tKrGpT07d9ebyABzylckAdWZmay3gSfuF5RfN3sfwh7C/ljNbaPXqbfn0/GKOmdP81Mce4xPOp7g==" }, - "js/747-b55f0f97.chunk.min.js": { - "src": "js/747-b55f0f97.chunk.min.js", - "integrity": "sha512-hoyvC5SSJcX9NGij9J9l4Ov1JAFNBX0UxlFXyiB5TC7TGW3lgIvm41zyfKhLyJudVGftY/qKxIO2EYtYD2pqOQ==" + "js/110-f4b990d9.chunk.min.js": { + "src": "js/110-f4b990d9.chunk.min.js", + "integrity": "sha512-W8OJfGeXIVhZ5HUkL/9zwaRBePcRIgqWFZSii2C6BOTBcO7rx8RyvwnGynRIB1fQ+xg5sqbuPpzDE1K0S4VjrQ==" }, - "js/642-12e7dea2.chunk.min.js": { - "src": "js/642-12e7dea2.chunk.min.js", - "integrity": "sha512-ZVUj7NYSa8mMHdWaztAf3DCg7qznXTbMWWwqJaS2nfaqh0lVDOf5kVExPy6SGkXCeNu/B9gGbWLtDUa7kHFF6A==" + "js/237-c0a3f3fe.chunk.min.js": { + "src": "js/237-c0a3f3fe.chunk.min.js", + "integrity": "sha512-VBL69Cyj7saW+K5+F8gL24kjjjyp6l9BUV7Ombfmk7+sw3uIA3W2rmbkO4loKkrcTA3HyR5+6AZ6nAArWjFyfg==" }, - "js/626-1706197a.chunk.min.js": { - "src": "js/626-1706197a.chunk.min.js", - "integrity": "sha512-OlpbPXiGmQJR/ISfBSsHU2UGATggZDuHbopvAhhfVpw7ObMZgc/UvE6pK1FmGCjgI9iS+qmPhQyvf9SIbLFyxQ==" + "js/691-2a6930fd.chunk.min.js": { + "src": "js/691-2a6930fd.chunk.min.js", + "integrity": "sha512-HMvZTv5pI+P3wyGu4E2zcg01INdohp+ttXix+3UUxm70Ejf/kUPqppdJ2gQrdlt/Woor96vt6cFGs7lPQlZagg==" }, - "js/438-760c9ed3.chunk.min.js": { - "src": "js/438-760c9ed3.chunk.min.js", - "integrity": "sha512-Wo2DxS59Y8DVBTWNWDUmg6V+UCyLoiDd4sPs2xc7TkflQy7reGWPt/oHZCANXeGjZPpqcR3qfKYidNofUyIWEA==" + "js/383-e450e912.chunk.min.js": { + "src": "js/383-e450e912.chunk.min.js", + "integrity": "sha512-YTYkszF4ql46H1hY2ZixoxMez9Ep6Bh2KV8MHnkYJgeCpOq5lcrY8lITtc/6rTcn/6wppwPK/suPlLGqdCmLWg==" }, - "js/639-88c6538a.chunk.min.js": { - "src": "js/639-88c6538a.chunk.min.js", - "integrity": "sha512-KbTKHxx+/Xwv+GH8jQsIJ9X1CFaGSsqgeSXnR8pW27YZpFz4ly8R6K7h+yq6P2b2AzQdW7krradZzyNo7Vz26w==" + "js/355-ef4f96e9.chunk.min.js": { + "src": "js/355-ef4f96e9.chunk.min.js", + "integrity": "sha512-JUcjY4KCeyRs+OWDes22CmbbqSU9uefYdcb0CpcCsYoU9Pw97xtYl137OV5RR2Vr+/6eGGQ2yiIX8BOp2tWDzw==" }, - "js/940-25dfc794.chunk.min.js": { - "src": "js/940-25dfc794.chunk.min.js", - "integrity": "sha512-qst5aejItmhzMvZ3CsAXyJe2F3FtLkyZwBqj422/8ViyQptcQFgP3x8bPsLwJEfiWFJVrLJkk4VhwflQuIyDtw==" + "js/648-b5ba4bb4.chunk.min.js": { + "src": "js/648-b5ba4bb4.chunk.min.js", + "integrity": "sha512-mckLNYEm3NMnZ1DnAafEbWgCshyuvNssKAU9sxBM5E/EXCeCwWmnP7RQYujTFA35AXIRq0d9Q7Ux2AsfWhSDMQ==" }, - "js/662-17acb8f4.chunk.min.js": { - "src": "js/662-17acb8f4.chunk.min.js", - "integrity": "sha512-S/UlqDqwt++RzVZMVqjsdCNyhe1xNQ9/Qm38yIphmXfn9VBHzGqobIQTuhloYZVfTE4/GezrH+1T7mdrUqpAKQ==" + "js/357-e9bfa102.chunk.min.js": { + "src": "js/357-e9bfa102.chunk.min.js", + "integrity": "sha512-9aMlQY3ZQwKrMFgRIOGDPHHVFYMCHJbsybK0ZjghpkwKxiP7+ETshuuf0ggeaGus907OqGANF9qTHX+zT15NhA==" }, - "js/579-9222afff.chunk.min.js": { - "src": "js/579-9222afff.chunk.min.js", - "integrity": "sha512-rl3bxxl/uhUFYlIuoHfVQE+VkmxfJr7TAuC/fxOBJXBCCMpdxP0XCPzms1zjEjOVjIs4bi4SUwn8r4STSl09Lg==" + "js/410-ec3f5ed1.chunk.min.js": { + "src": "js/410-ec3f5ed1.chunk.min.js", + "integrity": "sha512-Z1s/OadNKjsxftNbZ9+MLokSdlRkWBTcJwi+jQd9Q87f3ZHocWohb8XXQCER07Fxqq8Sxy/2eVso8UKcuX6CIw==" }, - "js/771-942a62df.chunk.min.js": { - "src": "js/771-942a62df.chunk.min.js", - "integrity": "sha512-8WfA8U1Udlfa6uWAYbdNKJzjlJ91qZ0ZhC+ldKdhghUgilxqA6UmZxHFKGRDQydjOFDk828O28XVmZU2IEvckA==" + "js/175-405e6b1c.chunk.min.js": { + "src": "js/175-405e6b1c.chunk.min.js", + "integrity": "sha512-ddZGV8HI0FH+Y7AnWdgDELXsIiAnkk488LCSdmnHsGqq65JPy0HLT6eXudW766K0XKTUmn8uGog6NvH1FCd4JQ==" }, - "js/506-6950d52c.chunk.min.js": { - "src": "js/506-6950d52c.chunk.min.js", - "integrity": "sha512-h2po0SsM4N3IXiBbNWlIbasxX7zSm5XVDpgYfmsEmcfQkMcFwJtTJGppek085Mxi1XZmrhjfxq2AUtnUs03LJg==" + "js/130-3b252fb9.chunk.min.js": { + "src": "js/130-3b252fb9.chunk.min.js", + "integrity": "sha512-JSvuAP7SZ8ndEm18NeuU27acjLOIOmZXB4TG79Sk0JdFIyn2YgidieBBcbIjn85udp4o4IjANY161KygULGiHQ==" }, - "js/76-732e78f1.chunk.min.js": { - "src": "js/76-732e78f1.chunk.min.js", - "integrity": "sha512-ZjF2oB76jiCtdQNJZ9v1MUJSPaBcZCXmTA2T3qDBuU260uVA99wGeprrNQ3WdHQeK+VYXCq26dOE9w+I3b6Q4w==" + "js/12-0b8427d1.chunk.min.js": { + "src": "js/12-0b8427d1.chunk.min.js", + "integrity": "sha512-EpyKr8i98wqi4fpxW5ux156KszFLW9Iusw7MUMPf26kso3TPEKJYn28wY/giEeqsRL7y7EoX5xQR5O94VU1s8Q==" }, - "js/476-86e5cf96.chunk.min.js": { - "src": "js/476-86e5cf96.chunk.min.js", - "integrity": "sha512-siq24cNKFc1tXGACAQlpbXOb2gRKDnncf39INGAPlnJSiAsYewhNusq1UxhMDFA836eucVq7NzE1TqEYskI0ug==" + "js/890-c9907c95.chunk.min.js": { + "src": "js/890-c9907c95.chunk.min.js", + "integrity": "sha512-gD2gqeomVVlkJ6wgB1VcUPizRgyG4JdQJ0t98yt9pVb07uzkhAAhKSddzxP/OF3tUA2bYZHrUYcgEkDAX5JOjQ==" }, - "js/813-0d3c16f5.chunk.min.js": { - "src": "js/813-0d3c16f5.chunk.min.js", - "integrity": "sha512-gDVyQtM781xlTfyZzuEJ1tnQWyasbFKLRPwgGUF5lpdS3QpW6KTIwCnMuVn2b5XF2qKSxpei9YNIushpBI4ILA==" + "js/452-e65d6d68.chunk.min.js": { + "src": "js/452-e65d6d68.chunk.min.js", + "integrity": "sha512-oOJ9nLMs4Ih5X9kyj5828RYSUg+7Wzcz4QEhURKPZWO1F1dSFNfmih2LJcFvjSdNp8wDepvAUQcQLDz3F7MX9g==" }, - "js/423-897d7f17.chunk.min.js": { - "src": "js/423-897d7f17.chunk.min.js", - "integrity": "sha512-ERAmXYsLT59PDGFPLTHNgaNw5CsaTOK88orlaXr+7SOxf+Yjf5fvDmpXCNJe1odvU6OF4cajtlVM1qO9hzOqWw==" + "js/723-47eb515a.chunk.min.js": { + "src": "js/723-47eb515a.chunk.min.js", + "integrity": "sha512-W5+LIxRrc4yIVvFTgX3mx/Wd1K/HPhtr1j6IanCDprpeNAl2if5eMlCDZDhUJYZSm7ta4s4lb+IkdGaSf7EEKg==" }, - "js/535-dcead599.chunk.min.js": { - "src": "js/535-dcead599.chunk.min.js", - "integrity": "sha512-3gB2l6iJbt94EMd1Xh6udlMXjdHlAbuRKkyl87X/LSuG1fGbfTe11O5ma+un13BBX1wZ1xnHtUv6Fyc3pgbgDg==" + "js/720-970f726e.chunk.min.js": { + "src": "js/720-970f726e.chunk.min.js", + "integrity": "sha512-KZoim0oHUzo3JWb5J9AV6RNVm43jnQJyRBbV8gYTS6te6+h4VYg62lbjrapFwBQmHOMkcyLCp1dH2PqHvL36Qg==" + }, + "js/387-3546ecdc.chunk.min.js": { + "src": "js/387-3546ecdc.chunk.min.js", + "integrity": "sha512-XA2Opiddehmv/Po1naDCYg2seMBBqYOzJbDT1WTvT8gLNVuQaI61Fw1hbCxIIOz2t/5LtnqErZc+tond4WuO5Q==" + }, + "js/164-f339d58d.chunk.min.js": { + "src": "js/164-f339d58d.chunk.min.js", + "integrity": "sha512-oXaJMX/nm2r1p0EZhWyKp58KR6VwF06WafroIHmEiTMD7tDT+KfXf1Ryk+RopXvHx8swAt+DmOcWvsYjBc8+DQ==" + }, + "js/731-6d56a3c0.chunk.min.js": { + "src": "js/731-6d56a3c0.chunk.min.js", + "integrity": "sha512-qWHhPkXehCCi7T5iVy0ZcC3CcJ848ZMAWDEYV13j2Izy4DJpnO4J0P1JBA8XawQ3Xxu0UVDzBjvm35MKadF6Zw==" + }, + "js/567-6c3220fd.chunk.min.js": { + "src": "js/567-6c3220fd.chunk.min.js", + "integrity": "sha512-U8xZDwmMJQAUM8v4ZXJf1167FWhTvq8vrp1GagOOoivFXNw2IdO0mWRhb9NnohVouf+dooRurCBM+YUYfJEjfg==" + }, + "js/165-06872da1.chunk.min.js": { + "src": "js/165-06872da1.chunk.min.js", + "integrity": "sha512-pgEr6k7AOnuHgCibSGCs8oB66vecF5ww5apTymYFD+z1YYCLgtHzS7uacJsMPfrCxheMOg/ng2bfGzc9cS2C3A==" + }, + "js/240-cd383fa4.chunk.min.js": { + "src": "js/240-cd383fa4.chunk.min.js", + "integrity": "sha512-BUDkwZXONurj953rNzKsuDb6BEIFBQqoJ6FvfHZzPvnJpeMeRnxRrxAIAWAf1+5OXH29pUledg7xoZeImUIZKQ==" + }, + "js/758-5696af5a.chunk.min.js": { + "src": "js/758-5696af5a.chunk.min.js", + "integrity": "sha512-Uqo6/Ld+ah7lbiY+GR1vMzOFsAaJ+CVyEgzkRICSKa7PwMvyWQ/pjXZEs0k+yrl3bOpX5ma4TOa7MVn7vtOMLg==" + }, + "favicon/apple-touch-startup-image-2048x2732.png": { + "src": "favicon/apple-touch-startup-image-2048x2732.png", + "integrity": "sha512-pp/8QkfwltmJfJZv6lzhl9bbE+0ltO1lcpXR3432kiV2VCl1SXOiTiJYzU/lVmTO1wMrdyFwHdk0C0ZPauVmUg==" }, "main.scss": { - "src": "main-252d384c.min.css", - "integrity": "sha512-WiV7BVk76Yp0EACJrwdWDk7+WNa+Jyiupi9aCKFrzZyiKkXk7BH+PL2IJcuDQpCMtMBFJEgen2fpKu9ExjjrUQ==" + "src": "main-b53472e8.min.css", + "integrity": "sha512-OdpB6Sg1KAfyLTE+HfAyWywLvzCU8lrsfVurFgj+rCZ3fwMevRyqu6WsHRHmoh3+OJv8RCuy2xbdqFZtSP7OLA==" + }, + "favicon/apple-touch-startup-image-2732x2048.png": { + "src": "favicon/apple-touch-startup-image-2732x2048.png", + "integrity": "sha512-DOw5FcezHTkJ2dDT8agLZlIfrNZoxc0/OTlrkmuYgpRJiIkJykxAYQed0Ysu/MBkfwe6lWDydhlpV8oomWMKgw==" + }, + "favicon/apple-touch-startup-image-1668x2388.png": { + "src": "favicon/apple-touch-startup-image-1668x2388.png", + "integrity": "sha512-Stx19Yj7N6TXbMiFMq03kLQYs1X+ft6zmpwVa/+06q8I48P+8dG64MnC8zvl0PqzYWGwcBtCa8m+/qy5JQHzmw==" + }, + "favicon/apple-touch-startup-image-1668x2224.png": { + "src": "favicon/apple-touch-startup-image-1668x2224.png", + "integrity": "sha512-OJnVL7cFjpYgoqph0ZAAZ0bQMeHZHyYzeasV314vTyarpeyVDZuw0j/U2F/7ldxgFVP+Z67RNfLGfSr6SKqujw==" + }, + "favicon/apple-touch-startup-image-2224x1668.png": { + "src": "favicon/apple-touch-startup-image-2224x1668.png", + "integrity": "sha512-h86d25uMsQo1wqWrc0Bm7hwQPx1/WMpIcuFXq6TV4v7QLix8jaBeXjCz6d/JG9dQVqp0rJj2L2Koh9KR4iLlbQ==" + }, + "favicon/apple-touch-startup-image-2388x1668.png": { + "src": "favicon/apple-touch-startup-image-2388x1668.png", + "integrity": "sha512-HrLClFRnn0TKngyeMONGPw8WFltiAd/+456Z2w+/tRYlhblrxfNxddoacMhAfywJuZL2bnMrDFxgIeisKV7UZg==" + }, + "favicon/apple-touch-startup-image-1640x2160.png": { + "src": "favicon/apple-touch-startup-image-1640x2160.png", + "integrity": "sha512-bkGRXPNafzTvHm7iqK90kmtvdUIg1davqSECk72QWcc8KQhB58+j6Y/Lsv4PNhuki/3CafltGYPwq5DC/uFwLg==" + }, + "favicon/apple-touch-startup-image-1620x2160.png": { + "src": "favicon/apple-touch-startup-image-1620x2160.png", + "integrity": "sha512-a52rXNm6ZAK3hBxTW9ySrYEX76I11+P20QU4eS1spuSHH9byqr82n2C2vWsB3ASOvJgF6L9X2m1gTfcezcWa2Q==" + }, + "favicon/apple-touch-startup-image-2160x1640.png": { + "src": "favicon/apple-touch-startup-image-2160x1640.png", + "integrity": "sha512-lAMwiXWTpWy3R8WXVK0Pxyfzh+nVf6TWxB1CS28nckPIvoJZ01UDW7MX15R6VJH4hC6b9yBwRFqgiWI3ey7XIg==" + }, + "favicon/apple-touch-startup-image-2160x1620.png": { + "src": "favicon/apple-touch-startup-image-2160x1620.png", + "integrity": "sha512-q4BwNvR4nA/lX+O3hw5SAhDnyOAsxK2QbaUt0J2rBVr9nhewmvgyvPEQTt/rI2+v5Obt8ofbB1nKKTUKpCPpTQ==" + }, + "favicon/apple-touch-startup-image-1536x2048.png": { + "src": "favicon/apple-touch-startup-image-1536x2048.png", + "integrity": "sha512-gvsMZlTvNSZUJ52q80FFfNk+oLaAw2w8EEcX3ns9QYdNJAhn51+VHnceIw49xiQpMZxu8djiEDhmGAbrnBc8Aw==" + }, + "favicon/apple-touch-startup-image-2048x1536.png": { + "src": "favicon/apple-touch-startup-image-2048x1536.png", + "integrity": "sha512-HddG543jHxr+S6DljYFOj+mOrh5xQfIv+Ca2aCDuY+AU15vXWvuMeRAaNB5eGaXUA5ngSrGkPSR6cZItcipmFg==" + }, + "favicon/apple-touch-startup-image-1488x2266.png": { + "src": "favicon/apple-touch-startup-image-1488x2266.png", + "integrity": "sha512-M+iU7dAuzTuuhlkFLwLOnkC/hsN6pFEuwngs+PmKEQeHnWw/nzIsfovwEjQTm5Bz7h/bbwaF8szZFHGh2lNl5A==" + }, + "favicon/apple-touch-startup-image-2266x1488.png": { + "src": "favicon/apple-touch-startup-image-2266x1488.png", + "integrity": "sha512-SOCJUsMcfWiGiQFMdQ7lhUZrjio+/jwrHidpBmMZqxQL8TESi0ODeU3F1ARleaPF+rvjcWmpFpmFN7kn9tkaAA==" + }, + "favicon/apple-touch-startup-image-1284x2778.png": { + "src": "favicon/apple-touch-startup-image-1284x2778.png", + "integrity": "sha512-HytWl/niNY0h8Z2g+lCOn7O9/fpBS+oPU73GnBNCd7CDwHs+IpzZ0duuRlKmfdH8x80y2bsK5DHcRDQo8TJOPQ==" + }, + "favicon/apple-touch-startup-image-1290x2796.png": { + "src": "favicon/apple-touch-startup-image-1290x2796.png", + "integrity": "sha512-uE8D0pZL30x6zd3sq8tPPcmC6Q8g2dSrnypzZGllIkfSGVoj+tSEKcYrS+/L6DPM3jMuF69TNScufJtVA+Qupg==" + }, + "favicon/apple-touch-startup-image-1242x2688.png": { + "src": "favicon/apple-touch-startup-image-1242x2688.png", + "integrity": "sha512-IR0rOpZn1Vs2fT7UavU7MA8D/PDGS7XmaTwkiPxLi3207GPDxZdQHIKA0vIJSodDGJT/ajON/zxDciq/6Jd00Q==" + }, + "favicon/apple-touch-startup-image-1242x2208.png": { + "src": "favicon/apple-touch-startup-image-1242x2208.png", + "integrity": "sha512-V2CpCg23Xb5d0wHJS0dDPjXs9Mk2CxMOn2cx/b9zC2RWBR9QF/F33zI+MioRQ9RPqCZwt093erdAiEiOonDS3Q==" + }, + "favicon/apple-touch-startup-image-2796x1290.png": { + "src": "favicon/apple-touch-startup-image-2796x1290.png", + "integrity": "sha512-Hn5Bsg7wYJhZhE+UmIMBS0lg+lHWjcrNjY/23Qxvk8keWq/D+LEz8UBA8+b9xaCF+HXo39l41keoix9bvg4zyg==" + }, + "favicon/apple-touch-startup-image-2778x1284.png": { + "src": "favicon/apple-touch-startup-image-2778x1284.png", + "integrity": "sha512-CF8j/XPdlQUQHNjxGO59cS2GVyskflUEPnCqKOWellvVq+RdRa7r3952bNVlUrfzdCoaeszmZS4n71qn2ZTyTA==" + }, + "favicon/apple-touch-startup-image-2208x1242.png": { + "src": "favicon/apple-touch-startup-image-2208x1242.png", + "integrity": "sha512-Ime4TqPHk2qrjA8eHM50as6Sgnlvn3pCkLlI1B/yBDvZ4CPWxDidSmWeJHeV//3dThozo95VllD1bvz/cw8gQA==" + }, + "favicon/apple-touch-startup-image-1179x2556.png": { + "src": "favicon/apple-touch-startup-image-1179x2556.png", + "integrity": "sha512-CGw2nqsLTTrX3YjpHGuJD18Mv8tHySni96E6Z6pTGwfAKK1l6UCqFtbRlUZQ2MlN8vudm4aFifKtPDlFyyAOzw==" + }, + "favicon/apple-touch-startup-image-1170x2532.png": { + "src": "favicon/apple-touch-startup-image-1170x2532.png", + "integrity": "sha512-Bctz35gi47GseEkA5EmsAVmtS60Vhlrc0czWW4UY0cQqIGO0VfoGvSXaccCNesY8VMgVWoZayLxcwrUWbUKK9A==" + }, + "favicon/apple-touch-startup-image-2688x1242.png": { + "src": "favicon/apple-touch-startup-image-2688x1242.png", + "integrity": "sha512-ZamHO4IC0SZ5XhNCI0HaeGaKiDgLhuwWZ12z9Rt0auKt9bvtVucJgI74iAmRXE9zZNE5nmZwMuhajd+dzmZamg==" + }, + "favicon/apple-touch-startup-image-1125x2436.png": { + "src": "favicon/apple-touch-startup-image-1125x2436.png", + "integrity": "sha512-FNQGGCfYgeFjeFzLFNmqcB9bcWaEX6rGk1bUS+oetvVQBU9iZ/YYp9go1A5oeifV1MMX290mlcDwG4i/mg2I0g==" + }, + "favicon/favicon.ico": { + "src": "favicon/favicon.ico", + "integrity": "sha512-oyLtFbxhoEnH/aFDXDWkC+S1LT5M7VHeH+f+FOLsy8JzsswzGR0VkLu/BFvzyVQTzexmfNjP4ZFm6QJYW1/7hw==" + }, + "favicon/apple-touch-startup-image-2556x1179.png": { + "src": "favicon/apple-touch-startup-image-2556x1179.png", + "integrity": "sha512-Jtknw0tI9ryKINVqgtOWLR8dZgc6cPhrh1XrDwQHRGvfdwTcU2/AGVr1w9mj59RZNnMZZgikpdW0ebZuUe4YjA==" + }, + "favicon/apple-touch-startup-image-2532x1170.png": { + "src": "favicon/apple-touch-startup-image-2532x1170.png", + "integrity": "sha512-vAjXBduB/PLTvOwTsCf+VvkRq5PNhxCjDMJ408ul3wFjUb7owqU/LKspOtkNuxOE2H9u2aXqJhdcR61AUdeP8Q==" + }, + "favicon/apple-touch-startup-image-2436x1125.png": { + "src": "favicon/apple-touch-startup-image-2436x1125.png", + "integrity": "sha512-yW+pbc/y6e4ZtL/PfbA77bs++nyHDjt2LewdNSgHoFytdO/0IzCi2th64HrqjkXAnwieqnqBIHOmfQDb6ntOxw==" + }, + "favicon/apple-touch-icon-1024x1024.png": { + "src": "favicon/apple-touch-icon-1024x1024.png", + "integrity": "sha512-uNxs8UKFz57bkfl4uezhkIl4VfZIuSOV6lcaE/0VIYbx8hFZ7SJTShz9wiIzPMZsCSHKMY5P7uhr0FigLGD+3w==" }, "katex.css": { - "src": "katex-66092164.min.css", - "integrity": "sha512-ng+uY3bZP0IENn+fO0T+jdk1v1r7HQJjsVRJgzU+UiJJadAevmo0gVNrpVxrBFGpRQqSz42q20uTre1C1Qrnow==" + "src": "katex-a0da2a32.min.css", + "integrity": "sha512-dsM9rZ31dli/kG9VZShrbuMaNaj6t/aVT6/ZjfTuSGNp1r1EonVHHESDrKKHGbmYqs0HIUcnpWIOEqsoDlpdyw==" + }, + "favicon/apple-touch-startup-image-828x1792.png": { + "src": "favicon/apple-touch-startup-image-828x1792.png", + "integrity": "sha512-lOKELuDZcqdtCvvU+wU4XbRSGVx4j5fXOViEIy8vJ/H/vad9Nb1HjXA517Mo2X3KE+xWpKBa7iaRKONe2NR77A==" + }, + "favicon/apple-touch-startup-image-1792x828.png": { + "src": "favicon/apple-touch-startup-image-1792x828.png", + "integrity": "sha512-Q0rPW22UcOSrAk1Cc+VJElqo1FUOxN6M5yk6rr19l15aDfwMmlWVLVCEEuYr7YN9Yd7P6oFIP5krWpBwP8XevA==" + }, + "favicon/apple-touch-startup-image-750x1334.png": { + "src": "favicon/apple-touch-startup-image-750x1334.png", + "integrity": "sha512-zFiwOUbcWZ5ZT6WIoo5JH5sBgNRKgaw+38nZ4INvrJksTXVYiTSNK+HI+g/fpjATMD3oIy3zRD1QD5MF0xcI+A==" + }, + "favicon/apple-touch-startup-image-1334x750.png": { + "src": "favicon/apple-touch-startup-image-1334x750.png", + "integrity": "sha512-wS3VX86WIIMYLFcu6PTWwilPBtW2/eQgoFC4nUPbxOhA6tDCv0jXfLhpFBk0kEPvtFGqIzdMIwkhB3Q9z2WuEQ==" + }, + "favicon/apple-touch-startup-image-640x1136.png": { + "src": "favicon/apple-touch-startup-image-640x1136.png", + "integrity": "sha512-Ol0z2NW7PjFrVwo5GQ0IolK6IsFJyji9biOIE7BW9wuid/H8VhMW6/j4Sxh9SZ/v0NEtQqaA5VOjvLT7hcpxVA==" + }, + "favicon/apple-touch-startup-image-1136x640.png": { + "src": "favicon/apple-touch-startup-image-1136x640.png", + "integrity": "sha512-l7AF6JJHQNpeEOT32Tj+sZsyigN+FIer/RLxKqwLzXZ3cPMizSjmL5FjfoyZ7waJfDpxV448BWJcpObDEp2f0Q==" + }, + "favicon/android-chrome-512x512.png": { + "src": "favicon/android-chrome-512x512.png", + "integrity": "sha512-XmRxXro8tWSW9pyhfNcuoIVqHqOHH051Lh8NpsR0bMMILrx4QSIGI+IOKo2DYafyJ32rRXQ9XapCUigUoU9lVA==" + }, + "favicon/android-chrome-384x384.png": { + "src": "favicon/android-chrome-384x384.png", + "integrity": "sha512-aaWWtDDKoURtcZjVjuEygWnAX3JmiMIkzG2gw0e90QU2BBiMEFRh+Dq5lONs3NKviyhKrWjYXktnLzbBDgwYqw==" + }, + "favicon/mstile-310x310.png": { + "src": "favicon/mstile-310x310.png", + "integrity": "sha512-0cJZvExwO4YX9shSiRIio61MHiRYzmd1ZKJcIuurb30a85VAebz64fGkg5WgaljhDufbzQV8juSMSMdjVU1PaQ==" + }, + "favicon/android-chrome-256x256.png": { + "src": "favicon/android-chrome-256x256.png", + "integrity": "sha512-7K6tC2Nt0G4xGWOnXI0eHTnflCfBnmoZI+41wRXubcINCVj9zfE1urbpRvWXu+JEkyoD+/1i/SHKJvlj0V8Qng==" + }, + "favicon/android-chrome-192x192.png": { + "src": "favicon/android-chrome-192x192.png", + "integrity": "sha512-vFuJFgoHAo1gYkmVDylyiAHTUEAzZWmusNxCf4BKZucXjB1O5WSNrnaDHd/P1U3If7pTDG3zM3R8xll9qn/TFw==" + }, + "favicon/apple-touch-icon-167x167.png": { + "src": "favicon/apple-touch-icon-167x167.png", + "integrity": "sha512-n9IE0XrWkdUJCWDP+BXWGZ3f8YPWUt0j1YbpOql6ECHbBv94MqBZsCNgAAZcz2nlngn6B/VsLquKPF+C73uAaA==" + }, + "favicon/apple-touch-icon-180x180.png": { + "src": "favicon/apple-touch-icon-180x180.png", + "integrity": "sha512-MOwxPnc3afecYk/ITIQPavTxfNlk68gSBXzbhrf+cYuXaXx+OKApfhsfT0MwS0RjFsi50lirbvtJyyWUce+AnA==" + }, + "favicon/apple-touch-icon-precomposed.png": { + "src": "favicon/apple-touch-icon-precomposed.png", + "integrity": "sha512-MOwxPnc3afecYk/ITIQPavTxfNlk68gSBXzbhrf+cYuXaXx+OKApfhsfT0MwS0RjFsi50lirbvtJyyWUce+AnA==" + }, + "favicon/apple-touch-icon.png": { + "src": "favicon/apple-touch-icon.png", + "integrity": "sha512-MOwxPnc3afecYk/ITIQPavTxfNlk68gSBXzbhrf+cYuXaXx+OKApfhsfT0MwS0RjFsi50lirbvtJyyWUce+AnA==" + }, + "favicon/apple-touch-icon-152x152.png": { + "src": "favicon/apple-touch-icon-152x152.png", + "integrity": "sha512-Tl7OztU9EPEmqAB5g1fZbDfJILIFGGRYoXVRLmBli4G/kDRcZMhsZPEpwjcaElSsZ6Vf+GOBX5w+y/37wcLNmA==" + }, + "favicon/apple-touch-icon-144x144.png": { + "src": "favicon/apple-touch-icon-144x144.png", + "integrity": "sha512-RcXaoNQ/5TvDfRK3B16Xmbool22kaq9anaZ/+bxz6T4IkXly6Ss4V7E7sjAHY0z9VdBi8RlOXmCf1QVF/bO1UQ==" + }, + "favicon/android-chrome-144x144.png": { + "src": "favicon/android-chrome-144x144.png", + "integrity": "sha512-MwJ9846H56kKjlblEn11IvX5wwgw8thJRda/Oz17yUs75jussMZX4XX5CFgp+Fgcj00FydeEm2x5QX4aay2H4w==" + }, + "favicon/mstile-144x144.png": { + "src": "favicon/mstile-144x144.png", + "integrity": "sha512-MwJ9846H56kKjlblEn11IvX5wwgw8thJRda/Oz17yUs75jussMZX4XX5CFgp+Fgcj00FydeEm2x5QX4aay2H4w==" + }, + "favicon/mstile-310x150.png": { + "src": "favicon/mstile-310x150.png", + "integrity": "sha512-533u9y8NEHRs6GP6+n7s7h296T50Y8dwB8FcS5htN7k+V9hWfurx6zfeqw6nDA9r9viOcKQXlJ/XfZLEpaMGMA==" + }, + "favicon/mstile-150x150.png": { + "src": "favicon/mstile-150x150.png", + "integrity": "sha512-jm3Ncpm56VyOSvOsiKRMhX/AYl6vbZr9n80if2QsEyx/Rk9/+owriCEhlKkQ0krUrlEvvAh4Yy40JIiB7GHZYw==" + }, + "favicon/apple-touch-icon-114x114.png": { + "src": "favicon/apple-touch-icon-114x114.png", + "integrity": "sha512-ZiGvyFWIDPl9YZ+NOn93b/7EpDtrw97agCizkuDdFRLr9I2u9FFZTnoik7LJapL3dnDGYD0E8qTJULOwMAthzA==" + }, + "favicon/apple-touch-icon-120x120.png": { + "src": "favicon/apple-touch-icon-120x120.png", + "integrity": "sha512-0PVV+vO18IoVIOgedCOGdzRv6DF/71ygDGR7ijVJOT06xOsACnKooiS25YcXg6sVYjSBNO9omRGqYS+icunJCw==" + }, + "favicon/manifest.webmanifest": { + "src": "favicon/manifest.webmanifest", + "integrity": "sha512-jWI8l1WzeZTVACRS28IeRRCxVue3FSmpky9ou90cG6sc7e9kmJtfQ9NfoFMYyOZ0xIqiA6N2FFD1e/Sx7VXK4g==" + }, + "favicon/android-chrome-96x96.png": { + "src": "favicon/android-chrome-96x96.png", + "integrity": "sha512-Ml8MN6tFQcvVu1M9uFZyZxrtkJwcQv1i/VBs+6YDFvfNkGkvAMGmD3xmvS6qPbc6zazvpncQoAwihcwDYQ1DdQ==" }, "mobile.scss": { "src": "mobile-79ddc617.min.css", "integrity": "sha512-dzw2wMOouDwhSgstQKLbXD/vIqS48Ttc2IV6DeG7yam9yvKUuChJVaworzL8s2UoGMX4x2jEm50PjFJE4R4QWw==" }, + "favicon/apple-touch-icon-72x72.png": { + "src": "favicon/apple-touch-icon-72x72.png", + "integrity": "sha512-xtDi3mPErMdQnOCAF36WY9+Yb9IEgFiWZxcwfI8ZyzLM+zSVXieiTNgvMp3Q7FKbYzuO/YbcY34aSpDeNbwSkw==" + }, + "favicon/apple-touch-icon-76x76.png": { + "src": "favicon/apple-touch-icon-76x76.png", + "integrity": "sha512-5mXpJ0SOGLyJhM+1sKauzI78IZ2e3KX0Ut6bakTWECIS+GMtGU9i4YX2kCgIlf6MYD8NlHhNjgjTXguCQvpOkQ==" + }, + "favicon/android-chrome-72x72.png": { + "src": "favicon/android-chrome-72x72.png", + "integrity": "sha512-yRiTvAL7S+LN+QqFT20OKvlUxy76dWOdYDt/oYrlvlITmWTB+IT3zscjYV3a+eQK0aaBnI3BYvyPpP0Jl0cp/w==" + }, + "favicon/mstile-70x70.png": { + "src": "favicon/mstile-70x70.png", + "integrity": "sha512-YR17fb3y2Mop9r3sGULUWVS08KBsjl541ijD4NfjH9B7MHXot+bKNm+xtqlYSrTNnh1Q5swG1pE8ilH8aT77kA==" + }, + "favicon/apple-touch-icon-57x57.png": { + "src": "favicon/apple-touch-icon-57x57.png", + "integrity": "sha512-3QaWN6DLuPtw8MP7aduHbuO1xiPEJlWE5WCckCnbLThBoYUOB1RV8flSAFAE11UpmqefMB4r2sWwuGRuHFSCtg==" + }, + "favicon/apple-touch-icon-60x60.png": { + "src": "favicon/apple-touch-icon-60x60.png", + "integrity": "sha512-tHDTnMw35Ydrn4aUvkaXwVUsqBjboI2vqm3n2lL5jf21t6SMoekze+YFNC0MBNWEG08ajVQ9L7Qljf9Z2evhBA==" + }, + "favicon/favicon-48x48.png": { + "src": "favicon/favicon-48x48.png", + "integrity": "sha512-Yp178+WA3ntd5AMrdskywuc8ubmWN9qqghWXAyyzbpBBMhKplIP2BveCOP6R16ZUGOcyzPnzjSRY3yESXjcZCQ==" + }, + "favicon/android-chrome-48x48.png": { + "src": "favicon/android-chrome-48x48.png", + "integrity": "sha512-pPHYffX13GvEmTZMLvEocQDWE7rdp0KIM7cdY3w24+3H37j5vbo7K2xsCR92GpzBNXkw0hzcJcdyktaT+E1sag==" + }, + "favicon/favicon-32x32.png": { + "src": "favicon/favicon-32x32.png", + "integrity": "sha512-5elFUf6p+aWoJI3WIS3dhk3MIAqMMM1XFsVZpzG63sITcr1I8iAfjsCIYTJ3fTvSSoFlFRKZ9djMVSNDEK6DqA==" + }, + "favicon/android-chrome-36x36.png": { + "src": "favicon/android-chrome-36x36.png", + "integrity": "sha512-+cyRuV3w4FEq8DVZRGZ9CTiVja2RtOd9PmAIRciFDEpBX3KhdWS8sbLVl7FQ/yX5IkB8xmPla4VJjcgpcftO8w==" + }, "print.scss": { - "src": "print-735ccc12.min.css", - "integrity": "sha512-c28KLNtBnKDW1+/bNWFhwuGBLw9octTXA2wnuaS2qlvpNFL0DytCapui9VM4YYkZg6e9TVp5LyuRQc2lTougDw==" + "src": "print-72068949.min.css", + "integrity": "sha512-uuCwn+/RdwIo3i0FQEJpU2BX38diEpzBQD6eDEePbDmzjYTil/TI9ijRDEUGSqnXSL9pX+YPNzsQJDxPlBG92g==" + }, + "favicon/favicon-16x16.png": { + "src": "favicon/favicon-16x16.png", + "integrity": "sha512-w2lU/rHj2Yf/yb5QMLW9CMSVv8jCr2kBqvqekSINDI7K7oga1RSeCPEtgcSy9n6zQzdFOmswybhPtNJhPcD9TA==" + }, + "favicon/browserconfig.xml": { + "src": "favicon/browserconfig.xml", + "integrity": "sha512-cUHMy43WEDyWiiDTIcOab69HpATbZfoMFHJTYFx3SiU+vXLMHqo3w3mgQnrvdfs42gp37T+bw05l1qLFxlGwoA==" }, "custom.css": { "src": "custom.css", diff --git a/docs/themes/hugo-geekdoc/eslint.config.js b/docs/themes/hugo-geekdoc/eslint.config.js new file mode 100644 index 00000000..42e87cbc --- /dev/null +++ b/docs/themes/hugo-geekdoc/eslint.config.js @@ -0,0 +1,22 @@ +import eslint from "@eslint/js"; +import globals from "globals"; +import babelParser from "@babel/eslint-parser"; +import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; + +export default [ + eslint.configs.recommended, + { + languageOptions: { + globals: { + ...globals.browser, + }, + parser: babelParser, + ecmaVersion: 2022, + sourceType: "module", + parserOptions: { + requireConfigFile: false, + }, + }, + }, + eslintPluginPrettierRecommended, +]; diff --git a/docs/themes/hugo-geekdoc/i18n/am.yaml b/docs/themes/hugo-geekdoc/i18n/am.yaml new file mode 100644 index 00000000..b9db5dc8 --- /dev/null +++ b/docs/themes/hugo-geekdoc/i18n/am.yaml @@ -0,0 +1,52 @@ +--- +edit_page: ገጹን ማስተካከያ + +nav_navigation: መሄጃ +nav_tags: መለያዎች +nav_more: ተጨማሪ +nav_top: ወደ ላይ ተመለስ + +form_placeholder_search: ፈልግ + +error_page_title: ጠፋብዎት? አይጨነቁ። +error_message_title: ጠፋብዎት? +error_message_code: አልተገኘም +error_message_text: > + ገጹን ማግኘት አልተቻለም፤ ነገር ግን አይጨነቁ፤ በዚህ ገጽ መመለስ ይችላሉ። + +button_toggle_dark: ብሩህ/ጨለማ መቀያየሪያ +button_nav_open: መሄጃውን ክፈት +button_nav_close: መሄጃውን ዝጋ +button_menu_open: ምርጫዎችን ክፈት +button_menu_close: ምርጫዎችን ዝጋ +button_homepage: ወደ መጀመሪያ ገጽ ተመለስ + +title_anchor_prefix: "ማያያዣ ወደ:" + +posts_read_more: ሙሉውን ያንብቡ +posts_read_time: + one: "ለማንበብ አንድ ደቂቃ" + other: "{{ . }} ደቂቃዎች ለማንበብ" +posts_update_prefix: መጨረሻ የዘመነው +posts_count: + one: "አንድ ጽሑፍ" + other: "{{ . }} ጽሑፎች" +posts_tagged_with: ከ '{{ . }}' ጋር የተዛመዱ ጽሑፎች በሙሉ + +footer_build_with: > + በ Hugo የተገነባ ከ + ጋር +footer_legal_notice: ሕጋዊ መረጃዎች +footer_privacy_policy: ስለ መረጃዎ አያያዝ ያለን አቋም +footer_content_license_prefix: > + ስለ ይዘቱ ባለመብትነት መረጃ + +language_switch_no_tranlation_prefix: "ያልተተረጐመ ገጽ:" + +propertylist_required: ግድ የሚያስፈልግ +propertylist_optional: ግድ ያልሆነ +propertylist_default: በባዶ ፈንታ + +pagination_page_prev: ያለፈው +pagination_page_next: ቀጣይ +pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}" diff --git a/docs/themes/hugo-geekdoc/i18n/da.yaml b/docs/themes/hugo-geekdoc/i18n/da.yaml new file mode 100644 index 00000000..2ba96eaf --- /dev/null +++ b/docs/themes/hugo-geekdoc/i18n/da.yaml @@ -0,0 +1,53 @@ +--- +edit_page: Rediger side + +nav_navigation: Navigation +nav_tags: Tags +nav_more: Mere +nav_top: Til toppen + +form_placeholder_search: Søg + +error_page_title: Faret vild? Bare rolig +error_message_title: Lost? +error_message_code: Fejl 404 +error_message_text: > + Det du leder efter kan ikke findes. Bare rolig, du kan komme tilbage til + forsiden. + +button_toggle_dark: Skift Dark/Light/Auto mode +button_nav_open: Åben navigation +button_nav_close: Luk navigation +button_menu_open: Åben menubar +button_menu_close: Luk menubar +button_homepage: Tilbage til forsiden + +title_anchor_prefix: "Link til:" + +posts_read_more: Læs fulde indlæg +posts_read_time: + one: "Et minut at gennemlæse" + other: "{{ . }} minutter at gennemlæse" +posts_update_prefix: Opdateret den +posts_count: + one: "Et indlæg" + other: "{{ . }} indlæg" +posts_tagged_with: Alle indslag tagget med '{{ . }}' + +footer_build_with: > + Bygget med Hugo og + +footer_legal_notice: Forretningsbetingelser +footer_privacy_policy: Privatlivspolitik +footer_content_license_prefix: > + Indhold licenseret under + +language_switch_no_tranlation_prefix: "Indlæg ikke oversat:" + +propertylist_required: påkrævet +propertylist_optional: valgfri +propertylist_default: udgangspunkt + +pagination_page_prev: forrige +pagination_page_next: næste +pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}" diff --git a/docs/themes/hugo-geekdoc/i18n/fr.yaml b/docs/themes/hugo-geekdoc/i18n/fr.yaml new file mode 100644 index 00000000..bbded857 --- /dev/null +++ b/docs/themes/hugo-geekdoc/i18n/fr.yaml @@ -0,0 +1,53 @@ +--- +edit_page: Editer la page + +nav_navigation: Navigation +nav_tags: Tags +nav_more: Plus +nav_top: Retour au haut de page + +form_placeholder_search: Chercher + +error_page_title: Perdu? Ne t'inquiète pas +error_message_title: Perdu? +error_message_code: Error 404 +error_message_text: > + On dirait que ce que vous cherchez est introuvable. Ne vous inquiétez pas, nous pouvons + vous ramèner à la page d'accueil. + +button_toggle_dark: Basculer le mode Sombre/Clair/Auto +button_nav_open: Ouvrir la navigation +button_nav_close: Fermer la navigation +button_menu_open: Ouvrir la barre de menus +button_menu_close: Fermer la barre de menus +button_homepage: retour à la page d'accueil + +title_anchor_prefix: "Ancrer à :" + +posts_read_more: Lire l'article complet +posts_read_time: + one: "Une minute pour lire" + other: "{{ . }} minutes à lire" +posts_update_prefix: Mis à jour le +posts_count: + one: "Un billet" + other: "{{ . }} billets" +posts_tagged_with: Tous les articles marqués avec '{{ . }}' + +footer_build_with: > + Construit avec Hugo et + +footer_legal_notice: Mentions légales +footer_privacy_policy: Politique de confidentialité +footer_content_license_prefix: > + Contenu sous licence + +language_switch_no_tranlation_prefix: "Page non traduite:" + +propertylist_required: requis +propertylist_optional: facultatif +propertylist_default: défaut + +pagination_page_prev: précédent +pagination_page_next: suivant +pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}" diff --git a/docs/themes/hugo-geekdoc/i18n/oc.yaml b/docs/themes/hugo-geekdoc/i18n/oc.yaml new file mode 100644 index 00000000..a68685f3 --- /dev/null +++ b/docs/themes/hugo-geekdoc/i18n/oc.yaml @@ -0,0 +1,53 @@ +--- +edit_page: Modificar la pagina + +nav_navigation: Navegacion +nav_tags: Etiquetas +nav_more: Mai +nav_top: Tornar ennaut + +form_placeholder_search: Cercar + +error_page_title: Perdut ? Cap de problèma +error_message_title: Perdut ? +error_message_code: Error 404 +error_message_text: > + Sembla que cercatz quicòm que se pòt pas trobat. Vos’n fagatz pas vos podèm + tornar a la pagina d’acuèlh. + +button_toggle_dark: Alternar lo mòde escur/clar/auto +button_nav_open: Dobrir la navegacion +button_nav_close: Tampar la navegacion +button_menu_open: Dobrir la barra de menú +button_menu_close: Tampar la barra de menú +button_homepage: Tornar a la pagina d’acuèlh + +title_anchor_prefix: "Ancorar a:" + +posts_read_more: Legir la publicacion complèta +posts_read_time: + one: "Una minuta de lectura" + other: "{{ . }} minutas de lectura" +posts_update_prefix: Actualizada lo +posts_count: + one: "Una publicacion" + other: "{{ . }} publicacions" +posts_tagged_with: Totas las publicacions amb '{{ . }}' + +footer_build_with: > + Construch amb Hugo e + +footer_legal_notice: Mencions legalas +footer_privacy_policy: politica de confidencialitat +footer_content_license_prefix: > + Contengut sota licéncia + +language_switch_no_tranlation_prefix: "Pagina non traducha :" + +propertylist_required: requerit +propertylist_optional: opcional +propertylist_default: per defaut + +pagination_page_prev: prec. +pagination_page_next: seg. +pagination_page_state: "{{ .PageNumber }}/{{ .TotalPages }}" diff --git a/docs/themes/hugo-geekdoc/layouts/404.html b/docs/themes/hugo-geekdoc/layouts/404.html index f8a61bb5..ee7ba2d5 100644 --- a/docs/themes/hugo-geekdoc/layouts/404.html +++ b/docs/themes/hugo-geekdoc/layouts/404.html @@ -27,7 +27,7 @@
{{ i18n "error_message_title" }}
{{ i18n "error_message_code" }}
- {{ i18n "error_message_text" .Site.BaseURL | safeHTML }} + {{ i18n "error_message_text" .Site.Home.Permalink | safeHTML }}
diff --git a/docs/themes/hugo-geekdoc/layouts/_default/baseof.html b/docs/themes/hugo-geekdoc/layouts/_default/baseof.html index ebc39cfc..98807795 100644 --- a/docs/themes/hugo-geekdoc/layouts/_default/baseof.html +++ b/docs/themes/hugo-geekdoc/layouts/_default/baseof.html @@ -22,6 +22,10 @@ + + {{ partial "svg-icon-symbols" . }} @@ -46,9 +50,16 @@ {{ template "main" . }} + {{ $showPrevNext := (default true .Site.Params.geekdocNextPrev) }} + {{ if $showPrevNext }} + {{ end }} diff --git a/docs/themes/hugo-geekdoc/layouts/_default/list.html b/docs/themes/hugo-geekdoc/layouts/_default/list.html index 94172f65..e78b2745 100644 --- a/docs/themes/hugo-geekdoc/layouts/_default/list.html +++ b/docs/themes/hugo-geekdoc/layouts/_default/list.html @@ -4,6 +4,7 @@

{{ partial "utils/title" . }}

{{ partial "utils/content" . }} diff --git a/docs/themes/hugo-geekdoc/layouts/_default/single.html b/docs/themes/hugo-geekdoc/layouts/_default/single.html index 94172f65..adcc333a 100644 --- a/docs/themes/hugo-geekdoc/layouts/_default/single.html +++ b/docs/themes/hugo-geekdoc/layouts/_default/single.html @@ -4,8 +4,10 @@

{{ partial "utils/title" . }}

+ {{ partial "page-metadata" . }} {{ partial "utils/content" . }}
{{ end }} diff --git a/docs/themes/hugo-geekdoc/layouts/_default/taxonomy.html b/docs/themes/hugo-geekdoc/layouts/_default/taxonomy.html index bb97e8ed..8f4de6fd 100644 --- a/docs/themes/hugo-geekdoc/layouts/_default/taxonomy.html +++ b/docs/themes/hugo-geekdoc/layouts/_default/taxonomy.html @@ -1,4 +1,5 @@ {{ define "main" }} +
{{ range .Paginator.Pages }}
@@ -31,6 +32,7 @@

{{ end }} +
{{ partial "pagination.html" . }} {{ end }} diff --git a/docs/themes/hugo-geekdoc/layouts/_default/terms.html b/docs/themes/hugo-geekdoc/layouts/_default/terms.html index 2316ef56..aa7aa56e 100644 --- a/docs/themes/hugo-geekdoc/layouts/_default/terms.html +++ b/docs/themes/hugo-geekdoc/layouts/_default/terms.html @@ -1,4 +1,5 @@ {{ define "main" }} +
{{ range .Paginator.Pages.ByTitle }}
@@ -28,5 +29,6 @@

{{ end }} +
{{ partial "pagination.html" . }} {{ end }} diff --git a/docs/themes/hugo-geekdoc/layouts/partials/head/others.html b/docs/themes/hugo-geekdoc/layouts/partials/head/others.html index 537c2ff8..06f346dd 100644 --- a/docs/themes/hugo-geekdoc/layouts/partials/head/others.html +++ b/docs/themes/hugo-geekdoc/layouts/partials/head/others.html @@ -67,7 +67,7 @@ {{- end }} {{- if (default false $.Site.Params.geekdocOverwriteHTMLBase) }} - + {{- end }} {{ printf "" "Made with Geekdoc theme https://github.com/thegeeklab/hugo-geekdoc" | safeHTML }} diff --git a/docs/themes/hugo-geekdoc/layouts/partials/language.html b/docs/themes/hugo-geekdoc/layouts/partials/language.html index fdcafd2b..b796cd61 100644 --- a/docs/themes/hugo-geekdoc/layouts/partials/language.html +++ b/docs/themes/hugo-geekdoc/layouts/partials/language.html @@ -1,4 +1,4 @@ -{{ if .Site.IsMultiLingual }} +{{ if hugo.IsMultilingual }}