diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml
new file mode 100644
index 0000000..aaecf56
--- /dev/null
+++ b/.github/workflows/hugo.yaml
@@ -0,0 +1,78 @@
+# Sample workflow for building and deploying a Hugo site to GitHub Pages
+name: Deploy Hugo site to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches:
+ - frontend
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# 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.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+# Default to bash
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ env:
+ HUGO_VERSION: 0.125.3
+ steps:
+ - name: Install Hugo CLI
+ run: |
+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
+ && sudo dpkg -i ${{ runner.temp }}/hugo.deb
+ - name: Install Dart Sass
+ run: sudo snap install dart-sass
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+ fetch-depth: 0
+ - name: Setup Pages
+ id: pages
+ uses: actions/configure-pages@v4
+ - name: Install Node.js dependencies
+ run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
+ - name: Build with Hugo
+ env:
+ # For maximum backward compatibility with Hugo modules
+ HUGO_ENVIRONMENT: production
+ HUGO_ENV: production
+ run: |
+ hugo \
+ --gc \
+ --minify \
+ --baseURL "${{ steps.pages.outputs.base_url }}/"
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ./public
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..7e0cb02
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "cvex/themes/hugo-xterm"]
+ path = cvex/themes/hugo-xterm
+ url = https://github.com/manid2/hugo-xterm
diff --git a/.hugo_build.lock b/.hugo_build.lock
new file mode 100644
index 0000000..e69de29
diff --git a/README.md b/README.md
index 35db667..0b297a5 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,8 @@
-# xplor-cvex
+# CVEX: Common Vulnerability and Exposure Executable
+
+This static HUGO website serves as a database of completed CVEXes. These CVEXes were created by Team Kruegel & Vigna, 4 undergraduate researchers affiliated with UCSB's Early Research Scholars Program 2023-2024 cohort.
+
+Special thanks to Noah Spahn, Professor Giovanni Vigna, and Professor Christopher Kruegel, and UCSB SecLab.
+
+# What is a CVEX?
+CVEX is an executable that runs a software exploit and outputs relevant data in the form of network traffic. Each CVEX is packaged in the form of a Docker container, which has the benefit of being convenient and compatible with any operating system. As a result, CVEXes can be run and analyzed by any person curious to understand the workings of a software vulnerability.
\ No newline at end of file
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644
index 0000000..c6f3fce
--- /dev/null
+++ b/archetypes/default.md
@@ -0,0 +1,5 @@
++++
+title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+date = {{ .Date }}
+draft = true
++++
diff --git a/content/CVEX_directory/CVEX-2017-1000499.md b/content/CVEX_directory/CVEX-2017-1000499.md
new file mode 100644
index 0000000..8b8f611
--- /dev/null
+++ b/content/CVEX_directory/CVEX-2017-1000499.md
@@ -0,0 +1,11 @@
+---
+title: CVEX-2017-1000499
+description: phpMyAdmin versions 4.7.x (prior to 4.7.6.1/4.7.7) are vulnerable to a CSRF weakness. By deceiving a user to click on a crafted URL, it is possible to perform harmful database operations such as deleting records, dropping/truncating tables etc.
+layout: single
+date: 2021-12-19T20:39:39-08:00
+draft: true
+weight: 50
+url: /CVEX-2017-1000499/
+---
+
+Description goes here.
\ No newline at end of file
diff --git a/content/_index.md b/content/_index.md
new file mode 100644
index 0000000..83daf4d
--- /dev/null
+++ b/content/_index.md
@@ -0,0 +1,7 @@
+---
+title: Common Vulnerability and Exposure Executables (CVEX)
+description: A Collection of our Completed CVEXes
+layout: single
+---
+
+CVEXes go here.
\ No newline at end of file
diff --git a/hugo.toml b/hugo.toml
new file mode 100644
index 0000000..3364057
--- /dev/null
+++ b/hugo.toml
@@ -0,0 +1,4 @@
+baseURL = 'https://example.org/'
+languageCode = 'en-us'
+title = 'CVEX'
+theme = 'hugo-xterm'
\ No newline at end of file
diff --git a/public/404.html b/public/404.html
new file mode 100644
index 0000000..623196c
--- /dev/null
+++ b/public/404.html
@@ -0,0 +1,85 @@
+
+
+
+404 Page not found :: CVEX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/CVEX-2017-1000499/index.html b/public/CVEX-2017-1000499/index.html
new file mode 100644
index 0000000..c703927
--- /dev/null
+++ b/public/CVEX-2017-1000499/index.html
@@ -0,0 +1,100 @@
+
+
+
+CVEX-2017-1000499 :: CVEX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Description goes here.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/bundle.js b/public/bundle.js
new file mode 100644
index 0000000..2c3366d
--- /dev/null
+++ b/public/bundle.js
@@ -0,0 +1,106 @@
+(() => {
+ //
+ var container = document.querySelector(".container");
+ var allMenus = document.querySelectorAll(".menu");
+ document.body.addEventListener("click", () => {
+ allMenus.forEach((menu) => {
+ if (menu.classList.contains("open")) {
+ menu.classList.remove("open");
+ }
+ });
+ });
+ window.addEventListener("resize", () => {
+ allMenus.forEach((menu) => {
+ menu.classList.remove("open");
+ });
+ });
+ allMenus.forEach((menu) => {
+ const trigger = menu.querySelector(".menu-trigger");
+ const dropdown = menu.querySelector(".menu-dropdown");
+ trigger.addEventListener("click", (e) => {
+ e.stopPropagation();
+ if (menu.classList.contains("open")) {
+ menu.classList.remove("open");
+ } else {
+ allMenus.forEach((m) => m.classList.remove("open"));
+ menu.classList.add("open");
+ }
+ if (dropdown.getBoundingClientRect().right > container.getBoundingClientRect().right) {
+ dropdown.style.left = "auto";
+ dropdown.style.right = 0;
+ }
+ });
+ dropdown.addEventListener("click", (e) => e.stopPropagation());
+ });
+})();
+
+;
+(() => {
+ //
+ var themeDark = "theme--dark";
+ var themeLight = "theme--light";
+ var bodyClassList = document.body.classList;
+ var isSystemDark = window.matchMedia(
+ "(prefers-color-scheme: dark)"
+ ).matches;
+ var themeToggle = document.querySelector(".theme-toggle");
+ var preferTheme = "prefer-theme";
+ var localTheme = localStorage.getItem(preferTheme);
+ if (localTheme === themeDark) {
+ bodyClassList.add(themeDark);
+ } else if (localTheme === themeLight) {
+ bodyClassList.remove(themeDark);
+ } else if (isSystemDark) {
+ bodyClassList.add(themeDark);
+ }
+ themeToggle.addEventListener("click", () => {
+ if (bodyClassList.contains(themeDark)) {
+ bodyClassList.remove(themeDark);
+ localStorage.setItem(preferTheme, themeLight);
+ } else {
+ bodyClassList.add(themeDark);
+ localStorage.setItem(preferTheme, themeDark);
+ }
+ });
+})();
+
+;
+(() => {
+ //
+ var hiTextBlock = document.querySelectorAll(".highlight-wrapper");
+ hiTextBlock.forEach(function(hiTextBlock2) {
+ const hiToolbar = hiTextBlock2.querySelector(".highlight-toolbar");
+ if (!hiToolbar)
+ return;
+ const hiText = hiTextBlock2.querySelector(".highlight");
+ if (!hiText)
+ return;
+ const copyButton = hiToolbar.querySelector(".js-btn-copy-code");
+ if (!copyButton)
+ return;
+ copyButton.classList.remove("hide");
+ function copyingDone() {
+ copyButton.innerHTML = "Copied!";
+ setTimeout(() => {
+ copyButton.innerHTML = "Copy";
+ }, 2e3);
+ }
+ copyButton.addEventListener("click", () => {
+ const range = document.createRange();
+ range.selectNodeContents(hiText);
+ const selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ try {
+ document.execCommand("copy");
+ copyingDone();
+ } catch (e) {
+ }
+ selection.removeRange(range);
+ });
+ });
+})();
+
+;
+(() => {
+})();
diff --git a/public/categories/index.html b/public/categories/index.html
new file mode 100644
index 0000000..95936d1
--- /dev/null
+++ b/public/categories/index.html
@@ -0,0 +1,86 @@
+
+
+
+Categories :: CVEX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Categories
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/categories/index.xml b/public/categories/index.xml
new file mode 100644
index 0000000..37e2f97
--- /dev/null
+++ b/public/categories/index.xml
@@ -0,0 +1,10 @@
+
+
+
+ Categories on CVEX
+ http://localhost:1313/categories/
+ Recent content in Categories on CVEX
+ Hugo -- gohugo.io
+ en-us
+
+
diff --git a/public/cvex_directory/index.html b/public/cvex_directory/index.html
new file mode 100644
index 0000000..40b1ec0
--- /dev/null
+++ b/public/cvex_directory/index.html
@@ -0,0 +1,90 @@
+
+
+
+CVEX_directories :: CVEX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
See
+
CVEX-2017-1000499 2021-12-19
phpMyAdmin versions 4.7.x (prior to 4.7.6.1/4.7.7) are vulnerable to a CSRF weakness. By deceiving a user to click on a crafted URL, it is possible to perform harmful database operations such as deleting records, dropping/truncating tables etc.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/cvex_directory/index.xml b/public/cvex_directory/index.xml
new file mode 100644
index 0000000..99058d8
--- /dev/null
+++ b/public/cvex_directory/index.xml
@@ -0,0 +1,21 @@
+
+
+
+ CVEX_directories on CVEX
+ http://localhost:1313/cvex_directory/
+ Recent content in CVEX_directories on CVEX
+ Hugo -- gohugo.io
+ en-us
+ Sun, 19 Dec 2021 20:39:39 -0800
+ -
+
CVEX-2017-1000499
+ http://localhost:1313/CVEX-2017-1000499/
+ Sun, 19 Dec 2021 20:39:39 -0800
+
+ http://localhost:1313/CVEX-2017-1000499/
+ Description goes here.
+ <p>Description goes here.</p>
+
+
+
+
diff --git a/public/cvex_directory/page/1/index.html b/public/cvex_directory/page/1/index.html
new file mode 100644
index 0000000..6cb6eec
--- /dev/null
+++ b/public/cvex_directory/page/1/index.html
@@ -0,0 +1,10 @@
+
+
+
+ http://localhost:1313/cvex_directory/
+
+
+
+
+
+
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..f05a91d
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,91 @@
+
+
+
+
+CVEX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/index.xml b/public/index.xml
new file mode 100644
index 0000000..30c9211
--- /dev/null
+++ b/public/index.xml
@@ -0,0 +1,21 @@
+
+
+
+ Common Vulnerability and Exposure Executables (CVEX) on CVEX
+ http://localhost:1313/
+ Recent content in Common Vulnerability and Exposure Executables (CVEX) on CVEX
+ Hugo -- gohugo.io
+ en-us
+ Sun, 19 Dec 2021 20:39:39 -0800
+ -
+
CVEX-2017-1000499
+ http://localhost:1313/CVEX-2017-1000499/
+ Sun, 19 Dec 2021 20:39:39 -0800
+
+ http://localhost:1313/CVEX-2017-1000499/
+ Description goes here.
+ <p>Description goes here.</p>
+
+
+
+
diff --git a/public/screenshots/hugo-xterm-ss-01-dark.png b/public/screenshots/hugo-xterm-ss-01-dark.png
new file mode 100644
index 0000000..3d7f384
Binary files /dev/null and b/public/screenshots/hugo-xterm-ss-01-dark.png differ
diff --git a/public/screenshots/hugo-xterm-ss-02-light.png b/public/screenshots/hugo-xterm-ss-02-light.png
new file mode 100644
index 0000000..ab44fbf
Binary files /dev/null and b/public/screenshots/hugo-xterm-ss-02-light.png differ
diff --git a/public/screenshots/hugo-xterm-ss-03-cv.png b/public/screenshots/hugo-xterm-ss-03-cv.png
new file mode 100644
index 0000000..9ce43e4
Binary files /dev/null and b/public/screenshots/hugo-xterm-ss-03-cv.png differ
diff --git a/public/screenshots/hugo-xterm-ss-04-slides.png b/public/screenshots/hugo-xterm-ss-04-slides.png
new file mode 100644
index 0000000..dcfaf8b
Binary files /dev/null and b/public/screenshots/hugo-xterm-ss-04-slides.png differ
diff --git a/public/sitemap.xml b/public/sitemap.xml
new file mode 100644
index 0000000..af9ba9a
--- /dev/null
+++ b/public/sitemap.xml
@@ -0,0 +1,18 @@
+
+
+
+ http://localhost:1313/CVEX-2017-1000499/
+ 2021-12-19T20:39:39-08:00
+
+ http://localhost:1313/
+ 2021-12-19T20:39:39-08:00
+
+ http://localhost:1313/cvex_directory/
+ 2021-12-19T20:39:39-08:00
+
+ http://localhost:1313/categories/
+
+ http://localhost:1313/tags/
+
+
diff --git a/public/styles.css b/public/styles.css
new file mode 100644
index 0000000..021da68
--- /dev/null
+++ b/public/styles.css
@@ -0,0 +1,3 @@
+:root{--phone: (max-width: 684px);--tablet: (max-width: 900px)}button,.button{align-items:center;border-radius:8px;border:1px solid;cursor:pointer;display:flex;font-weight:500;padding:8px 16px;text-align:center}button,.button{background:#dbdbf0;border-color:blue}button:hover,.button:hover{background:rgba(219,219,240,0.4);text-decoration:none}@media print{button,.button{background:#dbdbf0;border-color:blue}button:hover,.button:hover{background:rgba(219,219,240,0.4);text-decoration:none}}.theme--dark button,.theme--dark .button{background:#33334d;border-color:blue}.theme--dark button:hover,.theme--dark .button:hover{background:rgba(51,51,77,0.4);text-decoration:none}@media print{button,.button{display:none}}button:active,.button:active{transform:scale(0.95);transition:transform 0.2s ease}button.outline,button.transparent,.button.outline,.button.transparent{font-weight:400;background:none}button.outline,button.transparent,.button.outline,.button.transparent{color:#2525a7}button.outline:hover,button.transparent:hover,.button.outline:hover,.button.transparent:hover{background:rgba(219,219,240,0.9)}@media print{button.outline,button.transparent,.button.outline,.button.transparent{color:#2525a7}button.outline:hover,button.transparent:hover,.button.outline:hover,.button.transparent:hover{background:rgba(219,219,240,0.9)}}.theme--dark button.outline,.theme--dark button.transparent,.theme--dark .button.outline,.theme--dark .button.transparent{color:#ebebff}.theme--dark button.outline:hover,.theme--dark button.transparent:hover,.theme--dark .button.outline:hover,.theme--dark .button.transparent:hover{background:rgba(51,51,77,0.9)}button.transparent,.button.transparent{border:none}button.outline.brighter,.button.outline.brighter{border-color:#dcdcf0}@media print{button.outline.brighter,.button.outline.brighter{border-color:#dcdcf0}}.theme--dark button.outline.brighter,.theme--dark .button.outline.brighter{border-color:#393956}button.right,.button.right{justify-content:flex-end}button .label,.button .label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button .icon,.button .icon{margin-right:4px}button .icon.right,.button .icon.right{margin:0 0 0 4px}@media print{a.button{display:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.buttons{display:flex;flex-flow:row wrap;align-items:center;column-gap:8px}@media (max-width: 684px){.buttons{flex-direction:column;row-gap:8px}}.buttons.fill button,.buttons.fill .button{flex:1 0 0}@media (max-width: 684px){.buttons.fill button,.buttons.fill .button{width:100%;justify-content:center}}.gitinfo,.breadcrumbs{font-size:.875rem;font-style:italic}.breadcrumbs{width:fit-content;border-bottom:1px solid}.breadcrumbs{border-color:blue}@media print{.breadcrumbs{border-color:blue}}.theme--dark .breadcrumbs{border-color:blue}.gitinfo{margin:16px 0;border-top:1px solid}.gitinfo{color:#37373c;border-color:blue}@media print{.gitinfo{color:#37373c;border-color:blue}}.theme--dark .gitinfo{color:#b0b0bf;border-color:blue}@media print{.gitinfo{margin:0}.gitinfo a::after{display:none}.gitinfo p{margin:8px 0 0 0;font-size:.875rem}}.theme-toggle{cursor:pointer;padding:0}.theme-toggler{fill:currentcolor}.navbar{display:flex;flex-flow:row wrap;align-items:flex-start;justify-content:space-between}.navbar__first{font-weight:500;display:block}.navbar__separator{flex-grow:1;border-top:2px dotted}.navbar__separator{border-color:blue}@media print{.navbar__separator{border-color:blue}}.theme--dark .navbar__separator{border-color:blue}.navbar__last{display:block}.navbar__list{list-style:none;margin:0;padding:0;display:flex}.navbar__list>li{flex:0 0 auto;padding-left:8px;display:flex;justify-content:center}.navbar__list.borders>li{padding:4px 8px;border:2px dotted;margin-right:-2px}.navbar__list.borders>li{border-color:blue}@media print{.navbar__list.borders>li{border-color:blue}}.theme--dark .navbar__list.borders>li{border-color:blue}.site-header .navbar{margin-bottom:32px;font-size:1.125rem}@media print{.site-header{display:none}}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu-trigger{margin-right:0;user-select:none;cursor:pointer}.menu-trigger{color:blue}@media print{.menu-trigger{color:blue}}.theme--dark .menu-trigger{color:blue}.menu-dropdown{display:none;flex-direction:column;position:absolute;margin:0;padding:0;top:8px;left:0;list-style:none;z-index:99}.menu-dropdown{background:#ededf7;box-shadow:0 8px rgba(237,237,247,0.8),-8px 8px rgba(237,237,247,0.8),8px 8px rgba(237,237,247,0.8)}@media print{.menu-dropdown{background:#ededf7;box-shadow:0 8px rgba(237,237,247,0.8), -8px 8px rgba(237,237,247,0.8), 8px 8px rgba(237,237,247,0.8)}}.theme--dark .menu-dropdown{background:#14141f;box-shadow:0 8px rgba(20,20,31,0.8),-8px 8px rgba(20,20,31,0.8),8px 8px rgba(20,20,31,0.8)}.open .menu-dropdown{display:flex}.menu-dropdown>li{flex:0 0 auto;padding:4px 8px;border:2px dotted}.menu-dropdown>li{border-color:blue}@media print{.menu-dropdown>li{border-color:blue}}.theme--dark .menu-dropdown>li{border-color:blue}.menu-dropdown>li a{display:flex;text-decoration:none}.menu-dropdown>li a:hover{text-decoration:underline}@media (max-width: 684px){.menu--desktop{display:none}}.menu--mobile .menu-trigger{font-weight:700;padding:4px 8px;height:100%;margin-bottom:0 !important;position:relative;cursor:pointer;border:2px dotted;display:none}.menu--mobile .menu-trigger{color:#262659;background:#ededf7;border-color:blue}@media print{.menu--mobile .menu-trigger{color:#262659;background:#ededf7;border-color:blue}}.theme--dark .menu--mobile .menu-trigger{color:#ccf;background:#14141f;border-color:blue}@media (max-width: 684px){.menu--mobile .menu-trigger{display:block}}@media (max-width: 684px){.menu--mobile .menu-dropdown{left:auto;right:0}}.menu--mobile li{flex:0 0 auto;margin-bottom:-2px}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}body{margin:0;padding:0;font-family:"Fira Sans",arial,helvetica,sans-serif;font-weight:400;font-size:1rem;line-height:1.54;letter-spacing:-0.02em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "zero", "ss01", "locl";font-variant-ligatures:contextual;-webkit-overflow-scrolling:touch;text-size-adjust:100%}@media print{@page{size:a4 portrait;margin:0.5in}}.theme-container{background:#ededf7;color:#262659}@media print{.theme-container{background:#ededf7;color:#262659}}.theme--dark .theme-container{background:#14141f;color:#ccf}@media print{.theme-container{background:white !important;color:black !important}}.site-main{margin:0;padding:0}.hanchor{float:right;margin-right:-24px}.hanchor::after{content:"#";visibility:hidden}.hanchor{color:#4d4dff}@media print{.hanchor{color:#4d4dff}}.theme--dark .hanchor{color:#99f}@media print{.hanchor{display:none}}h1,h2,h3{border-color:blue}@media print{h1,h2,h3{border-color:blue}}.theme--dark h1,.theme--dark h2,.theme--dark h3{border-color:blue}h1{font-size:2rem;border-bottom:2px dotted}h2{font-size:1.6rem;border-bottom:1px solid}h3{font-size:1.25rem;border-bottom:1px dashed}h1,h2,h3,h4,h5,h6{font-family:"Roboto Slab","Times New Roman",garamond,serif;font-weight:500;margin:32px 0 16px 0;width:fit-content}@media print{h1,h2,h3,h4,h5,h6{break-after:avoid-page;margin:8px 0}}h1>a.hanchor,h2>a.hanchor,h3>a.hanchor,h4>a.hanchor,h5>a.hanchor,h6>a.hanchor{text-decoration:none}h1>a.hanchor:focus::after,h2>a.hanchor:focus::after,h3>a.hanchor:focus::after,h4>a.hanchor:focus::after,h5>a.hanchor:focus::after,h6>a.hanchor:focus::after{visibility:visible}h1:hover>a.hanchor::after,h2:hover>a.hanchor::after,h3:hover>a.hanchor::after,h4:hover>a.hanchor::after,h5:hover>a.hanchor::after,h6:hover>a.hanchor::after{visibility:visible}@media print{h1{margin-top:0}}a{text-decoration:none}a:hover{text-decoration:underline}a{color:#063}@media print{a{color:#063}}.theme--dark a{color:#0c6}@media print{a::after{margin-left:4px;content:"(" attr(href) ")";text-decoration:underline;font-style:italic}a::after{color:#262659}}@media print{a::after{color:#262659}}@media print{.theme--dark a::after{color:#ccf}}p{margin:16px 0}code{font-family:"Ubuntu Mono",monaco,consolas,monospace;border-radius:2px;padding:2px 4px}code{color:#8c3800;background:#f8f8fc}@media print{code{color:#8c3800;background:#f8f8fc}}.theme--dark code{color:#ffab73;background:#393956}img{max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}figure{display:table;max-width:100%;margin:24px 0}figure.left{margin-right:auto}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure figcaption{font-size:.875rem;padding:4px 8px;margin-top:4px;opacity:0.8}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}figure figcaption{background:blue;color:#ededf7}@media print{figure figcaption{background:blue;color:#ededf7}}.theme--dark figure figcaption{background:blue;color:#14141f}blockquote{border-left:4px solid;margin:24px 0;padding:16px 16px 16px 24px;font-style:italic}blockquote{color:#2525a7;background:#e6e6f4;border-color:blue}@media print{blockquote{color:#2525a7;background:#e6e6f4;border-color:blue}}.theme--dark blockquote{color:#ebebff;background:#1f1f2e;border-color:blue}@media print{blockquote{margin:24px 0}}blockquote p{position:relative}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p:first-of-type::before{content:">";display:block;position:absolute;left:-24px;padding:4px}table{table-layout:auto;border-collapse:collapse;width:100%;margin:24px 0}table,th,td{border:1px dashed;padding:4px}table,th,td{border-color:blue}@media print{table,th,td{border-color:blue}}.theme--dark table,.theme--dark th,.theme--dark td{border-color:blue}@media print{table,th,td{padding:4px}}th{font-weight:500}th{color:#2525a7;background:#dcdcf0}@media print{th{color:#2525a7;background:#dcdcf0}}.theme--dark th{color:#ebebff;background:#393956}td{font-size:.875rem}ul,ol{margin:0 0 16px 24px;padding:0}@media print{ul,ol{margin-bottom:0}}ul li,ol li{position:relative}@media print{ul li,ol li{break-inside:avoid-page}ul li>p,ol li>p{margin:0 0 4px 0}}ol{list-style:none;counter-reset:li}ol li{counter-increment:li}ol li::before{content:counter(li);position:absolute;right:calc(100% + 10px);display:inline-block;text-align:right}ol li::before{color:"accent"}@media print{ol li::before{color:"accent"}}.theme--dark ol li::before{color:"accent"}ol ol{margin-left:24px}ol ol li{counter-increment:li}ol ol li::before{content:counters(li, ".") " "}li ol,li ul{margin:0 0 0 24px}hr{width:100%;border:none;height:1px}hr{background:blue}@media print{hr{background:blue}}.theme--dark hr{background:blue}@media print{hr{margin:0}}.container{display:flex;flex-direction:column;padding:16px;max-width:864px;min-height:100vh}.container.full,.container.center{border:none;margin:0 auto}.container.full{max-width:100%}@media print{.container{display:initial;padding:0}}.content{display:flex;flex-direction:column}@media print{.content{display:initial}}.hide{display:none}.row{display:flex;flex-flow:row wrap;align-items:center;justify-content:space-between}.row.start{gap:8px;justify-content:flex-start}.col{display:flex;flex-flow:column wrap}.row.lead,.col.lead{font-weight:500;font-size:1.125rem}.row.bold,.col.bold{font-weight:500}.row.sub,.col.sub{font-weight:300;font-style:italic}.cv-title{display:block;border:none;margin:0 0 4px 0}.cv-contacts{display:block;text-align:end;margin:0 0 4px 0}.cv-description{font-style:italic;font-size:.875rem;margin:4px 0}.cv-experience{margin:8px 0;border-bottom:none}@media print{.cv-experience{break-after:avoid-page;break-inside:avoid-page}}.cv-content h2{font-size:1.125rem;width:100%}.cv-content h2 .hanchor{display:none}@media print{.cv-content *{margin-top:2px;margin-bottom:0;line-height:1.2}}.post{width:100%;text-align:left;margin:16px 0}@media print{.post{margin:0 0 24px 0}}.post-entries .item{padding-bottom:8px;margin-bottom:24px}.post-entries .item p{margin:0}.post-entries .item h2,.post-entries .item h3{border-style:none;margin:0;padding:0}.post-header{margin:16px 0}@media print{.post-header{margin:0}}.post-title{position:relative;border-bottom:4px dotted;width:100%;padding-bottom:4px}.post-title{border-color:blue}@media print{.post-title{border-color:blue}}.theme--dark .post-title{border-color:blue}.post-title::after{content:"";position:absolute;bottom:2px;display:block;width:100%;border-bottom:4px dotted}.post-title::after{border-color:blue}@media print{.post-title::after{border-color:blue}}.theme--dark .post-title::after{border-color:blue}.post-title a{text-decoration:none}@media print{.post-title a::after{display:none}}.post-meta,.post-tags{font-style:italic;font-size:.875rem;margin:8px 0}.post-meta,.post-tags{color:#4d4dff}@media print{.post-meta,.post-tags{color:#4d4dff}}.theme--dark .post-meta,.theme--dark .post-tags{color:#99f}@media print{.post-meta a::after,.post-tags a::after{display:none}}.post-description{font-size:1.125rem;font-weight:300}.post-description{color:#2525a7}@media print{.post-description{color:#2525a7}}.theme--dark .post-description{color:#ebebff}.post-toc{margin:16px 0}@media print{.post-toc{display:none}}.post-toc ul,.post-toc ol{margin-bottom:0}.post-cover{border:24px solid "accent";background:transparent;margin:48px 0;padding:24px}@media (max-width: 684px){.post-cover{padding:8px;border-width:8px}}.post-footer{margin:48px 0}@media print{.post-footer{margin:8px 0 0 0}}.post-support{font-style:italic;margin:16px 0;border-top:1px solid}.post-support{border-color:blue}@media print{.post-support{border-color:blue}}.theme--dark .post-support{border-color:blue}@media print{.post-support{margin:24px 0}}.pagination{margin:48px 0}@media print{.pagination{display:none}}.pagination-title{display:flex;text-align:center;position:relative;margin:24px 0}.pagination-title-h{text-align:center;margin:0 auto;padding:4px 16px;font-size:smaller;text-transform:uppercase;text-decoration:none;letter-spacing:0.1em;z-index:1}.pagination-title-h{background:#ededf7;color:rgba(38,38,89,0.6)}@media print{.pagination-title-h{background:#ededf7;color:rgba(38,38,89,0.6)}}.theme--dark .pagination-title-h{background:#14141f;color:rgba(204,204,255,0.6)}.pagination-title hr{position:absolute;left:0;right:0;width:100%;margin-top:16px;z-index:0}.site-footer{margin-top:32px;border-top:1px solid}.site-footer{border-color:blue;color:#37373c}@media print{.site-footer{border-color:blue;color:#37373c}}.theme--dark .site-footer{border-color:blue;color:#b0b0bf}@media print{.site-footer{display:none}}.themeinfo,.buildinfo{font-size:.875rem;margin:8px 0}.copyright{display:flex;flex-flow:row wrap;align-items:center;justify-content:space-between;margin:16px 0}.copyright>p{margin:0}.copyright .navbar__list>li{border:none}.chroma .ln{white-space:pre;user-select:none;padding:0 0.4em;color:#7f7f7f}.chroma .cl{padding:0 0.4em}.chroma .line{display:flex}.chroma .ge{font-style:italic}.chroma .gs{font-weight:500}.chroma .err{color:#960050;background-color:#1e0010}.chroma .hl{background-color:#ffc}.bg,.chroma{color:#272822;background-color:#fafafa}@media print{.bg,.chroma{color:#272822;background-color:#fafafa}}.theme--dark .bg,.theme--dark .chroma{color:#f8f8f2;background-color:#272822}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .no{color:#00a8c8}@media print{.chroma .k,.chroma .kc,.chroma .kd,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .no{color:#00a8c8}}.theme--dark .chroma .k,.theme--dark .chroma .kc,.theme--dark .chroma .kd,.theme--dark .chroma .kp,.theme--dark .chroma .kr,.theme--dark .chroma .kt,.theme--dark .chroma .no{color:#66d9ef}.chroma .kn,.chroma .nt,.chroma .o,.chroma .ow,.chroma .gd{color:#f92672}.chroma .n{color:#111}@media print{.chroma .n{color:#111}}.theme--dark .chroma .n{color:#f8f8f2}.chroma .na,.chroma .nc,.chroma .nd,.chroma .ne,.chroma .nf,.chroma .nx,.chroma .gi{color:#75af00}@media print{.chroma .na,.chroma .nc,.chroma .nd,.chroma .ne,.chroma .nf,.chroma .nx,.chroma .gi{color:#75af00}}.theme--dark .chroma .na,.theme--dark .chroma .nc,.theme--dark .chroma .nd,.theme--dark .chroma .ne,.theme--dark .chroma .nf,.theme--dark .chroma .nx,.theme--dark .chroma .gi{color:#a6e22e}.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#d88200}@media print{.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#d88200}}.theme--dark .chroma .ld,.theme--dark .chroma .s,.theme--dark .chroma .sa,.theme--dark .chroma .sb,.theme--dark .chroma .sc,.theme--dark .chroma .dl,.theme--dark .chroma .sd,.theme--dark .chroma .s2,.theme--dark .chroma .sh,.theme--dark .chroma .si,.theme--dark .chroma .sx,.theme--dark .chroma .sr,.theme--dark .chroma .s1,.theme--dark .chroma .ss{color:#e6db74}.chroma .l,.chroma .se,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#ae81ff}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf,.chroma .gu{color:#75715e}div.highlight-wrapper{margin:24px 0;border-radius:2px;border:1px solid}div.highlight-wrapper{border-color:#dcdcf0}@media print{div.highlight-wrapper{border-color:#dcdcf0}}.theme--dark div.highlight-wrapper{border-color:#393956}div.highlight-wrapper div.highlight-toolbar{display:flex;border-bottom:1px solid}div.highlight-wrapper div.highlight-toolbar{color:#2525a7;background:#f0f0f5;border-color:#dcdcf0}@media print{div.highlight-wrapper div.highlight-toolbar{color:#2525a7;background:#f0f0f5;border-color:#dcdcf0}}.theme--dark div.highlight-wrapper div.highlight-toolbar{color:#ebebff;background:#22222a;border-color:#393956}div.highlight-wrapper div.highlight-toolbar .item{padding:0 8px}div.highlight-wrapper div.highlight-toolbar .item .label{color:#37373c}@media print{div.highlight-wrapper div.highlight-toolbar .item .label{color:#37373c}}.theme--dark div.highlight-wrapper div.highlight-toolbar .item .label{color:#b0b0bf}@media (max-width: 684px){div.highlight-wrapper div.highlight-toolbar .item .label{display:none}}div.highlight-wrapper div.highlight-toolbar .item.right{margin-left:auto}div.highlight .chroma{margin:0;padding:4px 0;overflow:auto}div.highlight .chroma code{color:inherit;background:inherit;padding:0;margin:0}div.highlight .chroma .line span.cl.wrap{white-space:pre-wrap}div.highlight .chroma .cl{padding-right:8px}:root{--r-code-font: Ubuntu Mono,monaco,consolas,monospace;--r-heading-font: Roboto Slab,Times New Roman,garamond,serif;--r-main-font-size: 1rem;--r-main-font: Fira Sans,arial,helvetica,sans-serif}:root{--r-background-color: t($background);--r-heading-color: t($text);--r-main-color: t($text);--r-link-color: t($text-links);--r-link-color-dark: t($text-links);--r-link-color-hover: t($text)}@media print{:root{--r-background-color: t($background);--r-heading-color: t($text);--r-main-color: t($text);--r-link-color: t($text-links);--r-link-color-dark: t($text-links);--r-link-color-hover: t($text)}}.theme--dark :root{--r-background-color: t($background);--r-heading-color: t($text);--r-main-color: t($text);--r-link-color: t($text-links);--r-link-color-dark: t($text-links);--r-link-color-hover: t($text)}.reveal a{color:#063}@media print{.reveal a{color:#063}}.theme--dark .reveal a{color:#0c6}.reveal{width:100%;height:600px}.reveal .slides{text-align:left}.header-left,.footer-left{position:absolute;left:0%;margin:16px 16px}.header-left{top:0%}.footer-left{bottom:0%}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/public/styles.css.map b/public/styles.css.map
new file mode 100644
index 0000000..e5a20e4
--- /dev/null
+++ b/public/styles.css.map
@@ -0,0 +1,37 @@
+{
+ "version": 3,
+ "file": "styles.css",
+ "sourceRoot": "/Users/gracefeng/Desktop/CVEX Website/xplor-cvex",
+ "sources": [
+ "themes/hugo-xterm/assets/styles/app.scss",
+ "themes/hugo-xterm/assets/styles/_variables.scss",
+ "themes/hugo-xterm/assets/styles/_themes.scss",
+ "themes/hugo-xterm/assets/styles/_buttons.scss",
+ "themes/hugo-xterm/assets/styles/_header.scss",
+ "themes/hugo-xterm/assets/styles/_menu.scss",
+ "themes/hugo-xterm/assets/styles/_main.scss",
+ "themes/hugo-xterm/assets/styles/_post.scss",
+ "themes/hugo-xterm/assets/styles/_pagination.scss",
+ "themes/hugo-xterm/assets/styles/_footer.scss",
+ "themes/hugo-xterm/assets/styles/_gen_syntax.scss",
+ "themes/hugo-xterm/assets/styles/_syntax.scss",
+ "themes/hugo-xterm/assets/styles/_slides.scss"
+ ],
+ "sourcesContent": [
+ "@import \"variables\";\n@import \"themes\";\n\n/* components */\n@import \"buttons\";\n@import \"header\";\n@import \"menu\";\n@import \"main\";\n@import \"post\";\n@import \"pagination\";\n@import \"footer\";\n\n/* code syntax highlight */\n@import \"gen_syntax\";\n@import \"syntax\";\n@import \"slides\";\n",
+ "/* Fonts */\n$font-family-title: \"Roboto Slab\", \"Times New Roman\", garamond, serif;\n$font-family-normal: \"Fira Sans\", arial, helvetica, sans-serif;\n$font-family-mono: \"Ubuntu Mono\", monaco, consolas, monospace;\n\n/* Font weights */\n$font-light: 300;\n$font-normal: 400;\n$font-bold: 500;\n\n/* Font sizes */\n$font-size: 1rem;\n$font-size-smaller: $font-size - 0.125;\n$font-size-larger: $font-size + 0.125;\n\n/* Layouts */\n$container-max-width: 864px;\n\n/* Spacers */\n$spacer-1: 1px;\n$spacer-2: $spacer-1 * 2;\n$spacer-smallest: $spacer-2 * 2;\n$spacer-small: $spacer-smallest * 2;\n$spacer-normal: $spacer-small * 2;\n$spacer-large: $spacer-small * 3;\n$spacer-large2: $spacer-small * 4;\n$spacer-largest: $spacer-small * 6;\n\n/* Colors */\n$blue: hsl(\n $hue: 240deg,\n $saturation: 100%,\n $lightness: 50%,\n);\n\n/* Light theme colors */\n$accent--light: $blue;\n$background--light: scale-color(\n $accent--light,\n $saturation: -60%,\n $lightness: 90%\n);\n$text--light: scale-color(\n $accent--light,\n $saturation: -60%,\n $lightness: -50%\n);\n$text-links--light: adjust-color(\n $accent--light,\n $hue: -90deg,\n $lightness: -30%\n);\n\n/* Dark theme colors */\n$accent--dark: $blue;\n$background--dark: scale-color(\n $accent--dark,\n $saturation: -80%,\n $lightness: -80%\n);\n$text--dark: scale-color($accent--dark, $lightness: 80%);\n$text-links--dark: adjust-color(\n $accent--dark,\n $hue: -90deg,\n $lightness: -10%\n);\n\n/* Media queries */\n$phone: \"max-width: 684px\";\n$tablet: \"max-width: 900px\";\n\n:root {\n --phone: (#{$phone});\n --tablet: (#{$tablet});\n}\n",
+ "/* Shortcuts */\n$accent: \"accent\";\n$background: \"background\";\n$text: \"text\";\n$text-links: \"text-links\";\n$text-accent: \"text-accent\";\n$text-brighter: \"text-brighter\";\n$text-duller: \"text-duller\";\n$background-brighter: \"background-brighter\";\n$background-grey: \"background-grey\";\n$code-text: \"code-text\";\n$code-background: \"code-background\";\n$blockquote-background: \"blockquote-background\";\n$button-text: \"button-text\";\n$button-background: \"button-background\";\n\n/* Syntax highlighting colors variables */\n$syn-bg: \"syn-bg\";\n$syn-fg: \"syn-fg\";\n$syn-kw: \"syn-kw\";\n$syn-ld: \"syn-ld\";\n$syn-lse: \"syn-lse\";\n$syn-n: \"syn-n\";\n$syn-na: \"syn-na\";\n\n/* Syntax highlighting common colors based on monokailight and monokai */\n$syn-c: #75715e;\n$syn-op: #f92672;\n$syn-l: #ae81ff;\n\n/* Themes */\n$themes: (\n light: (\n $accent: $accent--light,\n $background: $background--light,\n $text: $text--light,\n $text-links: $text-links--light,\n $text-accent: scale-color($accent--light, $lightness: 30%),\n $text-brighter:\n scale-color($text--light, $saturation: 40%, $lightness: 20%),\n $text-duller:\n scale-color($text--light, $saturation: -90%, $lightness: -10%),\n $background-brighter: scale-color($background--light, $lightness: -5%),\n $background-grey:\n scale-color($accent--light, $saturation: -80%, $lightness: 90%),\n $code-text: scale-color($accent--light, $hue: -90%, $lightness: -45%),\n $code-background: scale-color($background--light, $lightness: 60%),\n $blockquote-background: darken($background--light, 2%),\n $button-text: darken($text--light, 5%),\n $button-background: darken($background--light, 5%),\n $syn-bg: #fafafa,\n $syn-fg: #272822,\n $syn-kw: #00a8c8,\n $syn-ld: #d88200,\n $syn-lse: #8045ff,\n $syn-n: #111,\n $syn-na: #75af00,\n ),\n dark: (\n $accent: $accent--dark,\n $background: $background--dark,\n $text: $text--dark,\n $text-links: $text-links--dark,\n $text-accent: scale-color($accent--dark, $lightness: 60%),\n $text-brighter:\n scale-color($text--dark, $saturation: 60%, $lightness: 60%),\n $text-duller:\n scale-color($text--dark, $saturation: -90%, $lightness: -20%),\n $background-brighter: scale-color($background--dark, $lightness: 20%),\n $background-grey:\n scale-color($accent--dark, $saturation: -90%, $lightness: -70%),\n $code-text: scale-color($accent--dark, $hue: -90%, $lightness: 45%),\n $code-background: scale-color($background--dark, $lightness: 20%),\n $blockquote-background: lighten($background--dark, 5%),\n $button-text: lighten($text--dark, 10%),\n $button-background: lighten($background--dark, 15%),\n $syn-bg: #272822,\n $syn-fg: #f8f8f2,\n $syn-kw: #66d9ef,\n $syn-ld: #e6db74,\n $syn-lse: #ae81ff,\n $syn-n: #f8f8f2,\n $syn-na: #a6e22e,\n ),\n);\n\n/* Current theme global variable */\n$current-theme: null;\n\n@mixin themed() {\n $current-theme: map-get($themes, \"light\") !global;\n\n & {\n @content;\n }\n\n @media print {\n & {\n @content;\n }\n }\n\n $themes-local: map-remove($themes, \"light\");\n\n @each $theme-name, $theme-map in $themes-local {\n .theme--#{$theme-name} & {\n $current-theme: $theme-map !global;\n @content;\n\n $current-theme: null !global;\n }\n }\n}\n\n@function t($key) {\n @return map-get($current-theme, $key);\n}\n",
+ "/* Buttons */\nbutton,\n.button {\n align-items: center;\n border-radius: $spacer-small;\n border: $spacer-1 solid;\n cursor: pointer;\n display: flex;\n font-weight: $font-bold;\n padding: $spacer-small $spacer-normal;\n text-align: center;\n\n @include themed {\n background: t($button-background);\n border-color: t($accent);\n\n &:hover {\n background: transparentize(t($button-background), 0.6);\n text-decoration: none;\n }\n }\n\n @media print {\n display: none;\n }\n\n &:active {\n transform: scale(0.95);\n transition: transform 0.2s ease;\n }\n\n /* button variants */\n &.outline,\n &.transparent {\n font-weight: $font-normal;\n background: none;\n\n @include themed {\n color: t($text-brighter);\n\n &:hover {\n background: transparentize(t($button-background), 0.1);\n }\n }\n }\n\n &.transparent {\n border: none;\n }\n\n &.outline.brighter {\n @include themed {\n border-color: t($background-brighter);\n }\n }\n\n /* button content align right */\n &.right {\n justify-content: flex-end;\n }\n\n /* button label */\n .label {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n /* button icon */\n .icon {\n margin-right: $spacer-smallest;\n\n &.right {\n margin: 0 0 0 $spacer-smallest;\n }\n }\n}\n\na.button {\n @media print {\n display: initial;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n/* Buttons container */\n.buttons {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n column-gap: $spacer-small;\n\n @media ($phone) {\n flex-direction: column;\n row-gap: $spacer-small;\n }\n\n /* Buttons filling the container */\n &.fill {\n button,\n .button {\n flex: 1 0 0;\n\n @media ($phone) {\n width: 100%;\n justify-content: center;\n }\n }\n }\n}\n",
+ ".gitinfo,\n.breadcrumbs {\n font-size: $font-size-smaller;\n font-style: italic;\n}\n\n.breadcrumbs {\n width: fit-content;\n border-bottom: $spacer-1 solid;\n\n @include themed {\n border-color: t($accent);\n }\n}\n\n.gitinfo {\n margin: $spacer-normal 0;\n border-top: $spacer-1 solid;\n\n @include themed {\n color: t($text-duller);\n border-color: t($accent);\n }\n\n @media print {\n margin: 0;\n\n a {\n &::after {\n display: none;\n }\n }\n\n p {\n margin: $spacer-small 0 0 0;\n font-size: $font-size-smaller;\n }\n }\n}\n\n.theme-toggle {\n cursor: pointer;\n padding: 0;\n}\n\n.theme-toggler {\n fill: currentcolor;\n}\n\n.navbar {\n display: flex;\n flex-flow: row wrap;\n align-items: flex-start;\n justify-content: space-between;\n\n &__first {\n font-weight: $font-bold;\n display: block;\n }\n\n &__separator {\n flex-grow: 1;\n border-top: $spacer-2 dotted;\n\n @include themed {\n border-color: t($accent);\n }\n }\n\n &__last {\n display: block;\n }\n\n &__list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n\n > li {\n flex: 0 0 auto;\n padding-left: $spacer-small;\n display: flex;\n justify-content: center;\n }\n\n &.borders {\n > li {\n padding: $spacer-smallest $spacer-small;\n border: $spacer-2 dotted;\n margin-right: $spacer-2 * -1;\n\n @include themed {\n border-color: t($accent);\n }\n }\n }\n }\n}\n\n.site-header {\n .navbar {\n margin-bottom: $spacer-large2;\n font-size: $font-size-larger;\n }\n\n @media print {\n display: none;\n }\n}\n",
+ "@mixin menu {\n display: none;\n flex-direction: column;\n position: absolute;\n margin: 0;\n padding: 0;\n top: $spacer-small;\n left: 0;\n list-style: none;\n z-index: 99;\n\n @include themed {\n $shadow-color: transparentize(t($background), 0.2);\n $shadow: 0 $spacer-small $shadow-color,\n -$spacer-small $spacer-small $shadow-color,\n $spacer-small $spacer-small $shadow-color;\n\n background: t($background);\n box-shadow: $shadow;\n }\n}\n\n@mixin header-menu-trigger {\n font-weight: 700;\n padding: $spacer-smallest $spacer-small;\n height: 100%;\n margin-bottom: 0 !important;\n position: relative;\n cursor: pointer;\n border: $spacer-2 dotted;\n\n @include themed {\n color: t($text);\n background: t($background);\n border-color: t($accent);\n }\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n position: relative;\n list-style: none;\n padding: 0;\n margin: 0;\n\n &-trigger {\n margin-right: 0;\n user-select: none;\n cursor: pointer;\n\n @include themed {\n color: t($accent);\n }\n }\n\n &-dropdown {\n @include menu;\n\n .open & {\n display: flex;\n }\n\n > li {\n flex: 0 0 auto;\n padding: $spacer-smallest $spacer-small;\n border: $spacer-2 dotted;\n\n @include themed {\n border-color: t($accent);\n }\n\n a {\n display: flex;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n }\n\n &--desktop {\n @media ($phone) {\n display: none;\n }\n }\n\n &--mobile {\n .menu-trigger {\n @include header-menu-trigger;\n\n display: none;\n\n @media ($phone) {\n display: block;\n }\n }\n\n .menu-dropdown {\n @media ($phone) {\n left: auto;\n right: 0;\n }\n }\n\n li {\n flex: 0 0 auto;\n margin-bottom: $spacer-2 * -1;\n }\n }\n}\n",
+ "html {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: $font-family-normal;\n font-weight: $font-normal;\n font-size: $font-size;\n line-height: 1.54;\n letter-spacing: -0.02em;\n text-rendering: optimizelegibility;\n -webkit-font-smoothing: antialiased;\n font-feature-settings: \"liga\", \"tnum\", \"zero\", \"ss01\", \"locl\";\n font-variant-ligatures: contextual;\n -webkit-overflow-scrolling: touch;\n text-size-adjust: 100%;\n}\n\n@media print {\n @page {\n size: a4 portrait;\n margin: 0.5in;\n }\n}\n\n.theme-container {\n @include themed {\n background: t($background);\n color: t($text);\n }\n\n @media print {\n background: white !important;\n color: black !important;\n }\n}\n\n.site-main {\n margin: 0;\n padding: 0;\n}\n\n.hanchor {\n float: right;\n margin-right: $spacer-large * -1;\n\n &::after {\n content: \"#\";\n visibility: hidden;\n }\n\n @include themed {\n color: t($text-accent);\n }\n\n @media print {\n display: none;\n }\n}\n\nh1,\nh2,\nh3 {\n @include themed {\n border-color: t($accent);\n }\n}\n\nh1 {\n font-size: $font-size * 2;\n border-bottom: $spacer-2 dotted;\n}\n\nh2 {\n font-size: $font-size * 1.6;\n border-bottom: $spacer-1 solid;\n}\n\nh3 {\n font-size: $font-size * 1.25;\n border-bottom: $spacer-1 dashed;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-family: $font-family-title;\n font-weight: $font-bold;\n margin: $spacer-large2 0 $spacer-normal 0;\n width: fit-content;\n\n @media print {\n break-after: avoid-page;\n margin: $spacer-small 0;\n }\n\n > a.hanchor {\n text-decoration: none;\n }\n\n > a.hanchor:focus::after {\n visibility: visible;\n }\n\n &:hover {\n > a.hanchor::after {\n visibility: visible;\n }\n }\n}\n\n@media print {\n h1 {\n margin-top: 0;\n }\n}\n\na {\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n\n @include themed {\n color: t($text-links);\n }\n\n @media print {\n &::after {\n margin-left: $spacer-smallest;\n content: \"(\" attr(href) \")\";\n text-decoration: underline;\n font-style: italic;\n\n @include themed {\n color: t($text);\n }\n }\n }\n}\n\np {\n margin: $spacer-normal 0;\n}\n\ncode {\n font-family: $font-family-mono;\n border-radius: $spacer-2;\n padding: $spacer-2 $spacer-smallest;\n\n @include themed {\n color: t($code-text);\n background: t($code-background);\n }\n}\n\nimg {\n max-width: 100%;\n\n &.left {\n margin-right: auto;\n }\n\n &.center {\n margin-left: auto;\n margin-right: auto;\n }\n\n &.right {\n margin-left: auto;\n }\n}\n\nfigure {\n display: table;\n max-width: 100%;\n margin: $spacer-large 0;\n\n &.left {\n margin-right: auto;\n }\n\n &.center {\n margin-left: auto;\n margin-right: auto;\n }\n\n &.right {\n margin-left: auto;\n }\n\n figcaption {\n font-size: $font-size-smaller;\n padding: $spacer-smallest $spacer-small;\n margin-top: $spacer-smallest;\n opacity: 0.8;\n\n &.left {\n text-align: left;\n }\n\n &.center {\n text-align: center;\n }\n\n &.right {\n text-align: right;\n }\n\n @include themed {\n background: t($accent);\n color: t($background);\n }\n }\n}\n\nblockquote {\n border-left: $spacer-smallest solid;\n margin: $spacer-large 0;\n padding: $spacer-normal $spacer-normal $spacer-normal $spacer-large;\n font-style: italic;\n\n @include themed {\n color: t($text-brighter);\n background: t($blockquote-background);\n border-color: t($accent);\n }\n\n @media print {\n margin: $spacer-large 0;\n }\n\n p {\n position: relative;\n }\n\n p:first-of-type {\n margin-top: 0;\n }\n\n p:last-of-type {\n margin-bottom: 0;\n }\n\n p:first-of-type::before {\n content: \">\";\n display: block;\n position: absolute;\n left: $spacer-large * -1;\n padding: $spacer-smallest;\n }\n}\n\ntable {\n table-layout: auto;\n border-collapse: collapse;\n width: 100%;\n margin: $spacer-large 0;\n}\n\ntable,\nth,\ntd {\n border: $spacer-1 dashed;\n padding: $spacer-smallest;\n\n @include themed {\n border-color: t($accent);\n }\n\n @media print {\n padding: $spacer-smallest;\n }\n}\n\nth {\n font-weight: $font-bold;\n\n @include themed {\n color: t($text-brighter);\n background: t($background-brighter);\n }\n}\n\ntd {\n font-size: $font-size-smaller;\n}\n\nul,\nol {\n margin: 0 0 $spacer-normal $spacer-large;\n padding: 0;\n\n @media print {\n margin-bottom: 0;\n }\n\n li {\n position: relative;\n\n @media print {\n > p {\n margin: 0 0 $spacer-smallest 0;\n }\n\n break-inside: avoid-page;\n }\n }\n}\n\nol {\n list-style: none;\n counter-reset: li;\n\n li {\n counter-increment: li;\n }\n\n li::before {\n content: counter(li);\n position: absolute;\n right: calc(100% + 10px);\n display: inline-block;\n text-align: right;\n\n @include themed {\n color: $accent;\n }\n }\n\n ol {\n margin-left: $spacer-large;\n\n li {\n counter-increment: li;\n }\n\n li::before {\n content: counters(li, \".\") \" \";\n }\n }\n}\n\nli ol,\nli ul {\n margin: 0 0 0 $spacer-large;\n}\n\nhr {\n width: 100%;\n border: none;\n height: $spacer-1;\n\n @include themed {\n background: t($accent);\n }\n\n @media print {\n margin: 0;\n }\n}\n\n.container {\n display: flex;\n flex-direction: column;\n padding: $spacer-normal;\n max-width: $container-max-width;\n min-height: 100vh;\n\n &.full,\n &.center {\n border: none;\n margin: 0 auto;\n }\n\n &.full {\n max-width: 100%;\n }\n\n @media print {\n display: initial;\n padding: 0;\n }\n}\n\n.content {\n display: flex;\n flex-direction: column;\n\n @media print {\n display: initial;\n }\n}\n\n.hide {\n display: none;\n}\n\n.row {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n justify-content: space-between;\n\n &.start {\n gap: $spacer-small;\n justify-content: flex-start;\n }\n}\n\n.col {\n display: flex;\n flex-flow: column wrap;\n}\n\n.row,\n.col {\n &.lead {\n font-weight: $font-bold;\n font-size: $font-size-larger;\n }\n\n &.bold {\n font-weight: $font-bold;\n }\n\n &.sub {\n font-weight: $font-light;\n font-style: italic;\n }\n}\n\n.cv-title {\n display: block;\n border: none;\n margin: 0 0 $spacer-smallest 0;\n}\n\n.cv-contacts {\n display: block;\n text-align: end;\n margin: 0 0 $spacer-smallest 0;\n}\n\n.cv-description {\n font-style: italic;\n font-size: $font-size-smaller;\n margin: $spacer-smallest 0;\n}\n\n.cv-experience {\n margin: $spacer-small 0;\n border-bottom: none;\n\n @media print {\n break-after: avoid-page;\n break-inside: avoid-page;\n }\n}\n\n.cv-content {\n h2 {\n font-size: $font-size-larger;\n width: 100%;\n\n .hanchor {\n display: none;\n }\n }\n\n @media print {\n * {\n margin-top: $spacer-2;\n margin-bottom: 0;\n line-height: 1.2;\n }\n }\n}\n",
+ ".post {\n width: 100%;\n text-align: left;\n margin: $spacer-normal 0;\n\n @media print {\n margin: 0 0 $spacer-large 0;\n }\n\n &-entries {\n .item {\n padding-bottom: $spacer-small;\n margin-bottom: $spacer-large;\n\n p {\n margin: 0;\n }\n\n h2,\n h3 {\n border-style: none;\n margin: 0;\n padding: 0;\n }\n }\n }\n\n &-header {\n margin: $spacer-normal 0;\n\n @media print {\n margin: 0;\n }\n }\n\n &-title {\n $border-title: $spacer-smallest dotted;\n\n position: relative;\n border-bottom: $border-title;\n width: 100%;\n padding-bottom: $spacer-smallest;\n\n @include themed {\n border-color: t($accent);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n bottom: $spacer-2;\n display: block;\n width: 100%;\n border-bottom: $border-title;\n\n @include themed {\n border-color: t($accent);\n }\n }\n\n a {\n text-decoration: none;\n\n @media print {\n &::after {\n display: none;\n }\n }\n }\n }\n\n &-meta,\n &-tags {\n font-style: italic;\n font-size: $font-size-smaller;\n margin: $spacer-small 0;\n\n @include themed {\n color: t($text-accent);\n }\n\n a {\n @media print {\n &::after {\n display: none;\n }\n }\n }\n }\n\n &-description {\n font-size: $font-size-larger;\n font-weight: $font-light;\n\n @include themed {\n color: t($text-brighter);\n }\n }\n\n &-toc {\n margin: $spacer-normal 0;\n\n @media print {\n display: none;\n }\n\n ul,\n ol {\n margin-bottom: 0;\n }\n }\n\n &-cover {\n border: $spacer-large solid $accent;\n background: transparent;\n margin: $spacer-largest 0;\n padding: $spacer-large;\n\n @media ($phone) {\n padding: $spacer-small;\n border-width: $spacer-small;\n }\n }\n\n &-footer {\n margin: $spacer-largest 0;\n\n @media print {\n margin: $spacer-small 0 0 0;\n }\n }\n\n &-support {\n font-style: italic;\n margin: $spacer-normal 0;\n border-top: $spacer-1 solid;\n\n @include themed {\n border-color: t($accent);\n }\n\n @media print {\n margin: $spacer-large 0;\n }\n }\n}\n",
+ ".pagination {\n margin: $spacer-largest 0;\n\n @media print {\n display: none;\n }\n\n &-title {\n display: flex;\n text-align: center;\n position: relative;\n margin: $spacer-large 0;\n\n &-h {\n text-align: center;\n margin: 0 auto;\n padding: $spacer-smallest $spacer-normal;\n font-size: smaller;\n text-transform: uppercase;\n text-decoration: none;\n letter-spacing: 0.1em;\n z-index: 1;\n\n @include themed {\n background: t($background);\n color: transparentize(t($text), 0.4);\n }\n }\n\n hr {\n position: absolute;\n left: 0;\n right: 0;\n width: 100%;\n margin-top: $spacer-normal;\n z-index: 0;\n }\n }\n}\n",
+ ".site-footer {\n margin-top: $spacer-large2;\n border-top: $spacer-1 solid;\n\n @include themed {\n border-color: t($accent);\n color: t($text-duller);\n }\n\n @media print {\n display: none;\n }\n}\n\n.themeinfo,\n.buildinfo {\n font-size: $font-size-smaller;\n margin: $spacer-small 0;\n}\n\n.copyright {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n justify-content: space-between;\n margin: $spacer-normal 0;\n\n > p {\n margin: 0;\n }\n\n .navbar {\n &__list {\n > li {\n border: none;\n }\n }\n }\n}\n",
+ "/* Syntax highlighting styles */\n.chroma .ln {\n white-space: pre;\n user-select: none;\n padding: 0 0.4em;\n color: #7f7f7f;\n}\n\n.chroma .cl {\n padding: 0 0.4em;\n}\n\n.chroma .line {\n display: flex;\n}\n\n.chroma .ge {\n font-style: italic;\n}\n\n.chroma .gs {\n font-weight: $font-bold;\n}\n\n/* Syntax highlighting colors */\n.chroma .err {\n color: #960050;\n background-color: #1e0010;\n}\n\n.chroma .hl {\n background-color: #ffc;\n}\n\n.bg,\n.chroma {\n @include themed {\n color: t($syn-fg);\n background-color: t($syn-bg);\n }\n}\n\n.chroma .k,\n.chroma .kc,\n.chroma .kd,\n.chroma .kp,\n.chroma .kr,\n.chroma .kt,\n.chroma .no {\n @include themed {\n color: t($syn-kw);\n }\n}\n\n.chroma .kn,\n.chroma .nt,\n.chroma .o,\n.chroma .ow,\n.chroma .gd {\n color: $syn-op;\n}\n\n.chroma .n {\n @include themed {\n color: t($syn-n);\n }\n}\n\n.chroma .na,\n.chroma .nc,\n.chroma .nd,\n.chroma .ne,\n.chroma .nf,\n.chroma .nx,\n.chroma .gi {\n @include themed {\n color: t($syn-na);\n }\n}\n\n.chroma .ld,\n.chroma .s,\n.chroma .sa,\n.chroma .sb,\n.chroma .sc,\n.chroma .dl,\n.chroma .sd,\n.chroma .s2,\n.chroma .sh,\n.chroma .si,\n.chroma .sx,\n.chroma .sr,\n.chroma .s1,\n.chroma .ss {\n @include themed {\n color: t($syn-ld);\n }\n}\n\n.chroma .l,\n.chroma .se,\n.chroma .m,\n.chroma .mb,\n.chroma .mf,\n.chroma .mh,\n.chroma .mi,\n.chroma .il,\n.chroma .mo {\n color: $syn-l;\n}\n\n.chroma .c,\n.chroma .ch,\n.chroma .cm,\n.chroma .c1,\n.chroma .cs,\n.chroma .cp,\n.chroma .cpf,\n.chroma .gu {\n color: $syn-c;\n}\n\n/* Commented to fix linter errors, uncomment when needed.\n.chroma .x,\n.chroma .nb,\n.chroma .bp,\n.chroma .ni,\n.chroma .fm,\n.chroma .nl,\n.chroma .nn,\n.chroma .py,\n.chroma .nv,\n.chroma .vc,\n.chroma .vg,\n.chroma .vi,\n.chroma .vm,\n.chroma .p,\n.chroma .g,\n.chroma .gr,\n.chroma .gh,\n.chroma .go,\n.chroma .gp,\n.chroma .gt,\n.chroma .gl,\n.chroma .w {\n}\n*/\n",
+ "/* syntax highlighted code layout */\ndiv.highlight-wrapper {\n margin: $spacer-large 0;\n border-radius: $spacer-2;\n border: $spacer-1 solid;\n\n @include themed {\n border-color: t($background-brighter);\n }\n}\n\ndiv.highlight-wrapper div.highlight-toolbar {\n display: flex;\n border-bottom: $spacer-1 solid;\n\n @include themed {\n color: t($text-brighter);\n background: t($background-grey);\n border-color: t($background-brighter);\n }\n\n .item {\n padding: 0 $spacer-small;\n\n .label {\n @include themed {\n color: t($text-duller);\n }\n\n @media ($phone) {\n display: none;\n }\n }\n\n &.right {\n margin-left: auto;\n }\n }\n}\n\ndiv.highlight .chroma {\n margin: 0;\n padding: $spacer-smallest 0;\n overflow: auto;\n}\n\ndiv.highlight .chroma code {\n color: inherit;\n background: inherit;\n padding: 0;\n margin: 0;\n}\n\ndiv.highlight .chroma .line span.cl.wrap {\n white-space: pre-wrap;\n}\n\ndiv.highlight .chroma .cl {\n padding-right: $spacer-small;\n}\n",
+ ":root {\n --r-code-font: #{$font-family-mono};\n --r-heading-font: #{$font-family-title};\n --r-main-font-size: #{$font-size};\n --r-main-font: #{$font-family-normal};\n\n /* FIXME doesn't work in light theme */\n @include themed {\n --r-background-color: t($background);\n --r-heading-color: t($text);\n --r-main-color: t($text);\n --r-link-color: t($text-links);\n --r-link-color-dark: t($text-links);\n --r-link-color-hover: t($text);\n }\n}\n\n/* HACK use this until reveal.js theme colors are fixed */\n.reveal a {\n @include themed {\n color: t($text-links);\n }\n}\n\n.reveal {\n width: 100%;\n height: $spacer-large * 25;\n}\n\n.reveal .slides {\n text-align: left;\n}\n\n.header-left,\n.footer-left {\n position: absolute;\n left: 0%;\n margin: $spacer-normal $spacer-normal;\n}\n\n.header-left {\n top: 0%;\n}\n\n.footer-left {\n bottom: 0%;\n}\n"
+ ],
+ "names": [],
+ "mappings": "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"
+}
\ No newline at end of file
diff --git a/public/tags/index.html b/public/tags/index.html
new file mode 100644
index 0000000..4f68330
--- /dev/null
+++ b/public/tags/index.html
@@ -0,0 +1,86 @@
+
+
+
+Tags :: CVEX
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tags
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/tags/index.xml b/public/tags/index.xml
new file mode 100644
index 0000000..fdd8f56
--- /dev/null
+++ b/public/tags/index.xml
@@ -0,0 +1,10 @@
+
+
+
+ Tags on CVEX
+ http://localhost:1313/tags/
+ Recent content in Tags on CVEX
+ Hugo -- gohugo.io
+ en-us
+
+
diff --git a/resources/_gen/assets/styles/app.scss_1c38d186feae41eb01b71d0f07e68cfd.content b/resources/_gen/assets/styles/app.scss_1c38d186feae41eb01b71d0f07e68cfd.content
new file mode 100644
index 0000000..021da68
--- /dev/null
+++ b/resources/_gen/assets/styles/app.scss_1c38d186feae41eb01b71d0f07e68cfd.content
@@ -0,0 +1,3 @@
+:root{--phone: (max-width: 684px);--tablet: (max-width: 900px)}button,.button{align-items:center;border-radius:8px;border:1px solid;cursor:pointer;display:flex;font-weight:500;padding:8px 16px;text-align:center}button,.button{background:#dbdbf0;border-color:blue}button:hover,.button:hover{background:rgba(219,219,240,0.4);text-decoration:none}@media print{button,.button{background:#dbdbf0;border-color:blue}button:hover,.button:hover{background:rgba(219,219,240,0.4);text-decoration:none}}.theme--dark button,.theme--dark .button{background:#33334d;border-color:blue}.theme--dark button:hover,.theme--dark .button:hover{background:rgba(51,51,77,0.4);text-decoration:none}@media print{button,.button{display:none}}button:active,.button:active{transform:scale(0.95);transition:transform 0.2s ease}button.outline,button.transparent,.button.outline,.button.transparent{font-weight:400;background:none}button.outline,button.transparent,.button.outline,.button.transparent{color:#2525a7}button.outline:hover,button.transparent:hover,.button.outline:hover,.button.transparent:hover{background:rgba(219,219,240,0.9)}@media print{button.outline,button.transparent,.button.outline,.button.transparent{color:#2525a7}button.outline:hover,button.transparent:hover,.button.outline:hover,.button.transparent:hover{background:rgba(219,219,240,0.9)}}.theme--dark button.outline,.theme--dark button.transparent,.theme--dark .button.outline,.theme--dark .button.transparent{color:#ebebff}.theme--dark button.outline:hover,.theme--dark button.transparent:hover,.theme--dark .button.outline:hover,.theme--dark .button.transparent:hover{background:rgba(51,51,77,0.9)}button.transparent,.button.transparent{border:none}button.outline.brighter,.button.outline.brighter{border-color:#dcdcf0}@media print{button.outline.brighter,.button.outline.brighter{border-color:#dcdcf0}}.theme--dark button.outline.brighter,.theme--dark .button.outline.brighter{border-color:#393956}button.right,.button.right{justify-content:flex-end}button .label,.button .label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button .icon,.button .icon{margin-right:4px}button .icon.right,.button .icon.right{margin:0 0 0 4px}@media print{a.button{display:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.buttons{display:flex;flex-flow:row wrap;align-items:center;column-gap:8px}@media (max-width: 684px){.buttons{flex-direction:column;row-gap:8px}}.buttons.fill button,.buttons.fill .button{flex:1 0 0}@media (max-width: 684px){.buttons.fill button,.buttons.fill .button{width:100%;justify-content:center}}.gitinfo,.breadcrumbs{font-size:.875rem;font-style:italic}.breadcrumbs{width:fit-content;border-bottom:1px solid}.breadcrumbs{border-color:blue}@media print{.breadcrumbs{border-color:blue}}.theme--dark .breadcrumbs{border-color:blue}.gitinfo{margin:16px 0;border-top:1px solid}.gitinfo{color:#37373c;border-color:blue}@media print{.gitinfo{color:#37373c;border-color:blue}}.theme--dark .gitinfo{color:#b0b0bf;border-color:blue}@media print{.gitinfo{margin:0}.gitinfo a::after{display:none}.gitinfo p{margin:8px 0 0 0;font-size:.875rem}}.theme-toggle{cursor:pointer;padding:0}.theme-toggler{fill:currentcolor}.navbar{display:flex;flex-flow:row wrap;align-items:flex-start;justify-content:space-between}.navbar__first{font-weight:500;display:block}.navbar__separator{flex-grow:1;border-top:2px dotted}.navbar__separator{border-color:blue}@media print{.navbar__separator{border-color:blue}}.theme--dark .navbar__separator{border-color:blue}.navbar__last{display:block}.navbar__list{list-style:none;margin:0;padding:0;display:flex}.navbar__list>li{flex:0 0 auto;padding-left:8px;display:flex;justify-content:center}.navbar__list.borders>li{padding:4px 8px;border:2px dotted;margin-right:-2px}.navbar__list.borders>li{border-color:blue}@media print{.navbar__list.borders>li{border-color:blue}}.theme--dark .navbar__list.borders>li{border-color:blue}.site-header .navbar{margin-bottom:32px;font-size:1.125rem}@media print{.site-header{display:none}}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu-trigger{margin-right:0;user-select:none;cursor:pointer}.menu-trigger{color:blue}@media print{.menu-trigger{color:blue}}.theme--dark .menu-trigger{color:blue}.menu-dropdown{display:none;flex-direction:column;position:absolute;margin:0;padding:0;top:8px;left:0;list-style:none;z-index:99}.menu-dropdown{background:#ededf7;box-shadow:0 8px rgba(237,237,247,0.8),-8px 8px rgba(237,237,247,0.8),8px 8px rgba(237,237,247,0.8)}@media print{.menu-dropdown{background:#ededf7;box-shadow:0 8px rgba(237,237,247,0.8), -8px 8px rgba(237,237,247,0.8), 8px 8px rgba(237,237,247,0.8)}}.theme--dark .menu-dropdown{background:#14141f;box-shadow:0 8px rgba(20,20,31,0.8),-8px 8px rgba(20,20,31,0.8),8px 8px rgba(20,20,31,0.8)}.open .menu-dropdown{display:flex}.menu-dropdown>li{flex:0 0 auto;padding:4px 8px;border:2px dotted}.menu-dropdown>li{border-color:blue}@media print{.menu-dropdown>li{border-color:blue}}.theme--dark .menu-dropdown>li{border-color:blue}.menu-dropdown>li a{display:flex;text-decoration:none}.menu-dropdown>li a:hover{text-decoration:underline}@media (max-width: 684px){.menu--desktop{display:none}}.menu--mobile .menu-trigger{font-weight:700;padding:4px 8px;height:100%;margin-bottom:0 !important;position:relative;cursor:pointer;border:2px dotted;display:none}.menu--mobile .menu-trigger{color:#262659;background:#ededf7;border-color:blue}@media print{.menu--mobile .menu-trigger{color:#262659;background:#ededf7;border-color:blue}}.theme--dark .menu--mobile .menu-trigger{color:#ccf;background:#14141f;border-color:blue}@media (max-width: 684px){.menu--mobile .menu-trigger{display:block}}@media (max-width: 684px){.menu--mobile .menu-dropdown{left:auto;right:0}}.menu--mobile li{flex:0 0 auto;margin-bottom:-2px}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}body{margin:0;padding:0;font-family:"Fira Sans",arial,helvetica,sans-serif;font-weight:400;font-size:1rem;line-height:1.54;letter-spacing:-0.02em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "zero", "ss01", "locl";font-variant-ligatures:contextual;-webkit-overflow-scrolling:touch;text-size-adjust:100%}@media print{@page{size:a4 portrait;margin:0.5in}}.theme-container{background:#ededf7;color:#262659}@media print{.theme-container{background:#ededf7;color:#262659}}.theme--dark .theme-container{background:#14141f;color:#ccf}@media print{.theme-container{background:white !important;color:black !important}}.site-main{margin:0;padding:0}.hanchor{float:right;margin-right:-24px}.hanchor::after{content:"#";visibility:hidden}.hanchor{color:#4d4dff}@media print{.hanchor{color:#4d4dff}}.theme--dark .hanchor{color:#99f}@media print{.hanchor{display:none}}h1,h2,h3{border-color:blue}@media print{h1,h2,h3{border-color:blue}}.theme--dark h1,.theme--dark h2,.theme--dark h3{border-color:blue}h1{font-size:2rem;border-bottom:2px dotted}h2{font-size:1.6rem;border-bottom:1px solid}h3{font-size:1.25rem;border-bottom:1px dashed}h1,h2,h3,h4,h5,h6{font-family:"Roboto Slab","Times New Roman",garamond,serif;font-weight:500;margin:32px 0 16px 0;width:fit-content}@media print{h1,h2,h3,h4,h5,h6{break-after:avoid-page;margin:8px 0}}h1>a.hanchor,h2>a.hanchor,h3>a.hanchor,h4>a.hanchor,h5>a.hanchor,h6>a.hanchor{text-decoration:none}h1>a.hanchor:focus::after,h2>a.hanchor:focus::after,h3>a.hanchor:focus::after,h4>a.hanchor:focus::after,h5>a.hanchor:focus::after,h6>a.hanchor:focus::after{visibility:visible}h1:hover>a.hanchor::after,h2:hover>a.hanchor::after,h3:hover>a.hanchor::after,h4:hover>a.hanchor::after,h5:hover>a.hanchor::after,h6:hover>a.hanchor::after{visibility:visible}@media print{h1{margin-top:0}}a{text-decoration:none}a:hover{text-decoration:underline}a{color:#063}@media print{a{color:#063}}.theme--dark a{color:#0c6}@media print{a::after{margin-left:4px;content:"(" attr(href) ")";text-decoration:underline;font-style:italic}a::after{color:#262659}}@media print{a::after{color:#262659}}@media print{.theme--dark a::after{color:#ccf}}p{margin:16px 0}code{font-family:"Ubuntu Mono",monaco,consolas,monospace;border-radius:2px;padding:2px 4px}code{color:#8c3800;background:#f8f8fc}@media print{code{color:#8c3800;background:#f8f8fc}}.theme--dark code{color:#ffab73;background:#393956}img{max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}figure{display:table;max-width:100%;margin:24px 0}figure.left{margin-right:auto}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure figcaption{font-size:.875rem;padding:4px 8px;margin-top:4px;opacity:0.8}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}figure figcaption{background:blue;color:#ededf7}@media print{figure figcaption{background:blue;color:#ededf7}}.theme--dark figure figcaption{background:blue;color:#14141f}blockquote{border-left:4px solid;margin:24px 0;padding:16px 16px 16px 24px;font-style:italic}blockquote{color:#2525a7;background:#e6e6f4;border-color:blue}@media print{blockquote{color:#2525a7;background:#e6e6f4;border-color:blue}}.theme--dark blockquote{color:#ebebff;background:#1f1f2e;border-color:blue}@media print{blockquote{margin:24px 0}}blockquote p{position:relative}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p:first-of-type::before{content:">";display:block;position:absolute;left:-24px;padding:4px}table{table-layout:auto;border-collapse:collapse;width:100%;margin:24px 0}table,th,td{border:1px dashed;padding:4px}table,th,td{border-color:blue}@media print{table,th,td{border-color:blue}}.theme--dark table,.theme--dark th,.theme--dark td{border-color:blue}@media print{table,th,td{padding:4px}}th{font-weight:500}th{color:#2525a7;background:#dcdcf0}@media print{th{color:#2525a7;background:#dcdcf0}}.theme--dark th{color:#ebebff;background:#393956}td{font-size:.875rem}ul,ol{margin:0 0 16px 24px;padding:0}@media print{ul,ol{margin-bottom:0}}ul li,ol li{position:relative}@media print{ul li,ol li{break-inside:avoid-page}ul li>p,ol li>p{margin:0 0 4px 0}}ol{list-style:none;counter-reset:li}ol li{counter-increment:li}ol li::before{content:counter(li);position:absolute;right:calc(100% + 10px);display:inline-block;text-align:right}ol li::before{color:"accent"}@media print{ol li::before{color:"accent"}}.theme--dark ol li::before{color:"accent"}ol ol{margin-left:24px}ol ol li{counter-increment:li}ol ol li::before{content:counters(li, ".") " "}li ol,li ul{margin:0 0 0 24px}hr{width:100%;border:none;height:1px}hr{background:blue}@media print{hr{background:blue}}.theme--dark hr{background:blue}@media print{hr{margin:0}}.container{display:flex;flex-direction:column;padding:16px;max-width:864px;min-height:100vh}.container.full,.container.center{border:none;margin:0 auto}.container.full{max-width:100%}@media print{.container{display:initial;padding:0}}.content{display:flex;flex-direction:column}@media print{.content{display:initial}}.hide{display:none}.row{display:flex;flex-flow:row wrap;align-items:center;justify-content:space-between}.row.start{gap:8px;justify-content:flex-start}.col{display:flex;flex-flow:column wrap}.row.lead,.col.lead{font-weight:500;font-size:1.125rem}.row.bold,.col.bold{font-weight:500}.row.sub,.col.sub{font-weight:300;font-style:italic}.cv-title{display:block;border:none;margin:0 0 4px 0}.cv-contacts{display:block;text-align:end;margin:0 0 4px 0}.cv-description{font-style:italic;font-size:.875rem;margin:4px 0}.cv-experience{margin:8px 0;border-bottom:none}@media print{.cv-experience{break-after:avoid-page;break-inside:avoid-page}}.cv-content h2{font-size:1.125rem;width:100%}.cv-content h2 .hanchor{display:none}@media print{.cv-content *{margin-top:2px;margin-bottom:0;line-height:1.2}}.post{width:100%;text-align:left;margin:16px 0}@media print{.post{margin:0 0 24px 0}}.post-entries .item{padding-bottom:8px;margin-bottom:24px}.post-entries .item p{margin:0}.post-entries .item h2,.post-entries .item h3{border-style:none;margin:0;padding:0}.post-header{margin:16px 0}@media print{.post-header{margin:0}}.post-title{position:relative;border-bottom:4px dotted;width:100%;padding-bottom:4px}.post-title{border-color:blue}@media print{.post-title{border-color:blue}}.theme--dark .post-title{border-color:blue}.post-title::after{content:"";position:absolute;bottom:2px;display:block;width:100%;border-bottom:4px dotted}.post-title::after{border-color:blue}@media print{.post-title::after{border-color:blue}}.theme--dark .post-title::after{border-color:blue}.post-title a{text-decoration:none}@media print{.post-title a::after{display:none}}.post-meta,.post-tags{font-style:italic;font-size:.875rem;margin:8px 0}.post-meta,.post-tags{color:#4d4dff}@media print{.post-meta,.post-tags{color:#4d4dff}}.theme--dark .post-meta,.theme--dark .post-tags{color:#99f}@media print{.post-meta a::after,.post-tags a::after{display:none}}.post-description{font-size:1.125rem;font-weight:300}.post-description{color:#2525a7}@media print{.post-description{color:#2525a7}}.theme--dark .post-description{color:#ebebff}.post-toc{margin:16px 0}@media print{.post-toc{display:none}}.post-toc ul,.post-toc ol{margin-bottom:0}.post-cover{border:24px solid "accent";background:transparent;margin:48px 0;padding:24px}@media (max-width: 684px){.post-cover{padding:8px;border-width:8px}}.post-footer{margin:48px 0}@media print{.post-footer{margin:8px 0 0 0}}.post-support{font-style:italic;margin:16px 0;border-top:1px solid}.post-support{border-color:blue}@media print{.post-support{border-color:blue}}.theme--dark .post-support{border-color:blue}@media print{.post-support{margin:24px 0}}.pagination{margin:48px 0}@media print{.pagination{display:none}}.pagination-title{display:flex;text-align:center;position:relative;margin:24px 0}.pagination-title-h{text-align:center;margin:0 auto;padding:4px 16px;font-size:smaller;text-transform:uppercase;text-decoration:none;letter-spacing:0.1em;z-index:1}.pagination-title-h{background:#ededf7;color:rgba(38,38,89,0.6)}@media print{.pagination-title-h{background:#ededf7;color:rgba(38,38,89,0.6)}}.theme--dark .pagination-title-h{background:#14141f;color:rgba(204,204,255,0.6)}.pagination-title hr{position:absolute;left:0;right:0;width:100%;margin-top:16px;z-index:0}.site-footer{margin-top:32px;border-top:1px solid}.site-footer{border-color:blue;color:#37373c}@media print{.site-footer{border-color:blue;color:#37373c}}.theme--dark .site-footer{border-color:blue;color:#b0b0bf}@media print{.site-footer{display:none}}.themeinfo,.buildinfo{font-size:.875rem;margin:8px 0}.copyright{display:flex;flex-flow:row wrap;align-items:center;justify-content:space-between;margin:16px 0}.copyright>p{margin:0}.copyright .navbar__list>li{border:none}.chroma .ln{white-space:pre;user-select:none;padding:0 0.4em;color:#7f7f7f}.chroma .cl{padding:0 0.4em}.chroma .line{display:flex}.chroma .ge{font-style:italic}.chroma .gs{font-weight:500}.chroma .err{color:#960050;background-color:#1e0010}.chroma .hl{background-color:#ffc}.bg,.chroma{color:#272822;background-color:#fafafa}@media print{.bg,.chroma{color:#272822;background-color:#fafafa}}.theme--dark .bg,.theme--dark .chroma{color:#f8f8f2;background-color:#272822}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .no{color:#00a8c8}@media print{.chroma .k,.chroma .kc,.chroma .kd,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .no{color:#00a8c8}}.theme--dark .chroma .k,.theme--dark .chroma .kc,.theme--dark .chroma .kd,.theme--dark .chroma .kp,.theme--dark .chroma .kr,.theme--dark .chroma .kt,.theme--dark .chroma .no{color:#66d9ef}.chroma .kn,.chroma .nt,.chroma .o,.chroma .ow,.chroma .gd{color:#f92672}.chroma .n{color:#111}@media print{.chroma .n{color:#111}}.theme--dark .chroma .n{color:#f8f8f2}.chroma .na,.chroma .nc,.chroma .nd,.chroma .ne,.chroma .nf,.chroma .nx,.chroma .gi{color:#75af00}@media print{.chroma .na,.chroma .nc,.chroma .nd,.chroma .ne,.chroma .nf,.chroma .nx,.chroma .gi{color:#75af00}}.theme--dark .chroma .na,.theme--dark .chroma .nc,.theme--dark .chroma .nd,.theme--dark .chroma .ne,.theme--dark .chroma .nf,.theme--dark .chroma .nx,.theme--dark .chroma .gi{color:#a6e22e}.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#d88200}@media print{.chroma .ld,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#d88200}}.theme--dark .chroma .ld,.theme--dark .chroma .s,.theme--dark .chroma .sa,.theme--dark .chroma .sb,.theme--dark .chroma .sc,.theme--dark .chroma .dl,.theme--dark .chroma .sd,.theme--dark .chroma .s2,.theme--dark .chroma .sh,.theme--dark .chroma .si,.theme--dark .chroma .sx,.theme--dark .chroma .sr,.theme--dark .chroma .s1,.theme--dark .chroma .ss{color:#e6db74}.chroma .l,.chroma .se,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#ae81ff}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf,.chroma .gu{color:#75715e}div.highlight-wrapper{margin:24px 0;border-radius:2px;border:1px solid}div.highlight-wrapper{border-color:#dcdcf0}@media print{div.highlight-wrapper{border-color:#dcdcf0}}.theme--dark div.highlight-wrapper{border-color:#393956}div.highlight-wrapper div.highlight-toolbar{display:flex;border-bottom:1px solid}div.highlight-wrapper div.highlight-toolbar{color:#2525a7;background:#f0f0f5;border-color:#dcdcf0}@media print{div.highlight-wrapper div.highlight-toolbar{color:#2525a7;background:#f0f0f5;border-color:#dcdcf0}}.theme--dark div.highlight-wrapper div.highlight-toolbar{color:#ebebff;background:#22222a;border-color:#393956}div.highlight-wrapper div.highlight-toolbar .item{padding:0 8px}div.highlight-wrapper div.highlight-toolbar .item .label{color:#37373c}@media print{div.highlight-wrapper div.highlight-toolbar .item .label{color:#37373c}}.theme--dark div.highlight-wrapper div.highlight-toolbar .item .label{color:#b0b0bf}@media (max-width: 684px){div.highlight-wrapper div.highlight-toolbar .item .label{display:none}}div.highlight-wrapper div.highlight-toolbar .item.right{margin-left:auto}div.highlight .chroma{margin:0;padding:4px 0;overflow:auto}div.highlight .chroma code{color:inherit;background:inherit;padding:0;margin:0}div.highlight .chroma .line span.cl.wrap{white-space:pre-wrap}div.highlight .chroma .cl{padding-right:8px}:root{--r-code-font: Ubuntu Mono,monaco,consolas,monospace;--r-heading-font: Roboto Slab,Times New Roman,garamond,serif;--r-main-font-size: 1rem;--r-main-font: Fira Sans,arial,helvetica,sans-serif}:root{--r-background-color: t($background);--r-heading-color: t($text);--r-main-color: t($text);--r-link-color: t($text-links);--r-link-color-dark: t($text-links);--r-link-color-hover: t($text)}@media print{:root{--r-background-color: t($background);--r-heading-color: t($text);--r-main-color: t($text);--r-link-color: t($text-links);--r-link-color-dark: t($text-links);--r-link-color-hover: t($text)}}.theme--dark :root{--r-background-color: t($background);--r-heading-color: t($text);--r-main-color: t($text);--r-link-color: t($text-links);--r-link-color-dark: t($text-links);--r-link-color-hover: t($text)}.reveal a{color:#063}@media print{.reveal a{color:#063}}.theme--dark .reveal a{color:#0c6}.reveal{width:100%;height:600px}.reveal .slides{text-align:left}.header-left,.footer-left{position:absolute;left:0%;margin:16px 16px}.header-left{top:0%}.footer-left{bottom:0%}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/resources/_gen/assets/styles/app.scss_1c38d186feae41eb01b71d0f07e68cfd.json b/resources/_gen/assets/styles/app.scss_1c38d186feae41eb01b71d0f07e68cfd.json
new file mode 100644
index 0000000..e7b8e7c
--- /dev/null
+++ b/resources/_gen/assets/styles/app.scss_1c38d186feae41eb01b71d0f07e68cfd.json
@@ -0,0 +1 @@
+{"Target":"styles.css","MediaType":"text/css","Data":{}}
\ No newline at end of file
diff --git a/themes/hugo-xterm/.eslintrc.yml b/themes/hugo-xterm/.eslintrc.yml
new file mode 100644
index 0000000..d8125e5
--- /dev/null
+++ b/themes/hugo-xterm/.eslintrc.yml
@@ -0,0 +1,52 @@
+env:
+ browser: true
+ es2021: true
+
+extends:
+ - standard
+ - prettier
+
+parserOptions:
+ ecmaVersion: latest
+
+rules:
+ # best practices
+ arrow-parens:
+ - 2
+ - as-needed
+ semi:
+ - 2
+ - always
+ class-methods-use-this: 0
+ comma-dangle:
+ - 2
+ - always-multiline
+ no-console:
+ - 2
+ no-unused-expressions: 0
+ no-param-reassign:
+ - 2
+ - props: false
+ no-useless-escape: 0
+ func-names: 0
+ quotes:
+ - 2
+ - double
+ - allowTemplateLiterals: true
+ no-underscore-dangle: 0
+ object-curly-newline: 0
+ function-paren-newline: 0
+ operator-linebreak:
+ - 2
+ - after
+ no-unused-vars:
+ - 2
+ - argsIgnorePattern: "^_"
+
+globals:
+ document: true
+ requestAnimationFrame: true
+ window: true
+ self: true
+ fetch: true
+ Headers: true
diff --git a/themes/hugo-xterm/.github/FUNDING.yml b/themes/hugo-xterm/.github/FUNDING.yml
new file mode 100644
index 0000000..b65877d
--- /dev/null
+++ b/themes/hugo-xterm/.github/FUNDING.yml
@@ -0,0 +1 @@
+custom: https://buymeacoffee.com/manid2
diff --git a/themes/hugo-xterm/.github/workflows/hugo.yaml b/themes/hugo-xterm/.github/workflows/hugo.yaml
new file mode 100644
index 0000000..5281687
--- /dev/null
+++ b/themes/hugo-xterm/.github/workflows/hugo.yaml
@@ -0,0 +1,102 @@
+name: GitHub Pages
+
+on:
+ push:
+ branches:
+ - main
+ - dev
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# 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.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+# Default to bash
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ test:
+ runs-on: ubuntu-22.04
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ submodules: false
+ fetch-depth: 50
+
+ - name: Install test dependencies
+ run: |
+ sudo apt-get update && \
+ sudo apt-get -y install npm tzdata && \
+ npm ci
+
+ - name: Run tests
+ run: |
+ npm run test
+
+ build:
+ needs: test
+ runs-on: ubuntu-22.04
+ env:
+ HUGO_VERSION: 0.125.5
+
+ steps:
+ - name: Install Hugo CLI
+ run: |
+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
+ && sudo dpkg -i ${{ runner.temp }}/hugo.deb
+
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ submodules: false
+ fetch-depth: 50
+
+ - name: Setup Pages
+ id: pages
+ uses: actions/configure-pages@v3
+
+ - name: Build with Hugo
+ env:
+ # For maximum backward compatibility with Hugo modules
+ HUGO_ENVIRONMENT: production
+ HUGO_ENV: production
+ run: |
+ source ./exampleSite/scripts/hugo-env && \
+ hugo --source exampleSite
+
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v1
+ with:
+ path: ./exampleSite/public
+
+ - uses: actions/cache@v2
+ with:
+ path: /tmp/hugo_cache
+ key: ${{ runner.os }}-hugomod-${{ hashFiles('**/go.sum') }}
+ restore-keys: |
+ ${{ runner.os }}-hugomod-
+
+ deploy:
+ needs: build
+ runs-on: ubuntu-latest
+ if: github.ref_name == 'main'
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v2
diff --git a/themes/hugo-xterm/.gitignore b/themes/hugo-xterm/.gitignore
new file mode 100644
index 0000000..d3efe77
--- /dev/null
+++ b/themes/hugo-xterm/.gitignore
@@ -0,0 +1,13 @@
+/public
+/resources
+/exampleSite/public
+/exampleSite/resources
+/node_modules
+.vscode
+.hugo_build.lock
+*.swp
+
+# ctags
+tags
+*.tags
+TAGS
diff --git a/themes/hugo-xterm/.linkinator.config.json b/themes/hugo-xterm/.linkinator.config.json
new file mode 100644
index 0000000..54c7783
--- /dev/null
+++ b/themes/hugo-xterm/.linkinator.config.json
@@ -0,0 +1,6 @@
+{
+ "silent": true,
+ "timeout": 10000,
+ "retryErrors": false,
+ "skip": ["^(?!http://localhost)"]
+}
diff --git a/themes/hugo-xterm/.markdownlint.json b/themes/hugo-xterm/.markdownlint.json
new file mode 100644
index 0000000..88f1705
--- /dev/null
+++ b/themes/hugo-xterm/.markdownlint.json
@@ -0,0 +1,57 @@
+{
+ "default": true,
+ "heading-style": {
+ "style": "setext_with_atx"
+ },
+ "hr-style": {
+ "style": "---"
+ },
+ "code-block-style": {
+ "style": "fenced"
+ },
+ "code-fence-style": {
+ "style": "backtick"
+ },
+ "no-hard-tabs": {
+ "code_blocks": false
+ },
+ "fenced-code-language": {
+ "allowed_languages": [
+ "bash",
+ "c",
+ "cpp",
+ "css",
+ "html",
+ "js",
+ "json",
+ "lua",
+ "md",
+ "py",
+ "scss",
+ "sh",
+ "text",
+ "toml",
+ "vim",
+ "xml",
+ "yml",
+ "zsh"
+ ],
+ "language_only": false
+ },
+ "emphasis-style": {
+ "style": "underscore"
+ },
+ "strong-style": {
+ "style": "underscore"
+ },
+ "ul-style": {
+ "style": "sublist"
+ },
+ "line-length": {
+ "line_length": 78,
+ "heading_line_length": 72,
+ "code_block_line_length": 78,
+ "tables": false,
+ "strict": true
+ }
+}
diff --git a/themes/hugo-xterm/.prettier.json b/themes/hugo-xterm/.prettier.json
new file mode 100644
index 0000000..a961157
--- /dev/null
+++ b/themes/hugo-xterm/.prettier.json
@@ -0,0 +1,14 @@
+{
+ "printWidth": 78,
+ "trailingComma": "all",
+ "arrowParens": "avoid",
+ "overrides": [
+ {
+ "files": ["*.html"],
+ "options": {
+ "printWidth": 180,
+ "parser": "go-template"
+ }
+ }
+ ]
+}
diff --git a/themes/hugo-xterm/.prettierignore b/themes/hugo-xterm/.prettierignore
new file mode 100644
index 0000000..4e298a3
--- /dev/null
+++ b/themes/hugo-xterm/.prettierignore
@@ -0,0 +1,2 @@
+# ignore this file as there is an issue with prettier go-template formatter
+render-heading.html
diff --git a/themes/hugo-xterm/.stylelintrc.json b/themes/hugo-xterm/.stylelintrc.json
new file mode 100644
index 0000000..df28d90
--- /dev/null
+++ b/themes/hugo-xterm/.stylelintrc.json
@@ -0,0 +1,19 @@
+{
+ "extends": "stylelint-config-standard-scss",
+ "quiet": true,
+ "rules": {
+ "declaration-empty-line-before": [
+ "always",
+ {
+ "ignore": [
+ "after-comment",
+ "after-declaration",
+ "first-nested",
+ "inside-single-line-block"
+ ]
+ }
+ ],
+ "scss/no-global-function-names": null,
+ "scss/dollar-variable-pattern": "^([a-z][a-z0-9]*)(-[a-z0-9]+)*(--[a-z0-9]+)?"
+ }
+}
diff --git a/themes/hugo-xterm/LICENSE b/themes/hugo-xterm/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/themes/hugo-xterm/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+ .
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/themes/hugo-xterm/README.md b/themes/hugo-xterm/README.md
new file mode 100644
index 0000000..dedfae3
--- /dev/null
+++ b/themes/hugo-xterm/README.md
@@ -0,0 +1,263 @@
+hugo-xterm
+==========
+
+Hugo theme designed for reading and printing text with dark and light modes.
+
+It uses Hugo extended version with __>= 0.110__ to build the theme to take
+advantage of builtin SCSS compiler and reduce dependency on external
+libraries.
+
+This theme is fully free and open source so it can be used and modified as you
+like but redistributing requires attribution to [license][hx_lic_link] and
+credits to author [Mani Kumar][md2_gh_link] with link to this repository
+[hugo-xterm][hx_gh_link].
+
+[![Hugo][hugo_ver_img]][hugo_v0110]
+[![LICENSE][hx_lic_img]][hx_lic_link]
+[![Build][hx_ci_build_img]][hx_ci_build_link]
+
+Demo
+----
+
+Demo example site [manid2.github.io/hugo-xterm][7].
+
+[![Hugo Xterm demo site QR code][hx_demo_qr_img]][7]
+
+Screenshots
+-----------
+
+### Dark mode
+
+![Hugo Xterm Dark][hx_ss_dark]
+
+### Light mode
+
+![Hugo Xterm Light][hx_ss_light]
+
+### CV template
+
+![Hugo Xterm CV][hx_ss_cv]
+
+### Slides
+
+![Hugo Xterm Slides][hx_ss_slides]
+
+Features
+--------
+
+### Distinguishing features
+
+* Designed for __reading__ and __printing__ text.
+* __Print:__ any page in light theme mode for readability.
+* __[CV][10]:__ or resume template to reduce vertical space by using 2 columns
+ and shortcodes to list the experiences and skills.
+* __Slides:__ support using [reveal.js][4].
+* __Lists__: separate view and pagination for simple list items and post
+ entries.
+* __GitInfo:__ show the latest git commit short hash and subject message for
+ each page (requires Hugo GitInfo config enabled).
+* __Fonts:__
+ - __"Roboto Slab (serif)"__ for title (heading) text.
+ - __"Fira Sans (sans-serif)"__ for normal text.
+ - __"Ubuntu Mono (monospace)"__ for code.
+* __Colors:__ in the theme are derived using a single primary color (blue)
+ from the [HSL colors][8].
+* Website banner is supported.
+
+### Adopted features
+
+* Minimal configuration.
+* Switchable dark and light themes with automatic selection based on system
+ theme.
+* SEO friendly OpenGraph and twitter cards support
+* Customizable using configurations for: "full width", "centered".
+* Taxonomies and posts RSS.
+* Responsive tested on desktop and on smart phones.
+* Responsive menus for desktop and mobile screens.
+* Accessibility tested using [WAVE Web Accessibility Evaluation Tool][5].
+* Code blocks are highlighted using Hugo built-in blazing fast [Chroma][9].
+* Copy code, see code language and file name (optional).
+* Tightly coupled with Hugo extended latest version (v1.110.0) to compile and
+ generate asset bundles with pipelines, fingerprinting and minification.
+
+### Other features
+
+These are supported due to [panr/terminal][1] theme base code but not
+tested as I don't use them myself:
+
+* Post cover image.
+* Images in post with caption.
+* Comments.
+
+Installation
+------------
+
+Follow the steps in any one of these methods to install or update a Hugo
+theme.
+
+### Method - Using hugo mod
+
+Add hugo-xterm theme as Hugo module to hide the theme content and let you
+focus only on your site content. Let Hugo handle the theme updates
+automatically and control the theme as a Hugo module instead of git.
+
+```bash
+cd
+
+# initialize your site as a hugo module.
+hugo mod init
+
+# import hugo-xterm theme as hugo module in configuration
+$ cat config/_default/config.toml
+[module]
+ [[module.imports]]
+ path = "github.com/manid2/hugo-xterm"
+
+# update theme
+hugo mod get -u
+```
+
+For all below methods your site needs to point to hugo-xterm theme
+subdirectory in configuration as below:
+
+```bash
+$ cat config/_default/config.toml
+theme = "hugo-xterm"
+```
+
+### Method - Download and copy theme
+
+Download the archived (i.e. .zip or tar.gz) theme from github repository
+releases page. Extract and copy the contents into `themes/hugo-xterm`
+subdirectory in your site directory.
+
+To update the theme just download a new release and overwrite the same
+subdirectory.
+
+This method is simple, can be automated with script and saves space on disk by
+omitting the theme repository history.
+
+### Method - Using git clone
+
+This method clones the theme repository with history into your site's themes
+subdirectory which is useful if you want to control the history or make your
+own private modifications to the theme.
+
+```bash
+cd
+git clone https://github.com/manid2/hugo-xterm themes/hugo-xterm --depth=1
+
+# update theme
+cd themes/hugo-xterm
+git pull
+```
+
+### Method - Using git submodule
+
+This is similar to cloning the theme into subdirectory except using git
+submodule which makes the theme acts a dependency of your site repository. It
+lets git to control your site and its dependency this theme.
+
+```bash
+git submodule add --depth=1 https://github.com/manid2/hugo-xterm \
+themes/hugo-xterm
+
+# update theme
+git submodule update --remote --merge
+```
+
+Local development
+-----------------
+
+```bash
+# add to go.mod for local development
+# replace github.com/manid2/hugo-xterm => ../hugo-xterm
+hugo server --source exampleSite
+
+# generate tags
+ctags -R assets/ layouts/ config.toml theme.toml
+
+# generate tags for exampleSite
+ctags -R exampleSite/layouts/ exampleSite/scripts/ exampleSite/config
+```
+
+Request feature & report bugs
+-----------------------------
+
+If you find any bugs or need any features then please raise an
+[issue][hx_gh_issues_link] so that it can tracked and avoid same requests from
+other users.
+
+You can also fix the bug or implement the feature yourself and raise a [pull
+request][hx_gh_pr_link] so I can review and integrate it into this theme with
+credits to you as a contributor.
+
+Use the theme & want to show your site?
+---------------------------------------
+
+I would be happy to know that you use this theme and want to show your site.
+For this please raise a pull request with link to your site, your
+name/username, profession/study mentioned in this list [hugo-xterm
+users][hx_users_link].
+
+Support
+-------
+
+Kindly support this theme development by donating at [Buy me a
+coffee][md2_bmc_link].
+
+TODO Add current supporters.
+
+[![Mani Kumar Buy Me a Coffee QR code][md2_bmc_qr_img]][md2_bmc_link]
+
+Credits
+-------
+
+This theme was initially based on [panr/terminal][1] theme but is re-written
+from scratch to optimize for reading and print text heavy web pages.
+
+Parts of the features in this theme are either taken directly or based on the
+features from popular themes and websites as listed below:
+
+* [panr/terminal][1]: most styles, menus and starter code.
+* [adityatelange/hugo-PaperMod][2] features: breadcrumbs and copy code.
+* [kaitlinmctigue/kaitlinmctigue.github.io][3]: dark and light theme modes.
+
+License
+-------
+
+[GNU General Public License v3.0][hx_lic_link]
+
+[1]: https://github.com/panr/hugo-theme-terminal
+[2]: https://github.com/adityatelange/hugo-PaperMod
+[3]: https://github.com/kaitlinmctigue/kaitlinmctigue.github.io
+[4]: https://github.com/hakimel/reveal.js
+[5]: https://wave.webaim.org/
+[7]: https://manid2.github.io/hugo-xterm/
+[8]: https://en.wikipedia.org/wiki/HSL_and_HSV
+[9]: https://github.com/alecthomas/chroma/
+[10]: https://manid2.gitlab.io/cv/
+
+[hx_ci_build_img]: https://img.shields.io/github/actions/workflow/status/manid2/hugo-xterm/hugo.yaml?logo=github "Hugo Xterm build status badge"
+[hx_ci_build_link]: https://github.com/manid2/hugo-xterm/actions
+
+[hx_lic_img]: https://img.shields.io/github/license/manid2/hugo-xterm?logo=gnu&logoColor=black&label=License&labelColor=lightcyan "Hugo Xterm license badge"
+[hx_lic_link]: https://github.com/manid2/hugo-xterm/blob/main/LICENSE
+
+[hugo_ver_img]: https://img.shields.io/badge/Hugo%20Extended-%3E%3D%20v0.110.0-blue.svg?style=flat&logo=hugo&logoColor=white&label=Hugo%20Extended&labelColor=grey "Hugo Extended >= v0.110.0"
+[hugo_v0110]: https://github.com/gohugoio/hugo/releases/tag/v0.110.0
+
+[hx_ss_dark]: https://manid2.github.io/hugo-xterm/screenshots/hugo-xterm-ss-01-dark.png "Hugo Xterm dark mode screenshot"
+[hx_ss_light]: https://manid2.github.io/hugo-xterm/screenshots/hugo-xterm-ss-02-light.png "Hugo Xterm light mode screenshot"
+[hx_ss_cv]: https://manid2.github.io/hugo-xterm/screenshots/hugo-xterm-ss-03-cv.png "Hugo Xterm CV template screenshot"
+[hx_ss_slides]: https://manid2.github.io/hugo-xterm/screenshots/hugo-xterm-ss-04-slides.png "Hugo Xterm slides screenshot"
+
+[hx_demo_qr_img]: https://quickchart.io/qr?text=https%3A%2F%2Fmanid2.github.io%2Fhugo-xterm%2F&dark=1a5fb4&size=200
+[hx_gh_link]: https://github.com/manid2/hugo-xterm
+[hx_gh_issues_link]: https://github.com/manid2/hugo-xterm/issues
+[hx_gh_pr_link]: https://github.com/manid2/hugo-xterm/pulls
+[hx_users_link]: https://github.com/manid2/hugo-xterm/blob/main/USERS.md
+
+[md2_bmc_link]: https://www.buymeacoffee.com/manid2
+[md2_bmc_qr_img]: https://manid2.gitlab.io/images/md2_bmc_qr.png
+[md2_gh_link]: https://github.com/manid2
diff --git a/themes/hugo-xterm/USERS.md b/themes/hugo-xterm/USERS.md
new file mode 100644
index 0000000..62910c2
--- /dev/null
+++ b/themes/hugo-xterm/USERS.md
@@ -0,0 +1,4 @@
+hugo-xterm users
+================
+
+* https://manid2.gitlab.io/ __manid2__ - Software Engineer
diff --git a/themes/hugo-xterm/archetypes/posts.md b/themes/hugo-xterm/archetypes/posts.md
new file mode 100644
index 0000000..d35fd56
--- /dev/null
+++ b/themes/hugo-xterm/archetypes/posts.md
@@ -0,0 +1,8 @@
++++
+title = "{{ replace .TranslationBaseName "-" " " | title }}"
+description = ""
+date = "{{ .Date }}"
+tags = ["", ""]
+categories = ["", ""]
+draft = true
++++
diff --git a/themes/hugo-xterm/assets/scripts/copy.js b/themes/hugo-xterm/assets/scripts/copy.js
new file mode 100644
index 0000000..8f9858d
--- /dev/null
+++ b/themes/hugo-xterm/assets/scripts/copy.js
@@ -0,0 +1,37 @@
+const hiTextBlock = document.querySelectorAll(".highlight-wrapper");
+
+hiTextBlock.forEach(function (hiTextBlock) {
+ const hiToolbar = hiTextBlock.querySelector(".highlight-toolbar");
+ if (!hiToolbar) return;
+
+ const hiText = hiTextBlock.querySelector(".highlight");
+ if (!hiText) return;
+
+ const copyButton = hiToolbar.querySelector(".js-btn-copy-code");
+ if (!copyButton) return;
+
+ copyButton.classList.remove("hide");
+
+ /* Borrowed from adityatelange/hugo-PaperMod theme. */
+ function copyingDone() {
+ copyButton.innerHTML = "Copied!";
+ setTimeout(() => {
+ copyButton.innerHTML = "Copy";
+ }, 2000);
+ }
+
+ /* copy code in pre > code blocks */
+ copyButton.addEventListener("click", () => {
+ // Fallback to selection and copy
+ const range = document.createRange();
+ range.selectNodeContents(hiText);
+ const selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ try {
+ document.execCommand("copy");
+ copyingDone();
+ } catch (e) {}
+ selection.removeRange(range);
+ });
+});
diff --git a/themes/hugo-xterm/assets/scripts/menu.js b/themes/hugo-xterm/assets/scripts/menu.js
new file mode 100644
index 0000000..17ae43f
--- /dev/null
+++ b/themes/hugo-xterm/assets/scripts/menu.js
@@ -0,0 +1,47 @@
+const container = document.querySelector(".container");
+const allMenus = document.querySelectorAll(".menu");
+
+// Hide menus on body click
+document.body.addEventListener("click", () => {
+ allMenus.forEach(menu => {
+ if (menu.classList.contains("open")) {
+ menu.classList.remove("open");
+ }
+ });
+});
+
+// Reset menus on resize
+window.addEventListener("resize", () => {
+ allMenus.forEach(menu => {
+ menu.classList.remove("open");
+ });
+});
+
+// Handle desktop menu
+allMenus.forEach(menu => {
+ const trigger = menu.querySelector(".menu-trigger");
+ const dropdown = menu.querySelector(".menu-dropdown");
+
+ trigger.addEventListener("click", e => {
+ e.stopPropagation();
+
+ if (menu.classList.contains("open")) {
+ menu.classList.remove("open");
+ } else {
+ // Close all menus...
+ allMenus.forEach(m => m.classList.remove("open"));
+ // ...before opening the current one
+ menu.classList.add("open");
+ }
+
+ if (
+ dropdown.getBoundingClientRect().right >
+ container.getBoundingClientRect().right
+ ) {
+ dropdown.style.left = "auto";
+ dropdown.style.right = 0;
+ }
+ });
+
+ dropdown.addEventListener("click", e => e.stopPropagation());
+});
diff --git a/themes/hugo-xterm/assets/scripts/print.js b/themes/hugo-xterm/assets/scripts/print.js
new file mode 100644
index 0000000..20a7635
--- /dev/null
+++ b/themes/hugo-xterm/assets/scripts/print.js
@@ -0,0 +1 @@
+/* TODO: Add print button */
diff --git a/themes/hugo-xterm/assets/scripts/theme.js b/themes/hugo-xterm/assets/scripts/theme.js
new file mode 100644
index 0000000..ea8a086
--- /dev/null
+++ b/themes/hugo-xterm/assets/scripts/theme.js
@@ -0,0 +1,29 @@
+const themeDark = "theme--dark";
+const themeLight = "theme--light";
+const bodyClassList = document.body.classList;
+const isSystemDark = window.matchMedia(
+ "(prefers-color-scheme: dark)",
+).matches;
+const themeToggle = document.querySelector(".theme-toggle");
+const preferTheme = "prefer-theme";
+
+// Set theme from local storage
+const localTheme = localStorage.getItem(preferTheme);
+if (localTheme === themeDark) {
+ bodyClassList.add(themeDark);
+} else if (localTheme === themeLight) {
+ bodyClassList.remove(themeDark);
+} else if (isSystemDark) {
+ bodyClassList.add(themeDark);
+}
+
+// Toggle theme on click
+themeToggle.addEventListener("click", () => {
+ if (bodyClassList.contains(themeDark)) {
+ bodyClassList.remove(themeDark);
+ localStorage.setItem(preferTheme, themeLight);
+ } else {
+ bodyClassList.add(themeDark);
+ localStorage.setItem(preferTheme, themeDark);
+ }
+});
diff --git a/themes/hugo-xterm/assets/styles/_buttons.scss b/themes/hugo-xterm/assets/styles/_buttons.scss
new file mode 100644
index 0000000..3cdae96
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_buttons.scss
@@ -0,0 +1,112 @@
+/* Buttons */
+button,
+.button {
+ align-items: center;
+ border-radius: $spacer-small;
+ border: $spacer-1 solid;
+ cursor: pointer;
+ display: flex;
+ font-weight: $font-bold;
+ padding: $spacer-small $spacer-normal;
+ text-align: center;
+
+ @include themed {
+ background: t($button-background);
+ border-color: t($accent);
+
+ &:hover {
+ background: transparentize(t($button-background), 0.6);
+ text-decoration: none;
+ }
+ }
+
+ @media print {
+ display: none;
+ }
+
+ &:active {
+ transform: scale(0.95);
+ transition: transform 0.2s ease;
+ }
+
+ /* button variants */
+ &.outline,
+ &.transparent {
+ font-weight: $font-normal;
+ background: none;
+
+ @include themed {
+ color: t($text-brighter);
+
+ &:hover {
+ background: transparentize(t($button-background), 0.1);
+ }
+ }
+ }
+
+ &.transparent {
+ border: none;
+ }
+
+ &.outline.brighter {
+ @include themed {
+ border-color: t($background-brighter);
+ }
+ }
+
+ /* button content align right */
+ &.right {
+ justify-content: flex-end;
+ }
+
+ /* button label */
+ .label {
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ }
+
+ /* button icon */
+ .icon {
+ margin-right: $spacer-smallest;
+
+ &.right {
+ margin: 0 0 0 $spacer-smallest;
+ }
+ }
+}
+
+a.button {
+ @media print {
+ display: initial;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+}
+
+/* Buttons container */
+.buttons {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+ column-gap: $spacer-small;
+
+ @media ($phone) {
+ flex-direction: column;
+ row-gap: $spacer-small;
+ }
+
+ /* Buttons filling the container */
+ &.fill {
+ button,
+ .button {
+ flex: 1 0 0;
+
+ @media ($phone) {
+ width: 100%;
+ justify-content: center;
+ }
+ }
+ }
+}
diff --git a/themes/hugo-xterm/assets/styles/_footer.scss b/themes/hugo-xterm/assets/styles/_footer.scss
new file mode 100644
index 0000000..b29a61f
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_footer.scss
@@ -0,0 +1,39 @@
+.site-footer {
+ margin-top: $spacer-large2;
+ border-top: $spacer-1 solid;
+
+ @include themed {
+ border-color: t($accent);
+ color: t($text-duller);
+ }
+
+ @media print {
+ display: none;
+ }
+}
+
+.themeinfo,
+.buildinfo {
+ font-size: $font-size-smaller;
+ margin: $spacer-small 0;
+}
+
+.copyright {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+ justify-content: space-between;
+ margin: $spacer-normal 0;
+
+ > p {
+ margin: 0;
+ }
+
+ .navbar {
+ &__list {
+ > li {
+ border: none;
+ }
+ }
+ }
+}
diff --git a/themes/hugo-xterm/assets/styles/_gen_syntax.scss b/themes/hugo-xterm/assets/styles/_gen_syntax.scss
new file mode 100644
index 0000000..1dc5eee
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_gen_syntax.scss
@@ -0,0 +1,147 @@
+/* Syntax highlighting styles */
+.chroma .ln {
+ white-space: pre;
+ user-select: none;
+ padding: 0 0.4em;
+ color: #7f7f7f;
+}
+
+.chroma .cl {
+ padding: 0 0.4em;
+}
+
+.chroma .line {
+ display: flex;
+}
+
+.chroma .ge {
+ font-style: italic;
+}
+
+.chroma .gs {
+ font-weight: $font-bold;
+}
+
+/* Syntax highlighting colors */
+.chroma .err {
+ color: #960050;
+ background-color: #1e0010;
+}
+
+.chroma .hl {
+ background-color: #ffc;
+}
+
+.bg,
+.chroma {
+ @include themed {
+ color: t($syn-fg);
+ background-color: t($syn-bg);
+ }
+}
+
+.chroma .k,
+.chroma .kc,
+.chroma .kd,
+.chroma .kp,
+.chroma .kr,
+.chroma .kt,
+.chroma .no {
+ @include themed {
+ color: t($syn-kw);
+ }
+}
+
+.chroma .kn,
+.chroma .nt,
+.chroma .o,
+.chroma .ow,
+.chroma .gd {
+ color: $syn-op;
+}
+
+.chroma .n {
+ @include themed {
+ color: t($syn-n);
+ }
+}
+
+.chroma .na,
+.chroma .nc,
+.chroma .nd,
+.chroma .ne,
+.chroma .nf,
+.chroma .nx,
+.chroma .gi {
+ @include themed {
+ color: t($syn-na);
+ }
+}
+
+.chroma .ld,
+.chroma .s,
+.chroma .sa,
+.chroma .sb,
+.chroma .sc,
+.chroma .dl,
+.chroma .sd,
+.chroma .s2,
+.chroma .sh,
+.chroma .si,
+.chroma .sx,
+.chroma .sr,
+.chroma .s1,
+.chroma .ss {
+ @include themed {
+ color: t($syn-ld);
+ }
+}
+
+.chroma .l,
+.chroma .se,
+.chroma .m,
+.chroma .mb,
+.chroma .mf,
+.chroma .mh,
+.chroma .mi,
+.chroma .il,
+.chroma .mo {
+ color: $syn-l;
+}
+
+.chroma .c,
+.chroma .ch,
+.chroma .cm,
+.chroma .c1,
+.chroma .cs,
+.chroma .cp,
+.chroma .cpf,
+.chroma .gu {
+ color: $syn-c;
+}
+
+/* Commented to fix linter errors, uncomment when needed.
+.chroma .x,
+.chroma .nb,
+.chroma .bp,
+.chroma .ni,
+.chroma .fm,
+.chroma .nl,
+.chroma .nn,
+.chroma .py,
+.chroma .nv,
+.chroma .vc,
+.chroma .vg,
+.chroma .vi,
+.chroma .vm,
+.chroma .p,
+.chroma .g,
+.chroma .gr,
+.chroma .gh,
+.chroma .go,
+.chroma .gp,
+.chroma .gt,
+.chroma .gl,
+.chroma .w {
+}
+*/
diff --git a/themes/hugo-xterm/assets/styles/_header.scss b/themes/hugo-xterm/assets/styles/_header.scss
new file mode 100644
index 0000000..806fdb9
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_header.scss
@@ -0,0 +1,110 @@
+.gitinfo,
+.breadcrumbs {
+ font-size: $font-size-smaller;
+ font-style: italic;
+}
+
+.breadcrumbs {
+ width: fit-content;
+ border-bottom: $spacer-1 solid;
+
+ @include themed {
+ border-color: t($accent);
+ }
+}
+
+.gitinfo {
+ margin: $spacer-normal 0;
+ border-top: $spacer-1 solid;
+
+ @include themed {
+ color: t($text-duller);
+ border-color: t($accent);
+ }
+
+ @media print {
+ margin: 0;
+
+ a {
+ &::after {
+ display: none;
+ }
+ }
+
+ p {
+ margin: $spacer-small 0 0 0;
+ font-size: $font-size-smaller;
+ }
+ }
+}
+
+.theme-toggle {
+ cursor: pointer;
+ padding: 0;
+}
+
+.theme-toggler {
+ fill: currentcolor;
+}
+
+.navbar {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: flex-start;
+ justify-content: space-between;
+
+ &__first {
+ font-weight: $font-bold;
+ display: block;
+ }
+
+ &__separator {
+ flex-grow: 1;
+ border-top: $spacer-2 dotted;
+
+ @include themed {
+ border-color: t($accent);
+ }
+ }
+
+ &__last {
+ display: block;
+ }
+
+ &__list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+
+ > li {
+ flex: 0 0 auto;
+ padding-left: $spacer-small;
+ display: flex;
+ justify-content: center;
+ }
+
+ &.borders {
+ > li {
+ padding: $spacer-smallest $spacer-small;
+ border: $spacer-2 dotted;
+ margin-right: $spacer-2 * -1;
+
+ @include themed {
+ border-color: t($accent);
+ }
+ }
+ }
+ }
+}
+
+.site-header {
+ .navbar {
+ margin-bottom: $spacer-large2;
+ font-size: $font-size-larger;
+ }
+
+ @media print {
+ display: none;
+ }
+}
diff --git a/themes/hugo-xterm/assets/styles/_main.scss b/themes/hugo-xterm/assets/styles/_main.scss
new file mode 100644
index 0000000..e25e977
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_main.scss
@@ -0,0 +1,490 @@
+html {
+ box-sizing: border-box;
+}
+
+*,
+*::before,
+*::after {
+ box-sizing: inherit;
+}
+
+body {
+ margin: 0;
+ padding: 0;
+ font-family: $font-family-normal;
+ font-weight: $font-normal;
+ font-size: $font-size;
+ line-height: 1.54;
+ letter-spacing: -0.02em;
+ text-rendering: optimizelegibility;
+ -webkit-font-smoothing: antialiased;
+ font-feature-settings: "liga", "tnum", "zero", "ss01", "locl";
+ font-variant-ligatures: contextual;
+ -webkit-overflow-scrolling: touch;
+ text-size-adjust: 100%;
+}
+
+@media print {
+ @page {
+ size: a4 portrait;
+ margin: 0.5in;
+ }
+}
+
+.theme-container {
+ @include themed {
+ background: t($background);
+ color: t($text);
+ }
+
+ @media print {
+ background: white !important;
+ color: black !important;
+ }
+}
+
+.site-main {
+ margin: 0;
+ padding: 0;
+}
+
+.hanchor {
+ float: right;
+ margin-right: $spacer-large * -1;
+
+ &::after {
+ content: "#";
+ visibility: hidden;
+ }
+
+ @include themed {
+ color: t($text-accent);
+ }
+
+ @media print {
+ display: none;
+ }
+}
+
+h1,
+h2,
+h3 {
+ @include themed {
+ border-color: t($accent);
+ }
+}
+
+h1 {
+ font-size: $font-size * 2;
+ border-bottom: $spacer-2 dotted;
+}
+
+h2 {
+ font-size: $font-size * 1.6;
+ border-bottom: $spacer-1 solid;
+}
+
+h3 {
+ font-size: $font-size * 1.25;
+ border-bottom: $spacer-1 dashed;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: $font-family-title;
+ font-weight: $font-bold;
+ margin: $spacer-large2 0 $spacer-normal 0;
+ width: fit-content;
+
+ @media print {
+ break-after: avoid-page;
+ margin: $spacer-small 0;
+ }
+
+ > a.hanchor {
+ text-decoration: none;
+ }
+
+ > a.hanchor:focus::after {
+ visibility: visible;
+ }
+
+ &:hover {
+ > a.hanchor::after {
+ visibility: visible;
+ }
+ }
+}
+
+@media print {
+ h1 {
+ margin-top: 0;
+ }
+}
+
+a {
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+
+ @include themed {
+ color: t($text-links);
+ }
+
+ @media print {
+ &::after {
+ margin-left: $spacer-smallest;
+ content: "(" attr(href) ")";
+ text-decoration: underline;
+ font-style: italic;
+
+ @include themed {
+ color: t($text);
+ }
+ }
+ }
+}
+
+p {
+ margin: $spacer-normal 0;
+}
+
+code {
+ font-family: $font-family-mono;
+ border-radius: $spacer-2;
+ padding: $spacer-2 $spacer-smallest;
+
+ @include themed {
+ color: t($code-text);
+ background: t($code-background);
+ }
+}
+
+img {
+ max-width: 100%;
+
+ &.left {
+ margin-right: auto;
+ }
+
+ &.center {
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ &.right {
+ margin-left: auto;
+ }
+}
+
+figure {
+ display: table;
+ max-width: 100%;
+ margin: $spacer-large 0;
+
+ &.left {
+ margin-right: auto;
+ }
+
+ &.center {
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ &.right {
+ margin-left: auto;
+ }
+
+ figcaption {
+ font-size: $font-size-smaller;
+ padding: $spacer-smallest $spacer-small;
+ margin-top: $spacer-smallest;
+ opacity: 0.8;
+
+ &.left {
+ text-align: left;
+ }
+
+ &.center {
+ text-align: center;
+ }
+
+ &.right {
+ text-align: right;
+ }
+
+ @include themed {
+ background: t($accent);
+ color: t($background);
+ }
+ }
+}
+
+blockquote {
+ border-left: $spacer-smallest solid;
+ margin: $spacer-large 0;
+ padding: $spacer-normal $spacer-normal $spacer-normal $spacer-large;
+ font-style: italic;
+
+ @include themed {
+ color: t($text-brighter);
+ background: t($blockquote-background);
+ border-color: t($accent);
+ }
+
+ @media print {
+ margin: $spacer-large 0;
+ }
+
+ p {
+ position: relative;
+ }
+
+ p:first-of-type {
+ margin-top: 0;
+ }
+
+ p:last-of-type {
+ margin-bottom: 0;
+ }
+
+ p:first-of-type::before {
+ content: ">";
+ display: block;
+ position: absolute;
+ left: $spacer-large * -1;
+ padding: $spacer-smallest;
+ }
+}
+
+table {
+ table-layout: auto;
+ border-collapse: collapse;
+ width: 100%;
+ margin: $spacer-large 0;
+}
+
+table,
+th,
+td {
+ border: $spacer-1 dashed;
+ padding: $spacer-smallest;
+
+ @include themed {
+ border-color: t($accent);
+ }
+
+ @media print {
+ padding: $spacer-smallest;
+ }
+}
+
+th {
+ font-weight: $font-bold;
+
+ @include themed {
+ color: t($text-brighter);
+ background: t($background-brighter);
+ }
+}
+
+td {
+ font-size: $font-size-smaller;
+}
+
+ul,
+ol {
+ margin: 0 0 $spacer-normal $spacer-large;
+ padding: 0;
+
+ @media print {
+ margin-bottom: 0;
+ }
+
+ li {
+ position: relative;
+
+ @media print {
+ > p {
+ margin: 0 0 $spacer-smallest 0;
+ }
+
+ break-inside: avoid-page;
+ }
+ }
+}
+
+ol {
+ list-style: none;
+ counter-reset: li;
+
+ li {
+ counter-increment: li;
+ }
+
+ li::before {
+ content: counter(li);
+ position: absolute;
+ right: calc(100% + 10px);
+ display: inline-block;
+ text-align: right;
+
+ @include themed {
+ color: $accent;
+ }
+ }
+
+ ol {
+ margin-left: $spacer-large;
+
+ li {
+ counter-increment: li;
+ }
+
+ li::before {
+ content: counters(li, ".") " ";
+ }
+ }
+}
+
+li ol,
+li ul {
+ margin: 0 0 0 $spacer-large;
+}
+
+hr {
+ width: 100%;
+ border: none;
+ height: $spacer-1;
+
+ @include themed {
+ background: t($accent);
+ }
+
+ @media print {
+ margin: 0;
+ }
+}
+
+.container {
+ display: flex;
+ flex-direction: column;
+ padding: $spacer-normal;
+ max-width: $container-max-width;
+ min-height: 100vh;
+
+ &.full,
+ &.center {
+ border: none;
+ margin: 0 auto;
+ }
+
+ &.full {
+ max-width: 100%;
+ }
+
+ @media print {
+ display: initial;
+ padding: 0;
+ }
+}
+
+.content {
+ display: flex;
+ flex-direction: column;
+
+ @media print {
+ display: initial;
+ }
+}
+
+.hide {
+ display: none;
+}
+
+.row {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+ justify-content: space-between;
+
+ &.start {
+ gap: $spacer-small;
+ justify-content: flex-start;
+ }
+}
+
+.col {
+ display: flex;
+ flex-flow: column wrap;
+}
+
+.row,
+.col {
+ &.lead {
+ font-weight: $font-bold;
+ font-size: $font-size-larger;
+ }
+
+ &.bold {
+ font-weight: $font-bold;
+ }
+
+ &.sub {
+ font-weight: $font-light;
+ font-style: italic;
+ }
+}
+
+.cv-title {
+ display: block;
+ border: none;
+ margin: 0 0 $spacer-smallest 0;
+}
+
+.cv-contacts {
+ display: block;
+ text-align: end;
+ margin: 0 0 $spacer-smallest 0;
+}
+
+.cv-description {
+ font-style: italic;
+ font-size: $font-size-smaller;
+ margin: $spacer-smallest 0;
+}
+
+.cv-experience {
+ margin: $spacer-small 0;
+ border-bottom: none;
+
+ @media print {
+ break-after: avoid-page;
+ break-inside: avoid-page;
+ }
+}
+
+.cv-content {
+ h2 {
+ font-size: $font-size-larger;
+ width: 100%;
+
+ .hanchor {
+ display: none;
+ }
+ }
+
+ @media print {
+ * {
+ margin-top: $spacer-2;
+ margin-bottom: 0;
+ line-height: 1.2;
+ }
+ }
+}
diff --git a/themes/hugo-xterm/assets/styles/_menu.scss b/themes/hugo-xterm/assets/styles/_menu.scss
new file mode 100644
index 0000000..ef5e518
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_menu.scss
@@ -0,0 +1,113 @@
+@mixin menu {
+ display: none;
+ flex-direction: column;
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ top: $spacer-small;
+ left: 0;
+ list-style: none;
+ z-index: 99;
+
+ @include themed {
+ $shadow-color: transparentize(t($background), 0.2);
+ $shadow: 0 $spacer-small $shadow-color,
+ -$spacer-small $spacer-small $shadow-color,
+ $spacer-small $spacer-small $shadow-color;
+
+ background: t($background);
+ box-shadow: $shadow;
+ }
+}
+
+@mixin header-menu-trigger {
+ font-weight: 700;
+ padding: $spacer-smallest $spacer-small;
+ height: 100%;
+ margin-bottom: 0 !important;
+ position: relative;
+ cursor: pointer;
+ border: $spacer-2 dotted;
+
+ @include themed {
+ color: t($text);
+ background: t($background);
+ border-color: t($accent);
+ }
+}
+
+.menu {
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+
+ &-trigger {
+ margin-right: 0;
+ user-select: none;
+ cursor: pointer;
+
+ @include themed {
+ color: t($accent);
+ }
+ }
+
+ &-dropdown {
+ @include menu;
+
+ .open & {
+ display: flex;
+ }
+
+ > li {
+ flex: 0 0 auto;
+ padding: $spacer-smallest $spacer-small;
+ border: $spacer-2 dotted;
+
+ @include themed {
+ border-color: t($accent);
+ }
+
+ a {
+ display: flex;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+ }
+
+ &--desktop {
+ @media ($phone) {
+ display: none;
+ }
+ }
+
+ &--mobile {
+ .menu-trigger {
+ @include header-menu-trigger;
+
+ display: none;
+
+ @media ($phone) {
+ display: block;
+ }
+ }
+
+ .menu-dropdown {
+ @media ($phone) {
+ left: auto;
+ right: 0;
+ }
+ }
+
+ li {
+ flex: 0 0 auto;
+ margin-bottom: $spacer-2 * -1;
+ }
+ }
+}
diff --git a/themes/hugo-xterm/assets/styles/_pagination.scss b/themes/hugo-xterm/assets/styles/_pagination.scss
new file mode 100644
index 0000000..31ce2b2
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_pagination.scss
@@ -0,0 +1,39 @@
+.pagination {
+ margin: $spacer-largest 0;
+
+ @media print {
+ display: none;
+ }
+
+ &-title {
+ display: flex;
+ text-align: center;
+ position: relative;
+ margin: $spacer-large 0;
+
+ &-h {
+ text-align: center;
+ margin: 0 auto;
+ padding: $spacer-smallest $spacer-normal;
+ font-size: smaller;
+ text-transform: uppercase;
+ text-decoration: none;
+ letter-spacing: 0.1em;
+ z-index: 1;
+
+ @include themed {
+ background: t($background);
+ color: transparentize(t($text), 0.4);
+ }
+ }
+
+ hr {
+ position: absolute;
+ left: 0;
+ right: 0;
+ width: 100%;
+ margin-top: $spacer-normal;
+ z-index: 0;
+ }
+ }
+}
diff --git a/themes/hugo-xterm/assets/styles/_post.scss b/themes/hugo-xterm/assets/styles/_post.scss
new file mode 100644
index 0000000..1d4ca60
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_post.scss
@@ -0,0 +1,146 @@
+.post {
+ width: 100%;
+ text-align: left;
+ margin: $spacer-normal 0;
+
+ @media print {
+ margin: 0 0 $spacer-large 0;
+ }
+
+ &-entries {
+ .item {
+ padding-bottom: $spacer-small;
+ margin-bottom: $spacer-large;
+
+ p {
+ margin: 0;
+ }
+
+ h2,
+ h3 {
+ border-style: none;
+ margin: 0;
+ padding: 0;
+ }
+ }
+ }
+
+ &-header {
+ margin: $spacer-normal 0;
+
+ @media print {
+ margin: 0;
+ }
+ }
+
+ &-title {
+ $border-title: $spacer-smallest dotted;
+
+ position: relative;
+ border-bottom: $border-title;
+ width: 100%;
+ padding-bottom: $spacer-smallest;
+
+ @include themed {
+ border-color: t($accent);
+ }
+
+ &::after {
+ content: "";
+ position: absolute;
+ bottom: $spacer-2;
+ display: block;
+ width: 100%;
+ border-bottom: $border-title;
+
+ @include themed {
+ border-color: t($accent);
+ }
+ }
+
+ a {
+ text-decoration: none;
+
+ @media print {
+ &::after {
+ display: none;
+ }
+ }
+ }
+ }
+
+ &-meta,
+ &-tags {
+ font-style: italic;
+ font-size: $font-size-smaller;
+ margin: $spacer-small 0;
+
+ @include themed {
+ color: t($text-accent);
+ }
+
+ a {
+ @media print {
+ &::after {
+ display: none;
+ }
+ }
+ }
+ }
+
+ &-description {
+ font-size: $font-size-larger;
+ font-weight: $font-light;
+
+ @include themed {
+ color: t($text-brighter);
+ }
+ }
+
+ &-toc {
+ margin: $spacer-normal 0;
+
+ @media print {
+ display: none;
+ }
+
+ ul,
+ ol {
+ margin-bottom: 0;
+ }
+ }
+
+ &-cover {
+ border: $spacer-large solid $accent;
+ background: transparent;
+ margin: $spacer-largest 0;
+ padding: $spacer-large;
+
+ @media ($phone) {
+ padding: $spacer-small;
+ border-width: $spacer-small;
+ }
+ }
+
+ &-footer {
+ margin: $spacer-largest 0;
+
+ @media print {
+ margin: $spacer-small 0 0 0;
+ }
+ }
+
+ &-support {
+ font-style: italic;
+ margin: $spacer-normal 0;
+ border-top: $spacer-1 solid;
+
+ @include themed {
+ border-color: t($accent);
+ }
+
+ @media print {
+ margin: $spacer-large 0;
+ }
+ }
+}
diff --git a/themes/hugo-xterm/assets/styles/_slides.scss b/themes/hugo-xterm/assets/styles/_slides.scss
new file mode 100644
index 0000000..b902c5b
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_slides.scss
@@ -0,0 +1,47 @@
+:root {
+ --r-code-font: #{$font-family-mono};
+ --r-heading-font: #{$font-family-title};
+ --r-main-font-size: #{$font-size};
+ --r-main-font: #{$font-family-normal};
+
+ /* FIXME doesn't work in light theme */
+ @include themed {
+ --r-background-color: t($background);
+ --r-heading-color: t($text);
+ --r-main-color: t($text);
+ --r-link-color: t($text-links);
+ --r-link-color-dark: t($text-links);
+ --r-link-color-hover: t($text);
+ }
+}
+
+/* HACK use this until reveal.js theme colors are fixed */
+.reveal a {
+ @include themed {
+ color: t($text-links);
+ }
+}
+
+.reveal {
+ width: 100%;
+ height: $spacer-large * 25;
+}
+
+.reveal .slides {
+ text-align: left;
+}
+
+.header-left,
+.footer-left {
+ position: absolute;
+ left: 0%;
+ margin: $spacer-normal $spacer-normal;
+}
+
+.header-left {
+ top: 0%;
+}
+
+.footer-left {
+ bottom: 0%;
+}
diff --git a/themes/hugo-xterm/assets/styles/_syntax.scss b/themes/hugo-xterm/assets/styles/_syntax.scss
new file mode 100644
index 0000000..8229c38
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_syntax.scss
@@ -0,0 +1,60 @@
+/* syntax highlighted code layout */
+div.highlight-wrapper {
+ margin: $spacer-large 0;
+ border-radius: $spacer-2;
+ border: $spacer-1 solid;
+
+ @include themed {
+ border-color: t($background-brighter);
+ }
+}
+
+div.highlight-wrapper div.highlight-toolbar {
+ display: flex;
+ border-bottom: $spacer-1 solid;
+
+ @include themed {
+ color: t($text-brighter);
+ background: t($background-grey);
+ border-color: t($background-brighter);
+ }
+
+ .item {
+ padding: 0 $spacer-small;
+
+ .label {
+ @include themed {
+ color: t($text-duller);
+ }
+
+ @media ($phone) {
+ display: none;
+ }
+ }
+
+ &.right {
+ margin-left: auto;
+ }
+ }
+}
+
+div.highlight .chroma {
+ margin: 0;
+ padding: $spacer-smallest 0;
+ overflow: auto;
+}
+
+div.highlight .chroma code {
+ color: inherit;
+ background: inherit;
+ padding: 0;
+ margin: 0;
+}
+
+div.highlight .chroma .line span.cl.wrap {
+ white-space: pre-wrap;
+}
+
+div.highlight .chroma .cl {
+ padding-right: $spacer-small;
+}
diff --git a/themes/hugo-xterm/assets/styles/_themes.scss b/themes/hugo-xterm/assets/styles/_themes.scss
new file mode 100644
index 0000000..8288597
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_themes.scss
@@ -0,0 +1,117 @@
+/* Shortcuts */
+$accent: "accent";
+$background: "background";
+$text: "text";
+$text-links: "text-links";
+$text-accent: "text-accent";
+$text-brighter: "text-brighter";
+$text-duller: "text-duller";
+$background-brighter: "background-brighter";
+$background-grey: "background-grey";
+$code-text: "code-text";
+$code-background: "code-background";
+$blockquote-background: "blockquote-background";
+$button-text: "button-text";
+$button-background: "button-background";
+
+/* Syntax highlighting colors variables */
+$syn-bg: "syn-bg";
+$syn-fg: "syn-fg";
+$syn-kw: "syn-kw";
+$syn-ld: "syn-ld";
+$syn-lse: "syn-lse";
+$syn-n: "syn-n";
+$syn-na: "syn-na";
+
+/* Syntax highlighting common colors based on monokailight and monokai */
+$syn-c: #75715e;
+$syn-op: #f92672;
+$syn-l: #ae81ff;
+
+/* Themes */
+$themes: (
+ light: (
+ $accent: $accent--light,
+ $background: $background--light,
+ $text: $text--light,
+ $text-links: $text-links--light,
+ $text-accent: scale-color($accent--light, $lightness: 30%),
+ $text-brighter:
+ scale-color($text--light, $saturation: 40%, $lightness: 20%),
+ $text-duller:
+ scale-color($text--light, $saturation: -90%, $lightness: -10%),
+ $background-brighter: scale-color($background--light, $lightness: -5%),
+ $background-grey:
+ scale-color($accent--light, $saturation: -80%, $lightness: 90%),
+ $code-text: scale-color($accent--light, $hue: -90%, $lightness: -45%),
+ $code-background: scale-color($background--light, $lightness: 60%),
+ $blockquote-background: darken($background--light, 2%),
+ $button-text: darken($text--light, 5%),
+ $button-background: darken($background--light, 5%),
+ $syn-bg: #fafafa,
+ $syn-fg: #272822,
+ $syn-kw: #00a8c8,
+ $syn-ld: #d88200,
+ $syn-lse: #8045ff,
+ $syn-n: #111,
+ $syn-na: #75af00,
+ ),
+ dark: (
+ $accent: $accent--dark,
+ $background: $background--dark,
+ $text: $text--dark,
+ $text-links: $text-links--dark,
+ $text-accent: scale-color($accent--dark, $lightness: 60%),
+ $text-brighter:
+ scale-color($text--dark, $saturation: 60%, $lightness: 60%),
+ $text-duller:
+ scale-color($text--dark, $saturation: -90%, $lightness: -20%),
+ $background-brighter: scale-color($background--dark, $lightness: 20%),
+ $background-grey:
+ scale-color($accent--dark, $saturation: -90%, $lightness: -70%),
+ $code-text: scale-color($accent--dark, $hue: -90%, $lightness: 45%),
+ $code-background: scale-color($background--dark, $lightness: 20%),
+ $blockquote-background: lighten($background--dark, 5%),
+ $button-text: lighten($text--dark, 10%),
+ $button-background: lighten($background--dark, 15%),
+ $syn-bg: #272822,
+ $syn-fg: #f8f8f2,
+ $syn-kw: #66d9ef,
+ $syn-ld: #e6db74,
+ $syn-lse: #ae81ff,
+ $syn-n: #f8f8f2,
+ $syn-na: #a6e22e,
+ ),
+);
+
+/* Current theme global variable */
+$current-theme: null;
+
+@mixin themed() {
+ $current-theme: map-get($themes, "light") !global;
+
+ & {
+ @content;
+ }
+
+ @media print {
+ & {
+ @content;
+ }
+ }
+
+ $themes-local: map-remove($themes, "light");
+
+ @each $theme-name, $theme-map in $themes-local {
+ .theme--#{$theme-name} & {
+ $current-theme: $theme-map !global;
+ @content;
+
+ $current-theme: null !global;
+ }
+ }
+}
+
+@function t($key) {
+ @return map-get($current-theme, $key);
+}
diff --git a/themes/hugo-xterm/assets/styles/_variables.scss b/themes/hugo-xterm/assets/styles/_variables.scss
new file mode 100644
index 0000000..3d41b26
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/_variables.scss
@@ -0,0 +1,75 @@
+/* Fonts */
+$font-family-title: "Roboto Slab", "Times New Roman", garamond, serif;
+$font-family-normal: "Fira Sans", arial, helvetica, sans-serif;
+$font-family-mono: "Ubuntu Mono", monaco, consolas, monospace;
+
+/* Font weights */
+$font-light: 300;
+$font-normal: 400;
+$font-bold: 500;
+
+/* Font sizes */
+$font-size: 1rem;
+$font-size-smaller: $font-size - 0.125;
+$font-size-larger: $font-size + 0.125;
+
+/* Layouts */
+$container-max-width: 864px;
+
+/* Spacers */
+$spacer-1: 1px;
+$spacer-2: $spacer-1 * 2;
+$spacer-smallest: $spacer-2 * 2;
+$spacer-small: $spacer-smallest * 2;
+$spacer-normal: $spacer-small * 2;
+$spacer-large: $spacer-small * 3;
+$spacer-large2: $spacer-small * 4;
+$spacer-largest: $spacer-small * 6;
+
+/* Colors */
+$blue: hsl(
+ $hue: 240deg,
+ $saturation: 100%,
+ $lightness: 50%,
+);
+
+/* Light theme colors */
+$accent--light: $blue;
+$background--light: scale-color(
+ $accent--light,
+ $saturation: -60%,
+ $lightness: 90%
+);
+$text--light: scale-color(
+ $accent--light,
+ $saturation: -60%,
+ $lightness: -50%
+);
+$text-links--light: adjust-color(
+ $accent--light,
+ $hue: -90deg,
+ $lightness: -30%
+);
+
+/* Dark theme colors */
+$accent--dark: $blue;
+$background--dark: scale-color(
+ $accent--dark,
+ $saturation: -80%,
+ $lightness: -80%
+);
+$text--dark: scale-color($accent--dark, $lightness: 80%);
+$text-links--dark: adjust-color(
+ $accent--dark,
+ $hue: -90deg,
+ $lightness: -10%
+);
+
+/* Media queries */
+$phone: "max-width: 684px";
+$tablet: "max-width: 900px";
+
+:root {
+ --phone: (#{$phone});
+ --tablet: (#{$tablet});
+}
diff --git a/themes/hugo-xterm/assets/styles/app.scss b/themes/hugo-xterm/assets/styles/app.scss
new file mode 100644
index 0000000..a7d5c21
--- /dev/null
+++ b/themes/hugo-xterm/assets/styles/app.scss
@@ -0,0 +1,16 @@
+@import "variables";
+@import "themes";
+
+/* components */
+@import "buttons";
+@import "header";
+@import "menu";
+@import "main";
+@import "post";
+@import "pagination";
+@import "footer";
+
+/* code syntax highlight */
+@import "gen_syntax";
+@import "syntax";
+@import "slides";
diff --git a/themes/hugo-xterm/config.toml b/themes/hugo-xterm/config.toml
new file mode 100644
index 0000000..60fd848
--- /dev/null
+++ b/themes/hugo-xterm/config.toml
@@ -0,0 +1,4 @@
+[module]
+ [module.hugoVersion]
+ extended = true
+ min = '0.110.0'
diff --git a/themes/hugo-xterm/exampleSite/config/_default/config.toml b/themes/hugo-xterm/exampleSite/config/_default/config.toml
new file mode 100644
index 0000000..1f956a6
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/config/_default/config.toml
@@ -0,0 +1,69 @@
+title = "Hugo Xterm"
+languageCode = "en-us"
+baseurl = "https://manid2.github.io/hugo-xterm/"
+paginate = 20
+
+[module]
+ [[module.imports]]
+ path = "github.com/manid2/hugo-xterm"
+
+[params]
+ centerTheme = true
+ showMenuItems = true
+ favicon = "/images/xterm.png"
+ showBreadCrumbs = true
+ toc = true
+ copyrightUserUrl = "https://manid2.gitlab.io/"
+ copyrightUserText = "Mani Kumar"
+
+[params.twitter]
+ creator = "mani_d2"
+
+[params.site_verification]
+ google = "dRxlQUCTcreupAiAU9R-WcImzIL5ZkXVFT4PVPDJl6Y"
+ bing = "F82FFC97299503C8B6340178FE5F1EFA"
+ yandex = "146d77656fc95385"
+ naver = "e3b93136c43487a12e31584cf30306a269137968"
+
+[languages]
+ [languages.en.params]
+ copyright = "© Mani Kumar"
+ readOtherPosts = "Read other posts"
+ missingContentMessage = "Page not found..."
+ missingBackButtonLabel = "Back to home page"
+
+ [languages.en.params.logo]
+ logoText = "Home"
+
+ [languages.en.menu]
+ [[languages.en.menu.main]]
+ identifier = "cv"
+ name = "CV"
+ url = "/cv/"
+
+ [[languages.en.menu.main]]
+ identifier = "posts"
+ name = "Posts"
+ url = "/posts/"
+
+ [[languages.en.menu.main]]
+ identifier = "about"
+ name = "About"
+ url = "/about/"
+
+[markup]
+ [markup.tableOfContents]
+ startLevel = 2
+ endLevel = 3
+ ordered = false
+
+ [markup.highlight]
+ anchorLineNos = false
+ codeFences = true
+ guessSyntax = false
+ hl_Lines = ''
+ hl_inline = false
+ lineNoStart = 1
+ lineNos = true
+ lineNumbersInTable = false
+ noClasses = false
diff --git a/themes/hugo-xterm/exampleSite/config/production/config.toml b/themes/hugo-xterm/exampleSite/config/production/config.toml
new file mode 100644
index 0000000..b16248f
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/config/production/config.toml
@@ -0,0 +1,7 @@
+googleAnalytics = "G-FX00ZBCNBW"
+enableGitInfo = true
+
+[params.git_info]
+ host = "github"
+ user = "manid2"
+ repo = "hugo-xterm"
diff --git a/themes/hugo-xterm/exampleSite/content/_index.md b/themes/hugo-xterm/exampleSite/content/_index.md
new file mode 100644
index 0000000..39242ec
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/_index.md
@@ -0,0 +1,35 @@
++++
+title = "Hugo Xterm"
+description = """Hugo theme designed for reading and printing text with dark \
+and light modes."""
+date = "2023-07-15"
+toc = false
++++
+
+This is the demo example site for [manid2/hugo-xterm][1] theme.
+
+[![Hugo][hugo_ver_img]][hugo_v0110]
+[![LICENSE][hx_lic_img]][hx_lic_link]
+[![Build][hx_ci_build_img]][hx_ci_build_link]
+
+Support
+-------
+
+Kindly support this theme development by donating at [Buy me a
+coffee][md2_bmc_link].
+
+[![Mani Kumar Buy Me a Coffee QR code][md2_bmc_qr_img]][md2_bmc_link]
+
+[1]: https://github.com/manid2/hugo-xterm
+
+[hx_ci_build_img]: https://img.shields.io/github/actions/workflow/status/manid2/hugo-xterm/hugo.yaml?logo=github "Hugo Xterm build status badge"
+[hx_ci_build_link]: https://github.com/manid2/hugo-xterm/actions
+
+[hx_lic_img]: https://img.shields.io/github/license/manid2/hugo-xterm?logo=gnu&logoColor=black&label=License&labelColor=lightcyan "Hugo Xterm license badge"
+[hx_lic_link]: https://github.com/manid2/hugo-xterm/blob/main/LICENSE
+
+[hugo_ver_img]: https://img.shields.io/badge/Hugo%20Extended-%3E%3D%20v0.110.0-blue.svg?style=flat&logo=hugo&logoColor=white&label=Hugo%20Extended&labelColor=grey "Hugo Extended >= v0.110.0"
+[hugo_v0110]: https://github.com/gohugoio/hugo/releases/tag/v0.110.0
+
+[md2_bmc_link]: https://www.buymeacoffee.com/manid2
+[md2_bmc_qr_img]: https://manid2.gitlab.io/images/md2_bmc_qr.png
diff --git a/themes/hugo-xterm/exampleSite/content/about.md b/themes/hugo-xterm/exampleSite/content/about.md
new file mode 100644
index 0000000..9c01ec3
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/about.md
@@ -0,0 +1,168 @@
++++
+title = "About"
+description = "About hugo-xterm theme."
+toc = false
++++
+
+Hugo theme designed for reading and printing text with dark and light modes.
+
+Features
+--------
+
+### Distinguishing features
+
+* Designed for __reading__ and __printing__ text.
+* __Print:__ any page in light theme mode for readability.
+* __[CV][10]:__ or resume template to reduce vertical space by using 2 columns
+ and shortcodes to list the experiences and skills.
+* __Slides:__ support using [reveal.js][4].
+* __Lists__: separate view and pagination for simple list items and post
+ entries.
+* __GitInfo:__ show the latest git commit short hash and subject message for
+ each page (requires Hugo GitInfo config enabled).
+* __Fonts:__
+ - __"Roboto Slab (serif)"__ for title (heading) text.
+ - __"Fira Sans (sans-serif)"__ for normal text.
+ - __"Ubuntu Mono (monospace)"__ for code.
+* __Colors:__ in the theme are derived using a single primary color (blue)
+ from the [HSL colors][8].
+* Website banner is supported.
+
+### Adopted features
+
+* Minimal configuration.
+* Switchable dark and light themes with automatic selection based on system
+ theme.
+* SEO friendly OpenGraph and twitter cards support
+* Customizable using configurations for: "full width", "centered".
+* Taxonomies and posts RSS.
+* Responsive tested on desktop and on smart phones.
+* Responsive menus for desktop and mobile screens.
+* Accessibility tested using [WAVE Web Accessibility Evaluation Tool][5].
+* Code blocks are highlighted using Hugo built-in blazing fast [Chroma][9].
+* Copy code, see code language and file name (optional).
+* Tightly coupled with Hugo extended latest version (v1.110.0) to compile and
+ generate asset bundles with pipelines, fingerprinting and minification.
+
+### Other features
+
+These are supported due to [panr/terminal][1] theme base code but not
+tested as I don't use them myself:
+
+* Post cover image.
+* Images in post with caption.
+* Comments.
+
+Installation
+------------
+
+Follow the steps in any one of these methods to install or update a Hugo
+theme.
+
+### Method - Using hugo mod
+
+Add hugo-xterm theme as Hugo module to hide the theme content and let you
+focus only on your site content. Let Hugo handle the theme updates
+automatically and control the theme as a Hugo module instead of git.
+
+```bash
+cd
+
+# initialize your site as a hugo module.
+hugo mod init
+
+# import hugo-xterm theme as hugo module in configuration
+$ cat config/_default/config.toml
+[module]
+ [[module.imports]]
+ path = "github.com/manid2/hugo-xterm"
+
+# update theme
+hugo mod get -u
+```
+
+For all below methods your site needs to point to hugo-xterm theme
+subdirectory in configuration as below:
+
+```bash
+$ cat config/_default/config.toml
+theme = "hugo-xterm"
+```
+
+### Method - Download and copy theme
+
+Download the archived (i.e. .zip or tar.gz) theme from github repository
+releases page. Extract and copy the contents into `themes/hugo-xterm`
+subdirectory in your site directory.
+
+To update the theme just download a new release and overwrite the same
+subdirectory.
+
+This method is simple, can be automated with script and saves space on disk by
+omitting the theme repository history.
+
+### Method - Using git clone
+
+This method clones the theme repository with history into your site's themes
+subdirectory which is useful if you want to control the history or make your
+own private modifications to the theme.
+
+```bash
+cd
+git clone https://github.com/manid2/hugo-xterm themes/hugo-xterm --depth=1
+
+# update theme
+cd themes/hugo-xterm
+git pull
+```
+
+### Method - Using git submodule
+
+This is similar to cloning the theme into subdirectory except using git
+submodule which makes the theme acts a dependency of your site repository. It
+lets git to control your site and its dependency this theme.
+
+```bash
+git submodule add --depth=1 https://github.com/manid2/hugo-xterm \
+themes/hugo-xterm
+
+# update theme
+git submodule update --remote --merge
+```
+
+Local development
+-----------------
+
+```bash
+# add to go.mod for local development
+# replace github.com/manid2/hugo-xterm => ../hugo-xterm
+hugo server --source exampleSite
+```
+
+Credits
+-------
+
+This theme was initially based on [panr/terminal][1] theme but is re-written
+from scratch to optimize for reading and print text heavy web pages.
+
+Parts of the features in this theme are either taken directly or based on the
+features from popular themes and websites as listed below:
+
+* [panr/terminal][1]: most styles, menus and starter code.
+* [adityatelange/hugo-PaperMod][2] features: breadcrumbs and copy code.
+* [kaitlinmctigue/kaitlinmctigue.github.io][3]: dark and light theme modes.
+
+License
+-------
+
+[GNU General Public License v3.0][11]
+
+[1]: https://github.com/panr/hugo-theme-terminal
+[2]: https://github.com/adityatelange/hugo-PaperMod
+[3]: https://github.com/kaitlinmctigue/kaitlinmctigue.github.io
+[4]: https://github.com/hakimel/reveal.js
+[5]: https://wave.webaim.org/
+[8]: https://en.wikipedia.org/wiki/HSL_and_HSV
+[9]: https://github.com/alecthomas/chroma/
+[10]: https://manid2.gitlab.io/cv/
+[11]: https://github.com/manid2/hugo-xterm/blob/main/LICENSE
diff --git a/themes/hugo-xterm/exampleSite/content/cv.md b/themes/hugo-xterm/exampleSite/content/cv.md
new file mode 100644
index 0000000..8e3aca8
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/cv.md
@@ -0,0 +1,62 @@
++++
+title = "CV"
+name = "Hugo Xterm"
+description = """Built using Hugo, Sass and RevealJs."""
+type = "cv"
+
+[contact]
+ phone = "+91 1234"
+ email = "your[at]email[dot]com"
++++
+
+Experience
+----------
+
+{{< cv/experience
+ name="Sandvine Technologies"
+ date="02 Aug 2021 – Present"
+ title="Senior Software Engineer"
+ location="Bangalore, India" >}}
+
+* Working as part of Data-Plane team to develop and maintain features for
+ ActiveLogic product which processes internet packets.
+
+Technologies: C, Python, DPDK, NUMA, Data-Plane, TCP/IP, PostgreSQL
+
+{{< cv/experience
+ name="Toshiba Software"
+ date="21 Dec 2016 – 31 Jul 2019"
+ title="Software Engineer"
+ location="Bangalore, India" >}}
+
+* Worked in Device Layer development team where I designed & implemented
+ custom size scan for Toshiba Multi-Functional Peripheral (MFP). With this
+ feature the users can scan a non-standard paper sizes such as identity
+ cards, bills and receipts.
+
+Technologies: C++, C, JPEG, PDF, OpenCV, Linux, Embedded Systems
+
+Education
+---------
+
+{{< cv/experience
+ name="BMS College of Engineering"
+ date="Aug 2012 - Mar 2016"
+ title=
+ "Bachelor of Engineering in Electronics and Communications"
+ location="Bangalore, India" >}}
+
+Technical Skills
+----------------
+
+Languages: C, C++, Python
+
+Tools: Git, Docker, GDB, Valgrind, Gitlab, Vim, Ctags
+
+Hobbies
+-------
+
+* Hugo theme [manid2/hugo-xterm][1] for my website [manid2.gitlab.io][2].
+
+[1]: https://manid2.github.io/hugo-xterm/
+[2]: https://manid2.gitlab.io/
diff --git a/themes/hugo-xterm/exampleSite/content/docs/_index.md b/themes/hugo-xterm/exampleSite/content/docs/_index.md
new file mode 100644
index 0000000..11ec815
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/docs/_index.md
@@ -0,0 +1,12 @@
++++
+title = "Docs"
+description = "Documents collection"
+date = "2023-07-15"
+author = "Mani Kumar"
+
+[cascade]
+ list_type = "docs_list"
++++
+
+This page shows the list of items which are not articles and don't need a
+date, author and other meta data associated. They are like simple documents.
diff --git a/themes/hugo-xterm/exampleSite/content/docs/commands/_index.md b/themes/hugo-xterm/exampleSite/content/docs/commands/_index.md
new file mode 100644
index 0000000..1fa41a9
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/docs/commands/_index.md
@@ -0,0 +1,6 @@
++++
+title = "Commands"
+description = "Linux developer commands collection"
+date = "2023-07-15"
+author = "Mani Kumar"
++++
diff --git a/themes/hugo-xterm/exampleSite/content/docs/commands/awk.md b/themes/hugo-xterm/exampleSite/content/docs/commands/awk.md
new file mode 100644
index 0000000..fa60553
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/docs/commands/awk.md
@@ -0,0 +1,7 @@
+awk
+===
+
+```sh
+# upper case the first letter
+awk '{for(i=1;i<=NF;i++){ $i=toupper(substr($i,1,1)) substr($i,2) }}1' file
+```
diff --git a/themes/hugo-xterm/exampleSite/content/docs/commands/column.md b/themes/hugo-xterm/exampleSite/content/docs/commands/column.md
new file mode 100644
index 0000000..1daf7ba
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/docs/commands/column.md
@@ -0,0 +1,7 @@
+column
+======
+
+```sh
+# format csv into table
+column -s, -t < DebugLogs_2023-01-17-182808.csv >/tmp/t.csv
+```
diff --git a/themes/hugo-xterm/exampleSite/content/docs/commands/grep.md b/themes/hugo-xterm/exampleSite/content/docs/commands/grep.md
new file mode 100644
index 0000000..41e9947
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/docs/commands/grep.md
@@ -0,0 +1,10 @@
+grep
+====
+
+```sh
+# get all lower case letters
+egrep '^[[:lower:]]+$' /usr/share/dict/words >/tmp/t.txt
+
+# remove duplicate lines
+grep -vxF -f /usr/share/dict/words /tmp/t2.txt >/tmp/t.txt
+```
diff --git a/themes/hugo-xterm/exampleSite/content/docs/commands/irssi.md b/themes/hugo-xterm/exampleSite/content/docs/commands/irssi.md
new file mode 100644
index 0000000..4dcb240
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/docs/commands/irssi.md
@@ -0,0 +1,4 @@
+Irssi
+=====
+
+Irssi - a modular IRC client for UNIX
diff --git a/themes/hugo-xterm/exampleSite/content/posts/_index.md b/themes/hugo-xterm/exampleSite/content/posts/_index.md
new file mode 100644
index 0000000..40b95fa
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/posts/_index.md
@@ -0,0 +1,6 @@
++++
+title = "Posts"
+description = "Blog posts"
+date = "2023-07-15"
+author = "Mani Kumar"
++++
diff --git a/themes/hugo-xterm/exampleSite/content/posts/markdown-syntax.md b/themes/hugo-xterm/exampleSite/content/posts/markdown-syntax.md
new file mode 100644
index 0000000..bb108d2
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/posts/markdown-syntax.md
@@ -0,0 +1,184 @@
++++
+title = "Markdown Syntax Guide"
+description = """Sample article showcasing basic Markdown syntax and \
+ formatting for HTML elements."""
+draft = false
+date = "2024-05-06T01:22:51+0530"
+author = "Hugo Authors"
+tags = ["markdown", "xterm", "css", "html"]
+categories = ["themes", "syntax"]
++++
+
+This article offers a sample of basic Markdown syntax that can be used in Hugo
+content files, also it shows whether basic HTML elements are decorated with
+CSS in a Hugo theme.
+
+Headings
+--------
+
+The following HTML ``—`` elements represent six levels of section
+headings. `` is the highest section level while `` is the lowest.
+
+
+# H1
+
+## H2
+
+
+### H3
+
+#### H4
+
+##### H5
+
+###### H6
+
+Paragraph
+---------
+
+Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum,
+voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma
+dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as
+cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur?
+Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi,
+sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos
+evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam,
+ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores
+editium rerore eost, temped molorro ratiae volorro te reribus dolorer
+sperchicium faceata tiustia prat.
+
+Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne
+sapicia is sinveli squiatum, core et que aut hariosam ex eat.
+
+Blockquotes
+-----------
+
+The blockquote element represents content that is quoted from another source,
+optionally with a citation which must be within a `footer` or `cite` element,
+and optionally with in-line changes such as annotations and abbreviations.
+
+### Blockquote without attribution
+
+> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
+> __Note__ that you can use _Markdown syntax_ within a blockquote.
+
+Tables
+------
+
+Tables aren't part of the core Markdown spec, but Hugo supports them
+out-of-the-box.
+
+| Name | Age |
+| ----- | --- |
+| Bob | 27 |
+| Alice | 23 |
+
+### Inline Markdown within tables
+
+| Italics | Bold | Code |
+| --------- | -------- | ------ |
+| _italics_ | __bold__ | `code` |
+
+Code Blocks
+-----------
+
+### Inline Code
+
+`This is Inline Code`
+
+### Code block with backticks
+
+
+```
+
+
+
+
+ Example HTML5 Document
+
+
+ Test
+
+
+```
+
+
+### Code block with backticks, language & attributes (lineno) specified
+
+```html {linenos=true}
+
+
+
+
+ Example HTML5 Document
+
+
+
+ Test
+
+
+```
+
+
+
+### Code block indented with four spaces
+
+
+
+
+
+ Example HTML5 Document
+
+
+ Test
+
+
+
+### Code block with Hugo's internal highlight shortcode
+
+{{< highlight html >}}
+
+
+
+
+
+ Example HTML5 Document
+
+
+ Test
+
+
+
+{{< /highlight >}}
+
+
+
+### Gist
+
+{{< gist spf13 7896402 >}}
+
+List Types
+----------
+
+### Ordered List
+
+1. First item
+2. Second item
+3. Third item
+
+### Unordered List
+
+- List item
+- Another item
+- And another item
+
+### Nested list
+
+- Fruit
+ + Apple
+ + Orange
+ + Banana
+- Dairy
+ + Milk
+ + Cheese
diff --git a/themes/hugo-xterm/exampleSite/content/posts/rich-content.md b/themes/hugo-xterm/exampleSite/content/posts/rich-content.md
new file mode 100644
index 0000000..962116d
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/posts/rich-content.md
@@ -0,0 +1,26 @@
++++
+title = "Rich Content"
+description = "A brief description of Hugo Shortcodes."
+draft = false
+date = "2023-07-28"
+author = "Hugo Authors"
+tags = ["xterm", "shortcodes", "css", "html"]
+categories = ["themes", "syntax"]
++++
+
+Hugo ships with several [Built-in Shortcodes][hg-sc1] for rich content, along
+with a [Privacy Config][hg-l1] and a set of simple Shortcodes that enable
+static and no-JS versions of various social media embeds.
+
+YouTube Privacy Enhanced Shortcode
+----------------------------------
+
+{{< youtube ZJthWmvUzzc >}}
+
+Vimeo Simple Shortcode
+----------------------
+
+{{< vimeo_simple 48912912 >}}
+
+[hg-sc1]: https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes
+[hg-l1]: https://gohugo.io/about/hugo-and-gdpr/
diff --git a/themes/hugo-xterm/exampleSite/content/slides/_index.md b/themes/hugo-xterm/exampleSite/content/slides/_index.md
new file mode 100644
index 0000000..8c6429a
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/slides/_index.md
@@ -0,0 +1,6 @@
++++
+title = "Slides"
+description = "hugo-xterm slides using reveal.js"
+date = "2022-07-15"
+author = "Mani Kumar"
++++
diff --git a/themes/hugo-xterm/exampleSite/content/slides/hugo-xterm-slides.md b/themes/hugo-xterm/exampleSite/content/slides/hugo-xterm-slides.md
new file mode 100644
index 0000000..b6aa501
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/content/slides/hugo-xterm-slides.md
@@ -0,0 +1,22 @@
++++
+title = "hugo-xterm slides with reveal.js"
+description = """Slides created using reveal.js."""
+date = "2023-07-15"
+author = "Mani Kumar"
++++
+
+Introduction
+------------
+
+* Hugo theme for terminal users.
+
+---
+
+Features
+--------
+
+* Slides using [reveal.js][1].
+* Designed for blog and personal websites for professionals.
+* Support for online CV and documentation.
+
+[1]: https://revealjs.com/
diff --git a/themes/hugo-xterm/exampleSite/go.mod b/themes/hugo-xterm/exampleSite/go.mod
new file mode 100644
index 0000000..33523dd
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/go.mod
@@ -0,0 +1,7 @@
+module github.com/manid2/hugo-xterm/exampleSite
+
+go 1.18
+
+require github.com/manid2/hugo-xterm v1.5.0 // indirect
+
+replace github.com/manid2/hugo-xterm => ../
diff --git a/themes/hugo-xterm/exampleSite/go.sum b/themes/hugo-xterm/exampleSite/go.sum
new file mode 100644
index 0000000..884985b
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/go.sum
@@ -0,0 +1,6 @@
+github.com/manid2/hugo-xterm v0.0.0-20230715095800-5e6c59a4014f h1:rqkJPX0cOjWuXBxuUaWC6yzou0E+Gzw2HHb6/M4kOSY=
+github.com/manid2/hugo-xterm v0.0.0-20230715095800-5e6c59a4014f/go.mod h1:okco5bnHP7wAs4wCdFM1CGqvOZf5Wpj39kHDIZT4Vds=
+github.com/manid2/hugo-xterm v0.0.0-20230715205645-468f278c002c h1:SjaKPRMTk/kZ2amsVNLiCqp73z2QU8whOYIC2C6C/7w=
+github.com/manid2/hugo-xterm v0.0.0-20230715205645-468f278c002c/go.mod h1:GfVYdHvhSC/U07C3fOHLl/k2hzc+uQh0oRuy4q7Or3A=
+github.com/manid2/hugo-xterm v1.0.1 h1:s+uFQxPsA2lj20ZoQ2nUWqjW99E+uCsccuJL4UVWXQM=
+github.com/manid2/hugo-xterm v1.0.1/go.mod h1:GfVYdHvhSC/U07C3fOHLl/k2hzc+uQh0oRuy4q7Or3A=
diff --git a/themes/hugo-xterm/exampleSite/layouts/partials/extend_head.html b/themes/hugo-xterm/exampleSite/layouts/partials/extend_head.html
new file mode 100644
index 0000000..af9c808
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/layouts/partials/extend_head.html
@@ -0,0 +1,14 @@
+{{- if hugo.IsProduction -}}
+
+{{- end -}}
diff --git a/themes/hugo-xterm/exampleSite/scripts/hugo-env b/themes/hugo-xterm/exampleSite/scripts/hugo-env
new file mode 100755
index 0000000..5d47c6a
--- /dev/null
+++ b/themes/hugo-xterm/exampleSite/scripts/hugo-env
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+HUGOxPARAMSxGITxLAST_COMMITxHASH=$(git log -1 --format=%H)
+HUGOxPARAMSxGITxLAST_COMMITxSHORT_HASH=$(git log -1 --format=%h)
+HUGOxPARAMSxGITxLAST_COMMITxSUBJECT=$(git log -1 --format=%s)
+
+export HUGOxPARAMSxGITxLAST_COMMITxHASH
+export HUGOxPARAMSxGITxLAST_COMMITxSHORT_HASH
+export HUGOxPARAMSxGITxLAST_COMMITxSUBJECT
+
+export TZ='Asia/Kolkata'
diff --git a/themes/hugo-xterm/exampleSite/static/images/xterm.png b/themes/hugo-xterm/exampleSite/static/images/xterm.png
new file mode 100644
index 0000000..138d335
Binary files /dev/null and b/themes/hugo-xterm/exampleSite/static/images/xterm.png differ
diff --git a/themes/hugo-xterm/go.mod b/themes/hugo-xterm/go.mod
new file mode 100644
index 0000000..b992c0f
--- /dev/null
+++ b/themes/hugo-xterm/go.mod
@@ -0,0 +1,3 @@
+module github.com/manid2/hugo-xterm
+
+go 1.18
diff --git a/themes/hugo-xterm/images/screenshot.png b/themes/hugo-xterm/images/screenshot.png
new file mode 100644
index 0000000..3d7f384
Binary files /dev/null and b/themes/hugo-xterm/images/screenshot.png differ
diff --git a/themes/hugo-xterm/images/tn.png b/themes/hugo-xterm/images/tn.png
new file mode 100644
index 0000000..303861a
Binary files /dev/null and b/themes/hugo-xterm/images/tn.png differ
diff --git a/themes/hugo-xterm/layouts/404.html b/themes/hugo-xterm/layouts/404.html
new file mode 100644
index 0000000..f847740
--- /dev/null
+++ b/themes/hugo-xterm/layouts/404.html
@@ -0,0 +1,10 @@
+{{- define "main" }}
+
+
+ 404 — {{ site.Params.missingContentMessage | default "Page not found..." }}
+
+
+ {{ site.Params.missingBackButtonLabel | default "Back to home page" }} →
+
+
+{{- end }}
diff --git a/themes/hugo-xterm/layouts/_default/_markup/render-codeblock.html b/themes/hugo-xterm/layouts/_default/_markup/render-codeblock.html
new file mode 100644
index 0000000..5ae4506
--- /dev/null
+++ b/themes/hugo-xterm/layouts/_default/_markup/render-codeblock.html
@@ -0,0 +1,23 @@
+{{- $lang := .Attributes.lang | default .Type -}}
+{{- $file := .Attributes.file -}}
+
+{{- /* TODO: Add div toolbar */}}
+
+
+
+ Lang:
+ {{ $lang }}
+
+
+ {{- with $file }}
+
+ File:
+ {{ . }}
+
+ {{- end }}
+
+
+ Copy
+
+ {{- highlight .Inner $lang -}}
+
diff --git a/themes/hugo-xterm/layouts/_default/_markup/render-heading.html b/themes/hugo-xterm/layouts/_default/_markup/render-heading.html
new file mode 100644
index 0000000..35f9028
--- /dev/null
+++ b/themes/hugo-xterm/layouts/_default/_markup/render-heading.html
@@ -0,0 +1,5 @@
+{{- /* Anchorized headings */}}
+
+ {{ .Text | safeHTML }}
+
+
diff --git a/themes/hugo-xterm/layouts/_default/baseof.html b/themes/hugo-xterm/layouts/_default/baseof.html
new file mode 100644
index 0000000..5c446f4
--- /dev/null
+++ b/themes/hugo-xterm/layouts/_default/baseof.html
@@ -0,0 +1,57 @@
+
+
+
+ {{- partial "head/base.html" . -}}
+ {{- partial "head/style.html" . -}}
+ {{- if templates.Exists "partials/extend_head.html" -}}
+ {{- partial "extend_head.html" . -}}
+ {{- end -}}
+
+
+
+ {{- $container := "container" -}}
+ {{- if site.Params.fullWidthTheme -}}
+ {{- $container = print $container " full" -}}
+ {{- else if site.Params.centerTheme -}}
+ {{- $container = print $container " center" -}}
+ {{- end -}}
+
+ {{- /* theme container */}}
+
+ {{- /* container */}}
+
+ {{- /* site header */}}
+
+
+ {{- /* site main */}}
+
+ {{- block "main" . -}}
+ {{ if .Title -}}
+ {{ .Title | plainify }}
+ {{- end -}}
+
+ {{- /* site main content */}}
+ {{ .Content }}
+ {{- end -}}
+ {{- /* end main content */}}
+
+
+ {{- /* site footer */}}
+
+
+
+
+ {{- partial "scripts/base.html" . -}}
+ {{- if templates.Exists "partials/extend_footer.html" -}}
+ {{- partial "extend_footer.html" . -}}
+ {{- end -}}
+
+
diff --git a/themes/hugo-xterm/layouts/_default/list.html b/themes/hugo-xterm/layouts/_default/list.html
new file mode 100644
index 0000000..5664ac9
--- /dev/null
+++ b/themes/hugo-xterm/layouts/_default/list.html
@@ -0,0 +1,47 @@
+{{- define "main" }}
+
+
+
+
+ {{- with .Content }}
+ {{ . }}
+ {{- end }}
+
+ {{- /* list content */}}
+
See
+
+ {{- /* list items */}}
+ {{- if eq .Params.list_type "docs_list" }}
+ {{- $paginator := .Paginate .Pages -}}
+
+ {{- else }}
+ {{- partial "post-entries.html" . -}}
+ {{- end }}
+
+
+
+
+{{- end }}
diff --git a/themes/hugo-xterm/layouts/_default/rss.xml b/themes/hugo-xterm/layouts/_default/rss.xml
new file mode 100644
index 0000000..d1e43c2
--- /dev/null
+++ b/themes/hugo-xterm/layouts/_default/rss.xml
@@ -0,0 +1,63 @@
+{{- $pctx := . -}}
+{{- if .IsHome -}}
+ {{ $pctx = .Site }}
+{{- end -}}
+
+{{- $pages := slice -}}
+{{- if or $.IsHome $.IsSection -}}
+ {{- $pages = $pctx.RegularPages -}}
+{{- else -}}
+ {{- $pages = $pctx.Pages -}}
+{{- end -}}
+
+{{- $limit := .Site.Config.Services.RSS.Limit -}}
+{{- if ge $limit 1 -}}
+ {{- $pages = $pages | first $limit -}}
+{{- end -}}
+
+{{- printf "" | safeHTML }}
+
+
+ {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}
+ {{ .Permalink }}
+ Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}
+ Hugo -- gohugo.io
+
+ {{- with .Site.LanguageCode }}
+ {{.}}
+ {{- end }}
+
+ {{- with .Site.Author.email }}
+ {{.}}{{with $.Site.Author.name}} ({{.}}){{end}}
+ {{.}}{{with $.Site.Author.name}} ({{.}}){{end}}
+ {{- end}}
+
+ {{- with .Site.Params.Copyright }}
+ {{.}}
+ {{- end}}
+
+ {{- if not .Date.IsZero }}
+ {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}
+ {{- end }}
+
+ {{- with .OutputFormats.Get "RSS" -}}
+ {{ printf " " .Permalink .MediaType | safeHTML }}
+ {{- end -}}
+
+ {{- range $pages }}
+ -
+
{{ .Title }}
+ {{ .Permalink }}
+ {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}
+
+ {{- with .Site.Author.email }}
+ {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}
+ {{- end}}
+
+ {{ .Permalink }}
+ {{ .Summary | html }}
+ {{ .Content | html }}
+
+ {{- end }}
+
+
diff --git a/themes/hugo-xterm/layouts/_default/single.html b/themes/hugo-xterm/layouts/_default/single.html
new file mode 100644
index 0000000..716e01e
--- /dev/null
+++ b/themes/hugo-xterm/layouts/_default/single.html
@@ -0,0 +1,68 @@
+{{- define "main" -}}
+
+
+
+ {{- if .Params.Cover }}
+
+ {{- end }}
+
+ {{- if and (.Param "toc") (ne .TableOfContents " ") }}
+
+
{{ "Table of Contents" | markdownify }}
+ {{ .TableOfContents }}
+
+ {{- end }}
+
+ {{- with .Content }}
+
+ {{ . }}
+
+ {{- end }}
+
+
+
+
+{{- end -}}
diff --git a/themes/hugo-xterm/layouts/_default/terms.html b/themes/hugo-xterm/layouts/_default/terms.html
new file mode 100644
index 0000000..58eb56e
--- /dev/null
+++ b/themes/hugo-xterm/layouts/_default/terms.html
@@ -0,0 +1,23 @@
+{{- define "main" }}
+ {{- if .Title }}
+
+ {{ .Title | plainify }}
+
+ {{- end }}
+
+
+
+
+ {{- $type := .Type }}
+ {{- range $key, $value := .Data.Terms.Alphabetical }}
+ {{- $name := .Name }}
+ {{- $count := .Count }}
+ {{- with $.Site.GetPage (printf "/%s/%s" $type $name) }}
+
+ {{ .Name }} ({{ $count }})
+
+ {{- end }}
+ {{- end }}
+
+
+{{- end }}
diff --git a/themes/hugo-xterm/layouts/cv/single.html b/themes/hugo-xterm/layouts/cv/single.html
new file mode 100644
index 0000000..cd0e86d
--- /dev/null
+++ b/themes/hugo-xterm/layouts/cv/single.html
@@ -0,0 +1,44 @@
+{{- define "main" -}}
+
+
+
+ {{- with .Content }}
+
+ {{ . }}
+
+ {{- end }}
+
+ {{- if .GitInfo -}}
+
+ {{- end -}}
+
+{{- end -}}
diff --git a/themes/hugo-xterm/layouts/partials/breadcrumbs.html b/themes/hugo-xterm/layouts/partials/breadcrumbs.html
new file mode 100644
index 0000000..5928ab9
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/breadcrumbs.html
@@ -0,0 +1,23 @@
+{{- if not .IsHome -}}
+
+ {{- $url := replace .Parent.Permalink (printf "%s" site.BaseURL) "" -}}
+ {{- $lang_url := strings.TrimPrefix (printf "%s/" .Lang) $url -}}
+
+ {{- /* Home */}}
+ {{ i18n "home" | default "Home" }}
+
+ {{- $scratch := newScratch }}
+ {{- range $index, $element := split $lang_url "/" }}
+
+ {{- $scratch.Add "path" (printf "%s/" $element ) }}
+ {{- $bc_pg := site.GetPage ($scratch.Get "path") -}}
+
+ {{- if (and ($bc_pg) (gt (len . ) 0)) }}
+ {{- print " / " | safeHTML -}}
+ {{- /* Paths */}}
+ {{ $bc_pg.Name }}
+ {{- end }}
+
+ {{- end }}
+
+{{- end }}
diff --git a/themes/hugo-xterm/layouts/partials/comments.html b/themes/hugo-xterm/layouts/partials/comments.html
new file mode 100644
index 0000000..64f5a64
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/comments.html
@@ -0,0 +1,8 @@
+
diff --git a/themes/hugo-xterm/layouts/partials/footer.html b/themes/hugo-xterm/layouts/partials/footer.html
new file mode 100644
index 0000000..50ea4e5
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/footer.html
@@ -0,0 +1,74 @@
+{{- /* site build info */}}
+
+ {{- /* site build timestamp */}}
+ Site built on: {{ now.Format "2006-01-02 15:04:05 MST" }}
+
+ {{- with site.Params.git.last_commit -}}
+ {{- $commitUrl := "" -}}
+ {{- if (isset site.Params "git_info") -}}
+ {{- $git_host := site.Params.git_info.host -}}
+ {{- $git_user := site.Params.git_info.user -}}
+ {{- $git_repo := site.Params.git_info.repo -}}
+ {{ $commitUrl = printf "https://%s.com/%s/%s/-/commit/%s" $git_host $git_user $git_repo .hash }}
+ {{- end -}}
+ from commit:
+
+ {{- /* code */}}
+
+ {{- if eq $commitUrl "" }}
+ #{{ .short_hash }} |
+ {{ .subject }}
+ {{- else }}
+
+ #{{ .short_hash }} |
+ {{ .subject }}
+
+ {{- end }}
+
+ {{- end -}}
+ {{/* gitinfo */}}
+
+
+{{- /* site copyright */}}
+
+
+{{- /* site theme info */}}
+Powered by Hugo , using theme Hugo Xterm .
diff --git a/themes/hugo-xterm/layouts/partials/gitinfo.html b/themes/hugo-xterm/layouts/partials/gitinfo.html
new file mode 100644
index 0000000..1126630
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/gitinfo.html
@@ -0,0 +1,41 @@
+{{- $pageName := "Page" -}}
+{{- if eq .Type "posts" -}}
+ {{- $pageName = print "Article" | plainify -}}
+{{- else -}}
+ {{- with .File -}}
+ {{- if eq .TranslationBaseName "cv" -}}
+ {{- $pageName = print .TranslationBaseName | upper -}}
+ {{- end -}}
+ {{- end -}}
+{{- end -}}
+
+{{- with .GitInfo -}}
+ {{- $commitUrl := "" -}}
+ {{- if (isset site.Params "git_info") -}}
+ {{- $git_host := site.Params.git_info.host -}}
+ {{- $git_user := site.Params.git_info.user -}}
+ {{- $git_repo := site.Params.git_info.repo -}}
+ {{ $commitUrl = printf "https://%s.com/%s/%s/-/commit/%s" $git_host $git_user $git_repo .Hash }}
+ {{- end -}}
+
+ {{- /* gitinfo */}}
+
+
+ {{- /* page name */}}
+ {{ $pageName }} last updated on {{ .AuthorDate }} by commit
+ {{- /* code */}}
+
+ {{- if eq $commitUrl "" }}
+ #{{ .AbbreviatedHash }} |
+ {{ .Subject }}
+ {{- else }}
+
+ #{{ .AbbreviatedHash }} |
+ {{ .Subject }}
+
+ {{- end }}
+
+
+
+{{- end -}}
+{{/* gitinfo */}}
diff --git a/themes/hugo-xterm/layouts/partials/head/base.html b/themes/hugo-xterm/layouts/partials/head/base.html
new file mode 100644
index 0000000..2bfc763
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/head/base.html
@@ -0,0 +1,88 @@
+{{- $title := site.Title -}}
+{{- $ogImage := site.Params.favicon -}}
+{{- if not .IsHome -}}
+ {{- if .Title -}}
+ {{- $title = .Title -}}
+ {{- else -}}
+ {{- $title = .File.TranslationBaseName -}}
+ {{- end -}}
+ {{- $title = printf "%s %s %s" $title "::" site.Title -}}
+{{- end -}}
+
+{{- $description := "" -}}
+{{- if .Description -}}
+ {{- $description = .Description | plainify -}}
+{{- else -}}
+ {{- $description = .Summary | plainify -}}
+{{- end -}}
+
+{{- $keywords := site.Params.Keywords -}}
+{{- with .Params.Keywords -}}
+ {{- $keywords = delimit . ", " -}}
+{{- end -}}
+
+{{- /* title */}}
+{{ $title }}
+
+{{- /* meta */}}
+
+
+
+
+
+
+
+{{- if (isset site.Params "twitter") -}}
+ {{- $twitterCreator := .Params.Twitter.creator | default site.Params.Twitter.creator -}}
+ {{- /* Twitter Card */}}
+
+
+{{- end -}}
+
+{{- /* OpenGraph data */}}
+
+
+
+{{- if .IsPage }}
+
+ {{- range .Params.categories }}
+
+ {{- end }}
+ {{- if isset .Params "date" }}
+
+ {{- end }}
+ {{- with .Params.LastMod }}
+
+ {{- end }}
+
+ {{- if .Params.cover -}}
+ {{- $ogImage = .Params.Cover }}
+ {{- end -}}
+{{- else }}
+
+{{- end }}
+
+{{- /* OpenGraph data */}}
+
+
+
+
+
+
+{{- /* Analytics */}}
+{{- template "_internal/google_analytics.html" . -}}
+{{- partial "site-verification.html" . -}}
+
+{{- /* Icons */}}
+
+
+{{- /* Fonts */}}
+
+
+
+
+{{- /* RSS Feed */}}
+
diff --git a/themes/hugo-xterm/layouts/partials/head/style.html b/themes/hugo-xterm/layouts/partials/head/style.html
new file mode 100644
index 0000000..7ea2329
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/head/style.html
@@ -0,0 +1,19 @@
+{{- if and (not .IsSection) (eq .Type "slides") -}}
+ {{- partial "slides/style.html" . -}}
+{{- end }}
+
+{{- /* styles */}}
+{{- if hugo.IsProduction -}}
+ {{- $options := (dict "targetPath" "styles.css" "outputStyle" "compressed") -}}
+ {{- $styles := resources.Get "styles/app.scss" | resources.ToCSS $options | resources.Fingerprint -}}
+
+{{- else -}}
+ {{- $options := (dict "targetPath" "styles.css" "outputStyle" "compressed" "enableSourceMap" true) -}}
+ {{- $styles := resources.Get "styles/app.scss" | resources.ToCSS $options -}}
+
+{{- end -}}
+
+{{- /* Custom CSS to override theme properties (/static/style.css) */}}
+{{- if (fileExists "static/style.css") }}
+
+{{- end }}
diff --git a/themes/hugo-xterm/layouts/partials/header.html b/themes/hugo-xterm/layouts/partials/header.html
new file mode 100644
index 0000000..bfa4909
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/header.html
@@ -0,0 +1,11 @@
+{{- if and (site.Params.banner) (templates.Exists "banner.html") -}}
+
+ {{- partial "banner.html" . -}}
+
+{{- end -}}
+
+{{- partial "navbar.html" . -}}
+
+{{- if and (site.Params.showBreadCrumbs) (not .IsHome) -}}
+ {{- partial "breadcrumbs.html" . -}}
+{{- end -}}
diff --git a/themes/hugo-xterm/layouts/partials/navbar.html b/themes/hugo-xterm/layouts/partials/navbar.html
new file mode 100644
index 0000000..63256c1
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/navbar.html
@@ -0,0 +1,43 @@
+{{- $logoText := site.Params.Logo.logoText | default "Home" -}}
+{{- $logoLink := site.Params.Logo.logoHomeLink | default "" -}}
+
+{{- /* navbar */}}
+
+
+
+ {{- /* navbar separator */}}
+
+
+ {{- if site.Params.showMenuItems }}
+
+
+
+
+ {{- end }}
+
diff --git a/themes/hugo-xterm/layouts/partials/pagination.html b/themes/hugo-xterm/layouts/partials/pagination.html
new file mode 100644
index 0000000..a3a5f7f
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/pagination.html
@@ -0,0 +1,51 @@
+{{- /* pagination */}}
+{{- $pgTitle := "See more" -}}
+{{- $pgNext := "Next" -}}
+{{- $pgPrev := "Previous" -}}
+{{- $pgNextLink := false -}}
+{{- $pgPrevLink := false -}}
+
+{{- if .IsPage -}}
+ {{- $pgTitle = site.Params.ReadOtherPosts | default "Read other posts" -}}
+
+ {{- with .NextInSection -}}
+ {{- $pgNext = .Title -}}
+ {{- $pgNextLink = .Permalink -}}
+ {{- end -}}
+
+ {{- with .PrevInSection -}}
+ {{- $pgPrev = .Title -}}
+ {{- $pgPrevLink = .Permalink -}}
+ {{- end -}}
+{{- else -}}
+ {{- if .Paginator.HasNext -}}
+ {{- $pgNextLink = .Paginator.Next.URL -}}
+ {{- end -}}
+
+ {{- if .Paginator.HasPrev -}}
+ {{- $pgPrevLink = .Paginator.Prev.URL -}}
+ {{- end -}}
+{{- end -}}
+
+{{- if or $pgNextLink $pgPrevLink -}}
+
+{{- end -}}
diff --git a/themes/hugo-xterm/layouts/partials/post-entries.html b/themes/hugo-xterm/layouts/partials/post-entries.html
new file mode 100644
index 0000000..a8cf9a2
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/post-entries.html
@@ -0,0 +1,33 @@
+{{- $paginator := .Paginate .Pages -}}
+
+ {{- range $paginator.Pages }}
+
+ {{- end }}
+
diff --git a/themes/hugo-xterm/layouts/partials/scripts/base.html b/themes/hugo-xterm/layouts/partials/scripts/base.html
new file mode 100644
index 0000000..040066f
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/scripts/base.html
@@ -0,0 +1,14 @@
+{{- $copy := resources.Get "scripts/copy.js" | js.Build -}}
+{{- $menu := resources.Get "scripts/menu.js" | js.Build -}}
+{{- $print := resources.Get "scripts/print.js" | js.Build -}}
+{{- $theme := resources.Get "scripts/theme.js" | js.Build -}}
+{{- $bundle := slice $menu $theme $copy $print | resources.Concat "bundle.js" -}}
+
+{{- if hugo.IsProduction -}}
+ {{- $bundle = $bundle | resources.Minify -}}
+{{- end -}}
+
+
+{{- if and (not .IsSection) (eq .Type "slides") -}}
+ {{- partial "slides/scripts.html" . -}}
+{{- end }}
diff --git a/themes/hugo-xterm/layouts/partials/site-verification.html b/themes/hugo-xterm/layouts/partials/site-verification.html
new file mode 100644
index 0000000..5f7dca4
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/site-verification.html
@@ -0,0 +1,15 @@
+{{- if site.Params.site_verification.google }}
+
+{{- end }}
+
+{{- if site.Params.site_verification.bing }}
+
+{{- end }}
+
+{{- if site.Params.site_verification.yandex }}
+
+{{- end }}
+
+{{- if site.Params.site_verification.naver }}
+
+{{- end -}}
diff --git a/themes/hugo-xterm/layouts/partials/slides/scripts.html b/themes/hugo-xterm/layouts/partials/slides/scripts.html
new file mode 100644
index 0000000..e185c22
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/slides/scripts.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
diff --git a/themes/hugo-xterm/layouts/partials/slides/style.html b/themes/hugo-xterm/layouts/partials/slides/style.html
new file mode 100644
index 0000000..3e12a32
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/slides/style.html
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/themes/hugo-xterm/layouts/partials/theme-icon.html b/themes/hugo-xterm/layouts/partials/theme-icon.html
new file mode 100644
index 0000000..57d660a
--- /dev/null
+++ b/themes/hugo-xterm/layouts/partials/theme-icon.html
@@ -0,0 +1,7 @@
+
+
+
diff --git a/themes/hugo-xterm/layouts/shortcodes/cv/experience.html b/themes/hugo-xterm/layouts/shortcodes/cv/experience.html
new file mode 100644
index 0000000..e7f6fd5
--- /dev/null
+++ b/themes/hugo-xterm/layouts/shortcodes/cv/experience.html
@@ -0,0 +1,17 @@
+{{- $name := .Get "name" -}}
+{{- $date := .Get "date" -}}
+{{- $title := .Get "title" -}}
+{{- $location := .Get "location" -}}
+
+
+
+
+ {{ $name }}
+ {{ $date }}
+
+
+
+ {{ $title }}
+ {{ $location }}
+
+
diff --git a/themes/hugo-xterm/layouts/shortcodes/figure.html b/themes/hugo-xterm/layouts/shortcodes/figure.html
new file mode 100644
index 0000000..e434c61
--- /dev/null
+++ b/themes/hugo-xterm/layouts/shortcodes/figure.html
@@ -0,0 +1,10 @@
+{{- if .Get "src" }}
+
+
+ {{- if .Get "caption" }}
+
+ {{ .Get "caption" | safeHTML }}
+
+ {{- end }}
+
+{{- end }}
diff --git a/themes/hugo-xterm/layouts/shortcodes/image.html b/themes/hugo-xterm/layouts/shortcodes/image.html
new file mode 100644
index 0000000..373aa00
--- /dev/null
+++ b/themes/hugo-xterm/layouts/shortcodes/image.html
@@ -0,0 +1,12 @@
+{{ if .Get "src" }}
+
+{{ end }}
diff --git a/themes/hugo-xterm/layouts/slides/single.html b/themes/hugo-xterm/layouts/slides/single.html
new file mode 100644
index 0000000..bcb9c22
--- /dev/null
+++ b/themes/hugo-xterm/layouts/slides/single.html
@@ -0,0 +1,81 @@
+{{- define "main" -}}
+
+
+
+
+
+
+
+
+
+
+
+ {{- if .Title }}
+
+ {{ .Title }}
+ {{- if or .Date .Params.Author }}
+
+ {{- with .Date -}}
+ {{ .Format "2006-01-02" }}
+ {{- end -}}
+
+ {{- with .Params.Author -}}
+ | {{ . }}
+ {{- end -}}
+
+ {{- end }}
+
+ {{- with .Description }}
+ {{ . }}
+ {{- end }}
+
+ {{- end }}
+
+
+
+
+
+
+
+
+
+
+{{- end -}}
diff --git a/themes/hugo-xterm/package-lock.json b/themes/hugo-xterm/package-lock.json
new file mode 100644
index 0000000..035e87d
--- /dev/null
+++ b/themes/hugo-xterm/package-lock.json
@@ -0,0 +1,4724 @@
+{
+ "name": "hugo-xterm",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "hugo-xterm",
+ "version": "1.0.0",
+ "license": "GPL-3.0",
+ "devDependencies": {
+ "eslint": "^8.40.0",
+ "eslint-config-prettier": "^8.8.0",
+ "eslint-config-standard": "^17.0.0",
+ "eslint-plugin-import": "^2.27.5",
+ "eslint-plugin-n": "^15.7.0",
+ "eslint-plugin-promise": "^6.1.1",
+ "linkinator": "^4.1.2",
+ "markdownlint-cli": "^0.33.0",
+ "prettier": "^2.8.8",
+ "prettier-plugin-go-template": "^0.0.13",
+ "stylelint": "^15.6.1",
+ "stylelint-config-standard-scss": "^9.0.0"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
+ "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
+ "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
+ "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.5",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz",
+ "integrity": "sha512-dTKSIHHWc0zPvcS5cqGP+/TPFUJB0ekJ9dGKvMAFoNuBFhDPBt9OMGNZiIA5vTiNdGHHBeScYPXIGBMnVOahsA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^2.1.1"
+ }
+ },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
+ "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
+ "dev": true,
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ },
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.2.tgz",
+ "integrity": "sha512-M8cFGGwl866o6++vIY7j1AKuq9v57cf+dGepScwCcbut9ypJNr4Cj+LLTWligYUZ0uyhEoJDKt5lvyBfh2L3ZQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^2.3.0",
+ "@csstools/css-tokenizer": "^2.1.1"
+ }
+ },
+ "node_modules/@csstools/selector-specificity": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz",
+ "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^6.0.13"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
+ "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz",
+ "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz",
+ "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+ "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
+ "node_modules/@types/minimist": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
+ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+ "dev": true
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
+ "dev": true
+ },
+ "node_modules/acorn": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+ "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
+ "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.3",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
+ "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
+ "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/builtins": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
+ "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
+ "node_modules/builtins/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/builtins/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
+ "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-keys": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-8.0.2.tgz",
+ "integrity": "sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^7.0.0",
+ "map-obj": "^4.3.0",
+ "quick-lru": "^6.1.1",
+ "type-fest": "^2.13.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-keys/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "dev": true
+ },
+ "node_modules/commander": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
+ "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/cosmiconfig": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
+ "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-functions-list": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz",
+ "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
+ "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decamelize-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
+ "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
+ "dev": true,
+ "dependencies": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decamelize-keys/node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decamelize-keys/node_modules/map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+ "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+ "dev": true,
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.21.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.3.tgz",
+ "integrity": "sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.2.1",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.10",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.0",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.7",
+ "string.prototype.trimend": "^1.0.6",
+ "string.prototype.trimstart": "^1.0.6",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+ "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz",
+ "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.4.0",
+ "@eslint/eslintrc": "^2.1.0",
+ "@eslint/js": "8.44.0",
+ "@humanwhocodes/config-array": "^0.11.10",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.10.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.0",
+ "eslint-visitor-keys": "^3.4.1",
+ "espree": "^9.6.0",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "8.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
+ "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-config-standard": {
+ "version": "17.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz",
+ "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.0.1",
+ "eslint-plugin-import": "^2.25.2",
+ "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
+ "eslint-plugin-promise": "^6.0.0"
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
+ "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.11.0",
+ "resolve": "^1.22.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
+ "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-es": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz",
+ "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==",
+ "dev": true,
+ "dependencies": {
+ "eslint-utils": "^2.0.0",
+ "regexpp": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=4.19.1"
+ }
+ },
+ "node_modules/eslint-plugin-es/node_modules/eslint-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.27.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz",
+ "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "array.prototype.flatmap": "^1.3.1",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.7",
+ "eslint-module-utils": "^2.7.4",
+ "has": "^1.0.3",
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.values": "^1.1.6",
+ "resolve": "^1.22.1",
+ "semver": "^6.3.0",
+ "tsconfig-paths": "^3.14.1"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-n": {
+ "version": "15.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz",
+ "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==",
+ "dev": true,
+ "dependencies": {
+ "builtins": "^5.0.1",
+ "eslint-plugin-es": "^4.1.0",
+ "eslint-utils": "^3.0.0",
+ "ignore": "^5.1.1",
+ "is-core-module": "^2.11.0",
+ "minimatch": "^3.1.2",
+ "resolve": "^1.22.1",
+ "semver": "^7.3.8"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-n/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-n/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-promise": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
+ "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz",
+ "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^2.0.0"
+ },
+ "engines": {
+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=5"
+ }
+ },
+ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+ "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
+ "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "dev": true
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gaxios": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz",
+ "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==",
+ "dev": true,
+ "dependencies": {
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^5.0.0",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.6.9"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stdin": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
+ "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "9.3.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz",
+ "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "minimatch": "^8.0.2",
+ "minipass": "^4.2.4",
+ "path-scurry": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz",
+ "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "dependencies": {
+ "global-prefix": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-prefix/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+ "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globjoin": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
+ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
+ "dev": true
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/hard-rejection": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
+ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
+ "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^7.5.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.0.0.tgz",
+ "integrity": "sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.1.0",
+ "entities": "^4.5.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/ini": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz",
+ "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
+ "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+ "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
+ "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+ "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+ "dev": true
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/known-css-properties": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz",
+ "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==",
+ "dev": true
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/linkify-it": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz",
+ "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
+ "dev": true,
+ "dependencies": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "node_modules/linkinator": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-4.1.3.tgz",
+ "integrity": "sha512-jlpUQeqT3c+oo5Kk8v50NUwycV9JDNj029EmwFBk2Qfa3A9tz2+JyMCB3zQ9D9xR56tC/KNmQkzyGQR0qPCCdA==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^5.0.0",
+ "escape-html": "^1.0.3",
+ "gaxios": "^5.0.0",
+ "glob": "^9.3.2",
+ "htmlparser2": "^9.0.0",
+ "marked": "^4.0.3",
+ "meow": "^11.0.0",
+ "mime": "^3.0.0",
+ "server-destroy": "^1.0.1",
+ "srcset": "^5.0.0"
+ },
+ "bin": {
+ "linkinator": "build/src/cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/linkinator/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/map-obj": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
+ "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz",
+ "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~3.0.1",
+ "linkify-it": "^4.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
+ }
+ },
+ "node_modules/markdown-it/node_modules/entities": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+ "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/markdownlint": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz",
+ "integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==",
+ "dev": true,
+ "dependencies": {
+ "markdown-it": "13.0.1"
+ },
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/markdownlint-cli": {
+ "version": "0.33.0",
+ "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.33.0.tgz",
+ "integrity": "sha512-zMK1oHpjYkhjO+94+ngARiBBrRDEUMzooDHBAHtmEIJ9oYddd9l3chCReY2mPlecwH7gflQp1ApilTo+o0zopQ==",
+ "dev": true,
+ "dependencies": {
+ "commander": "~9.4.1",
+ "get-stdin": "~9.0.0",
+ "glob": "~8.0.3",
+ "ignore": "~5.2.4",
+ "js-yaml": "^4.1.0",
+ "jsonc-parser": "~3.2.0",
+ "markdownlint": "~0.27.0",
+ "minimatch": "~5.1.2",
+ "run-con": "~1.2.11"
+ },
+ "bin": {
+ "markdownlint": "markdownlint.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/markdownlint-cli/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/markdownlint-cli/node_modules/glob": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+ "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/markdownlint-cli/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/marked": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
+ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
+ "dev": true,
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/mathml-tag-names": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
+ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
+ "dev": true
+ },
+ "node_modules/mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
+ "dev": true
+ },
+ "node_modules/meow": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-11.0.0.tgz",
+ "integrity": "sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimist": "^1.2.2",
+ "camelcase-keys": "^8.0.2",
+ "decamelize": "^6.0.0",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "4.1.0",
+ "normalize-package-data": "^4.0.1",
+ "read-pkg-up": "^9.1.0",
+ "redent": "^4.0.0",
+ "trim-newlines": "^4.0.2",
+ "type-fest": "^3.1.0",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/meow/node_modules/type-fest": {
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.0.tgz",
+ "integrity": "sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minimist-options": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
+ "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+ "dev": true,
+ "dependencies": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0",
+ "kind-of": "^6.0.3"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+ "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+ "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz",
+ "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^5.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
+ "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz",
+ "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/path-scurry/node_modules/minipass": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz",
+ "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.26",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz",
+ "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-media-query-parser": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
+ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
+ "dev": true
+ },
+ "node_modules/postcss-resolve-nested-selector": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
+ "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
+ "dev": true
+ },
+ "node_modules/postcss-safe-parser": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
+ "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3"
+ }
+ },
+ "node_modules/postcss-scss": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz",
+ "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-scss"
+ }
+ ],
+ "engines": {
+ "node": ">=12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.19"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
+ "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-plugin-go-template": {
+ "version": "0.0.13",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-go-template/-/prettier-plugin-go-template-0.0.13.tgz",
+ "integrity": "sha512-gG/xT5kd+kCzoMaTchXvdfBdsunyRCV6G8cgdPGPd2V5JGGKXUG7SjzBKU7jaGh2RTeblcAdBb/E+S/duOAMsA==",
+ "dev": true,
+ "dependencies": {
+ "ulid": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "prettier": "^2.0.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/quick-lru": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.1.tgz",
+ "integrity": "sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz",
+ "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.1",
+ "normalize-package-data": "^3.0.2",
+ "parse-json": "^5.2.0",
+ "type-fest": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz",
+ "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^6.3.0",
+ "read-pkg": "^7.1.0",
+ "type-fest": "^2.5.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/read-pkg/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+ "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^4.0.1",
+ "is-core-module": "^2.5.0",
+ "semver": "^7.3.4",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/read-pkg/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/read-pkg/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/redent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz",
+ "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==",
+ "dev": true,
+ "dependencies": {
+ "indent-string": "^5.0.0",
+ "strip-indent": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
+ "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexpp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
+ "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.11.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-con": {
+ "version": "1.2.12",
+ "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.12.tgz",
+ "integrity": "sha512-5257ILMYIF4RztL9uoZ7V9Q97zHtNHn5bN3NobeAnzB1P3ASLgg8qocM2u+R18ttp+VEM78N2LK8XcNVtnSRrg==",
+ "dev": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~3.0.0",
+ "minimist": "^1.2.8",
+ "strip-json-comments": "~3.1.1"
+ },
+ "bin": {
+ "run-con": "cli.js"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/server-destroy": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
+ "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
+ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
+ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
+ "dev": true
+ },
+ "node_modules/srcset": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/srcset/-/srcset-5.0.0.tgz",
+ "integrity": "sha512-SqEZaAEhe0A6ETEa9O1IhSPC7MdvehZtCnTR0AftXk3QhY2UNgb+NApFOUPZILXk/YTDfFxMTNJOBpzrJsEdIA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
+ "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
+ "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
+ "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
+ "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
+ "dev": true,
+ "dependencies": {
+ "min-indent": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/style-search": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
+ "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
+ "dev": true
+ },
+ "node_modules/stylelint": {
+ "version": "15.10.1",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.1.tgz",
+ "integrity": "sha512-CYkzYrCFfA/gnOR+u9kJ1PpzwG10WLVnoxHDuBA/JiwGqdM9+yx9+ou6SE/y9YHtfv1mcLo06fdadHTOx4gBZQ==",
+ "dev": true,
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^2.3.0",
+ "@csstools/css-tokenizer": "^2.1.1",
+ "@csstools/media-query-list-parser": "^2.1.2",
+ "@csstools/selector-specificity": "^3.0.0",
+ "balanced-match": "^2.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^8.2.0",
+ "css-functions-list": "^3.1.0",
+ "css-tree": "^2.3.1",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.0",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^6.0.1",
+ "global-modules": "^2.0.0",
+ "globby": "^11.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^3.3.1",
+ "ignore": "^5.2.4",
+ "import-lazy": "^4.0.0",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.27.0",
+ "mathml-tag-names": "^2.1.3",
+ "meow": "^10.1.5",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.24",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-safe-parser": "^6.0.0",
+ "postcss-selector-parser": "^6.0.13",
+ "postcss-value-parser": "^4.2.0",
+ "resolve-from": "^5.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "style-search": "^0.1.0",
+ "supports-hyperlinks": "^3.0.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.8.1",
+ "write-file-atomic": "^5.0.1"
+ },
+ "bin": {
+ "stylelint": "bin/stylelint.mjs"
+ },
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ }
+ },
+ "node_modules/stylelint-config-recommended": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz",
+ "integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==",
+ "dev": true,
+ "peerDependencies": {
+ "stylelint": "^15.5.0"
+ }
+ },
+ "node_modules/stylelint-config-recommended-scss": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-11.0.0.tgz",
+ "integrity": "sha512-EDghTDU7aOv2LTsRZvcT1w8mcjUaMhuy+t38iV5I/0Qiu6ixdkRwhLEMul3K/fnB2v9Nwqvb3xpvJfPH+HduDw==",
+ "dev": true,
+ "dependencies": {
+ "postcss-scss": "^4.0.6",
+ "stylelint-config-recommended": "^12.0.0",
+ "stylelint-scss": "^4.6.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3",
+ "stylelint": "^15.5.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylelint-config-standard": {
+ "version": "33.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-33.0.0.tgz",
+ "integrity": "sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==",
+ "dev": true,
+ "dependencies": {
+ "stylelint-config-recommended": "^12.0.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^15.5.0"
+ }
+ },
+ "node_modules/stylelint-config-standard-scss": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-9.0.0.tgz",
+ "integrity": "sha512-yPKpJsrZn4ybuQZx/DkEHuCjw7pJginErE/47dFhCnrvD48IJ4UYec8tSiCuJWMA3HRjbIa3nh5ZeSauDGuVAg==",
+ "dev": true,
+ "dependencies": {
+ "stylelint-config-recommended-scss": "^11.0.0",
+ "stylelint-config-standard": "^33.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.3.3",
+ "stylelint": "^15.5.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylelint-scss": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz",
+ "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==",
+ "dev": true,
+ "dependencies": {
+ "postcss-media-query-parser": "^0.2.3",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-selector-parser": "^6.0.11",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^14.5.1 || ^15.0.0"
+ }
+ },
+ "node_modules/stylelint/node_modules/balanced-match": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+ "dev": true
+ },
+ "node_modules/stylelint/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/camelcase-keys": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz",
+ "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^6.3.0",
+ "map-obj": "^4.1.0",
+ "quick-lru": "^5.1.1",
+ "type-fest": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/decamelize": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz",
+ "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stylelint/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stylelint/node_modules/meow": {
+ "version": "10.1.5",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz",
+ "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimist": "^1.2.2",
+ "camelcase-keys": "^7.0.0",
+ "decamelize": "^5.0.0",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "4.1.0",
+ "normalize-package-data": "^3.0.2",
+ "read-pkg-up": "^8.0.0",
+ "redent": "^4.0.0",
+ "trim-newlines": "^4.0.2",
+ "type-fest": "^1.2.2",
+ "yargs-parser": "^20.2.9"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/normalize-package-data": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+ "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^4.0.1",
+ "is-core-module": "^2.5.0",
+ "semver": "^7.3.4",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stylelint/node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/read-pkg": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz",
+ "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^3.0.2",
+ "parse-json": "^5.2.0",
+ "type-fest": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/read-pkg-up": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz",
+ "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^5.0.0",
+ "read-pkg": "^6.0.0",
+ "type-fest": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylelint/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stylelint/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
+ "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/table": {
+ "version": "6.8.1",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
+ "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/table/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "node_modules/trim-newlines": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz",
+ "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
+ "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true
+ },
+ "node_modules/ulid": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz",
+ "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==",
+ "dev": true,
+ "bin": {
+ "ulid": "bin/cli.js"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.10.tgz",
+ "integrity": "sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/themes/hugo-xterm/package.json b/themes/hugo-xterm/package.json
new file mode 100644
index 0000000..8160a0a
--- /dev/null
+++ b/themes/hugo-xterm/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "hugo-xterm",
+ "version": "1.0.0",
+ "description": "Hugo theme for terminal users.",
+ "main": "index.js",
+ "scripts": {
+ "g-fmt": "prettier --config '.prettier.json' --write 'layouts/**/*.html' 'exampleSite/layouts/**/*.html'",
+ "g-fmt-check": "prettier --config '.prettier.json' --check 'layouts/**/*.html' 'exampleSite/layouts/**/*.html'",
+ "j-fmt": "prettier --config '.prettier.json' --write 'assets/scripts/*.js'",
+ "j-fmt-check": "prettier --config '.prettier.json' --check 'assets/scripts/*.js'",
+ "j-lint": "eslint 'assets/scripts/*.js'",
+ "j-lint-fix": "eslint --fix 'assets/scripts/*.js'",
+ "m-links-check": "linkinator --config '.linkinator.config.json' 'README.md' 'exampleSite/content/**/*.md'",
+ "m-lint": "markdownlint --config '.markdownlint.json' 'README.md' 'exampleSite/content/**/*.md'",
+ "s-fmt": "prettier --config '.prettier.json' --write 'assets/styles/*.scss'",
+ "s-fmt-check": "prettier --config '.prettier.json' --check 'assets/styles/*.scss'",
+ "s-lint": "stylelint --config '.stylelintrc.json' 'assets/styles/*.scss'",
+ "s-lint-fix": "stylelint --config '.stylelintrc.json' --fix 'assets/styles/*.scss'",
+ "format": "npm run g-fmt && npm run j-fmt && npm run s-fmt",
+ "format-check": "npm run g-fmt-check && npm run j-fmt-check && npm run s-fmt-check",
+ "lint": "npm run j-lint && npm run m-lint && npm run s-lint",
+ "lint-fix": "npm run j-lint-fix && npm run s-lint-fix",
+ "test": "npm run format-check && npm run lint && npm run m-links-check"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://gitlab.com/manid2/hugo-xterm/"
+ },
+ "keywords": [
+ "blog",
+ "cv",
+ "dark-theme",
+ "docs",
+ "hugo",
+ "hugo-theme",
+ "light-theme",
+ "minimal",
+ "personal-website",
+ "portfolio-website",
+ "slides"
+ ],
+ "author": "Mani Kumar",
+ "license": "GPL-3.0",
+ "bugs": {
+ "url": "https://gitlab.com/manid2/hugo-xterm/issues"
+ },
+ "homepage": "https://manid2.github.io/hugo-xterm/",
+ "devDependencies": {
+ "eslint": "^8.40.0",
+ "eslint-config-prettier": "^8.8.0",
+ "eslint-config-standard": "^17.0.0",
+ "eslint-plugin-import": "^2.27.5",
+ "eslint-plugin-n": "^15.7.0",
+ "eslint-plugin-promise": "^6.1.1",
+ "linkinator": "^4.1.2",
+ "markdownlint-cli": "^0.33.0",
+ "prettier": "^2.8.8",
+ "prettier-plugin-go-template": "^0.0.13",
+ "stylelint": "^15.6.1",
+ "stylelint-config-standard-scss": "^9.0.0"
+ }
+}
diff --git a/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-01-dark.png b/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-01-dark.png
new file mode 100644
index 0000000..3d7f384
Binary files /dev/null and b/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-01-dark.png differ
diff --git a/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-02-light.png b/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-02-light.png
new file mode 100644
index 0000000..ab44fbf
Binary files /dev/null and b/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-02-light.png differ
diff --git a/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-03-cv.png b/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-03-cv.png
new file mode 100644
index 0000000..9ce43e4
Binary files /dev/null and b/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-03-cv.png differ
diff --git a/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-04-slides.png b/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-04-slides.png
new file mode 100644
index 0000000..dcfaf8b
Binary files /dev/null and b/themes/hugo-xterm/static/screenshots/hugo-xterm-ss-04-slides.png differ
diff --git a/themes/hugo-xterm/theme.toml b/themes/hugo-xterm/theme.toml
new file mode 100644
index 0000000..a24e909
--- /dev/null
+++ b/themes/hugo-xterm/theme.toml
@@ -0,0 +1,44 @@
+name = "xterm"
+license = "GPL-3.0"
+licenselink = "https://github.com/manid2/hugo-xterm/blob/main/LICENSE"
+description = "Hugo theme designed for reading and printing text with dark and light modes."
+
+# The home page of the theme, where the source can be found.
+homepage = "https://github.com/manid2/hugo-xterm/"
+
+# Demo site.
+demosite = "https://manid2.github.io/hugo-xterm/"
+
+tags = [
+ "blog",
+ "contact",
+ "cv",
+ "slides",
+ "dark",
+ "light",
+ "minimal",
+ "personal",
+ "portfolio",
+ "responsive"
+]
+
+features = [
+ "blog",
+ "clean",
+ "minimal",
+ "portfolio"
+]
+
+min_version = 0.110
+
+[author]
+ name = "Mani Kumar"
+ homepage = "https://manid2.gitlab.io/"
+ twitter = "https://twitter.com/mani_d2"
+
+# Starter code taken from this theme
+[original]
+ name = "terminal"
+ author = "panr"
+ homepage = "https://radoslawkoziel.pl"
+ repo = "https://github.com/panr/hugo-theme-terminal"