Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dillonzq/LoveIt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDillon <dillonzq@outlook.com>2020-05-13 17:46:27 +0300
committerGitHub <noreply@github.com>2020-05-13 17:46:27 +0300
commite260870239ca749f765ed22538b7966350284719 (patch)
tree88ad511c249dacba093f364cc091f84e223c81db
parent23a52ef1030b2c2057aa0bb1da57b6247da645a5 (diff)
parent3fe5c29307a89458f72e0b3a53d78c846ce32ee3 (diff)
Merge pull request #358 from dillonzq/develop
-rw-r--r--README.md4
-rw-r--r--README.zh-cn.md4
-rw-r--r--assets/css/_core/_base.scss1
-rw-r--r--assets/css/_core/_media.scss9
-rw-r--r--assets/css/_mixin/_index.scss1
-rw-r--r--assets/css/_mixin/_summary.scss101
-rw-r--r--assets/css/_page/_home.scss225
-rw-r--r--assets/css/_page/_index.scss9
-rw-r--r--assets/css/_partial/_cookieconsent.scss17
-rw-r--r--assets/css/_partial/_fixed-button.scss1
-rw-r--r--assets/css/_partial/_header.scss17
-rw-r--r--assets/css/_partial/_single/_toc.scss6
-rw-r--r--assets/css/_variables.scss8
-rw-r--r--assets/css/style.template.scss7
-rw-r--r--assets/data/cdn/jsdelivr.yml66
-rw-r--r--assets/js/theme.min.js2
-rw-r--r--assets/js/theme.min.js.map2
-rw-r--r--assets/lib/VERSION5
-rw-r--r--assets/lib/cookieconsent/cookieconsent.min.css6
-rw-r--r--assets/lib/cookieconsent/cookieconsent.min.js1
-rw-r--r--assets/lib/simple-icons/icons/adobe.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobeacrobatreader.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobeaudition.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachecloudstack.svg1
-rw-r--r--assets/lib/simple-icons/icons/appsignal.svg1
-rw-r--r--assets/lib/simple-icons/icons/ardour.svg1
-rw-r--r--assets/lib/simple-icons/icons/asus.svg1
-rw-r--r--assets/lib/simple-icons/icons/audio-technica.svg1
-rw-r--r--assets/lib/simple-icons/icons/autodesk.svg1
-rw-r--r--assets/lib/simple-icons/icons/awesomelists.svg1
-rw-r--r--assets/lib/simple-icons/icons/azurefunctions.svg1
-rw-r--r--assets/lib/simple-icons/icons/badoo.svg1
-rw-r--r--assets/lib/simple-icons/icons/bentley.svg1
-rw-r--r--assets/lib/simple-icons/icons/bose.svg1
-rw-r--r--assets/lib/simple-icons/icons/bt.svg1
-rw-r--r--assets/lib/simple-icons/icons/checkmarx.svg1
-rw-r--r--assets/lib/simple-icons/icons/coda.svg1
-rw-r--r--assets/lib/simple-icons/icons/facebooklive.svg1
-rw-r--r--assets/lib/simple-icons/icons/flathub.svg1
-rw-r--r--assets/lib/simple-icons/icons/ghostery.svg1
-rw-r--r--assets/lib/simple-icons/icons/gofundme.svg1
-rw-r--r--assets/lib/simple-icons/icons/guangzhoumetro.svg1
-rw-r--r--assets/lib/simple-icons/icons/gulp.svg2
-rw-r--r--assets/lib/simple-icons/icons/kde.svg1
-rw-r--r--assets/lib/simple-icons/icons/kofax.svg1
-rw-r--r--assets/lib/simple-icons/icons/metrodeparis.svg1
-rw-r--r--assets/lib/simple-icons/icons/moleculer.svg1
-rw-r--r--assets/lib/simple-icons/icons/moscowmetro.svg1
-rw-r--r--assets/lib/simple-icons/icons/mtr.svg1
-rw-r--r--assets/lib/simple-icons/icons/nbb.svg1
-rw-r--r--assets/lib/simple-icons/icons/oneplus.svg1
-rw-r--r--assets/lib/simple-icons/icons/openbadges.svg1
-rw-r--r--assets/lib/simple-icons/icons/pagerduty.svg1
-rw-r--r--assets/lib/simple-icons/icons/piwigo.svg1
-rw-r--r--assets/lib/simple-icons/icons/powerbi.svg1
-rw-r--r--assets/lib/simple-icons/icons/powers.svg1
-rw-r--r--assets/lib/simple-icons/icons/retroarch.svg1
-rw-r--r--assets/lib/simple-icons/icons/retropie.svg1
-rw-r--r--assets/lib/simple-icons/icons/roots.svg2
-rw-r--r--assets/lib/simple-icons/icons/shanghaimetro.svg1
-rw-r--r--assets/lib/simple-icons/icons/tui.svg1
-rw-r--r--assets/lib/simple-icons/icons/uploaded.svg1
-rw-r--r--assets/lib/simple-icons/icons/yoast.svg1
-rw-r--r--assets/lib/twemoji/twemoji.min.js2
-rw-r--r--exampleSite/config.toml121
-rw-r--r--exampleSite/content/about/index.en.md (renamed from exampleSite/content/about.en.md)2
-rw-r--r--exampleSite/content/about/index.fr.md (renamed from exampleSite/content/about.fr.md)2
-rw-r--r--exampleSite/content/about/index.zh-cn.md (renamed from exampleSite/content/about.zh-cn.md)2
-rw-r--r--exampleSite/content/posts/basic-markdown-syntax/index.en.md (renamed from exampleSite/content/posts/basic-markdown-syntax.en.md)0
-rw-r--r--exampleSite/content/posts/basic-markdown-syntax/index.fr.md (renamed from exampleSite/content/posts/basic-markdown-syntax.fr.md)0
-rw-r--r--exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md (renamed from exampleSite/content/posts/basic-markdown-syntax.zh-cn.md)0
-rw-r--r--exampleSite/content/posts/emoji-support/index.en.md (renamed from exampleSite/content/posts/emoji-support.en.md)0
-rw-r--r--exampleSite/content/posts/emoji-support/index.fr.md (renamed from exampleSite/content/posts/emoji-support.fr.md)0
-rw-r--r--exampleSite/content/posts/emoji-support/index.zh-cn.md (renamed from exampleSite/content/posts/emoji-support.zh-cn.md)0
-rw-r--r--exampleSite/content/posts/theme-documentation-basics/index.en.md (renamed from exampleSite/content/posts/theme-documentation-basics.en.md)124
-rw-r--r--exampleSite/content/posts/theme-documentation-basics/index.fr.md (renamed from exampleSite/content/posts/theme-documentation-basics.fr.md)125
-rw-r--r--exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md (renamed from exampleSite/content/posts/theme-documentation-basics.zh-cn.md)124
-rw-r--r--exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md (renamed from exampleSite/content/posts/theme-documentation-built-in-shortcodes.en.md)0
-rw-r--r--exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.fr.md (renamed from exampleSite/content/posts/theme-documentation-built-in-shortcodes.fr.md)0
-rw-r--r--exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md (renamed from exampleSite/content/posts/theme-documentation-built-in-shortcodes.zh-cn.md)0
-rw-r--r--exampleSite/content/posts/theme-documentation-content/index.en.md (renamed from exampleSite/content/posts/theme-documentation-content.en.md)12
-rw-r--r--exampleSite/content/posts/theme-documentation-content/index.fr.md (renamed from exampleSite/content/posts/theme-documentation-content.fr.md)12
-rw-r--r--exampleSite/content/posts/theme-documentation-content/index.zh-cn.md (renamed from exampleSite/content/posts/theme-documentation-content.zh-cn.md)12
-rw-r--r--exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md (renamed from exampleSite/content/posts/theme-documentation-extended-shortcodes.en.md)0
-rw-r--r--exampleSite/content/posts/theme-documentation-extended-shortcodes/index.fr.md (renamed from exampleSite/content/posts/theme-documentation-extended-shortcodes.fr.md)0
-rw-r--r--exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md (renamed from exampleSite/content/posts/theme-documentation-extended-shortcodes.zh-cn.md)0
-rw-r--r--i18n/de.toml9
-rw-r--r--i18n/en.toml9
-rw-r--r--i18n/es.toml9
-rw-r--r--i18n/fr.toml9
-rw-r--r--i18n/it.toml9
-rw-r--r--i18n/pl.toml9
-rw-r--r--i18n/pt-BR.toml9
-rw-r--r--i18n/ro.toml203
-rw-r--r--i18n/ru.toml203
-rw-r--r--i18n/sr.toml9
-rw-r--r--i18n/zh-CN.toml9
-rw-r--r--layouts/_default/baseof.html23
-rw-r--r--layouts/_default/section.html38
-rw-r--r--layouts/_default/summary.html5
-rw-r--r--layouts/index.html11
-rw-r--r--layouts/partials/assets.html95
-rw-r--r--layouts/partials/comment.html48
-rw-r--r--layouts/partials/head/link.html3
-rw-r--r--layouts/partials/home/profile.html4
-rw-r--r--layouts/partials/plugin/analytics.html10
-rw-r--r--layouts/posts/single.html13
-rw-r--r--layouts/taxonomy/list.html38
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_788c4a23da05f3aa3e03b28055a2e5f9.content3
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_788c4a23da05f3aa3e03b28055a2e5f9.json1
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_84a735b886b24531b6e80c5fb2060510.content3
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_84a735b886b24531b6e80c5fb2060510.json1
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.content3
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.json1
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_d40178ffcb058d725849178b0a7a43cc.content3
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_d40178ffcb058d725849178b0a7a43cc.json1
-rw-r--r--src/js/theme.js11
117 files changed, 1258 insertions, 622 deletions
diff --git a/README.md b/README.md
index dadb5756..68ae6e9e 100644
--- a/README.md
+++ b/README.md
@@ -112,6 +112,7 @@ I hope you will LoveIt ❤️!
* **Custom style** shortcode
* **Animated typing** supported by [TypeIt](https://typeitjs.com/)
* **Dynamic scroll** supported by [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll)
+* **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
* ...
## [Documentation](https://hugoloveit.com/categories/documentation/)
@@ -135,6 +136,8 @@ LoveIt supports the following languages:
* Spanish
* German
* Serbian
+* Russian
+* Romanian
* [Contribute with a new language](https://github.com/dillonzq/LoveIt/pulls)
[Languages Compatibility](https://hugoloveit.com/theme-documentation-basics/#language-compatibility)
@@ -174,6 +177,7 @@ Thanks to the authors of following resources included in the theme:
* [MetingJS](https://github.com/metowolf/MetingJS)
* [Gitalk](https://github.com/gitalk/gitalk)
* [Valine](https://valine.js.org/)
+* [cookieconsent](https://github.com/osano/cookieconsent)
## Author
diff --git a/README.zh-cn.md b/README.zh-cn.md
index d68d0b71..bd7d97fd 100644
--- a/README.zh-cn.md
+++ b/README.zh-cn.md
@@ -107,6 +107,7 @@
* 支持**自定义样式**的 shortcode
* 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode
* 支持基于 [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) 的**滚动动画**
+* 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅**
* ...
## [文档](https://hugoloveit.com/zh-cn/categories/documentation/)
@@ -130,6 +131,8 @@ LoveIt 支持下列语言:
* 西班牙语
* 德语
* 塞尔维亚语
+* 俄语
+* 罗马尼亚语
* [贡献一种新的语言](https://github.com/dillonzq/LoveIt/pulls)
[语言兼容性](https://hugoloveit.com/zh-cn/theme-documentation-basics/#language-compatibility)
@@ -169,6 +172,7 @@ LoveIt 主题中用到了以下项目,感谢它们的作者:
* [MetingJS](https://github.com/metowolf/MetingJS)
* [Gitalk](https://github.com/gitalk/gitalk)
* [Valine](https://valine.js.org/)
+* [cookieconsent](https://github.com/osano/cookieconsent)
## 作者
diff --git a/assets/css/_core/_base.scss b/assets/css/_core/_base.scss
index 4b1fbece..9257ce73 100644
--- a/assets/css/_core/_base.scss
+++ b/assets/css/_core/_base.scss
@@ -48,6 +48,7 @@ body {
@import "../_partial/icon";
@import "../_partial/details";
@import "../_partial/fixed-button";
+@import "../_partial/cookieconsent";
img {
@include object-fit(contain);
diff --git a/assets/css/_core/_media.scss b/assets/css/_core/_media.scss
index ac8f10f6..8558bafe 100644
--- a/assets/css/_core/_media.scss
+++ b/assets/css/_core/_media.scss
@@ -51,7 +51,14 @@
.page {
width: 100%;
- padding-top: $page-padding-top-mobile;
+
+ [header-mobile] & {
+ padding-top: $header-height;
+ }
+
+ [header-mobile=normal] & {
+ padding-top: 0;
+ }
.categories-card {
.card-item {
diff --git a/assets/css/_mixin/_index.scss b/assets/css/_mixin/_index.scss
index bcf78a1e..3c355218 100644
--- a/assets/css/_mixin/_index.scss
+++ b/assets/css/_mixin/_index.scss
@@ -1,5 +1,4 @@
@import "_compatibility";
@import "_link";
@import "_blur";
-@import "_summary";
@import "_details";
diff --git a/assets/css/_mixin/_summary.scss b/assets/css/_mixin/_summary.scss
deleted file mode 100644
index e5db78b2..00000000
--- a/assets/css/_mixin/_summary.scss
+++ /dev/null
@@ -1,101 +0,0 @@
-@mixin summary {
- .summary {
- padding-top: 1rem;
- padding-bottom: .8rem;
- color: $global-font-color;
- border-bottom: 1px dashed $global-border-color;
-
- [theme=dark] & {
- color: $global-font-color-dark;
- border-bottom: 1px dashed $global-border-color-dark;
- }
-
- .featured-image-preview {
- width: 100%;
- padding: 30% 0 0;
- position: relative;
- margin: 0.6rem auto;
- @include transition(transform 0.4s ease);
-
- img {
- position: absolute;
- width: 100%;
- height: 100%;
- left: 0;
- top: 0;
- @include object-fit(cover);
- }
-
- &:hover {
- @include transform(scale(1.01));
- }
- }
-
- .single-title {
- font-size: 1.25rem;
- line-height: 140%;
- margin: 0.4rem 0;
- }
-
- .content {
- @include box(vertical);
- -webkit-line-clamp: 3;
- margin-top: .3rem;
- width: 100%;
- overflow: hidden;
- text-overflow: ellipsis;
- @include overflow-wrap(break-word);
- color: $global-font-secondary-color;
-
- [theme=dark] & {
- color: $global-font-secondary-color-dark;
- }
-
- h2,
- h3,
- h4,
- h5,
- h6,
- p {
- font-size: 1rem;
- line-height: 1.5;
- display: inline;
-
- &::after {
- content: "\A";
- white-space: pre;
- }
- }
-
- h2 {
- font-size: 1.125rem;
- }
-
- @include link(false, true);
-
- b, strong {
- color: $global-font-secondary-color;
-
- [theme=dark] & {
- color: $global-font-secondary-color-dark;
- }
- }
- }
-
- .post-footer {
- margin-top: .4rem;
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: .875rem;
-
- @include link(false, false);
-
- .post-tags {
- padding: 0;
-
- @include link(true, true);
- }
- }
- }
-}
diff --git a/assets/css/_page/_home.scss b/assets/css/_page/_home.scss
index f77e7c71..6e48d6fb 100644
--- a/assets/css/_page/_home.scss
+++ b/assets/css/_page/_home.scss
@@ -1,77 +1,178 @@
-@mixin page-home($profile, $posts) {
- .home {
- @if $profile {
- .home-profile {
- @include transform(translateY(if($posts, 0, 16vh)));
- padding: if($posts, 2rem, 0) 0 .5rem;
- text-align: center;
-
- .home-avatar {
- padding: 0.6rem;
-
- img {
- display: inline-block;
- width: if($posts, 6rem, 8rem);
- height: auto;
- margin: 0 auto;
- @include border-radius(100%);
- @include box-shadow(0 0 0 .3618em rgba(0, 0, 0, .05));
- @include transition(all 0.4s ease);
-
- &:hover {
- position: relative;
- @include transform(translateY(-.75rem));
- }
- }
- }
+.home {
+ .home-profile {
+ @include transform(translateY( 16vh));
+ padding: 0 0 .5rem;
+ text-align: center;
- .home-title {
- font-size: 1.2rem;
- font-weight: bold;
- margin: 0;
- padding: .4rem;
- }
+ .home-avatar {
+ padding: .5rem;
+
+ img {
+ display: inline-block;
+ width: 8rem;
+ height: auto;
+ margin: 0 auto;
+ @include border-radius(100%);
+ @include box-shadow(0 0 0 .3618em rgba(0, 0, 0, .05));
+ @include transition(all 0.4s ease);
- .home-subtitle {
- font-size: 1rem;
- font-weight: normal;
- margin: 0;
- padding: .4rem;
+ &:hover {
+ position: relative;
+ @include transform(translateY(-.75rem));
}
+ }
+ }
+
+ .home-title {
+ font-size: 1.25rem;
+ font-weight: bold;
+ margin: 0;
+ padding: .5rem;
+ }
+
+ .home-subtitle {
+ font-size: 1rem;
+ font-weight: normal;
+ margin: 0;
+ padding: .5rem;
+ }
+
+ .links {
+ padding: .5rem;
+ font-size: 1.5rem;
+
+ a * {
+ vertical-align: text-bottom;
+ }
+
+ img {
+ height: 1.5rem;
+ padding: 0 .25rem;
+ }
+ }
+
+ .home-disclaimer {
+ font-size: 1rem;
+ line-height: 1.5rem;
+ font-weight: normal;
+ margin: 0;
+ padding: .5rem;
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+ }
+}
+
+.home[posts] {
+ .home-profile {
+ @include transform(translateY(0));
+ padding-top: 2rem;
+ }
+
+ .home-avatar img {
+ width: 6rem;
+ }
+
+ .summary {
+ padding-top: 1rem;
+ padding-bottom: .8rem;
+ color: $global-font-color;
+ border-bottom: 1px dashed $global-border-color;
+
+ [theme=dark] & {
+ color: $global-font-color-dark;
+ border-bottom: 1px dashed $global-border-color-dark;
+ }
+
+ .featured-image-preview {
+ width: 100%;
+ padding: 30% 0 0;
+ position: relative;
+ margin: 0.6rem auto;
+ @include transition(transform 0.4s ease);
+
+ img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ @include object-fit(cover);
+ }
+
+ &:hover {
+ @include transform(scale(1.01));
+ }
+ }
+
+ .single-title {
+ font-size: 1.25rem;
+ line-height: 140%;
+ margin: 0.4rem 0;
+ }
- .social-links {
- padding: .4rem .2rem;
- font-size: 1.6rem;
+ .content {
+ @include box(vertical);
+ -webkit-line-clamp: 3;
+ margin-top: .3rem;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ @include overflow-wrap(break-word);
+ color: $global-font-secondary-color;
- a * {
- vertical-align: text-bottom;
- }
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ p {
+ font-size: 1rem;
+ line-height: 1.5;
+ display: inline;
- img {
- height: 1.4rem;
- padding: 0 .25rem;
- }
+ &::after {
+ content: "\A";
+ white-space: pre;
}
+ }
+
+ h2 {
+ font-size: 1.125rem;
+ }
+
+ @include link(false, true);
- .home-disclaimer {
- font-size: 1rem;
- line-height: 1.4rem;
- font-weight: normal;
- margin: 0;
- padding: .4rem;
- color: $global-font-secondary-color;
-
- [theme=dark] & {
- color: $global-font-secondary-color-dark;
- }
+ b, strong {
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
}
}
}
- @if $posts {
- @include summary;
+ .post-footer {
+ margin-top: .4rem;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: .875rem;
+
+ @include link(false, false);
+
+ .post-tags {
+ padding: 0;
+
+ @include link(true, true);
+ }
}
}
}
-
-@include page-home($home-profile, $home-posts);
diff --git a/assets/css/_page/_index.scss b/assets/css/_page/_index.scss
index 0aa85a96..0cd511fc 100644
--- a/assets/css/_page/_index.scss
+++ b/assets/css/_page/_index.scss
@@ -3,7 +3,14 @@
max-width: 800px;
width: 60%;
margin: 0 auto;
- padding-top: $page-padding-top-desktop;
+
+ [header-desktop] & {
+ padding-top: $header-height;
+ }
+
+ [header-desktop=normal] & {
+ padding-top: 0;
+ }
@include blur;
}
diff --git a/assets/css/_partial/_cookieconsent.scss b/assets/css/_partial/_cookieconsent.scss
new file mode 100644
index 00000000..01deb5a3
--- /dev/null
+++ b/assets/css/_partial/_cookieconsent.scss
@@ -0,0 +1,17 @@
+.cc-window.cc-banner {
+ .cc-btn {
+ color: $global-font-color;
+
+ &:hover, &:focus {
+ background-color: #ccc;
+ }
+
+ [theme=dark] & {
+ color: $global-font-color;
+
+ &:hover, &:focus {
+ background-color: #fff;
+ }
+ }
+ }
+}
diff --git a/assets/css/_partial/_fixed-button.scss b/assets/css/_partial/_fixed-button.scss
index 777e3b70..eaad26ee 100644
--- a/assets/css/_partial/_fixed-button.scss
+++ b/assets/css/_partial/_fixed-button.scss
@@ -13,6 +13,7 @@
color: $global-font-secondary-color;
background: $header-background-color;
@include border-radius(2rem);
+ @include transition(color 0.4s ease);
@include blur;
diff --git a/assets/css/_partial/_header.scss b/assets/css/_partial/_header.scss
index 70f602f8..ec38fdbf 100644
--- a/assets/css/_partial/_header.scss
+++ b/assets/css/_partial/_header.scss
@@ -2,6 +2,7 @@ header {
width: 100%;
z-index: 150;
background-color: $header-background-color;
+ @include transition(box-shadow 0.3s ease);
[theme=dark] & {
background-color: $header-background-color-dark;
@@ -20,6 +21,10 @@ header {
.header-title-post {
padding-left: .25rem;
}
+
+ &:hover {
+ @include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, .1));
+ }
}
.header-wrapper {
@@ -142,10 +147,14 @@ header {
#header-desktop {
display: block;
- position: $header-position-desktop;
+ position: fixed;
height: $header-height;
line-height: $header-height;
+ [header-desktop=normal] & {
+ position: static;
+ }
+
.header-wrapper {
padding: 0 2rem 0 10vh;
@@ -203,10 +212,14 @@ header {
#header-mobile {
display: none;
- position: $header-position-mobile;
+ position: fixed;
height: $header-height;
line-height: $header-height;
+ [header-mobile=normal] & {
+ position: static;
+ }
+
.header-container {
padding: 0;
margin: 0;
diff --git a/assets/css/_partial/_single/_toc.scss b/assets/css/_partial/_single/_toc.scss
index 17f3d363..b95f6151 100644
--- a/assets/css/_partial/_single/_toc.scss
+++ b/assets/css/_partial/_single/_toc.scss
@@ -55,10 +55,14 @@
border-left: 4px solid $global-border-color;
@include overflow-wrap(break-word);
box-sizing: border-box;
- top: if($header-normal-mode-desktop, 5rem, 10rem);
+ top: 10rem;
left: 0;
visibility: hidden;
+ [header-desktop=normal] & {
+ top: 5rem;
+ }
+
@include blur;
[theme=dark] & {
diff --git a/assets/css/_variables.scss b/assets/css/_variables.scss
index d673f158..28585aec 100644
--- a/assets/css/_variables.scss
+++ b/assets/css/_variables.scss
@@ -60,14 +60,6 @@ $header-background-color-dark: #252627 !default;
$header-title-font-family: $global-font-family !default;
$header-title-font-size: 1.5rem !default;
-// Position of the header
-$header-position-desktop: if($header-normal-mode-desktop, static, fixed) !default;
-$header-position-mobile: if($header-normal-mode-mobile, static, fixed) !default;
-
-// Top of the page padding
-$page-padding-top-desktop: if($header-normal-mode-desktop, 0, $header-height) !default;
-$page-padding-top-mobile: if($header-normal-mode-mobile, 0, $header-height) !default;
-
// Color of the hover header item
$header-hover-color: #161209 !default;
$header-hover-color-dark: #fff !default;
diff --git a/assets/css/style.template.scss b/assets/css/style.template.scss
index 96dbf96c..78aa4e69 100644
--- a/assets/css/style.template.scss
+++ b/assets/css/style.template.scss
@@ -1,9 +1,4 @@
-@charset 'utf-8';
-
-$home-profile: {{ if .Site.Params.home.profile.enable }}true{{ else }}false{{ end }};
-$home-posts: {{ if ne .Site.Params.home.posts.enable false }}true{{ else }}false{{ end }};
-$header-normal-mode-desktop: {{ if eq .Site.Params.header.desktopMode "normal" }}true{{ else }}false{{ end }};
-$header-normal-mode-mobile: {{ if eq .Site.Params.header.mobileMode "normal" }}true{{ else }}false{{ end }};
+@charset "utf-8";
@import "_variables";
diff --git a/assets/data/cdn/jsdelivr.yml b/assets/data/cdn/jsdelivr.yml
new file mode 100644
index 00000000..8fb8f88a
--- /dev/null
+++ b/assets/data/cdn/jsdelivr.yml
@@ -0,0 +1,66 @@
+prefix:
+ libFiles: https://cdn.jsdelivr.net/npm/
+ # simple-icons@2.12.0 https://github.com/simple-icons/simple-icons
+ simpleIcons: https://cdn.jsdelivr.net/npm/simple-icons@2.12.0/icons/
+libFiles:
+ # normalize.css@8.0.1 https://github.com/necolas/normalize.css
+ normalizeCSS: normalize.css@8.0.1/normalize.min.css
+ # fontawesome-free@5.13.0 https://fontawesome.com/
+ fontawesomeFreeCSS: '@fortawesome/fontawesome-free@5.13.0/css/all.min.css'
+ # animate.css@3.7.2 https://github.com/daneden/animate.css
+ animateCSS: animate.css@3.7.2/animate.min.css
+ # smooth-scroll@16.1.3 https://github.com/cferdinandi/smooth-scroll
+ smoothScrollJS: smooth-scroll@16.1.3/dist/smooth-scroll.min.js
+ # autocomplete.js@0.37.1 https://github.com/algolia/autocomplete.js
+ autocompleteJS: autocomplete.js@0.37.1/dist/autocomplete.min.js
+ # lunr.js@2.3.8 https://lunrjs.com/
+ lunrJS: lunr@2.3.8/lunr.min.js
+ # algoliasearch@4.2.0 https://github.com/algolia/algoliasearch-client-javascript
+ algoliasearchJS: algoliasearch@4.2.0/dist/algoliasearch-lite.umd.min.js
+ # lazysizes@5.2.0 https://github.com/aFarkas/lazysizes
+ lazysizesJS: lazysizes@5.2.0/lazysizes.min.js
+ # object-fit-images@3.2.4 https://github.com/fregante/object-fit-images
+ objectFitImagesJS: object-fit-images@3.2.4/dist/ofi.min.js
+ # twemoji@13.0.0 https://github.com/twitter/twemoji
+ twemojiJS: twemoji@13.0.0/dist/twemoji.min.js
+ # lightgallery.js@1.1.3 https://github.com/sachinchoolur/lightgallery.js
+ # lg-thumbnail.js@1.1.0 https://github.com/sachinchoolur/lg-thumbnail.js
+ # lg-zoom.js@1.0.1 https://github.com/sachinchoolur/lg-zoom.js
+ lightgalleryCSS: lightgallery.js@1.1.3/dist/css/lightgallery.min.css
+ lightgalleryJS: lightgallery.js@1.1.3/dist/js/lightgallery.min.js
+ lightgalleryThumbnailJS: lg-thumbnail.js@1.1.0/dist/lg-thumbnail.min.js
+ lightgalleryZoomJS: lg-zoom.js@1.0.1/dist/lg-zoom.min.js
+ # clipboard.js@2.0.6 https://github.com/zenorocha/clipboard.js
+ clipboardJS: clipboard@2.0.6/dist/clipboard.min.js
+ # sharer.js@0.4.0 https://github.com/ellisonleao/sharer.js
+ sharerJS: sharer.js@0.4.0/sharer.min.js
+ # typeit@7.0.4 https://github.com/alexmacarthur/typeit
+ typeitJS: typeit@7.0.4/dist/typeit.min.js
+ # katex@0.11.1 https://katex.org/
+ katexCSS: katex@0.11.1/dist/katex.min.css
+ katexJS: katex@0.11.1/dist/katex.min.js
+ katexAutoRenderJS: katex@0.11.1/dist/contrib/auto-render.min.js
+ katexCopyTexCSS: katex@0.11.1/dist/contrib/copy-tex.min.css
+ katexCopyTexJS: katex@0.11.1/dist/contrib/copy-tex.min.js
+ katexMhchemJS: katex@0.11.1/dist/contrib/mhchem.min.js
+ # mermaid@8.5.0 https://github.com/knsv/mermaid
+ mermaidJS: mermaid@8.5.0/dist/mermaid.min.js
+ # echarts@4.7.0 https://echarts.apache.org/
+ echartsJS: echarts@4.7.0/dist/echarts.min.js
+ echartsMacaronsJS: echarts@4.7.0/theme/macarons.min.js
+ # mapbox-gl@1.10.0 https://docs.mapbox.com/mapbox-gl-js
+ mapboxGLCSS: mapbox-gl@1.10.0/dist/mapbox-gl.min.css
+ mapboxGLJS: mapbox-gl@1.10.0/dist/mapbox-gl.min.js
+ # aplayer@1.10.1 https://github.com/MoePlayer/APlayer
+ aplayerCSS: aplayer@1.10.1/dist/APlayer.min.css
+ aplayerJS: aplayer@1.10.1/dist/APlayer.min.js
+ # meting@2.0.1 https://github.com/metowolf/MetingJS
+ metingJS: meting@2.0.1/dist/Meting.min.js
+ # gitalk@1.6.2 https://github.com/gitalk/gitalk
+ gitalkCSS: gitalk@1.6.2/dist/gitalk.min.css
+ gitalkJS: gitalk@1.6.2/dist/gitalk.min.js
+ # valine@1.4.14 https://valine.js.org/
+ valineJS: valine@1.4.14/dist/Valine.min.js
+ # cookieconsent@3.1.1 https://github.com/osano/cookieconsent
+ cookieconsentCSS: cookieconsent@3.1.1/build/cookieconsent.min.css
+ cookieconsentJS: cookieconsent@3.1.1/build/cookieconsent.min.js
diff --git a/assets/js/theme.min.js b/assets/js/theme.min.js
index dc5028cd..56919aee 100644
--- a/assets/js/theme.min.js
+++ b/assets/js/theme.min.js
@@ -1,3 +1,3 @@
-"use strict";function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a){if("undefined"==typeof Symbol||null==a[Symbol.iterator]){if(Array.isArray(a)||(a=_unsupportedIterableToArray(a))){var b=0,c=function(){};return{s:c,n:function n(){return b>=a.length?{done:!0}:{done:!1,value:a[b++]}},e:function e(a){throw a},f:c}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,e,f=!0,g=!1;return{s:function s(){d=a[Symbol.iterator]()},n:function n(){var a=d.next();return f=a.done,a},e:function e(a){g=!0,e=a},f:function f(){try{f||null==d.return||d.return()}finally{if(g)throw e}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(c):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a))return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}var Util=/*#__PURE__*/function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"forEach",value:function forEach(a,b){a=a||[];for(var c=0;c<a.length;c++)b(a[c])}},{key:"getScrollTop",value:function getScrollTop(){return document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop}},{key:"isMobile",value:function isMobile(){return window.matchMedia("only screen and (max-width: 680px)").matches}},{key:"isTocStatic",value:function isTocStatic(){return window.matchMedia("only screen and (max-width: 960px)").matches}},{key:"animateCSS",value:function animateCSS(a,b,c,d){var e;Array.isArray(b)||(b=[b]),(e=a.classList).add.apply(e,["animated"].concat(_toConsumableArray(b)));var f=function(){var c;(c=a.classList).remove.apply(c,["animated"].concat(_toConsumableArray(b))),a.removeEventListener("animationend",f),"function"==typeof d&&d()};c||a.addEventListener("animationend",f,!1)}}]),a}(),Theme=/*#__PURE__*/function(){function a(){_classCallCheck(this,a),this.config=window.config,this.data=this.config.data,this.isDark="dark"===document.body.getAttribute("theme"),this.util=new Util,this.newScrollTop=this.util.getScrollTop(),this.oldScrollTop=this.newScrollTop,this.scrollEventSet=new Set,this.resizeEventSet=new Set,this.switchThemeEventSet=new Set,this.clickMaskEventSet=new Set,objectFitImages&&objectFitImages()}return _createClass(a,[{key:"initSVGIcon",value:function initSVGIcon(){this.util.forEach(document.querySelectorAll("[data-svg-src]"),function(a){fetch(a.getAttribute("data-svg-src")).then(function(a){return a.text()}).then(function(b){var c=document.createElement("div");c.insertAdjacentHTML("afterbegin",b);var d=c.firstChild;d.setAttribute("data-svg-src",a.getAttribute("data-svg-src")),d.classList.add("icon");var e=d.getElementsByTagName("title");e.length&&d.removeChild(e[0]),a.parentElement.replaceChild(d,a)}).catch(function(a){console.error(a)})})}},{key:"initTwemoji",value:function initTwemoji(){this.config.twemoji&&twemoji.parse(document.body)}},{key:"initMenuMobile",value:function initMenuMobile(){var a=document.getElementById("menu-toggle-mobile"),b=document.getElementById("menu-mobile");a.addEventListener("click",function(){document.body.classList.toggle("blur"),a.classList.toggle("active"),b.classList.toggle("active")},!1),this._menuMobileOnClickMask=this._menuMobileOnClickMask||function(){a.classList.remove("active"),b.classList.remove("active")},this.clickMaskEventSet.add(this._menuMobileOnClickMask)}},{key:"initSwitchTheme",value:function initSwitchTheme(){var a=this;this.util.forEach(document.getElementsByClassName("theme-switch"),function(b){b.addEventListener("click",function(){"dark"===document.body.getAttribute("theme")?document.body.setAttribute("theme","light"):document.body.setAttribute("theme","dark"),a.isDark=!a.isDark,window.localStorage&&localStorage.setItem("theme",a.isDark?"dark":"light");var b,c=_createForOfIteratorHelper(a.switchThemeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}},!1)})}},{key:"initSearch",value:function initSearch(){var a=this,b=this.config.search,c=this.util.isMobile();if(!(!b||c&&this._searchMobileOnce||!c&&this._searchDesktopOnce)){var d=b.maxResultLength?b.maxResultLength:10,e=b.snippetLength?b.snippetLength:50,f=b.highlightTag?b.highlightTag:"em",g=c?"mobile":"desktop",h=document.getElementById("header-".concat(g)),i=document.getElementById("search-input-".concat(g)),j=document.getElementById("search-toggle-".concat(g)),k=document.getElementById("search-loading-".concat(g)),l=document.getElementById("search-clear-".concat(g));c?(this._searchMobileOnce=!0,i.addEventListener("focus",function(){document.body.classList.add("blur"),h.classList.add("open")},!1),document.getElementById("search-cancel-mobile").addEventListener("click",function(){h.classList.remove("open"),document.body.classList.remove("blur"),document.getElementById("menu-toggle-mobile").classList.remove("active"),document.getElementById("menu-mobile").classList.remove("active"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),l.addEventListener("click",function(){l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),this._searchMobileOnClickMask=this._searchMobileOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchMobileOnClickMask)):(this._searchDesktopOnce=!0,j.addEventListener("click",function(){document.body.classList.add("blur"),h.classList.add("open"),i.focus()},!1),l.addEventListener("click",function(){l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},!1),this._searchDesktopOnClickMask=this._searchDesktopOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchDesktopOnClickMask)),i.addEventListener("input",function(){l.style.display=""===i.value?"none":"inline"},!1);var m=function(){var h=autocomplete("#search-input-".concat(g),{hint:!1,autoselect:!0,dropdownMenuContainer:"#search-dropdown-".concat(g),clearOnSelected:!0,cssClasses:{noPrefix:!0},debug:!0},{name:"search",source:function source(c,g){k.style.display="inline",l.style.display="none";var h=function(a){k.style.display="none",l.style.display="inline",g(a)};if("lunr"===b.type){var i=function(){lunr.queryHandler&&(c=lunr.queryHandler(c));var b={};return a._index.search(c).forEach(function(c){var d=c.ref,g=c.matchData.metadata,h=a._indexData[d],i=h.uri,j=h.title,k=h.content;if(!b[i]){var l=0;Object.values(g).forEach(function(a){var b=a.content;if(b){var c=b.position[0][0];(c<l||0===l)&&(l=c)}}),l-=e/5,0<l?(l+=k.substr(l,20).lastIndexOf(" ")+1,k="..."+k.substr(l,e)):k=k.substr(0,e),Object.keys(g).forEach(function(a){j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">")),k=k.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">"))}),b[i]={uri:i,title:j,date:h.date,context:k}}}),Object.values(b).slice(0,d)};a._index?h(i()):fetch(b.lunrIndexURL).then(function(a){return a.json()}).then(function(c){var d={};a._index=lunr(function(){var a=this;b.lunrLanguageCode&&this.use(lunr[b.lunrLanguageCode]),this.ref("objectID"),this.field("title",{boost:50}),this.field("tags",{boost:20}),this.field("categories",{boost:20}),this.field("content",{boost:10}),this.metadataWhitelist=["position"],c.forEach(function(b){d[b.objectID]=b,a.add(b)})}),a._indexData=d,h(i())}).catch(function(a){console.error(a),h([])})}else"algolia"===b.type&&(a._algoliaIndex=a._algoliaIndex||algoliasearch(b.algoliaAppID,b.algoliaSearchKey).initIndex(b.algoliaIndex),a._algoliaIndex.search(c,{offset:0,length:8*d,attributesToHighlight:["title"],attributesToSnippet:["content:".concat(e)],highlightPreTag:"<".concat(f,">"),highlightPostTag:"</".concat(f,">")}).then(function(a){var b=a.hits,c={};b.forEach(function(a){var b=a.uri,d=a.date,e=a._highlightResult.title,f=a._snippetResult.content;c[b]&&c[b].context.length>f.value||(c[b]={uri:b,title:e.value,date:d,context:f.value})}),h(Object.values(c).slice(0,d))}).catch(function(a){console.error(a),h([])}))},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"<div><span class=\"suggestion-title\">".concat(b,"</span><span class=\"suggestion-date\">").concat(c,"</span></div><div class=\"suggestion-context\">").concat(d,"</div>")},empty:function empty(a){var c=a.query;return"<div class=\"search-empty\">".concat(b.noResultsFound,": <span class=\"search-query\">\"").concat(c,"\"</span></div>")},footer:function footer(a){_objectDestructuringEmpty(a);var c="algolia"===b.type?{searchType:"algolia",icon:"<i class=\"fab fa-algolia fa-fw\"></i>",href:"https://www.algolia.com/"}:{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"},d=c.searchType,e=c.icon,f=c.href;return"<div class=\"search-footer\">Search by <a href=\"".concat(f,"\" rel=\"noopener noreffer\" target=\"_blank\">").concat(e," ").concat(d,"</a></div>")}}});h.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),c?a._searchMobile=h:a._searchDesktop=h};if(b.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var n=document.createElement("script");n.id="lunr-segmentit",n.type="text/javascript",n.src=b.lunrSegmentitURL,n.async=!0,n.readyState?n.onreadystatechange=function(){("loaded"==n.readyState||"complete"==n.readyState)&&(n.onreadystatechange=null,m())}:n.onload=function(){m()},document.body.appendChild(n)}else m()}}},{key:"initDetails",value:function initDetails(){this.util.forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}},{key:"initLightGallery",value:function initLightGallery(){this.config.lightGallery&&lightGallery(document.getElementById("content"),this.config.lightGallery)}},{key:"initHighlight",value:function initHighlight(){var a=this;this.util.forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),this.util.forEach(document.querySelectorAll(".highlight > .chroma"),function(b){var c=b.querySelectorAll("pre.chroma > code");if(c.length){var d=c[c.length-1],e=document.createElement("div");e.className="code-header "+d.className.toLowerCase();var f=document.createElement("span");f.classList.add("code-title"),f.insertAdjacentHTML("afterbegin","<i class=\"arrow fas fa-chevron-right fa-fw\"></i>"),f.addEventListener("click",function(){b.classList.toggle("open")},!1),e.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin","<i class=\"fas fa-ellipsis-h fa-fw\"></i>"),g.classList.add("ellipses"),g.addEventListener("click",function(){b.classList.add("open")},!1),e.appendChild(g);var h=document.createElement("span");h.insertAdjacentHTML("afterbegin","<i class=\"far fa-copy fa-fw\"></i>"),h.classList.add("copy");var i=d.innerText;if((0>a.config.code.maxShownLines||i.split("\n").length<a.config.code.maxShownLines+2)&&b.classList.add("open"),a.config.code.copyTitle){h.setAttribute("data-clipboard-text",i),h.title=a.config.code.copyTitle;var j=new ClipboardJS(h);j.on("success",function(){a.util.animateCSS(d,"flash")}),e.appendChild(h)}b.insertBefore(e,b.firstChild)}})}},{key:"initTable",value:function initTable(){this.util.forEach(document.querySelectorAll(".content table"),function(a){var b=document.createElement("div");b.className="table-wrapper",a.parentElement.replaceChild(b,a),b.appendChild(a)})}},{key:"initHeaderLink",value:function initHeaderLink(){for(var a=1;6>=a;a++)this.util.forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin","<a href=\"#".concat(a.id,"\" class=\"header-mark\"></a>"))})}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("TableOfContents");if(null!==b)if(this.util.isTocStatic()){var o=document.getElementById("toc-content-static");b.parentElement!==o&&(b.parentElement.removeChild(b),o.appendChild(b)),this._tocOnScroll&&this.scrollEventSet.delete(this._tocOnScroll)}else{var p=document.getElementById("toc-content-auto");b.parentElement!==p&&(b.parentElement.removeChild(b),p.appendChild(b));var c=document.getElementById("toc-auto"),d=document.getElementsByClassName("page")[0],e=d.getBoundingClientRect();c.style.left="".concat(e.left+e.width+20,"px"),c.style.maxWidth="".concat(d.getBoundingClientRect().left-20,"px"),c.style.visibility="visible";var f=b.querySelectorAll("a:first-child"),g=b.getElementsByTagName("li"),h=document.getElementsByClassName("headerLink"),j="normal"!==this.config.headerMode.desktop,k=document.getElementById("header-desktop").offsetHeight,l=20+(j?k:0),m=c.offsetTop,n=m-l+(j?0:k);this._tocOnScroll=this._tocOnScroll||function(){var d=document.getElementById("post-footer").offsetTop,e=d-c.getBoundingClientRect().height,o=e-l+(j?0:k);a.newScrollTop<n?(c.style.position="absolute",c.style.top="".concat(m,"px")):a.newScrollTop>o?(c.style.position="absolute",c.style.top="".concat(e,"px")):(c.style.position="fixed",c.style.top="".concat(l,"px")),a.util.forEach(f,function(a){a.classList.remove("active")}),a.util.forEach(g,function(a){a.classList.remove("has-active")});for(var p=20+(j?k:0),q=h.length-1,r=0;r<h.length-1;r++){var s=h[r].getBoundingClientRect().top,t=h[r+1].getBoundingClientRect().top;if(0==r&&s>p||s<=p&&t>p){q=r;break}}if(-1!==q){f[q].classList.add("active");for(var u=f[q].parentElement;u!==b;)u.classList.add("has-active"),u=u.parentElement.parentElement}},this._tocOnScroll(),this.scrollEventSet.add(this._tocOnScroll)}}},{key:"initMath",value:function initMath(){this.config.math&&renderMathInElement(document.body,this.config.math)}},{key:"initMermaid",value:function initMermaid(){var a=this,b=document.getElementsByClassName("mermaid");b.length&&(mermaid.initialize({startOnLoad:!1,theme:"null"}),this.util.forEach(b,function(b){mermaid.mermaidAPI.render("svg-"+b.id,a.data[b.id],function(a){b.insertAdjacentHTML("afterbegin",a)},b)}))}},{key:"initEcharts",value:function initEcharts(){var a=this;this._echartsOnSwitchTheme=this._echartsOnSwitchTheme||function(){a._echartsArr=a._echartsArr||[];for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].dispose();a._echartsArr=[],a.util.forEach(document.getElementsByClassName("echarts"),function(b){var c=echarts.init(b,a.isDark?"dark":"macarons",{renderer:"svg"});c.setOption(JSON.parse(a.data[b.id])),a._echartsArr.push(c)})},this.switchThemeEventSet.add(this._echartsOnSwitchTheme),this._echartsOnSwitchTheme(),this._echartsOnResize=this._echartsOnResize||function(){for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].resize()},this.resizeEventSet.add(this._echartsOnResize)}},{key:"initMapbox",value:function initMapbox(){var a=this;this.config.mapbox&&(mapboxgl.accessToken=this.config.mapbox.accessToken,mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin),this._mapboxArr=this._mapboxArr||[],this.util.forEach(document.getElementsByClassName("mapbox"),function(b){var c=a.data[b.id],d=c.lng,e=c.lat,f=c.zoom,g=c.lightStyle,h=c.darkStyle,i=c.marked,j=c.navigation,k=c.geolocate,l=c.scale,m=c.fullscreen,n=new mapboxgl.Map({container:b,center:[d,e],zoom:f,minZoom:.2,style:a.isDark?h:g,attributionControl:!1});i&&new mapboxgl.Marker().setLngLat([d,e]).addTo(n),j&&n.addControl(new mapboxgl.NavigationControl,"bottom-right"),k&&n.addControl(new mapboxgl.GeolocateControl({positionOptions:{enableHighAccuracy:!0},showUserLocation:!0,trackUserLocation:!0}),"bottom-right"),l&&n.addControl(new mapboxgl.ScaleControl),m&&n.addControl(new mapboxgl.FullscreenControl),n.addControl(new MapboxLanguage),a._mapboxArr.push(n)}),this._mapboxOnSwitchTheme=this._mapboxOnSwitchTheme||function(){a.util.forEach(a._mapboxArr,function(b){var c=b.getContainer(),d=a.data[c.id],e=d.lightStyle,f=d.darkStyle;b.setStyle(a.isDark?f:e),b.addControl(new MapboxLanguage)})},this.switchThemeEventSet.add(this._mapboxOnSwitchTheme))}},{key:"initTypeit",value:function initTypeit(){var a=this;if(this.config.typeit){var b=this.config.typeit,c=b.speed?b.speed:100,d=b.cursorSpeed?b.cursorSpeed:1e3,e=b.cursorChar?b.cursorChar:"|";Object.values(b.data).forEach(function(f){var g=function(h){var i=f[h],j=new TypeIt("#".concat(i),{strings:a.data[i],speed:c,lifeLike:!0,cursorSpeed:d,cursorChar:e,waitUntilVisible:!0,afterComplete:function afterComplete(){return h===f.length-1?void(0<=b.duration&&window.setTimeout(function(){j.destroy()},b.duration)):void(j.destroy(),g(h+1))}}).go()};g(0)})}}},{key:"initComment",value:function initComment(){var a=this;if(this.config.comment){if(this.config.comment.gitalk){this.config.comment.gitalk.body=decodeURI(window.location.href);var d=new Gitalk(this.config.comment.gitalk);d.render("gitalk")}if(this.config.comment.valine&&new Valine(this.config.comment.valine),this.config.comment.utterances){var b=this.config.comment.utterances,c=document.createElement("script");c.src="https://utteranc.es/client.js",c.type="text/javascript",c.setAttribute("repo",b.repo),c.setAttribute("issue-term",b.issueTerm),b.label&&c.setAttribute("label",b.label),c.setAttribute("theme",this.isDark?b.darkTheme:b.lightTheme),c.crossOrigin="anonymous",c.async=!0,document.getElementById("utterances").appendChild(c),this._utterancesOnSwitchTheme=this._utterancesOnSwitchTheme||function(){var c={type:"set-theme",theme:a.isDark?b.darkTheme:b.lightTheme},d=document.querySelector(".utterances-frame");d.contentWindow.postMessage(c,"https://utteranc.es")},this.switchThemeEventSet.add(this._utterancesOnSwitchTheme)}}}},{key:"initSmoothScroll",value:function initSmoothScroll(){SmoothScroll&&new SmoothScroll("[href^=\"#\"]",{speed:300,speedAsDuration:!0,header:"#header-desktop"})}},{key:"onScroll",value:function onScroll(){var a=this,b=[];if("auto"===this.config.headerMode.desktop&&b.push(document.getElementById("header-desktop")),"auto"===this.config.headerMode.mobile&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")){var e=document.getElementById("view-comments");e.href="#comments",e.style.display="block"}var c=document.getElementById("fixed-buttons"),d=20;window.addEventListener("scroll",function(){a.newScrollTop=a.util.getScrollTop();var e=a.newScrollTop-a.oldScrollTop;a.util.forEach(b,function(b){e>d?(b.classList.remove("fadeInDown"),a.util.animateCSS(b,["fadeOutUp","faster"],!0)):e<-d&&(b.classList.remove("fadeOutUp"),a.util.animateCSS(b,["fadeInDown","faster"],!0))}),a.newScrollTop>d?e>d?(c.classList.remove("fadeIn"),a.util.animateCSS(c,["fadeOut","faster"],!0)):e<-d&&(c.style.display="block",c.classList.remove("fadeOut"),a.util.animateCSS(c,["fadeIn","faster"],!0)):c.style.display="none";var f,g=_createForOfIteratorHelper(a.scrollEventSet);try{for(g.s();!(f=g.n()).done;){var h=f.value;h()}}catch(a){g.e(a)}finally{g.f()}a.oldScrollTop=a.newScrollTop},!1)}},{key:"onResize",value:function onResize(){var a=this;window.addEventListener("resize",function(){a._resizeTimeout||(a._resizeTimeout=window.setTimeout(function(){a._resizeTimeout=null;var b,c=_createForOfIteratorHelper(a.resizeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}a.initToc(),a.initMermaid(),a.initSearch()},100))},!1)}},{key:"onClickMask",value:function onClickMask(){var a=this;document.getElementById("mask").addEventListener("click",function(){var b,c=_createForOfIteratorHelper(a.clickMaskEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}document.body.classList.remove("blur")},!1)}},{key:"init",value:function init(){this.initSVGIcon(),this.initTwemoji(),this.initMenuMobile(),this.initSwitchTheme(),this.initSearch(),this.initDetails(),this.initLightGallery(),this.initHighlight(),this.initTable(),this.initHeaderLink(),this.initToc(),this.initComment(),this.initSmoothScroll(),this.initMath(),this.initMermaid(),this.initEcharts(),this.initTypeit(),this.initMapbox(),this.onScroll(),this.onResize(),this.onClickMask()}}]),a}(),themeInit=function(){var a=new Theme;a.init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();
+"use strict";function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a){if("undefined"==typeof Symbol||null==a[Symbol.iterator]){if(Array.isArray(a)||(a=_unsupportedIterableToArray(a))){var b=0,c=function(){};return{s:c,n:function n(){return b>=a.length?{done:!0}:{done:!1,value:a[b++]}},e:function e(a){throw a},f:c}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,e,f=!0,g=!1;return{s:function s(){d=a[Symbol.iterator]()},n:function n(){var a=d.next();return f=a.done,a},e:function e(a){g=!0,e=a},f:function f(){try{f||null==d.return||d.return()}finally{if(g)throw e}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(c):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a))return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}var Util=/*#__PURE__*/function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"forEach",value:function forEach(a,b){a=a||[];for(var c=0;c<a.length;c++)b(a[c])}},{key:"getScrollTop",value:function getScrollTop(){return document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop}},{key:"isMobile",value:function isMobile(){return window.matchMedia("only screen and (max-width: 680px)").matches}},{key:"isTocStatic",value:function isTocStatic(){return window.matchMedia("only screen and (max-width: 960px)").matches}},{key:"animateCSS",value:function animateCSS(a,b,c,d){var e;Array.isArray(b)||(b=[b]),(e=a.classList).add.apply(e,["animated"].concat(_toConsumableArray(b)));var f=function(){var c;(c=a.classList).remove.apply(c,["animated"].concat(_toConsumableArray(b))),a.removeEventListener("animationend",f),"function"==typeof d&&d()};c||a.addEventListener("animationend",f,!1)}}]),a}(),Theme=/*#__PURE__*/function(){function a(){_classCallCheck(this,a),this.config=window.config,this.data=this.config.data,this.isDark="dark"===document.body.getAttribute("theme"),this.util=new Util,this.newScrollTop=this.util.getScrollTop(),this.oldScrollTop=this.newScrollTop,this.scrollEventSet=new Set,this.resizeEventSet=new Set,this.switchThemeEventSet=new Set,this.clickMaskEventSet=new Set,objectFitImages&&objectFitImages()}return _createClass(a,[{key:"initSVGIcon",value:function initSVGIcon(){this.util.forEach(document.querySelectorAll("[data-svg-src]"),function(a){fetch(a.getAttribute("data-svg-src")).then(function(a){return a.text()}).then(function(b){var c=document.createElement("div");c.insertAdjacentHTML("afterbegin",b);var d=c.firstChild;d.setAttribute("data-svg-src",a.getAttribute("data-svg-src")),d.classList.add("icon");var e=d.getElementsByTagName("title");e.length&&d.removeChild(e[0]),a.parentElement.replaceChild(d,a)}).catch(function(a){console.error(a)})})}},{key:"initTwemoji",value:function initTwemoji(){this.config.twemoji&&twemoji.parse(document.body)}},{key:"initMenuMobile",value:function initMenuMobile(){var a=document.getElementById("menu-toggle-mobile"),b=document.getElementById("menu-mobile");a.addEventListener("click",function(){document.body.classList.toggle("blur"),a.classList.toggle("active"),b.classList.toggle("active")},!1),this._menuMobileOnClickMask=this._menuMobileOnClickMask||function(){a.classList.remove("active"),b.classList.remove("active")},this.clickMaskEventSet.add(this._menuMobileOnClickMask)}},{key:"initSwitchTheme",value:function initSwitchTheme(){var a=this;this.util.forEach(document.getElementsByClassName("theme-switch"),function(b){b.addEventListener("click",function(){"dark"===document.body.getAttribute("theme")?document.body.setAttribute("theme","light"):document.body.setAttribute("theme","dark"),a.isDark=!a.isDark,window.localStorage&&localStorage.setItem("theme",a.isDark?"dark":"light");var b,c=_createForOfIteratorHelper(a.switchThemeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}},!1)})}},{key:"initSearch",value:function initSearch(){var a=this,b=this.config.search,c=this.util.isMobile();if(!(!b||c&&this._searchMobileOnce||!c&&this._searchDesktopOnce)){var d=b.maxResultLength?b.maxResultLength:10,e=b.snippetLength?b.snippetLength:50,f=b.highlightTag?b.highlightTag:"em",g=c?"mobile":"desktop",h=document.getElementById("header-".concat(g)),i=document.getElementById("search-input-".concat(g)),j=document.getElementById("search-toggle-".concat(g)),k=document.getElementById("search-loading-".concat(g)),l=document.getElementById("search-clear-".concat(g));c?(this._searchMobileOnce=!0,i.addEventListener("focus",function(){document.body.classList.add("blur"),h.classList.add("open")},!1),document.getElementById("search-cancel-mobile").addEventListener("click",function(){h.classList.remove("open"),document.body.classList.remove("blur"),document.getElementById("menu-toggle-mobile").classList.remove("active"),document.getElementById("menu-mobile").classList.remove("active"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),l.addEventListener("click",function(){l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),this._searchMobileOnClickMask=this._searchMobileOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchMobileOnClickMask)):(this._searchDesktopOnce=!0,j.addEventListener("click",function(){document.body.classList.add("blur"),h.classList.add("open"),i.focus()},!1),l.addEventListener("click",function(){l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},!1),this._searchDesktopOnClickMask=this._searchDesktopOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchDesktopOnClickMask)),i.addEventListener("input",function(){l.style.display=""===i.value?"none":"inline"},!1);var m=function(){var h=autocomplete("#search-input-".concat(g),{hint:!1,autoselect:!0,dropdownMenuContainer:"#search-dropdown-".concat(g),clearOnSelected:!0,cssClasses:{noPrefix:!0},debug:!0},{name:"search",source:function source(c,g){k.style.display="inline",l.style.display="none";var h=function(a){k.style.display="none",l.style.display="inline",g(a)};if("lunr"===b.type){var i=function(){lunr.queryHandler&&(c=lunr.queryHandler(c));var b={};return a._index.search(c).forEach(function(c){var d=c.ref,g=c.matchData.metadata,h=a._indexData[d],i=h.uri,j=h.title,k=h.content;if(!b[i]){var l=0;Object.values(g).forEach(function(a){var b=a.content;if(b){var c=b.position[0][0];(c<l||0===l)&&(l=c)}}),l-=e/5,0<l?(l+=k.substr(l,20).lastIndexOf(" ")+1,k="..."+k.substr(l,e)):k=k.substr(0,e),Object.keys(g).forEach(function(a){j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">")),k=k.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">"))}),b[i]={uri:i,title:j,date:h.date,context:k}}}),Object.values(b).slice(0,d)};a._index?h(i()):fetch(b.lunrIndexURL).then(function(a){return a.json()}).then(function(c){var d={};a._index=lunr(function(){var a=this;b.lunrLanguageCode&&this.use(lunr[b.lunrLanguageCode]),this.ref("objectID"),this.field("title",{boost:50}),this.field("tags",{boost:20}),this.field("categories",{boost:20}),this.field("content",{boost:10}),this.metadataWhitelist=["position"],c.forEach(function(b){d[b.objectID]=b,a.add(b)})}),a._indexData=d,h(i())}).catch(function(a){console.error(a),h([])})}else"algolia"===b.type&&(a._algoliaIndex=a._algoliaIndex||algoliasearch(b.algoliaAppID,b.algoliaSearchKey).initIndex(b.algoliaIndex),a._algoliaIndex.search(c,{offset:0,length:8*d,attributesToHighlight:["title"],attributesToSnippet:["content:".concat(e)],highlightPreTag:"<".concat(f,">"),highlightPostTag:"</".concat(f,">")}).then(function(a){var b=a.hits,c={};b.forEach(function(a){var b=a.uri,d=a.date,e=a._highlightResult.title,f=a._snippetResult.content;c[b]&&c[b].context.length>f.value||(c[b]={uri:b,title:e.value,date:d,context:f.value})}),h(Object.values(c).slice(0,d))}).catch(function(a){console.error(a),h([])}))},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"<div><span class=\"suggestion-title\">".concat(b,"</span><span class=\"suggestion-date\">").concat(c,"</span></div><div class=\"suggestion-context\">").concat(d,"</div>")},empty:function empty(a){var c=a.query;return"<div class=\"search-empty\">".concat(b.noResultsFound,": <span class=\"search-query\">\"").concat(c,"\"</span></div>")},footer:function footer(a){_objectDestructuringEmpty(a);var c="algolia"===b.type?{searchType:"algolia",icon:"<i class=\"fab fa-algolia fa-fw\"></i>",href:"https://www.algolia.com/"}:{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"},d=c.searchType,e=c.icon,f=c.href;return"<div class=\"search-footer\">Search by <a href=\"".concat(f,"\" rel=\"noopener noreffer\" target=\"_blank\">").concat(e," ").concat(d,"</a></div>")}}});h.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),c?a._searchMobile=h:a._searchDesktop=h};if(b.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var n=document.createElement("script");n.id="lunr-segmentit",n.type="text/javascript",n.src=b.lunrSegmentitURL,n.async=!0,n.readyState?n.onreadystatechange=function(){("loaded"==n.readyState||"complete"==n.readyState)&&(n.onreadystatechange=null,m())}:n.onload=function(){m()},document.body.appendChild(n)}else m()}}},{key:"initDetails",value:function initDetails(){this.util.forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}},{key:"initLightGallery",value:function initLightGallery(){this.config.lightGallery&&lightGallery(document.getElementById("content"),this.config.lightGallery)}},{key:"initHighlight",value:function initHighlight(){var a=this;this.util.forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),this.util.forEach(document.querySelectorAll(".highlight > .chroma"),function(b){var c=b.querySelectorAll("pre.chroma > code");if(c.length){var d=c[c.length-1],e=document.createElement("div");e.className="code-header "+d.className.toLowerCase();var f=document.createElement("span");f.classList.add("code-title"),f.insertAdjacentHTML("afterbegin","<i class=\"arrow fas fa-chevron-right fa-fw\"></i>"),f.addEventListener("click",function(){b.classList.toggle("open")},!1),e.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin","<i class=\"fas fa-ellipsis-h fa-fw\"></i>"),g.classList.add("ellipses"),g.addEventListener("click",function(){b.classList.add("open")},!1),e.appendChild(g);var h=document.createElement("span");h.insertAdjacentHTML("afterbegin","<i class=\"far fa-copy fa-fw\"></i>"),h.classList.add("copy");var i=d.innerText;if((0>a.config.code.maxShownLines||i.split("\n").length<a.config.code.maxShownLines+2)&&b.classList.add("open"),a.config.code.copyTitle){h.setAttribute("data-clipboard-text",i),h.title=a.config.code.copyTitle;var j=new ClipboardJS(h);j.on("success",function(){a.util.animateCSS(d,"flash")}),e.appendChild(h)}b.insertBefore(e,b.firstChild)}})}},{key:"initTable",value:function initTable(){this.util.forEach(document.querySelectorAll(".content table"),function(a){var b=document.createElement("div");b.className="table-wrapper",a.parentElement.replaceChild(b,a),b.appendChild(a)})}},{key:"initHeaderLink",value:function initHeaderLink(){for(var a=1;6>=a;a++)this.util.forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin","<a href=\"#".concat(a.id,"\" class=\"header-mark\"></a>"))})}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("TableOfContents");if(null!==b)if(this.util.isTocStatic()){var o=document.getElementById("toc-content-static");b.parentElement!==o&&(b.parentElement.removeChild(b),o.appendChild(b)),this._tocOnScroll&&this.scrollEventSet.delete(this._tocOnScroll)}else{var p=document.getElementById("toc-content-auto");b.parentElement!==p&&(b.parentElement.removeChild(b),p.appendChild(b));var c=document.getElementById("toc-auto"),d=document.getElementsByClassName("page")[0],e=d.getBoundingClientRect();c.style.left="".concat(e.left+e.width+20,"px"),c.style.maxWidth="".concat(d.getBoundingClientRect().left-20,"px"),c.style.visibility="visible";var f=b.querySelectorAll("a:first-child"),g=b.getElementsByTagName("li"),h=document.getElementsByClassName("headerLink"),j="normal"!==document.body.getAttribute("header-desktop"),k=document.getElementById("header-desktop").offsetHeight,l=20+(j?k:0),m=c.offsetTop,n=m-l+(j?0:k);this._tocOnScroll=this._tocOnScroll||function(){var d=document.getElementById("post-footer").offsetTop,e=d-c.getBoundingClientRect().height,o=e-l+(j?0:k);a.newScrollTop<n?(c.style.position="absolute",c.style.top="".concat(m,"px")):a.newScrollTop>o?(c.style.position="absolute",c.style.top="".concat(e,"px")):(c.style.position="fixed",c.style.top="".concat(l,"px")),a.util.forEach(f,function(a){a.classList.remove("active")}),a.util.forEach(g,function(a){a.classList.remove("has-active")});for(var p=20+(j?k:0),q=h.length-1,r=0;r<h.length-1;r++){var s=h[r].getBoundingClientRect().top,t=h[r+1].getBoundingClientRect().top;if(0==r&&s>p||s<=p&&t>p){q=r;break}}if(-1!==q){f[q].classList.add("active");for(var u=f[q].parentElement;u!==b;)u.classList.add("has-active"),u=u.parentElement.parentElement}},this._tocOnScroll(),this.scrollEventSet.add(this._tocOnScroll)}}},{key:"initMath",value:function initMath(){this.config.math&&renderMathInElement(document.body,this.config.math)}},{key:"initMermaid",value:function initMermaid(){var a=this,b=document.getElementsByClassName("mermaid");b.length&&(mermaid.initialize({startOnLoad:!1,theme:"null"}),this.util.forEach(b,function(b){mermaid.mermaidAPI.render("svg-"+b.id,a.data[b.id],function(a){b.insertAdjacentHTML("afterbegin",a)},b)}))}},{key:"initEcharts",value:function initEcharts(){var a=this;this._echartsOnSwitchTheme=this._echartsOnSwitchTheme||function(){a._echartsArr=a._echartsArr||[];for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].dispose();a._echartsArr=[],a.util.forEach(document.getElementsByClassName("echarts"),function(b){var c=echarts.init(b,a.isDark?"dark":"macarons",{renderer:"svg"});c.setOption(JSON.parse(a.data[b.id])),a._echartsArr.push(c)})},this.switchThemeEventSet.add(this._echartsOnSwitchTheme),this._echartsOnSwitchTheme(),this._echartsOnResize=this._echartsOnResize||function(){for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].resize()},this.resizeEventSet.add(this._echartsOnResize)}},{key:"initMapbox",value:function initMapbox(){var a=this;this.config.mapbox&&(mapboxgl.accessToken=this.config.mapbox.accessToken,mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin),this._mapboxArr=this._mapboxArr||[],this.util.forEach(document.getElementsByClassName("mapbox"),function(b){var c=a.data[b.id],d=c.lng,e=c.lat,f=c.zoom,g=c.lightStyle,h=c.darkStyle,i=c.marked,j=c.navigation,k=c.geolocate,l=c.scale,m=c.fullscreen,n=new mapboxgl.Map({container:b,center:[d,e],zoom:f,minZoom:.2,style:a.isDark?h:g,attributionControl:!1});i&&new mapboxgl.Marker().setLngLat([d,e]).addTo(n),j&&n.addControl(new mapboxgl.NavigationControl,"bottom-right"),k&&n.addControl(new mapboxgl.GeolocateControl({positionOptions:{enableHighAccuracy:!0},showUserLocation:!0,trackUserLocation:!0}),"bottom-right"),l&&n.addControl(new mapboxgl.ScaleControl),m&&n.addControl(new mapboxgl.FullscreenControl),n.addControl(new MapboxLanguage),a._mapboxArr.push(n)}),this._mapboxOnSwitchTheme=this._mapboxOnSwitchTheme||function(){a.util.forEach(a._mapboxArr,function(b){var c=b.getContainer(),d=a.data[c.id],e=d.lightStyle,f=d.darkStyle;b.setStyle(a.isDark?f:e),b.addControl(new MapboxLanguage)})},this.switchThemeEventSet.add(this._mapboxOnSwitchTheme))}},{key:"initTypeit",value:function initTypeit(){var a=this;if(this.config.typeit){var b=this.config.typeit,c=b.speed?b.speed:100,d=b.cursorSpeed?b.cursorSpeed:1e3,e=b.cursorChar?b.cursorChar:"|";Object.values(b.data).forEach(function(f){var g=function(h){var i=f[h],j=new TypeIt("#".concat(i),{strings:a.data[i],speed:c,lifeLike:!0,cursorSpeed:d,cursorChar:e,waitUntilVisible:!0,afterComplete:function afterComplete(){return h===f.length-1?void(0<=b.duration&&window.setTimeout(function(){j.destroy()},b.duration)):void(j.destroy(),g(h+1))}}).go()};g(0)})}}},{key:"initComment",value:function initComment(){var a=this;if(this.config.comment){if(this.config.comment.gitalk){this.config.comment.gitalk.body=decodeURI(window.location.href);var d=new Gitalk(this.config.comment.gitalk);d.render("gitalk")}if(this.config.comment.valine&&new Valine(this.config.comment.valine),this.config.comment.utterances){var b=this.config.comment.utterances,c=document.createElement("script");c.src="https://utteranc.es/client.js",c.type="text/javascript",c.setAttribute("repo",b.repo),c.setAttribute("issue-term",b.issueTerm),b.label&&c.setAttribute("label",b.label),c.setAttribute("theme",this.isDark?b.darkTheme:b.lightTheme),c.crossOrigin="anonymous",c.async=!0,document.getElementById("utterances").appendChild(c),this._utterancesOnSwitchTheme=this._utterancesOnSwitchTheme||function(){var c={type:"set-theme",theme:a.isDark?b.darkTheme:b.lightTheme},d=document.querySelector(".utterances-frame");d.contentWindow.postMessage(c,"https://utteranc.es")},this.switchThemeEventSet.add(this._utterancesOnSwitchTheme)}}}},{key:"initSmoothScroll",value:function initSmoothScroll(){SmoothScroll&&new SmoothScroll("[href^=\"#\"]",{speed:300,speedAsDuration:!0,header:"#header-desktop"})}},{key:"initCookieconsent",value:function initCookieconsent(){this.config.cookieconsent&&cookieconsent.initialise(this.config.cookieconsent)}},{key:"onScroll",value:function onScroll(){var a=this,b=[];if("auto"===document.body.getAttribute("header-desktop")&&b.push(document.getElementById("header-desktop")),"auto"===document.body.getAttribute("header-mobile")&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")){var e=document.getElementById("view-comments");e.href="#comments",e.style.display="block"}var c=document.getElementById("fixed-buttons"),d=20;window.addEventListener("scroll",function(){a.newScrollTop=a.util.getScrollTop();var e=a.newScrollTop-a.oldScrollTop;a.util.forEach(b,function(b){e>d?(b.classList.remove("fadeInDown"),a.util.animateCSS(b,["fadeOutUp","faster"],!0)):e<-d&&(b.classList.remove("fadeOutUp"),a.util.animateCSS(b,["fadeInDown","faster"],!0))}),a.newScrollTop>d?e>d?(c.classList.remove("fadeIn"),a.util.animateCSS(c,["fadeOut","faster"],!0)):e<-d&&(c.style.display="block",c.classList.remove("fadeOut"),a.util.animateCSS(c,["fadeIn","faster"],!0)):c.style.display="none";var f,g=_createForOfIteratorHelper(a.scrollEventSet);try{for(g.s();!(f=g.n()).done;){var h=f.value;h()}}catch(a){g.e(a)}finally{g.f()}a.oldScrollTop=a.newScrollTop},!1)}},{key:"onResize",value:function onResize(){var a=this;window.addEventListener("resize",function(){a._resizeTimeout||(a._resizeTimeout=window.setTimeout(function(){a._resizeTimeout=null;var b,c=_createForOfIteratorHelper(a.resizeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}a.initToc(),a.initMermaid(),a.initSearch()},100))},!1)}},{key:"onClickMask",value:function onClickMask(){var a=this;document.getElementById("mask").addEventListener("click",function(){var b,c=_createForOfIteratorHelper(a.clickMaskEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}document.body.classList.remove("blur")},!1)}},{key:"init",value:function init(){this.initSVGIcon(),this.initTwemoji(),this.initMenuMobile(),this.initSwitchTheme(),this.initSearch(),this.initDetails(),this.initLightGallery(),this.initHighlight(),this.initTable(),this.initHeaderLink(),this.initToc(),this.initComment(),this.initSmoothScroll(),this.initMath(),this.initMermaid(),this.initEcharts(),this.initTypeit(),this.initMapbox(),this.initCookieconsent(),this.onScroll(),this.onResize(),this.onClickMask()}}]),a}(),themeInit=function(){var a=new Theme;a.init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();
//# sourceMappingURL=theme.min.js.map \ No newline at end of file
diff --git a/assets/js/theme.min.js.map b/assets/js/theme.min.js.map
index 0769d9c7..723856d7 100644
--- a/assets/js/theme.min.js.map
+++ b/assets/js/theme.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\n }\n\n getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n }\n\n isMobile() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n }\n\n isTocStatic() {\n return window.matchMedia('only screen and (max-width: 960px)').matches;\n }\n\n animateCSS(element, animation, reserved, callback) {\n if (!Array.isArray(animation)) animation = [animation];\n element.classList.add('animated', ...animation);\n const handler = () => {\n element.classList.remove('animated', ...animation);\n element.removeEventListener('animationend', handler);\n if (typeof callback === 'function') callback();\n };\n if (!reserved) element.addEventListener('animationend', handler, false);\n }\n}\n\nclass Theme {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.getAttribute('theme') === 'dark';\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n if (objectFitImages) objectFitImages();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll('[data-svg-src]'), $icon => {\n fetch($icon.getAttribute('data-svg-src'))\n .then(response => response.text())\n .then(svg => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch(err => { console.error(err); });\n });\n }\n\n initTwemoji() {\n if (this.config.twemoji) twemoji.parse(document.body);\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n $menuToggleMobile.addEventListener('click', () => {\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n }, false);\n this._menuMobileOnClickMask = this._menuMobileOnClickMask || (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), $themeSwitch => {\n $themeSwitch.addEventListener('click', () => {\n if (document.body.getAttribute('theme') === 'dark') document.body.setAttribute('theme', 'light');\n else document.body.setAttribute('theme', 'dark');\n this.isDark = !this.isDark;\n window.localStorage && localStorage.setItem('theme', this.isDark ? 'dark' : 'light');\n for (let event of this.switchThemeEventSet) event();\n }, false);\n });\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (!searchConfig || isMobile && this._searchMobileOnce || !isMobile && this._searchDesktopOnce) return;\n\n const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10;\n const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50;\n const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em';\n\n const suffix = isMobile ? 'mobile' : 'desktop';\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n }, false);\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\n $header.classList.remove('open');\n document.body.classList.remove('blur');\n document.getElementById('menu-toggle-mobile').classList.remove('active');\n document.getElementById('menu-mobile').classList.remove('active');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n this._searchMobileOnClickMask = this._searchMobileOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener('click', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n $searchInput.focus();\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n }, false);\n this._searchDesktopOnClickMask = this._searchDesktopOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener('input', () => {\n if ($searchInput.value === '') $searchClear.style.display = 'none';\n else $searchClear.style.display = 'inline';\n }, false);\n\n const initAutosearch = () => {\n const autosearch = autocomplete(`#search-input-${suffix}`, {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true,\n }, {\n name: 'search',\n source: (query, callback) => {\n $searchLoading.style.display = 'inline';\n $searchClear.style.display = 'none';\n const finish = (results) => {\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'inline';\n callback(results);\n };\n if (searchConfig.type === 'lunr') {\n const search = () => {\n if (lunr.queryHandler) query = lunr.queryHandler(query);\n const results = {};\n this._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) return;\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0) position = matchPosition;\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position += context.substr(position, 20).lastIndexOf(' ') + 1;\n context = '...' + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach(key => {\n title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1</${highlightTag}>`);\n context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1</${highlightTag}>`);\n });\n results[uri] = {\n 'uri': uri,\n 'title' : title,\n 'date' : matchData.date,\n 'context' : context,\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n }\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then(response => response.json())\n .then(data => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref('objectID');\n this.field('title', { boost: 50 });\n this.field('tags', { boost: 20 });\n this.field('categories', { boost: 20 });\n this.field('content', { boost: 10 });\n this.metadataWhitelist = ['position'];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n this._algoliaIndex = this._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: `</${highlightTag}>`,\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {\n if (results[uri] && results[uri].context.length > content.value) return;\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value,\n };\n });\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch(err => {\n console.error(err);\n finish([]);\n });\n }\n },\n templates: {\n suggestion: ({ title, date, context }) => `<div><span class=\"suggestion-title\">${title}</span><span class=\"suggestion-date\">${date}</span></div><div class=\"suggestion-context\">${context}</div>`,\n empty: ({ query }) => `<div class=\"search-empty\">${searchConfig.noResultsFound}: <span class=\"search-query\">\"${query}\"</span></div>`,\n footer: ({}) => {\n const { searchType, icon, href } = searchConfig.type === 'algolia' ? {\n searchType: 'algolia',\n icon: '<i class=\"fab fa-algolia fa-fw\"></i>',\n href: 'https://www.algolia.com/',\n } : {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/',\n };\n return `<div class=\"search-footer\">Search by <a href=\"${href}\" rel=\"noopener noreffer\" target=\"_blank\">${icon} ${searchType}</a></div>`;},\n },\n });\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) this._searchMobile = autosearch;\n else this._searchDesktop = autosearch;\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.type = 'text/javascript';\n script.src = searchConfig.lunrSegmentitURL;\n script.async = true;\n if (script.readyState) {\n script.onreadystatechange = () => {\n if (script.readyState == 'loaded' || script.readyState == 'complete'){\n script.onreadystatechange = null;\n initAutosearch();\n }\n };\n } else {\n script.onload = () => {\n initAutosearch();\n };\n }\n document.body.appendChild(script);\n } else initAutosearch();\n }\n\n initDetails() {\n this.util.forEach(document.getElementsByClassName('details'), $details => {\n const $summary = $details.getElementsByClassName('details-summary')[0];\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n }\n\n initLightGallery() {\n if (this.config.lightGallery) lightGallery(document.getElementById('content'), this.config.lightGallery);\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), $preChroma => {\n const $chroma = document.createElement('div');\n $chroma.className = $preChroma.className;\n const $table = document.createElement('table');\n $chroma.appendChild($table);\n const $tbody = document.createElement('tbody');\n $table.appendChild($tbody);\n const $tr = document.createElement('tr');\n $tbody.appendChild($tr);\n const $td = document.createElement('td');\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n });\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), $chroma => {\n const $codeElements = $chroma.querySelectorAll('pre.chroma > code');\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement('div');\n $header.className = 'code-header ' + $code.className.toLowerCase();\n const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '<i class=\"arrow fas fa-chevron-right fa-fw\"></i>');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n const $ellipses = document.createElement('span');\n $ellipses.insertAdjacentHTML('afterbegin', '<i class=\"fas fa-ellipsis-h fa-fw\"></i>');\n $ellipses.classList.add('ellipses');\n $ellipses.addEventListener('click', () => {\n $chroma.classList.add('open');\n }, false);\n $header.appendChild($ellipses);\n const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '<i class=\"far fa-copy fa-fw\"></i>');\n $copy.classList.add('copy');\n const code = $code.innerText;\n if (this.config.code.maxShownLines < 0 || code.split('\\n').length < this.config.code.maxShownLines + 2) $chroma.classList.add('open');\n if (this.config.code.copyTitle) {\n $copy.setAttribute('data-clipboard-text', code);\n $copy.title = this.config.code.copyTitle;\n const clipboard = new ClipboardJS($copy);\n clipboard.on('success', _e => {\n this.util.animateCSS($code, 'flash');\n });\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), $table => {\n const $wrapper = document.createElement('div');\n $wrapper.className = 'table-wrapper';\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.single .content > h' + num), $header => {\n $header.classList.add('headerLink');\n $header.insertAdjacentHTML('afterbegin', `<a href=\"#${$header.id}\" class=\"header-mark\"></a>`);\n });\n }\n }\n\n initToc() {\n const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) return;\n if (this.util.isTocStatic()) {\n const $tocContentStatic = document.getElementById('toc-content-static');\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById('toc-content-auto');\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById('toc-auto');\n const $page = document.getElementsByClassName('page')[0];\n const rect = $page.getBoundingClientRect();\n $toc.style.left = `${rect.left + rect.width + 20}px`;\n $toc.style.maxWidth = `${$page.getBoundingClientRect().left - 20}px`;\n $toc.style.visibility = 'visible';\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('headerLink');\n const headerIsFixed = this.config.headerMode.desktop !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = $toc.offsetTop;\n const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n this._tocOnScroll = this._tocOnScroll || (() => {\n const footerTop = document.getElementById('post-footer').offsetTop;\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\n const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (this.newScrollTop < minScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${minTocTop}px`;\n } else if (this.newScrollTop > maxScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${maxTocTop}px`;\n } else {\n $toc.style.position = 'fixed';\n $toc.style.top = `${TOP_SPACING}px`;\n }\n\n this.util.forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); });\n this.util.forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING)\n || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add('has-active');\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initMath() {\n if (this.config.math) renderMathInElement(document.body, this.config.math);\n }\n\n initMermaid() {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n mermaid.initialize({startOnLoad: false, theme: 'null'});\n this.util.forEach($mermaidElements, $mermaid => {\n mermaid.mermaidAPI.render('svg-' + $mermaid.id, this.data[$mermaid.id], svgCode => {\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\n }, $mermaid);\n });\n }\n }\n\n initEcharts() {\n this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(document.getElementsByClassName('echarts'), $echarts => {\n const chart = echarts.init($echarts, this.isDark ? 'dark' : 'macarons', {renderer: 'svg'});\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n });\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize = this._echartsOnResize || (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(document.getElementsByClassName('mapbox'), $mapbox => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: .2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false,\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');\n }\n if (geolocate) {\n mapbox.addControl(new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true,\n },\n showUserLocation: true,\n trackUserLocation: true,\n }), 'bottom-right');\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n });\n this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || (() => {\n this.util.forEach(this._mapboxArr, mapbox => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\n const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000;\n const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|';\n Object.values(typeitConfig.data).forEach(group => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0) window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initComment() {\n if (this.config.comment) {\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render('gitalk');\n }\n if (this.config.comment.valine) new Valine(this.config.comment.valine);\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.type = 'text/javascript';\n script.setAttribute('repo', utterancesConfig.repo);\n script.setAttribute('issue-term', utterancesConfig.issueTerm);\n if (utterancesConfig.label) script.setAttribute('label', utterancesConfig.label);\n script.setAttribute('theme', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || (() => {\n const message = {\n type: 'set-theme',\n theme: this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme,\n };\n const iframe = document.querySelector('.utterances-frame');\n iframe.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n }\n }\n }\n\n initSmoothScroll() {\n if (SmoothScroll) new SmoothScroll('[href^=\"#\"]', { speed: 300, speedAsDuration: true, header: '#header-desktop' });\n }\n\n onScroll() {\n const $headers = [];\n if (this.config.headerMode.desktop === 'auto') $headers.push(document.getElementById('header-desktop'));\n if (this.config.headerMode.mobile === 'auto') $headers.push(document.getElementById('header-mobile'));\n if (document.getElementById('comments')) {\n const $viewComments = document.getElementById('view-comments');\n $viewComments.href = `#comments`;\n $viewComments.style.display = 'block';\n }\n const $fixedButtons = document.getElementById('fixed-buttons');\n const MIN_SCROLL = 20;\n window.addEventListener('scroll', () => {\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n this.util.forEach($headers, $header => {\n if (scroll > MIN_SCROLL) {\n $header.classList.remove('fadeInDown');\n this.util.animateCSS($header, ['fadeOutUp', 'faster'], true);\n } else if (scroll < - MIN_SCROLL) {\n $header.classList.remove('fadeOutUp');\n this.util.animateCSS($header, ['fadeInDown', 'faster'], true);\n }\n });\n if (this.newScrollTop > MIN_SCROLL) {\n if (scroll > MIN_SCROLL) {\n $fixedButtons.classList.remove('fadeIn');\n this.util.animateCSS($fixedButtons, ['fadeOut', 'faster'], true);\n } else if (scroll < - MIN_SCROLL) {\n $fixedButtons.style.display = 'block';\n $fixedButtons.classList.remove('fadeOut');\n this.util.animateCSS($fixedButtons, ['fadeIn', 'faster'], true);\n }\n } else {\n $fixedButtons.style.display = 'none';\n }\n for (let event of this.scrollEventSet) event();\n this.oldScrollTop = this.newScrollTop;\n }, false);\n }\n\n onResize() {\n window.addEventListener('resize', () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) event();\n this.initToc();\n this.initMermaid();\n this.initSearch();\n }, 100);\n }\n }, false);\n }\n\n onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n for (let event of this.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n }, false);\n }\n\n init() {\n this.initSVGIcon();\n this.initTwemoji();\n this.initMenuMobile();\n this.initSwitchTheme();\n this.initSearch();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initToc();\n this.initComment();\n this.initSmoothScroll();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }\n}\n\nconst themeInit = () => {\n const theme = new Theme();\n theme.init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n"]} \ No newline at end of file
+{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\n }\n\n getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n }\n\n isMobile() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n }\n\n isTocStatic() {\n return window.matchMedia('only screen and (max-width: 960px)').matches;\n }\n\n animateCSS(element, animation, reserved, callback) {\n if (!Array.isArray(animation)) animation = [animation];\n element.classList.add('animated', ...animation);\n const handler = () => {\n element.classList.remove('animated', ...animation);\n element.removeEventListener('animationend', handler);\n if (typeof callback === 'function') callback();\n };\n if (!reserved) element.addEventListener('animationend', handler, false);\n }\n}\n\nclass Theme {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.getAttribute('theme') === 'dark';\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n if (objectFitImages) objectFitImages();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll('[data-svg-src]'), $icon => {\n fetch($icon.getAttribute('data-svg-src'))\n .then(response => response.text())\n .then(svg => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch(err => { console.error(err); });\n });\n }\n\n initTwemoji() {\n if (this.config.twemoji) twemoji.parse(document.body);\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n $menuToggleMobile.addEventListener('click', () => {\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n }, false);\n this._menuMobileOnClickMask = this._menuMobileOnClickMask || (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), $themeSwitch => {\n $themeSwitch.addEventListener('click', () => {\n if (document.body.getAttribute('theme') === 'dark') document.body.setAttribute('theme', 'light');\n else document.body.setAttribute('theme', 'dark');\n this.isDark = !this.isDark;\n window.localStorage && localStorage.setItem('theme', this.isDark ? 'dark' : 'light');\n for (let event of this.switchThemeEventSet) event();\n }, false);\n });\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (!searchConfig || isMobile && this._searchMobileOnce || !isMobile && this._searchDesktopOnce) return;\n\n const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10;\n const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50;\n const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em';\n\n const suffix = isMobile ? 'mobile' : 'desktop';\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n }, false);\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\n $header.classList.remove('open');\n document.body.classList.remove('blur');\n document.getElementById('menu-toggle-mobile').classList.remove('active');\n document.getElementById('menu-mobile').classList.remove('active');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n this._searchMobileOnClickMask = this._searchMobileOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener('click', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n $searchInput.focus();\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n }, false);\n this._searchDesktopOnClickMask = this._searchDesktopOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener('input', () => {\n if ($searchInput.value === '') $searchClear.style.display = 'none';\n else $searchClear.style.display = 'inline';\n }, false);\n\n const initAutosearch = () => {\n const autosearch = autocomplete(`#search-input-${suffix}`, {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true,\n }, {\n name: 'search',\n source: (query, callback) => {\n $searchLoading.style.display = 'inline';\n $searchClear.style.display = 'none';\n const finish = (results) => {\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'inline';\n callback(results);\n };\n if (searchConfig.type === 'lunr') {\n const search = () => {\n if (lunr.queryHandler) query = lunr.queryHandler(query);\n const results = {};\n this._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) return;\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0) position = matchPosition;\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position += context.substr(position, 20).lastIndexOf(' ') + 1;\n context = '...' + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach(key => {\n title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1</${highlightTag}>`);\n context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1</${highlightTag}>`);\n });\n results[uri] = {\n 'uri': uri,\n 'title' : title,\n 'date' : matchData.date,\n 'context' : context,\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n }\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then(response => response.json())\n .then(data => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref('objectID');\n this.field('title', { boost: 50 });\n this.field('tags', { boost: 20 });\n this.field('categories', { boost: 20 });\n this.field('content', { boost: 10 });\n this.metadataWhitelist = ['position'];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n this._algoliaIndex = this._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: `</${highlightTag}>`,\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {\n if (results[uri] && results[uri].context.length > content.value) return;\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value,\n };\n });\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch(err => {\n console.error(err);\n finish([]);\n });\n }\n },\n templates: {\n suggestion: ({ title, date, context }) => `<div><span class=\"suggestion-title\">${title}</span><span class=\"suggestion-date\">${date}</span></div><div class=\"suggestion-context\">${context}</div>`,\n empty: ({ query }) => `<div class=\"search-empty\">${searchConfig.noResultsFound}: <span class=\"search-query\">\"${query}\"</span></div>`,\n footer: ({}) => {\n const { searchType, icon, href } = searchConfig.type === 'algolia' ? {\n searchType: 'algolia',\n icon: '<i class=\"fab fa-algolia fa-fw\"></i>',\n href: 'https://www.algolia.com/',\n } : {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/',\n };\n return `<div class=\"search-footer\">Search by <a href=\"${href}\" rel=\"noopener noreffer\" target=\"_blank\">${icon} ${searchType}</a></div>`;},\n },\n });\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) this._searchMobile = autosearch;\n else this._searchDesktop = autosearch;\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.type = 'text/javascript';\n script.src = searchConfig.lunrSegmentitURL;\n script.async = true;\n if (script.readyState) {\n script.onreadystatechange = () => {\n if (script.readyState == 'loaded' || script.readyState == 'complete'){\n script.onreadystatechange = null;\n initAutosearch();\n }\n };\n } else {\n script.onload = () => {\n initAutosearch();\n };\n }\n document.body.appendChild(script);\n } else initAutosearch();\n }\n\n initDetails() {\n this.util.forEach(document.getElementsByClassName('details'), $details => {\n const $summary = $details.getElementsByClassName('details-summary')[0];\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n }\n\n initLightGallery() {\n if (this.config.lightGallery) lightGallery(document.getElementById('content'), this.config.lightGallery);\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), $preChroma => {\n const $chroma = document.createElement('div');\n $chroma.className = $preChroma.className;\n const $table = document.createElement('table');\n $chroma.appendChild($table);\n const $tbody = document.createElement('tbody');\n $table.appendChild($tbody);\n const $tr = document.createElement('tr');\n $tbody.appendChild($tr);\n const $td = document.createElement('td');\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n });\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), $chroma => {\n const $codeElements = $chroma.querySelectorAll('pre.chroma > code');\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement('div');\n $header.className = 'code-header ' + $code.className.toLowerCase();\n const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '<i class=\"arrow fas fa-chevron-right fa-fw\"></i>');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n const $ellipses = document.createElement('span');\n $ellipses.insertAdjacentHTML('afterbegin', '<i class=\"fas fa-ellipsis-h fa-fw\"></i>');\n $ellipses.classList.add('ellipses');\n $ellipses.addEventListener('click', () => {\n $chroma.classList.add('open');\n }, false);\n $header.appendChild($ellipses);\n const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '<i class=\"far fa-copy fa-fw\"></i>');\n $copy.classList.add('copy');\n const code = $code.innerText;\n if (this.config.code.maxShownLines < 0 || code.split('\\n').length < this.config.code.maxShownLines + 2) $chroma.classList.add('open');\n if (this.config.code.copyTitle) {\n $copy.setAttribute('data-clipboard-text', code);\n $copy.title = this.config.code.copyTitle;\n const clipboard = new ClipboardJS($copy);\n clipboard.on('success', _e => {\n this.util.animateCSS($code, 'flash');\n });\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), $table => {\n const $wrapper = document.createElement('div');\n $wrapper.className = 'table-wrapper';\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.single .content > h' + num), $header => {\n $header.classList.add('headerLink');\n $header.insertAdjacentHTML('afterbegin', `<a href=\"#${$header.id}\" class=\"header-mark\"></a>`);\n });\n }\n }\n\n initToc() {\n const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) return;\n if (this.util.isTocStatic()) {\n const $tocContentStatic = document.getElementById('toc-content-static');\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById('toc-content-auto');\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById('toc-auto');\n const $page = document.getElementsByClassName('page')[0];\n const rect = $page.getBoundingClientRect();\n $toc.style.left = `${rect.left + rect.width + 20}px`;\n $toc.style.maxWidth = `${$page.getBoundingClientRect().left - 20}px`;\n $toc.style.visibility = 'visible';\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('headerLink');\n const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = $toc.offsetTop;\n const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n this._tocOnScroll = this._tocOnScroll || (() => {\n const footerTop = document.getElementById('post-footer').offsetTop;\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\n const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (this.newScrollTop < minScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${minTocTop}px`;\n } else if (this.newScrollTop > maxScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${maxTocTop}px`;\n } else {\n $toc.style.position = 'fixed';\n $toc.style.top = `${TOP_SPACING}px`;\n }\n\n this.util.forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); });\n this.util.forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING)\n || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add('has-active');\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initMath() {\n if (this.config.math) renderMathInElement(document.body, this.config.math);\n }\n\n initMermaid() {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n mermaid.initialize({startOnLoad: false, theme: 'null'});\n this.util.forEach($mermaidElements, $mermaid => {\n mermaid.mermaidAPI.render('svg-' + $mermaid.id, this.data[$mermaid.id], svgCode => {\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\n }, $mermaid);\n });\n }\n }\n\n initEcharts() {\n this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(document.getElementsByClassName('echarts'), $echarts => {\n const chart = echarts.init($echarts, this.isDark ? 'dark' : 'macarons', {renderer: 'svg'});\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n });\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize = this._echartsOnResize || (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(document.getElementsByClassName('mapbox'), $mapbox => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: .2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false,\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');\n }\n if (geolocate) {\n mapbox.addControl(new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true,\n },\n showUserLocation: true,\n trackUserLocation: true,\n }), 'bottom-right');\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n });\n this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || (() => {\n this.util.forEach(this._mapboxArr, mapbox => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\n const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000;\n const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|';\n Object.values(typeitConfig.data).forEach(group => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0) window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initComment() {\n if (this.config.comment) {\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render('gitalk');\n }\n if (this.config.comment.valine) new Valine(this.config.comment.valine);\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.type = 'text/javascript';\n script.setAttribute('repo', utterancesConfig.repo);\n script.setAttribute('issue-term', utterancesConfig.issueTerm);\n if (utterancesConfig.label) script.setAttribute('label', utterancesConfig.label);\n script.setAttribute('theme', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || (() => {\n const message = {\n type: 'set-theme',\n theme: this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme,\n };\n const iframe = document.querySelector('.utterances-frame');\n iframe.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n }\n }\n }\n\n initSmoothScroll() {\n if (SmoothScroll) new SmoothScroll('[href^=\"#\"]', { speed: 300, speedAsDuration: true, header: '#header-desktop' });\n }\n\n initCookieconsent() {\n if (this.config.cookieconsent) cookieconsent.initialise(this.config.cookieconsent);\n }\n\n onScroll() {\n const $headers = [];\n if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'));\n if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'));\n if (document.getElementById('comments')) {\n const $viewComments = document.getElementById('view-comments');\n $viewComments.href = `#comments`;\n $viewComments.style.display = 'block';\n }\n const $fixedButtons = document.getElementById('fixed-buttons');\n const MIN_SCROLL = 20;\n window.addEventListener('scroll', () => {\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n this.util.forEach($headers, $header => {\n if (scroll > MIN_SCROLL) {\n $header.classList.remove('fadeInDown');\n this.util.animateCSS($header, ['fadeOutUp', 'faster'], true);\n } else if (scroll < - MIN_SCROLL) {\n $header.classList.remove('fadeOutUp');\n this.util.animateCSS($header, ['fadeInDown', 'faster'], true);\n }\n });\n if (this.newScrollTop > MIN_SCROLL) {\n if (scroll > MIN_SCROLL) {\n $fixedButtons.classList.remove('fadeIn');\n this.util.animateCSS($fixedButtons, ['fadeOut', 'faster'], true);\n } else if (scroll < - MIN_SCROLL) {\n $fixedButtons.style.display = 'block';\n $fixedButtons.classList.remove('fadeOut');\n this.util.animateCSS($fixedButtons, ['fadeIn', 'faster'], true);\n }\n } else {\n $fixedButtons.style.display = 'none';\n }\n for (let event of this.scrollEventSet) event();\n this.oldScrollTop = this.newScrollTop;\n }, false);\n }\n\n onResize() {\n window.addEventListener('resize', () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) event();\n this.initToc();\n this.initMermaid();\n this.initSearch();\n }, 100);\n }\n }, false);\n }\n\n onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n for (let event of this.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n }, false);\n }\n\n init() {\n this.initSVGIcon();\n this.initTwemoji();\n this.initMenuMobile();\n this.initSwitchTheme();\n this.initSearch();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initToc();\n this.initComment();\n this.initSmoothScroll();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.initCookieconsent();\n\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }\n}\n\nconst themeInit = () => {\n const theme = new Theme();\n theme.init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n"]} \ No newline at end of file
diff --git a/assets/lib/VERSION b/assets/lib/VERSION
index 74bbbfa9..347973f8 100644
--- a/assets/lib/VERSION
+++ b/assets/lib/VERSION
@@ -1,6 +1,6 @@
normalize.css@8.0.1 https://github.com/necolas/normalize.css
fontawesome-free@5.13.0 https://fontawesome.com/
-simple-icons@2.9.0 https://github.com/simple-icons/simple-icons
+simple-icons@2.12.0 https://github.com/simple-icons/simple-icons
animate.css@3.7.2 https://github.com/daneden/animate.css
smooth-scroll@16.1.3 https://github.com/cferdinandi/smooth-scroll
autocomplete.js@0.37.1 https://github.com/algolia/autocomplete.js
@@ -8,7 +8,7 @@ lunr.js@2.3.8 https://lunrjs.com/
algoliasearch@4.2.0 https://github.com/algolia/algoliasearch-client-javascript
lazysizes@5.2.0 https://github.com/aFarkas/lazysizes
object-fit-images@3.2.4 https://github.com/fregante/object-fit-images
-twemoji@12.1.5 https://github.com/twitter/twemoji
+twemoji@13.0.0 https://github.com/twitter/twemoji
lightgallery.js@1.1.3 https://github.com/sachinchoolur/lightgallery.js
lg-thumbnail.js@1.1.0 https://github.com/sachinchoolur/lg-thumbnail.js
lg-zoom.js@1.0.1 https://github.com/sachinchoolur/lg-zoom.js
@@ -23,3 +23,4 @@ aplayer@1.10.1 https://github.com/MoePlayer/APlayer
meting@2.0.1 https://github.com/metowolf/MetingJS
gitalk@1.6.2 https://github.com/gitalk/gitalk
valine@1.4.14 https://valine.js.org/
+cookieconsent@3.1.1 https://github.com/osano/cookieconsent
diff --git a/assets/lib/cookieconsent/cookieconsent.min.css b/assets/lib/cookieconsent/cookieconsent.min.css
new file mode 100644
index 00000000..d4d43902
--- /dev/null
+++ b/assets/lib/cookieconsent/cookieconsent.min.css
@@ -0,0 +1,6 @@
+.cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}
+.cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
+.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
+@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}}
+.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
+.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0} \ No newline at end of file
diff --git a/assets/lib/cookieconsent/cookieconsent.min.js b/assets/lib/cookieconsent/cookieconsent.min.js
new file mode 100644
index 00000000..1e3dccf1
--- /dev/null
+++ b/assets/lib/cookieconsent/cookieconsent.min.js
@@ -0,0 +1 @@
+!function(e){if(!e.hasInitialised){var t={escapeRegExp:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},hasClass:function(e,t){var i=" ";return 1===e.nodeType&&(i+e.className+i).replace(/[\n\t]/g,i).indexOf(i+t+i)>=0},addClass:function(e,t){e.className+=" "+t},removeClass:function(e,t){var i=new RegExp("\\b"+this.escapeRegExp(t)+"\\b");e.className=e.className.replace(i,"")},interpolateString:function(e,t){return e.replace(/{{([a-z][a-z0-9\-_]*)}}/gi,function(e){return t(arguments[1])||""})},getCookie:function(e){var t=("; "+document.cookie).split("; "+e+"=");return t.length<2?void 0:t.pop().split(";").shift()},setCookie:function(e,t,i,n,o,s){var r=new Date;r.setHours(r.getHours()+24*(i||365));var a=[e+"="+t,"expires="+r.toUTCString(),"path="+(o||"/")];n&&a.push("domain="+n),s&&a.push("secure"),document.cookie=a.join(";")},deepExtend:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(i in e&&this.isPlainObject(e[i])&&this.isPlainObject(t[i])?this.deepExtend(e[i],t[i]):e[i]=t[i]);return e},throttle:function(e,t){var i=!1;return function(){i||(e.apply(this,arguments),i=!0,setTimeout(function(){i=!1},t))}},hash:function(e){var t,i,n=0;if(0===e.length)return n;for(t=0,i=e.length;t<i;++t)n=(n<<5)-n+e.charCodeAt(t),n|=0;return n},normaliseHex:function(e){return"#"==e[0]&&(e=e.substr(1)),3==e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e},getContrast:function(e){return e=this.normaliseHex(e),(299*parseInt(e.substr(0,2),16)+587*parseInt(e.substr(2,2),16)+114*parseInt(e.substr(4,2),16))/1e3>=128?"#000":"#fff"},getLuminance:function(e){var t=parseInt(this.normaliseHex(e),16),i=38+(t>>16),n=38+(t>>8&255),o=38+(255&t);return"#"+(16777216+65536*(i<255?i<1?0:i:255)+256*(n<255?n<1?0:n:255)+(o<255?o<1?0:o:255)).toString(16).slice(1)},isMobile:function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},isPlainObject:function(e){return"object"==typeof e&&null!==e&&e.constructor==Object},traverseDOMPath:function(e,i){return e&&e.parentNode?t.hasClass(e,i)?e:this.traverseDOMPath(e.parentNode,i):null}};e.status={deny:"deny",allow:"allow",dismiss:"dismiss"},e.transitionEnd=function(){var e=document.createElement("div"),t={t:"transitionend",OT:"oTransitionEnd",msT:"MSTransitionEnd",MozT:"transitionend",WebkitT:"webkitTransitionEnd"};for(var i in t)if(t.hasOwnProperty(i)&&void 0!==e.style[i+"ransition"])return t[i];return""}(),e.hasTransition=!!e.transitionEnd;var i=Object.keys(e.status).map(t.escapeRegExp);e.customStyles={},e.Popup=function(){var n={enabled:!0,container:null,cookie:{name:"cookieconsent_status",path:"/",domain:"",expiryDays:365,secure:!1},onPopupOpen:function(){},onPopupClose:function(){},onInitialise:function(e){},onStatusChange:function(e,t){},onRevokeChoice:function(){},onNoCookieLaw:function(e,t){},content:{header:"Cookies used on the website!",message:"This website uses cookies to ensure you get the best experience on our website.",dismiss:"Got it!",allow:"Allow cookies",deny:"Decline",link:"Learn more",href:"https://www.cookiesandyou.com",close:"&#x274c;",target:"_blank",policy:"Cookie Policy"},elements:{header:'<span class="cc-header">{{header}}</span>&nbsp;',message:'<span id="cookieconsent:desc" class="cc-message">{{message}}</span>',messagelink:'<span id="cookieconsent:desc" class="cc-message">{{message}} <a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" rel="noopener noreferrer nofollow" target="{{target}}">{{link}}</a></span>',dismiss:'<a aria-label="dismiss cookie message" role=button tabindex="0" class="cc-btn cc-dismiss">{{dismiss}}</a>',allow:'<a aria-label="allow cookies" role=button tabindex="0" class="cc-btn cc-allow">{{allow}}</a>',deny:'<a aria-label="deny cookies" role=button tabindex="0" class="cc-btn cc-deny">{{deny}}</a>',link:'<a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" rel="noopener noreferrer nofollow" target="{{target}}">{{link}}</a>',close:'<span aria-label="dismiss cookie message" role=button tabindex="0" class="cc-close">{{close}}</span>'},window:'<div role="dialog" aria-live="polite" aria-label="cookieconsent" aria-describedby="cookieconsent:desc" class="cc-window {{classes}}">\x3c!--googleoff: all--\x3e{{children}}\x3c!--googleon: all--\x3e</div>',revokeBtn:'<div class="cc-revoke {{classes}}">{{policy}}</div>',compliance:{info:'<div class="cc-compliance">{{dismiss}}</div>',"opt-in":'<div class="cc-compliance cc-highlight">{{deny}}{{allow}}</div>',"opt-out":'<div class="cc-compliance cc-highlight">{{deny}}{{allow}}</div>'},type:"info",layouts:{basic:"{{messagelink}}{{compliance}}","basic-close":"{{messagelink}}{{compliance}}{{close}}","basic-header":"{{header}}{{message}}{{link}}{{compliance}}"},layout:"basic",position:"bottom",theme:"block",static:!1,palette:null,revokable:!1,animateRevokable:!0,showLink:!0,dismissOnScroll:!1,dismissOnTimeout:!1,dismissOnWindowClick:!1,ignoreClicksFrom:["cc-revoke","cc-btn"],autoOpen:!0,autoAttach:!0,whitelistPage:[],blacklistPage:[],overrideHTML:null};function o(){this.initialise.apply(this,arguments)}function s(e){this.openingTimeout=null,t.removeClass(e,"cc-invisible")}function r(t){t.style.display="none",t.removeEventListener(e.transitionEnd,this.afterTransition),this.afterTransition=null}function a(){var e=this.options.position.split("-"),t=[];return e.forEach(function(e){t.push("cc-"+e)}),t}function c(n){var o=this.options,s=document.createElement("div"),r=o.container&&1===o.container.nodeType?o.container:document.body;s.innerHTML=n;var a=s.children[0];return a.style.display="none",t.hasClass(a,"cc-window")&&e.hasTransition&&t.addClass(a,"cc-invisible"),this.onButtonClick=function(n){var o=t.traverseDOMPath(n.target,"cc-btn")||n.target;if(t.hasClass(o,"cc-btn")){var s=o.className.match(new RegExp("\\bcc-("+i.join("|")+")\\b")),r=s&&s[1]||!1;r&&(this.setStatus(r),this.close(!0))}t.hasClass(o,"cc-close")&&(this.setStatus(e.status.dismiss),this.close(!0));t.hasClass(o,"cc-revoke")&&this.revokeChoice()}.bind(this),a.addEventListener("click",this.onButtonClick),o.autoAttach&&(r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a)),a}function l(e){return"000000"==(e=t.normaliseHex(e))?"#222":t.getLuminance(e)}function u(e,t){for(var i=0,n=e.length;i<n;++i){var o=e[i];if(o instanceof RegExp&&o.test(t)||"string"==typeof o&&o.length&&o===t)return!0}return!1}return o.prototype.initialise=function(i){this.options&&this.destroy(),t.deepExtend(this.options={},n),t.isPlainObject(i)&&t.deepExtend(this.options,i),function(){var t=this.options.onInitialise.bind(this);if(!window.navigator.cookieEnabled)return t(e.status.deny),!0;if(window.CookiesOK||window.navigator.CookiesOK)return t(e.status.allow),!0;var i=Object.keys(e.status),n=this.getStatus(),o=i.indexOf(n)>=0;o&&t(n);return o}.call(this)&&(this.options.enabled=!1),u(this.options.blacklistPage,location.pathname)&&(this.options.enabled=!1),u(this.options.whitelistPage,location.pathname)&&(this.options.enabled=!0);var o=this.options.window.replace("{{classes}}",function(){var i=this.options,n="top"==i.position||"bottom"==i.position?"banner":"floating";t.isMobile()&&(n="floating");var o=["cc-"+n,"cc-type-"+i.type,"cc-theme-"+i.theme];i.static&&o.push("cc-static");o.push.apply(o,a.call(this));(function(i){var n=t.hash(JSON.stringify(i)),o="cc-color-override-"+n,s=t.isPlainObject(i);this.customStyleSelector=s?o:null,s&&function(i,n,o){if(e.customStyles[i])return void++e.customStyles[i].references;var s={},r=n.popup,a=n.button,c=n.highlight;r&&(r.text=r.text?r.text:t.getContrast(r.background),r.link=r.link?r.link:r.text,s[o+".cc-window"]=["color: "+r.text,"background-color: "+r.background],s[o+".cc-revoke"]=["color: "+r.text,"background-color: "+r.background],s[o+" .cc-link,"+o+" .cc-link:active,"+o+" .cc-link:visited"]=["color: "+r.link],a&&(a.text=a.text?a.text:t.getContrast(a.background),a.border=a.border?a.border:"transparent",s[o+" .cc-btn"]=["color: "+a.text,"border-color: "+a.border,"background-color: "+a.background],a.padding&&s[o+" .cc-btn"].push("padding: "+a.padding),"transparent"!=a.background&&(s[o+" .cc-btn:hover, "+o+" .cc-btn:focus"]=["background-color: "+(a.hover||l(a.background))]),c?(c.text=c.text?c.text:t.getContrast(c.background),c.border=c.border?c.border:"transparent",s[o+" .cc-highlight .cc-btn:first-child"]=["color: "+c.text,"border-color: "+c.border,"background-color: "+c.background]):s[o+" .cc-highlight .cc-btn:first-child"]=["color: "+r.text]));var u=document.createElement("style");document.head.appendChild(u),e.customStyles[i]={references:1,element:u.sheet};var h=-1;for(var p in s)s.hasOwnProperty(p)&&u.sheet.insertRule(p+"{"+s[p].join(";")+"}",++h)}(n,i,"."+o);return s}).call(this,this.options.palette);this.customStyleSelector&&o.push(this.customStyleSelector);return o}.call(this).join(" ")).replace("{{children}}",function(){var e={},i=this.options;i.showLink||(i.elements.link="",i.elements.messagelink=i.elements.message);Object.keys(i.elements).forEach(function(n){e[n]=t.interpolateString(i.elements[n],function(e){var t=i.content[e];return e&&"string"==typeof t&&t.length?t:""})});var n=i.compliance[i.type];n||(n=i.compliance.info);e.compliance=t.interpolateString(n,function(t){return e[t]});var o=i.layouts[i.layout];o||(o=i.layouts.basic);return t.interpolateString(o,function(t){return e[t]})}.call(this)),s=this.options.overrideHTML;if("string"==typeof s&&s.length&&(o=s),this.options.static){var r=c.call(this,'<div class="cc-grower">'+o+"</div>");r.style.display="",this.element=r.firstChild,this.element.style.display="none",t.addClass(this.element,"cc-invisible")}else this.element=c.call(this,o);(function(){var i=this.setStatus.bind(this),n=this.close.bind(this),o=this.options.dismissOnTimeout;"number"==typeof o&&o>=0&&(this.dismissTimeout=window.setTimeout(function(){i(e.status.dismiss),n(!0)},Math.floor(o)));var s=this.options.dismissOnScroll;if("number"==typeof s&&s>=0){var r=function(t){window.pageYOffset>Math.floor(s)&&(i(e.status.dismiss),n(!0),window.removeEventListener("scroll",r),this.onWindowScroll=null)};this.options.enabled&&(this.onWindowScroll=r,window.addEventListener("scroll",r))}var a=this.options.dismissOnWindowClick,c=this.options.ignoreClicksFrom;if(a){var l=function(o){for(var s=!1,r=o.path.length,a=c.length,u=0;u<r;u++)if(!s)for(var h=0;h<a;h++)s||(s=t.hasClass(o.path[u],c[h]));s||(i(e.status.dismiss),n(!0),window.removeEventListener("click",l),window.removeEventListener("touchend",l),this.onWindowClick=null)}.bind(this);this.options.enabled&&(this.onWindowClick=l,window.addEventListener("click",l),window.addEventListener("touchend",l))}}).call(this),function(){"info"!=this.options.type&&(this.options.revokable=!0);t.isMobile()&&(this.options.animateRevokable=!1);if(this.options.revokable){var e=a.call(this);this.options.animateRevokable&&e.push("cc-animate"),this.customStyleSelector&&e.push(this.customStyleSelector);var i=this.options.revokeBtn.replace("{{classes}}",e.join(" ")).replace("{{policy}}",this.options.content.policy);this.revokeBtn=c.call(this,i);var n=this.revokeBtn;if(this.options.animateRevokable){var o=t.throttle(function(e){var i=!1,o=window.innerHeight-20;t.hasClass(n,"cc-top")&&e.clientY<20&&(i=!0),t.hasClass(n,"cc-bottom")&&e.clientY>o&&(i=!0),i?t.hasClass(n,"cc-active")||t.addClass(n,"cc-active"):t.hasClass(n,"cc-active")&&t.removeClass(n,"cc-active")},200);this.onMouseMove=o,window.addEventListener("mousemove",o)}}}.call(this),this.options.autoOpen&&this.autoOpen()},o.prototype.destroy=function(){this.onButtonClick&&this.element&&(this.element.removeEventListener("click",this.onButtonClick),this.onButtonClick=null),this.dismissTimeout&&(clearTimeout(this.dismissTimeout),this.dismissTimeout=null),this.onWindowScroll&&(window.removeEventListener("scroll",this.onWindowScroll),this.onWindowScroll=null),this.onWindowClick&&(window.removeEventListener("click",this.onWindowClick),this.onWindowClick=null),this.onMouseMove&&(window.removeEventListener("mousemove",this.onMouseMove),this.onMouseMove=null),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null,this.revokeBtn&&this.revokeBtn.parentNode&&this.revokeBtn.parentNode.removeChild(this.revokeBtn),this.revokeBtn=null,function(i){if(t.isPlainObject(i)){var n=t.hash(JSON.stringify(i)),o=e.customStyles[n];if(o&&!--o.references){var s=o.element.ownerNode;s&&s.parentNode&&s.parentNode.removeChild(s),e.customStyles[n]=null}}}(this.options.palette),this.options=null},o.prototype.open=function(t){if(this.element)return this.isOpen()||(e.hasTransition?this.fadeIn():this.element.style.display="",this.options.revokable&&this.toggleRevokeButton(),this.options.onPopupOpen.call(this)),this},o.prototype.close=function(t){if(this.element)return this.isOpen()&&(e.hasTransition?this.fadeOut():this.element.style.display="none",t&&this.options.revokable&&this.toggleRevokeButton(!0),this.options.onPopupClose.call(this)),this},o.prototype.fadeIn=function(){var i=this.element;if(e.hasTransition&&i&&(this.afterTransition&&r.call(this,i),t.hasClass(i,"cc-invisible"))){if(i.style.display="",this.options.static){var n=this.element.clientHeight;this.element.parentNode.style.maxHeight=n+"px"}this.openingTimeout=setTimeout(s.bind(this,i),20)}},o.prototype.fadeOut=function(){var i=this.element;e.hasTransition&&i&&(this.openingTimeout&&(clearTimeout(this.openingTimeout),s.bind(this,i)),t.hasClass(i,"cc-invisible")||(this.options.static&&(this.element.parentNode.style.maxHeight=""),this.afterTransition=r.bind(this,i),i.addEventListener(e.transitionEnd,this.afterTransition),t.addClass(i,"cc-invisible")))},o.prototype.isOpen=function(){return this.element&&""==this.element.style.display&&(!e.hasTransition||!t.hasClass(this.element,"cc-invisible"))},o.prototype.toggleRevokeButton=function(e){this.revokeBtn&&(this.revokeBtn.style.display=e?"":"none")},o.prototype.revokeChoice=function(e){this.options.enabled=!0,this.clearStatus(),this.options.onRevokeChoice.call(this),e||this.autoOpen()},o.prototype.hasAnswered=function(t){return Object.keys(e.status).indexOf(this.getStatus())>=0},o.prototype.hasConsented=function(t){var i=this.getStatus();return i==e.status.allow||i==e.status.dismiss},o.prototype.autoOpen=function(e){!this.hasAnswered()&&this.options.enabled?this.open():this.hasAnswered()&&this.options.revokable&&this.toggleRevokeButton(!0)},o.prototype.setStatus=function(i){var n=this.options.cookie,o=t.getCookie(n.name),s=Object.keys(e.status).indexOf(o)>=0;Object.keys(e.status).indexOf(i)>=0?(t.setCookie(n.name,i,n.expiryDays,n.domain,n.path,n.secure),this.options.onStatusChange.call(this,i,s)):this.clearStatus()},o.prototype.getStatus=function(){return t.getCookie(this.options.cookie.name)},o.prototype.clearStatus=function(){var e=this.options.cookie;t.setCookie(e.name,"",-1,e.domain,e.path)},o}(),e.Location=function(){var e={timeout:5e3,services:["ipinfo"],serviceDefinitions:{ipinfo:function(){return{url:"//ipinfo.io",headers:["Accept: application/json"],callback:function(e,t){try{var i=JSON.parse(t);return i.error?s(i):{code:i.country}}catch(e){return s({error:"Invalid response ("+e+")"})}}}},ipinfodb:function(e){return{url:"//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}",isScript:!0,callback:function(e,t){try{var i=JSON.parse(t);return"ERROR"==i.statusCode?s({error:i.statusMessage}):{code:i.countryCode}}catch(e){return s({error:"Invalid response ("+e+")"})}}}},maxmind:function(){return{url:"//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js",isScript:!0,callback:function(e){window.geoip2?geoip2.country(function(t){try{e({code:t.country.iso_code})}catch(t){e(s(t))}},function(t){e(s(t))}):e(new Error("Unexpected response format. The downloaded script should have exported `geoip2` to the global scope"))}}}}};function i(i){t.deepExtend(this.options={},e),t.isPlainObject(i)&&t.deepExtend(this.options,i),this.currentServiceIndex=-1}function n(e,t,i){var n,o=document.createElement("script");o.type="text/"+(e.type||"javascript"),o.src=e.src||e,o.async=!1,o.onreadystatechange=o.onload=function(){var e=o.readyState;clearTimeout(n),t.done||e&&!/loaded|complete/.test(e)||(t.done=!0,t(),o.onreadystatechange=o.onload=null)},document.body.appendChild(o),n=setTimeout(function(){t.done=!0,t(),o.onreadystatechange=o.onload=null},i)}function o(e,t,i,n,o){var s=new(window.XMLHttpRequest||window.ActiveXObject)("MSXML2.XMLHTTP.3.0");if(s.open(n?"POST":"GET",e,1),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),Array.isArray(o))for(var r=0,a=o.length;r<a;++r){var c=o[r].split(":",2);s.setRequestHeader(c[0].replace(/^\s+|\s+$/g,""),c[1].replace(/^\s+|\s+$/g,""))}"function"==typeof t&&(s.onreadystatechange=function(){s.readyState>3&&t(s)}),s.send(n)}function s(e){return new Error("Error ["+(e.code||"UNKNOWN")+"]: "+e.error)}return i.prototype.getNextService=function(){var e;do{e=this.getServiceByIdx(++this.currentServiceIndex)}while(this.currentServiceIndex<this.options.services.length&&!e);return e},i.prototype.getServiceByIdx=function(e){var i=this.options.services[e];if("function"==typeof i){var n=i();return n.name&&t.deepExtend(n,this.options.serviceDefinitions[n.name](n)),n}return"string"==typeof i?this.options.serviceDefinitions[i]():t.isPlainObject(i)?this.options.serviceDefinitions[i.name](i):null},i.prototype.locate=function(e,t){var i=this.getNextService();i?(this.callbackComplete=e,this.callbackError=t,this.runService(i,this.runNextServiceOnError.bind(this))):t(new Error("No services to run"))},i.prototype.setupUrl=function(e){var t=this.getCurrentServiceOpts();return e.url.replace(/\{(.*?)\}/g,function(i,n){if("callback"===n){var o="callback"+Date.now();return window[o]=function(t){e.__JSONP_DATA=JSON.stringify(t)},o}if(n in t.interpolateUrl)return t.interpolateUrl[n]})},i.prototype.runService=function(e,t){var i=this;e&&e.url&&e.callback&&(e.isScript?n:o)(this.setupUrl(e),function(n){var o=n?n.responseText:"";e.__JSONP_DATA&&(o=e.__JSONP_DATA,delete e.__JSONP_DATA),i.runServiceCallback.call(i,t,e,o)},this.options.timeout,e.data,e.headers)},i.prototype.runServiceCallback=function(e,t,i){var n=this,o=t.callback(function(t){o||n.onServiceResult.call(n,e,t)},i);o&&this.onServiceResult.call(this,e,o)},i.prototype.onServiceResult=function(e,t){t instanceof Error||t&&t.error?e.call(this,t,null):e.call(this,null,t)},i.prototype.runNextServiceOnError=function(e,t){if(e){this.logError(e);var i=this.getNextService();i?this.runService(i,this.runNextServiceOnError.bind(this)):this.completeService.call(this,this.callbackError,new Error("All services failed"))}else this.completeService.call(this,this.callbackComplete,t)},i.prototype.getCurrentServiceOpts=function(){var e=this.options.services[this.currentServiceIndex];return"string"==typeof e?{name:e}:"function"==typeof e?e():t.isPlainObject(e)?e:{}},i.prototype.completeService=function(e,t){this.currentServiceIndex=-1,e&&e(t)},i.prototype.logError=function(e){var t=this.currentServiceIndex,i=this.getServiceByIdx(t);console.warn("The service["+t+"] ("+i.url+") responded with the following error",e)},i}(),e.Law=function(){var e={regionalLaw:!0,hasLaw:["AT","BE","BG","HR","CZ","CY","DK","EE","FI","FR","DE","EL","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","SK","ES","SE","GB","UK","GR","EU"],revokable:["HR","CY","DK","EE","FR","DE","LV","LT","NL","PT","ES"],explicitAction:["HR","IT","ES"]};function i(e){this.initialise.apply(this,arguments)}return i.prototype.initialise=function(i){t.deepExtend(this.options={},e),t.isPlainObject(i)&&t.deepExtend(this.options,i)},i.prototype.get=function(e){var t=this.options;return{hasLaw:t.hasLaw.indexOf(e)>=0,revokable:t.revokable.indexOf(e)>=0,explicitAction:t.explicitAction.indexOf(e)>=0}},i.prototype.applyLaw=function(e,t){var i=this.get(t);return i.hasLaw||(e.enabled=!1,"function"==typeof e.onNoCookieLaw&&e.onNoCookieLaw(t,i)),this.options.regionalLaw&&(i.revokable&&(e.revokable=!0),i.explicitAction&&(e.dismissOnScroll=!1,e.dismissOnTimeout=!1)),e},i}(),e.initialise=function(i,n,o){var s=new e.Law(i.law);n||(n=function(){}),o||(o=function(){});var r=Object.keys(e.status),a=t.getCookie("cookieconsent_status");r.indexOf(a)>=0?n(new e.Popup(i)):e.getCountryCode(i,function(t){delete i.law,delete i.location,t.code&&(i=s.applyLaw(i,t.code)),n(new e.Popup(i))},function(t){delete i.law,delete i.location,o(t,new e.Popup(i))})},e.getCountryCode=function(t,i,n){t.law&&t.law.countryCode?i({code:t.law.countryCode}):t.location?new e.Location(t.location).locate(function(e){i(e||{})},n):i({})},e.utils=t,e.hasInitialised=!0,window.cookieconsent=e}}(window.cookieconsent||{}); \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobe.svg b/assets/lib/simple-icons/icons/adobe.svg
index 9e4f77ed..fe233b5a 100644
--- a/assets/lib/simple-icons/icons/adobe.svg
+++ b/assets/lib/simple-icons/icons/adobe.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe icon</title><path d="M15.1 2H24v20L15.1 2zM8.9 2H0v20L8.9 2zM12 9.4L17.6 22h-3.8l-1.6-4H8.1L12 9.4z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe icon</title><path d="M13.966 22.624l-1.69-4.281H8.122l3.892-9.144 5.662 13.425zM8.884 1.376H0v21.248zm15.116 0h-8.884L24 22.624Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobeacrobatreader.svg b/assets/lib/simple-icons/icons/adobeacrobatreader.svg
index e4265a1e..86dfb50a 100644
--- a/assets/lib/simple-icons/icons/adobeacrobatreader.svg
+++ b/assets/lib/simple-icons/icons/adobeacrobatreader.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Acrobat Reader icon</title><path d="M23.598 15.368c-.71-.76-2.164-1.197-4.224-1.197-1.1 0-2.375.11-3.76.37-.782-.77-1.562-1.67-2.307-2.72-.53-.74-.993-1.52-1.42-2.29.813-2.54 1.206-4.61 1.206-6.1 0-1.672-.603-3.416-2.34-3.416-.533 0-1.066.325-1.35.8-.783 1.408-.43 4.493.917 7.54-.503 1.52-1.035 2.973-1.7 4.605-.578 1.376-1.244 2.794-1.923 4.096C2.793 18.64.267 20.49.03 21.94c-.104.547.074 1.05.457 1.45.133.11.636.545 1.48.545 2.59 0 5.32-4.28 6.707-6.86 1.065-.36 2.13-.687 3.193-1.015 1.168-.323 2.34-.583 3.405-.765 2.735 2.504 5.146 2.9 6.358 2.9 1.492 0 2.024-.617 2.203-1.122.28-.65.07-1.37-.252-1.74l.02.04zm-1.385 1.054c-.104.544-.638.906-1.386.906-.21 0-.39-.037-.603-.072-1.36-.325-2.633-1.016-3.903-2.106 1.25-.214 2.31-.25 2.98-.25.74 0 1.38.032 1.81.144.49.106 1.27.435 1.095 1.38h.02zm-7.523-1.707c-.92.19-1.914.414-2.944.693-.816.223-1.666.474-2.52.77.463-.902.854-1.774 1.208-2.603.428-1.02.78-2.07 1.135-3.046.35.61.74 1.23 1.13 1.78.64.87 1.31 1.7 1.98 2.42v-.02zM10.04 1.23c.145-.29.43-.436.678-.436.745 0 .887.868.887 1.56 0 1.168-.354 2.942-.96 4.967-1.062-2.82-1.135-5.18-.603-6.09zM6.138 18.127C4.328 21.17 2.59 23.06 1.525 23.06c-.21 0-.387-.075-.53-.183-.214-.216-.32-.472-.248-.76.213-1.09 2.236-2.613 5.392-3.99z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Acrobat Reader icon</title><path d="M23.63 15.3c-.71-.745-2.166-1.17-4.224-1.17-1.1 0-2.377.106-3.761.354a19.443 19.443 0 0 1-2.307-2.661c-.532-.71-.994-1.49-1.42-2.236.817-2.484 1.207-4.507 1.207-5.962 0-1.632-.603-3.336-2.342-3.336-.532 0-1.065.32-1.349.781-.78 1.384-.425 4.4.923 7.381a60.277 60.277 0 0 1-1.703 4.507c-.568 1.349-1.207 2.733-1.917 4.01C2.834 18.53.314 20.34.03 21.758c-.106.533.071 1.03.462 1.42.142.107.639.533 1.49.533 2.59 0 5.323-4.188 6.707-6.707 1.065-.355 2.13-.71 3.194-.994a34.963 34.963 0 0 1 3.407-.745c2.732 2.448 5.145 2.839 6.352 2.839 1.49 0 2.023-.604 2.2-1.1.32-.64.106-1.349-.213-1.704zm-1.42 1.03c-.107.532-.64.887-1.384.887-.213 0-.39-.036-.604-.071-1.348-.32-2.626-.994-3.903-2.059a17.717 17.717 0 0 1 2.98-.248c.746 0 1.385.035 1.81.142.497.106 1.278.426 1.1 1.348zm-7.524-1.668a38.01 38.01 0 0 0-2.945.674 39.68 39.68 0 0 0-2.52.745 40.05 40.05 0 0 0 1.207-2.555c.426-.994.78-2.023 1.136-2.981.354.603.745 1.207 1.135 1.739a50.127 50.127 0 0 0 1.987 2.378zM10.038 1.46a.768.768 0 0 1 .674-.425c.745 0 .887.851.887 1.526 0 1.135-.355 2.874-.958 4.861-1.03-2.768-1.1-5.074-.603-5.962zM6.134 17.997c-1.81 2.981-3.549 4.826-4.613 4.826a.872.872 0 0 1-.532-.177c-.213-.213-.32-.461-.249-.745.213-1.065 2.271-2.555 5.394-3.904Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobeaudition.svg b/assets/lib/simple-icons/icons/adobeaudition.svg
index ef7c521c..ffb71627 100644
--- a/assets/lib/simple-icons/icons/adobeaudition.svg
+++ b/assets/lib/simple-icons/icons/adobeaudition.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Audition icon</title><path d="M0 .3v23.4h24V.3zm1 1h22v21.4H1zM6.659 13.8l-.772 2.863c-.017.081-.049.137-.145.137H4.309c-.097 0-.113-.032-.097-.145l2.769-9.641a3.091 3.091 0 0 0 .097-.817c0-.065.032-.097.08-.097h2.045c.064 0 .097.016.113.097l3.107 10.474c.016.081 0 .129-.081.129h-1.61a.147.147 0 0 1-.144-.12l-.805-2.88zm2.721-1.6c-.274-1.079-.918-3.429-1.159-4.572h-.016c-.209 1.143-.725 3.059-1.127 4.572zm10.02 3.025c0 .112.016.45.048.998 0 .064-.006.096-.07.112a8.232 8.232 0 0 1-3.012.66c-1.465 0-2.866-.563-2.866-2.817V9.029c0-.081.032-.129.113-.129h1.574c.081 0 .113.048.113.129v4.94c0 .95.415 1.465 1.413 1.465a2.724 2.724 0 0 0 .987-.177V9.029c0-.081.032-.129.113-.129h1.474c.097 0 .113.048.113.129v6.196z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Audition icon</title><path d="M6.786 13.55l-.792 3c-.017.083-.05.1-.149.1H4.377c-.1 0-.116-.033-.1-.148l2.839-9.943c.049-.181.082-.315.1-.81 0-.066.033-.1.082-.1h2.1c.066 0 .1.017.115.1l3.185 10.769c.016.083 0 .132-.083.132H10.96c-.082 0-.132-.021-.148-.087l-.825-3.013zm2.788-1.625c-.28-1.1-.94-3.529-1.188-4.7H8.37c-.215 1.171-.743 3.149-1.155 4.7zm9.876 3.049c0 .115.017.462.05 1.023a.1.1 0 0 1-.092.116c-.874.33-1.825.676-3.046.676-1.5 0-2.937-.577-2.937-2.887v-5.27c0-.082.033-.132.116-.132h1.569c.082 0 .115.05.115.132v5.055c0 .974.387 1.5 1.41 1.5a2.794 2.794 0 0 0 1.015-.182V8.632c0-.082.033-.132.116-.132h1.569c.1 0 .115.05.115.132zM0 .3v23.4h24V.3zm1 1h22v21.4H1Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachecloudstack.svg b/assets/lib/simple-icons/icons/apachecloudstack.svg
new file mode 100644
index 00000000..a3cac0ee
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachecloudstack.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache CloudStack icon</title><path d="M12.446 11.386c.326-.116 1.077-.462 1.228-1.23l-1.692-.114s-.458-.161-.705-.94c0 0-1.022-.55-.951-1.342 0 0 .158-.987 1.004-1.128 0 0 .882-.218 1.062 1.192 0 0 .415 1.194-.394 1.278 0 0-.175.385.46.402 0 0 .773.23 1.32-.229 0 0 .371-.341.812-.276 0 0 .095-.169-.09-.274 0 0-1.097-.939-1.289-2.267 0 0-.905-.126-1.018-.766 0 0-.211-.992.608-1.19 0 0 .522-.119.787 0 0 0 .667-1.817 2.57-2.128 0 0 1.573-.37 2.134.82 0 0 .232.647.106 1.19 0 0-.132.594.007.746 0 0 .509-.12.72.211.211.33.304 1.038-.119 1.203 0 0 .126.562-.297.945 0 0-1.342.78-1.725 1.44 0 0-.118.151-.178.204a1.354 1.354 0 01-.516.283s-.159.07-.337-.018c0 0-.053.265.245.311 0 0 .565-.078 1.18-.266l4.443-1.59s-.206-.555-.041-.826c0 0 .091-.144.174-.175.154-.059.338-.352.346-.581 0 0-.043-.58.373-.606 0 0 .4-.024.366.465l-.029.321s.61-.23.814.185c0 0 .412.836-.025 1.51 0 0-.643.633-1.489.235l-.29-.179s-5.168 2.14-5.228 2.28c0 0-.405.205-.707.753 0 0-1.037 1.85-1.572 2.34 0 0-.35.423-.601.528l.054.146c.347.037.601-.047.601-.047.965-.462 1.105-.106 1.105-.106.352.252.204.978.204.978 2.696 2.59-.204 5.128-.204 5.128-.455.198-.669 0-.669 0-.079-.119.67-.766.67-.766 1.368-1.64.156-3.412.156-3.412-2.023-2.18-4.05-.553-4.05-.553-.912 1.018-.78 2.128-.78 2.128-.159.317-.423.185-.423.185-.357-.423 0-1.533 0-1.533.529-1.23 1.652-1.732 1.652-1.732l.169-.136c.204-.935-.134-2.062-.134-2.062-.925-2.206-2.488-2.578-3.03-2.64.008.057.006.046-.001 0-.12-.013-.189-.012-.189-.012-2.317-.22-3.379 1.789-3.379 1.789-.62.55-.581 1.815-.581 1.815 1.524.343 1.898 1.295 1.898 1.295.106.396-.348.269-.348.269C5.22 13.69 4.51 13.635 4.51 13.635c-1.44-.26-2.414.664-2.414.664-.584.405-1.102 1.281-1.102 1.281C.157 17.06.68 18.472.68 18.472c.287 1.433 1.997 2.385 1.997 2.385.814.422 1.684.297 1.684.297.708-.162.544.211.544.211-.2.3-.469.304-.469.304-1.528.101-2.216-.414-2.216-.414C-1.195 19.11.347 15.59.347 15.59c1.6-3.119 4.19-2.458 4.19-2.458.052-.939.819-2.247.819-2.247 1.14-1.42 2.416-1.726 3.181-1.764l.004-.004s-.018-1.007.29-1.862c0 0 .16-.435.723-1.286.089-.134.37-.493.458-.82 0 0 .476-1.497-1.229-1.735 0 0-.543-.096-.898.19-.225.18-.437.286-.6.33 0 0-.806.277-.78-.238 0 0-.145-.767 1.68-.978 0 0 2.23-.383 2.49 1.388 0 0 .364 1.083-.958 2.709 0 0-.722 1.118-.557 2.334.045.007.068.013.068.013 2.326.404 3.211 2.212 3.211 2.212l.007.012zm.322.648l.797 1.602c1.387-.564 1.98-2.434 1.98-2.434.38-.942-.211-1.083-.211-1.083-.406-.106-.696.3-.696.3-.91 1.104-1.671 1.519-1.87 1.615zm4.284-8.153c-1.295-1.242-2.538.343-2.538.343-.766.978.08 2.353.08 2.353-.344.08-.503.317-.503.317-.237 1.19 1.11 2.009 1.11 2.009 1.031.687 1.666-.212 1.666-.212.264-.608 1.691-1.612 1.691-1.612.476-.476 0-1.004 0-1.004-.502-.357-.581-.978-.581-.978-.04-.529.04-1.176.04-1.176-.265-.476-.965-.04-.965-.04zm-3.714 1.19c-.08-.212-.35-.146-.35-.146-.535.099-.423.7-.423.7.04.417.476.483.476.483.013-.621.297-1.038.297-1.038zm4.943.468c-.06.126.066.212.066.212.177.117.343.324.343.324.08.072.205 0 .205 0 .17-.247-.125-.536-.125-.536-.198-.198-.49 0-.49 0zm-6.159 2.333s-.132-.674-.572-.86c0 0-.318-.083-.555.19 0 0-.437.445-.291.987 0 0 .251.595.916.718 0 0 .375.115.59-.454 0 0 .055-.176-.088-.581zm9.829-.328c.099.114.158.304.158.304.013.445.627.42.627.42.688.03.933-.4.933-.4.206-.357.127-1.049-.1-1.178-.228-.13-.732 0-.732 0 .122-.238.048-.615.048-.615-.044-.406-.386-.172-.386-.172-.206.154-.106.595-.106.595-.01.28-.372.405-.372.405-.276.283-.07.64-.07.64zm-5.92-1.962c-.01.12-.149.066-.149.066-.036-.26-.377-.323-.377-.323-.357.015-.356.28-.356.28-.199.123-.242-.056-.242-.056.116-.452.589-.36.589-.36.498.03.535.393.535.393zm.758.055s.027-.37.334-.44c0 0 .446-.143.64.256 0 0 .07.162.007.207 0 0-.14.051-.181-.192 0 0-.113-.22-.336-.173 0 0-.198.021-.248.23 0 0-.01.22-.216.112zm-1.676 1.235c.102-.062.247-.009.34.047.1.062.21.12.316.17.209.099.425.162.661.162.123 0 .254.012.374-.005.1-.014.203-.025.304-.035a.991.991 0 00.359-.096c.055-.029.11-.052.164-.084.05-.031.096-.072.144-.102.023-.014.082-.058.11-.053.035.006.069.103.06.136-.068.02-.133.074-.198.105-.09.044-.173.103-.255.16-.116.08-.252.192-.326.313-.173.283-.37.572-.656.749a.917.917 0 01-.495.119c-.166 0-.376-.03-.519-.12a.61.61 0 01-.29-.356c-.044-.158 0-.317 0-.478 0-.125.033-.31-.026-.42-.02-.038-.028-.027-.062-.057-.026-.022-.04-.065-.027-.113.002-.008.014-.043.022-.042zm1.291-.515a.137.137 0 01-.14.134.137.137 0 01-.14-.134c0-.074.062-.134.14-.134.077 0 .14.06.14.134zm.575-.023a.137.137 0 01-.14.134.137.137 0 01-.14-.134c0-.074.062-.134.14-.134.077 0 .14.06.14.134z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/appsignal.svg b/assets/lib/simple-icons/icons/appsignal.svg
new file mode 100644
index 00000000..b3c0f462
--- /dev/null
+++ b/assets/lib/simple-icons/icons/appsignal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AppSignal icon</title><path d="M21.005 7.326c-1.781 0-3.055 1.57-4.368 3.318-.815-3.714-1.72-7.424-4.601-7.424s-3.789 3.71-4.617 7.427c-1.31-1.752-2.584-3.32-4.365-3.32-1.134 0-3.052.769-3.052 3.657v5.24c0 2.832 1.512 3.527 2.42 3.766 1.565.406 5.334.786 9.578.786s8.013-.38 9.579-.786c.907-.24 2.423-.934 2.423-3.766v-5.24c0-2.888-1.92-3.658-3.052-3.658m-8.914-2.469c1.726 0 2.384 3.406 3.3 7.493-1.004 1.238-2.072 2.236-3.3 2.236s-2.292-.998-3.3-2.236c.857-3.822 1.519-7.493 3.3-7.493M1.666 16.24V11c0-1.823.981-2.02 1.414-2.02 1.257 0 2.62 2.096 3.893 3.78-.91 3.818-1.873 6.143-4.145 5.664-.593-.16-1.15-.537-1.15-2.167m4.46 2.655c1.006-1.093 1.638-2.8 2.139-4.607 1.05 1.103 2.266 1.935 3.772 1.935s2.718-.832 3.773-1.935c.488 1.807 1.13 3.514 2.135 4.607a67.507 67.507 0 01-11.806 0m16.282-2.655c0 1.637-.556 2.007-1.15 2.167-2.275.482-3.235-1.846-4.145-5.665 1.287-1.683 2.62-3.779 3.894-3.779.425 0 1.414.197 1.414 2.02z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ardour.svg b/assets/lib/simple-icons/icons/ardour.svg
new file mode 100644
index 00000000..d6af113d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ardour.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" ><title>Ardour icon</title><path d="M12 1.606L0 22.394c1.45 0 .832-.885 1.565-.93.703 0 .559.44 1.044.44.846 0 .273-2.82 1.043-2.82.665 0 .48 2.038 1.044 2.038.288 0 .521-.811.521-1.81v-.945c0-1.304.234-2.364.522-2.364.288 0 .522 1.066.522 2.005 0 1.178.233 2.43.522 2.43.288 0 .521-1.263.521-2.805v-.44c0-1.69.234-3.065.522-3.065.288 0 .522 1.369.522 2.967 0 1.661.233 3.098.522 3.098.288 0 .521-1.437.521-3.18 0-1.737.234-3.146.522-3.146.288 0 .522 1.424.522 3.277 0 1.786.233 3.147.522 3.147.288 0 .521-1.367.521-2.87 0-1.386.234-2.657.522-2.657.288 0 .522 1.271.522 2.837v.472c0 1.415.233 2.56.521 2.56.289 0 .522-1.152.522-2.299 0-.973.234-1.989.522-1.989.288 0 .522 1.01.522 2.25v.57c0 1.058.233 1.908.521 1.908.289 0 .522-.84.522-1.614 0-.589.234-1.304.522-1.304.288 0 .522.709.522 1.581v.538c0 .696.233 1.272.521 1.272.595 0 .45-1.728 1.044-1.728.288 0 .522.43.522.962v.456c0 .385.233.685.521.685.59 0 .462-.782 1.044-.782.76 0 .197 1.076 1.043 1.076.512 0 .426-.18 1.044-.18.563 0 .493.359 1.565.359z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/asus.svg b/assets/lib/simple-icons/icons/asus.svg
new file mode 100644
index 00000000..7227c2dd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/asus.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ASUS icon</title><path d="M23.904 10.788V9.522h-4.656c-.972 0-1.41.6-1.482 1.182v.018-1.2h-1.368v1.266h1.362zm-6.144.456l-1.368-.078v1.458c0 .456-.228.594-1.02.594H14.28c-.654 0-.93-.186-.93-.594v-1.596l-1.386-.102v1.812h-.03c-.078-.528-.276-1.14-1.596-1.23L6 11.22c0 .666.474 1.062 1.218 1.14l3.024.306c.24.018.414.09.414.288 0 .216-.18.24-.456.24H5.946V11.22l-1.386-.09v3.348h5.646c1.26 0 1.662-.654 1.722-1.2h.03c.156.864.912 1.2 2.19 1.2h1.41c1.494 0 2.202-.456 2.202-1.524zm4.398.258l-4.338-.258c0 .666.438 1.11 1.182 1.17l3.09.24c.24.018.384.078.384.276 0 .186-.168.258-.516.258h-4.212v1.29h4.302c1.356 0 1.95-.474 1.95-1.554 0-.972-.534-1.338-1.842-1.422zm-10.194-1.98h1.386v1.266h-1.386zM3.798 11.07l-1.506-.15L0 14.478h1.686zm7.914-1.548h-4.23c-.984 0-1.416.612-1.518 1.2v-1.2H3.618c-.33 0-.486.102-.642.33l-.648.936h9.384Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/audio-technica.svg b/assets/lib/simple-icons/icons/audio-technica.svg
new file mode 100644
index 00000000..f70a155a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/audio-technica.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audio-Technica icon</title><path d="M 12,0 A 12.007568,12.007568 0 0 0 0,12 12.034059,12.034059 0 0 0 12,24.030275 12.034059,12.034059 0 0 0 24,12 12.007568,12.007568 0 0 0 12.003784,0 Z m 0,0.90444656 A 11.09177,11.09177 0 0 1 23.099338,11.996216 c 0,6.130558 -4.964995,11.125828 -11.099338,11.125828 A 11.118259,11.118259 0 0 1 0.90823086,12 11.09177,11.09177 0 0 1 11.996216,0.90823086 Z M 12.08704,2.0662252 11.65563,3.3188269 5.9754032,19.402081 5.7710512,20.007569 H 18.440871 L 18.210029,19.402081 12.526017,3.3150427 Z m 0,2.8003785 2.009461,5.6499533 -3.027437,8.563859 H 7.050142 Z m 2.505204,7.0463573 2.535478,7.163671 h -5.097446 z"/></svg>
diff --git a/assets/lib/simple-icons/icons/autodesk.svg b/assets/lib/simple-icons/icons/autodesk.svg
new file mode 100644
index 00000000..b8d19658
--- /dev/null
+++ b/assets/lib/simple-icons/icons/autodesk.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Autodesk icon</title><path d="m14.574 1.0203c-0.097-0.096997-0.29099-0.58198-0.97097-0.58198h-6.7038s0.97097 0.096997 1.36 1.068c0 0 1.069 2.5269 2.0399 4.9558 2.8179 6.6068 7.1898 17.099 7.1898 17.099h6.5108c0.097-0.097-9.3267-22.443-9.4247-22.54zm-8.8407 0.87497-5.3438 12.631c-0.29199 0.87497-0.097997 1.9439 1.457 1.9439h4.1779l3.6919-8.8417c-1.166-2.9149-2.1359-5.2478-2.1359-5.2478-0.096997-0.29199-0.38899-1.069-0.97197-1.069-0.58298 0-0.77698 0.48598-0.87397 0.58298zm-0.097997 15.643h-4.4689c-0.77698 0-1.166-0.48598-1.166-0.48598 0.77698 1.36 3.0119 5.6358 3.0119 5.6358 0.38899 0.48598 0.77698 0.77698 1.36 0.77698 1.263 0 3.2069-1.263 3.2069-1.263l7.4808-4.6639z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/awesomelists.svg b/assets/lib/simple-icons/icons/awesomelists.svg
new file mode 100644
index 00000000..86372189
--- /dev/null
+++ b/assets/lib/simple-icons/icons/awesomelists.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Awesome Lists icon</title><path d="M23.996 10.648l-6.153-5.644-.865.944 5.127 4.7H1.895l5.127-4.705L6.157 5 .004 10.648H0v3.72c0 1.682 1.62 3.052 3.61 3.052h3.794c1.99 0 3.61-1.37 3.61-3.051v-2.445h1.968v2.445c0 1.681 1.62 3.051 3.61 3.051h3.794c1.99 0 3.61-1.37 3.61-3.051v-3.72z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/azurefunctions.svg b/assets/lib/simple-icons/icons/azurefunctions.svg
new file mode 100644
index 00000000..89409d33
--- /dev/null
+++ b/assets/lib/simple-icons/icons/azurefunctions.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure Functions icon</title><path d="M17.515 5.106c-.205-.204-.612-.204-.817 0-.102.103-.204.256-.204.409 0 .153.05.306.204.408l5.412 5.362a.69.69 0 0 1 0 .868l-5.566 5.515a.693.693 0 0 0 0 .868c.255.204.614.204.817 0l6.485-6.383a.69.69 0 0 0 0-.868l-6.331-6.179zM1.992 12.153a.69.69 0 0 1 0-.868l5.31-5.362c.102-.102.204-.255.204-.408a.463.463 0 0 0-.204-.409c-.205-.204-.612-.204-.817 0L.154 11.285a.69.69 0 0 0 0 .868l6.433 6.383c.255.204.614.204.817 0a.69.69 0 0 0 0-.868l-5.412-5.515zm5.923 10.264L17.617 8.63h-4.699l4.597-7.047H10.67L6.997 12.051l4.493.051-3.574 10.315z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/badoo.svg b/assets/lib/simple-icons/icons/badoo.svg
new file mode 100644
index 00000000..8be30ce9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/badoo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Badoo icon</title><path d="M17.68 2.809c3.392 0 6.32 2.788 6.32 6.228 0 6.71-6.6 12.158-12 12.158S0 15.748 0 9.037c0-3.44 2.928-6.228 6.32-6.228 4.128 0 5.578 3.179 5.68 3.411a6.079 6.079 0 0 1 5.67-3.411zm1.078 6.488V9.11h-2.38v.186c0 2.352-1.97 4.276-4.378 4.276-2.417 0-4.369-1.924-4.369-4.276V9.11H5.233v.186c0 1.766.697 3.42 1.98 4.666a6.795 6.795 0 0 0 4.778 1.933 6.797 6.797 0 0 0 4.777-1.933 6.488 6.488 0 0 0 1.98-4.666Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bentley.svg b/assets/lib/simple-icons/icons/bentley.svg
new file mode 100644
index 00000000..cbbe29b1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bentley.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bentley icon</title><path d="M11.535 8.114a5.407 5.407 0 0 0-1.49.34c-.131.05-.269.135-.414.079-.654-.153-1.331-.096-1.992-.025-.859.09-1.72-.003-2.579-.045a21.543 21.543 0 0 0-2.349.05c-.713.044-1.429-.01-2.138-.086-.088-.002-.178-.02-.265-.002-.135.088-.22.232-.308.363v.068c.185.158.404.262.625.358-.062.151-.101.31-.13.47.264.124.54.227.796.368-.029.095-.072.186-.083.285-.006.059.024.121.083.142.21.11.448.142.665.23.021.01.05.02.05.048.017.128.02.258.047.385a.173.173 0 0 0 .057.035c.287.095.588.131.881.196.034.11.022.249.106.336.375.196.82.1 1.213.228.098.096.075.29.223.344.296.09.614.01.918.05.069.079.077.193.144.273a.249.249 0 0 0 .169.076c.287.008.562-.087.846-.12.059.099.087.247.213.277.229.045.452-.042.665-.116.08.26.166.521.303.758.473.858 1.288 1.499 2.198 1.841.128.036.172.175.238.276.127-.048.252-.102.384-.134l.2.297c.119-.06.237-.122.356-.184.08.094.16.187.242.28l.31-.22c.09.078.173.164.254.251h.035c.096-.085.187-.177.282-.263.106.077.21.156.316.235.081-.095.163-.19.246-.284.12.06.238.123.357.184.063-.098.124-.196.185-.295.14.031.27.089.404.136.033-.068.065-.138.102-.204.053-.142.22-.164.336-.232.972-.447 1.78-1.286 2.099-2.318.162.06.345.134.517.064.09-.046.125-.144.168-.228.24.053.48.154.73.102.13-.039.194-.161.253-.271.23.03.456.095.69.075.104-.013.247 0 .318-.096.059-.096.067-.215.124-.312.315-.042.648.042.954-.072.096-.108.097-.27.184-.383.247-.018.495 0 .742-.018a.286.286 0 0 0 .215-.123c.056-.107.064-.23.1-.344.007-.024.02-.05.044-.061.241-.1.534-.022.755-.177.108-.12.021-.31.088-.443.207-.118.477-.088.669-.241.129-.11.032-.282.014-.42.225-.077.472-.119.657-.279-.052-.14-.113-.275-.17-.412A4.67 4.67 0 0 0 24 8.871v-.087a1.176 1.176 0 0 0-.272-.34c-.071-.053-.17-.01-.25-.018-.696.062-1.396.13-2.095.092-.417-.022-.833-.062-1.25-.062-.522 0-1.044-.015-1.564.027-.77.046-1.544.103-2.313.017-.657-.077-1.335-.115-1.981.053-.103.043-.211.009-.305-.037-.516-.234-1.077-.348-1.638-.402zm.521.155c.327.014.654.049.974.122.31.072.622.149.91.287-.103.065-.227.164-.354.11a5.088 5.088 0 0 0-1.716-.29c-.326.02-.652.046-.97.125-.204.04-.4.116-.606.149-.096-.026-.184-.073-.272-.119a5.653 5.653 0 0 1 2.034-.384zm11.467.278c.17-.01.308.126.395.26a2.31 2.31 0 0 1-1.093.252c-1.65.027-3.298.095-4.947.137 0 .027.002.054.004.081a2.744 2.744 0 0 1-.048-.154c.361-.05.72-.12 1.085-.142.668-.05 1.34-.068 2.01-.075a.394.394 0 0 0 .245-.072c-.533-.057-1.07-.026-1.604-.013-.371.027-.744.033-1.114.08-.495.06-.989.154-1.489.16-.312.005-.625.032-.937.01-.39-.007-.786-.042-1.17.045-.108.035-.239.073-.282.192-.093.188.01.398.095.569.103.217.279.425.247.682-.015.091-.092.151-.162.203a2.4 2.4 0 0 1-.198-.251c.04-.08.106-.155.088-.252-.033-.2-.178-.358-.314-.498-.196-.19-.414-.367-.547-.61-.039-.07-.066-.17.009-.227.22-.156.491-.209.752-.252.715-.1 1.436-.015 2.153.015.353.035.709.03 1.063 0 .838-.054 1.68-.138 2.52-.082.378.021.757.038 1.135.047.692.028 1.38-.062 2.07-.101a.308.308 0 0 1 .034-.004zM.55 8.55c.196-.002.392.027.587.04.542.048 1.086.079 1.63.056.674-.008 1.345-.088 2.019-.052.687.022 1.37.098 2.058.119.525-.018 1.049-.06 1.574-.084.533-.017 1.087-.011 1.59.187.097.04.217.093.24.207-.02.158-.14.28-.238.399-.175.216-.429.36-.57.605-.11.14-.126.35-.005.488a1.808 1.808 0 0 1-.219.243c-.083-.076-.16-.17-.15-.292.038-.346.347-.593.383-.94.031-.121-.031-.239-.108-.327a1.155 1.155 0 0 0-.468-.124c-.562-.048-1.126.027-1.689-.007-.557.004-1.107-.093-1.657-.167a26.874 26.874 0 0 0-2.115-.106c-.195-.003-.39.015-.585.032.063.052.14.087.225.078.733.01 1.466.022 2.197.085.307.029.61.084.916.131l-.023.084c-.536-.033-1.074-.028-1.611-.05-.965-.035-1.93-.065-2.895-.081-.411-.027-.841.017-1.234-.134-.11-.037-.213-.088-.317-.136.076-.093.153-.199.27-.24.065-.01.13-.014.195-.014zm11.455.114a4.324 4.324 0 0 1 1.597.296c.004.104-.029.218.024.313a1.245 1.245 0 0 0 .16.229c.18.212.41.383.588.597a.716.716 0 0 1 .157.272 3.76 3.76 0 0 0-1.267-.755 3.848 3.848 0 0 0-3.158.28c-.174.098-.332.22-.486.348l-.152.128a.502.502 0 0 1 .06-.147c.223-.315.556-.533.781-.846.11-.133.1-.31.083-.47a5.558 5.558 0 0 1 1.613-.245zm5.762.455c.016.044.03.088.044.132-.313.18-.688.135-1.032.09-.078-.007-.124-.074-.155-.139.38-.041.763-.038 1.143-.083zm-11.55.016c.386.006.771.025 1.154.064-.03.051-.054.124-.122.132-.203.035-.41.041-.614.049-.158.01-.303-.062-.44-.129l.023-.116zm1.207.055c.154.003.309.005.463.014.41.017.831-.016 1.23.105.099.034.208.08.259.178.039.172-.06.325-.144.464-.083.151-.197.293-.235.464-.048.16.05.294.124.423-.112.004-.25.051-.338-.04-.041-.082.007-.179.024-.263l-.16.143-.195-.012c-.015-.203.141-.35.221-.521-.138.123-.278.297-.483.281-.081.003-.143-.104-.093-.169.111-.141.255-.254.359-.402-.124.096-.25.195-.397.251a.464.464 0 0 1-.326-.038c.018-.204.234-.276.35-.417-.127.053-.24.154-.387.145-.058.002-.115-.016-.17-.029-.01-.173.171-.234.273-.337-.09.02-.177.062-.27.06-.062-.022-.11-.072-.164-.108.015-.066.035-.13.06-.192zm9.156 0c.018.078.087.178-.005.237-.1.125-.268.022-.39-.002.112.096.285.167.284.343-.096.017-.2.05-.295.01-.088-.036-.173-.081-.259-.122.027.027.055.053.084.078l.087.076c.057.051.113.104.16.164.016.068-.033.14-.106.139-.233.059-.415-.127-.584-.254.089.121.195.226.297.335.051.054.046.135.064.203-.084.011-.174.044-.256.008-.128-.052-.225-.155-.33-.243.091.16.23.305.216.502l-.208.008a10.001 10.001 0 0 1-.137-.132c.008.082.06.176.007.25-.062.07-.158.065-.246.063-.03 0-.059 0-.086.003.047-.119.14-.222.137-.356-.036-.35-.358-.587-.406-.932-.01-.149.154-.218.273-.261.554-.145 1.133-.073 1.7-.117zM.698 9.192c.77 0 1.54.04 2.31.047.963.021 1.926.028 2.888.053.2-.014.365.116.53.207l-.018.19a5.46 5.46 0 0 1-.089.043l.026-.073c-.899.024-1.796.085-2.695.112-.566.012-1.13.06-1.697.05A3.707 3.707 0 0 1 .89 9.705c-.115-.034-.247-.052-.338-.137-.001-.135.073-.264.145-.376zm22.62.022c.064.111.132.222.179.342-.43.14-.89.133-1.336.116-.828-.002-1.656-.055-2.484-.083-.699-.032-1.398-.06-2.097-.1.143-.102.305-.202.486-.196 1.751-.007 3.501-.078 5.252-.08zm-16.073.214c.077.005.136.074.194.12a.138.138 0 0 1 .05.116c-.078.06-.181.068-.273.092-.186.034-.37.09-.56.097-.067-.026-.14-.055-.185-.116-.016-.084.01-.2.104-.222.21-.042.425-.054.636-.085a.139.139 0 0 1 .034-.002zm9.465.008c.235 0 .47.03.7.073.109.021.106.15.134.234-.09.05-.177.13-.29.107-.163-.025-.323-.066-.485-.096-.087-.022-.187-.029-.258-.09.005-.108.116-.177.2-.228zm-4.785.138c.908-.02 1.842.29 2.495.935.358.365.62.856.612 1.377.01.47-.199.926-.507 1.274-.566.642-1.415.983-2.256 1.046a3.577 3.577 0 0 1-2.17-.514c-.345-.22-.66-.5-.867-.858a1.853 1.853 0 0 1-.227-1.365c.099-.415.356-.774.668-1.057.565-.51 1.318-.775 2.07-.83.06-.004.121-.006.182-.008zm5.64.023c.218-.005.435.025.653.035 1.44.088 2.882.14 4.322.224.093.014.198-.004.283.043.057.083.072.185.087.283-.302.185-.678.14-1.015.149-.425-.028-.85-.08-1.274-.121a15.638 15.638 0 0 0-.425-.036c-.872-.087-1.747-.139-2.615-.258a1.474 1.474 0 0 0-.016-.32zm-5.553.01c-.116 0-.23.005-.345.016-.805.077-1.627.39-2.161 1.02-.308.348-.518.809-.484 1.282.018.674.448 1.273.985 1.65.884.618 2.057.75 3.079.44.46-.149.903-.38 1.245-.727.428-.414.714-1.017.635-1.622-.065-.495-.35-.941-.723-1.265-.61-.536-1.425-.795-2.231-.794zm-5.915.175c.059 0 .118 0 .178.002.148.042.249.167.359.266-.027.077-.05.155-.072.234.072.057.149.108.23.15-.517.084-1.03.193-1.544.292l-.464.102-.465.098c-.31.063-.621.123-.934.174-.405.072-.828.05-1.222-.069-.113-.032-.141-.162-.095-.262.017-.1.141-.09.215-.105 1.276-.13 2.548-.295 3.82-.447.178-.019.38-.023.51-.163-.701.064-1.402.142-2.102.22l-1.051.113c-.35.036-.701.07-1.052.1-.394.04-.802.002-1.17-.153a1.65 1.65 0 0 1 .144-.328c1.393-.063 2.789-.092 4.18-.195.178-.008.356-.025.535-.029zm1.256.064a.56.56 0 0 1 .122.008c.084.025.162.067.24.105-.009.132-.138.166-.238.212-.125.051-.247.11-.375.153-.162.052-.325-.028-.474-.087.02-.068.028-.144.07-.203a.916.916 0 0 1 .297-.12c.117-.03.237-.064.358-.068zm9.248 0c.177-.004.35.054.517.106.064.026.144.036.192.092.032.06.04.13.064.192-.146.053-.302.145-.462.093a6.866 6.866 0 0 1-.632-.271c.018-.123.137-.18.245-.206a.718.718 0 0 1 .076-.006zm.887.172c.239-.004.474.041.711.066.758.085 1.517.168 2.276.246.543.068 1.09.108 1.632.19.013.107.126.312-.033.35a4.135 4.135 0 0 1-1.12.025c-1.182-.184-2.36-.394-3.544-.566a4.356 4.356 0 0 0-.024-.307c.034-.002.068-.004.102-.004zm-5.377.111c.253.001.504.032.748.103.282.084.568.226.73.482.111.16.124.368.087.554-.056.226-.263.365-.442.492l.004.042c.265.181.554.434.545.785.025.254-.11.492-.293.657-.129.098-.27.183-.422.241-.43.149-.892.168-1.342.138-.552-.069-1.13-.224-1.537-.627.07-.094.16-.17.224-.268a23.17 23.17 0 0 0 .006-1.615c-.066-.099-.157-.177-.231-.27.274-.375.732-.545 1.17-.64.247-.047.5-.075.753-.074zm4.163.063c.029 0 .058.001.086.008.169.065.332.144.494.225.036.024.09.036.106.082.004.08-.034.168-.113.197-.115.048-.253.078-.37.024-.191-.084-.365-.202-.544-.307.017-.042.025-.095.054-.13a.1.1 0 0 1 .038-.027.606.606 0 0 1 .249-.072zm-8.563 0a.555.555 0 0 1 .276.078c.065.031.079.14.017.18-.162.11-.332.21-.514.281-.143.047-.287-.007-.42-.053l-.04-.194c.168-.088.34-.173.514-.25a.36.36 0 0 1 .167-.042zm4.37.172a2.535 2.535 0 0 0-.282.015.623.623 0 0 0-.361.168c-.163.169-.176.422-.145.641a.563.563 0 0 0 .367.487c.233.079.49.075.725.01.254-.085.382-.362.376-.614.013-.213-.04-.462-.231-.586a.807.807 0 0 0-.449-.12zm5.287.085c.27.006.54.052.806.099.833.15 1.666.301 2.498.458.21.043.423.079.63.138-.028.125-.043.32-.202.344-.513.065-1.028-.05-1.52-.187-.814-.22-1.637-.414-2.45-.64a.435.435 0 0 0-.149-.007c.013-.052.017-.107.042-.154.064-.048.153-.045.229-.05h.116zm-10.387.055c.028.114.052.229.097.337-.634.195-1.267.39-1.904.572-.338.097-.67.223-1.02.27-.316.028-.64.013-.948-.066-.126-.034-.16-.17-.163-.284.89-.193 1.777-.399 2.67-.577.422-.085.839-.203 1.268-.252zm8.897.051a.266.266 0 0 1 .177.063c.15.099.297.2.448.296a.196.196 0 0 0-.014.043l-.01.047c-.009.032-.021.061-.05.077-.13.014-.269.043-.396-.006a2.215 2.215 0 0 1-.396-.324c-.046-.039-.041-.116-.002-.158a.093.093 0 0 1 .05-.027c.061-.003.128-.013.193-.01zm-7.713 0c.051 0 .102.004.152.01.069.017.116.122.047.169-.156.156-.318.354-.557.365-.08-.001-.16.002-.238-.015-.057-.038-.052-.12-.071-.176.173-.11.338-.231.516-.333a.63.63 0 0 1 .15-.02zm8.857.204c.162.017.316.07.473.108.766.225 1.533.447 2.298.674.143.043.289.079.426.138-.038.095-.074.203-.163.262a2.07 2.07 0 0 1-1.1-.072c-.27-.103-.527-.233-.792-.346-.48-.205-.958-.419-1.445-.61.103-.047.195-.121.303-.154zm-1.563.04c.105 0 .19.084.266.148.072.072.167.131.212.225.015.085-.055.159-.079.235-.104-.02-.234.02-.318-.066a1.57 1.57 0 0 1-.322-.397c-.016-.086.083-.138.163-.141l.032.001a.202.202 0 0 1 .046-.005zm-6.891.004a.423.423 0 0 1 .23.082 1.5 1.5 0 0 1-.34.455c-.074.09-.2.075-.3.045-.063-.047-.086-.13-.124-.196.123-.127.24-.262.389-.359a.32.32 0 0 1 .145-.027zm-1.326.12a.848.848 0 0 1 .108.002c.102.015.115.135.153.212-.178.06-.341.153-.508.236-.434.208-.857.435-1.29.645-.295.156-.643.13-.966.133-.09-.009-.191 0-.27-.052-.052-.067-.074-.152-.1-.232.245-.124.516-.18.77-.283.456-.172.924-.31 1.384-.47.238-.067.471-.179.72-.19zm7.692.011c.093.022.207.015.277.091.098.133.197.272.253.428-.018.12-.154.2-.272.195-.04-.253-.148-.485-.258-.714zm-5.888.003a2.99 2.99 0 0 0-.242.718c-.095-.022-.214-.046-.256-.147-.03-.05-.001-.105.022-.15a2.1 2.1 0 0 1 .225-.346c.071-.054.167-.054.251-.075zm7.515.028c.182.033.342.134.508.212.661.309 1.32.623 1.977.942-.013.07-.011.154-.059.214-.163.063-.344.037-.513.02-.206-.023-.42-.047-.601-.16-.507-.315-.98-.687-1.509-.966.115-.042.154-.159.197-.262zm-8.832.254c.09 0 .18.014.267.042-.194.232-.456.392-.695.571-.28.19-.538.417-.85.553a2.027 2.027 0 0 1-.761.104c-.112-.014-.161-.118-.166-.22.587-.32 1.187-.615 1.774-.933a.83.83 0 0 1 .43-.117zm8.426.018a.6.6 0 0 1 .321.134c.449.335.896.674 1.346 1.007.06.031.091.091.116.152-.126.054-.263.12-.403.078-.041-.01-.084-.018-.126-.027a.946.946 0 0 1-.364-.13c-.427-.27-.773-.65-1.206-.912.092-.082.12-.21.206-.293a.399.399 0 0 1 .11-.009zm-8.156.176c.114.178.334.117.508.165-.38.273-.666.652-1.042.93-.228.169-.583.234-.814.037.113-.175.29-.29.447-.423.3-.236.593-.483.901-.709zm7.554.125c.11.023.233.032.319.116.284.24.551.498.836.738.097.09.227.167.238.315-.095.035-.202.075-.302.033a.672.672 0 0 1-.071-.023c-.162-.063-.295-.183-.424-.297a9.813 9.813 0 0 0-.769-.679c.056-.069.114-.137.173-.203zm-7.068.176c.102.027.201.065.303.091.013.1.02.2.026.3-.174.175-.307.406-.541.51-.156.06-.327.081-.493.06-.057-.012-.097-.057-.138-.095.278-.292.54-.6.843-.866zm6.729.073c.151-.002.25.118.344.218.196.228.42.428.622.649-.043.057-.09.136-.18.106a.738.738 0 0 1-.311-.05c-.208-.1-.345-.293-.522-.433l.047-.49zm-3.103.132a1.564 1.564 0 0 0-.255.014c-.274.032-.537.235-.584.515-.03.271-.019.602.204.796.147.12.34.16.525.176.258.008.56-.033.72-.264.175-.264.176-.623.054-.908-.132-.24-.401-.322-.664-.33zm-3.303.33c.066.17.114.346.16.522-.12-.023-.302-.01-.37-.138-.033-.161.117-.274.21-.383zm6.349.15c.087.077.204.181.17.31-.067.117-.218.118-.335.13a33.1 33.1 0 0 0 .165-.44zm-6.69.321c.093.077.195.157.319.176.08.024.173.018.245.063.156.191.294.399.488.555.299.277.658.469.995.692-.058.24-.213.437-.339.644-.92-.353-1.719-1.07-2.085-1.995.126-.042.252-.087.376-.135zm6.993.063c.093.037.186.075.28.11-.185.51-.532.95-.94 1.301a3.133 3.133 0 0 1-1.012.6c-.08-.14-.166-.278-.236-.424-.02-.05-.052-.118-.01-.165.098-.098.227-.156.346-.224.248-.148.476-.327.686-.526.14-.134.228-.312.357-.456.11-.043.238-.024.347-.074.07-.036.124-.092.182-.142zm-7.67.07l.204.003c.174.43.422.837.76 1.157.207.187.408.384.649.527.23.152.482.262.73.38a1.417 1.417 0 0 1-.089.2 4.51 4.51 0 0 1-.699-.352c-.3-.177-.55-.421-.8-.66-.26-.253-.43-.58-.604-.894-.065-.114-.106-.239-.15-.361zm8.027.058l.22.02a3.174 3.174 0 0 1-.847 1.33c-.372.34-.785.665-1.272.82-.034-.07-.068-.14-.1-.212.305-.137.61-.289.87-.504.48-.388.91-.868 1.129-1.454zm-1.348.433c-.19.266-.485.42-.746.605-.12.093-.29.15-.339.31.011.094.087.164.13.245.108.186.215.374.302.57.048.124-.001.252-.048.367-.158-.043-.334-.115-.403-.275-.133-.241-.13-.544-.315-.76-.017.322.216.582.255.893-.016.109-.084.202-.136.297-.139-.078-.31-.156-.343-.329-.095-.256-.037-.563-.192-.797-.063.223.046.44.088.656.023.134.082.303-.023.417a2.76 2.76 0 0 1-.106.133c-.105-.075-.24-.145-.275-.28-.059-.26-.016-.53-.064-.79-.014-.033-.037-.059-.058-.086-.07.31.085.616.047.928-.042.112-.135.229-.26.25-.115-.08-.222-.2-.221-.35-.015-.271.087-.535.073-.807l-.073-.002c-.037.23-.018.465-.033.697a.487.487 0 0 1-.104.294c-.06.054-.127.1-.197.142-.063-.066-.135-.13-.173-.216-.034-.13.013-.26.04-.388.047-.192.115-.384.106-.584h-.066c-.083.259-.081.533-.154.794a.468.468 0 0 1-.273.295c-.054.024-.119-.014-.14-.066-.097-.123-.048-.289-.005-.423.086-.222.192-.439.24-.674l-.066-.027c-.14.26-.174.564-.32.821a.478.478 0 0 1-.311.24c-.045.015-.08-.022-.1-.057a.386.386 0 0 1-.005-.334c.112-.241.27-.46.38-.702.02-.066.056-.155.001-.213-.22-.226-.546-.3-.77-.522.233.138.459.296.716.386.923.372 1.99.383 2.915.011.39-.136.729-.387 1.026-.669Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bose.svg b/assets/lib/simple-icons/icons/bose.svg
new file mode 100644
index 00000000..6e6a23d7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bose.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bose icon</title><path d="M14.051 10.555a.686.686 0 00-.588.34c-.11.194-.426.742-.54.936a.27.27 0 00.236.409h1.873l-.336.582a.271.271 0 01-.24.142h-.29c-.097 0-.137-.105-.103-.168.035-.063.112-.194.112-.194h-1.698l-.246.426c-.115.2.038.416.233.416h3.173a.69.69 0 00.598-.349c.121-.21.405-.706.528-.916a.27.27 0 00-.228-.42h-1.873l.346-.6a.274.274 0 01.231-.125h.292c.096 0 .136.104.106.159a14.05 14.05 0 01-.118.204h1.696l.255-.44a.273.273 0 00-.24-.402h-3.179m-2.94.65a1307.162 1307.217 0 00-.936 1.622.275.275 0 01-.236.137h-.295c-.095 0-.138-.104-.102-.168l.94-1.629a.275.275 0 01.236-.133h.295a.113.113 0 01.098.171m1.597-.65h-3.17a.695.695 0 00-.593.337l-1.238 2.145c-.11.19.04.407.236.407h3.176c.256 0 .48-.145.593-.338l1.236-2.143a.272.272 0 00-.24-.408m-5.723.65l-.243.42a.266.266 0 01-.233.134h-.9l.419-.725h.858c.089 0 .14.096.099.17M6.29 12.41l-.243.42a.266.266 0 01-.233.134h-.9l.42-.724h.857c.089 0 .14.095.099.17m1.902-1.855H4.61l-1.392 2.41H0v.48l6.599-.001c.24 0 .468-.125.595-.344l.41-.713c.086-.148-.005-.338-.163-.387a.698.698 0 00.583-.337l.402-.698a.272.272 0 00-.234-.41m9.986 0l-1.667 2.889h4.042l.277-.48h-2.346l.418-.724h2.346l.277-.48H19.18l.418-.726H24v-.479h-5.82z"/></svg>
diff --git a/assets/lib/simple-icons/icons/bt.svg b/assets/lib/simple-icons/icons/bt.svg
new file mode 100644
index 00000000..c94a6e46
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BT icon</title><path d="M12.589 7.91h5.977v1.753H16.56v6.41h-1.97v-6.41h-2zM12 22.523C6.193 22.523 1.477 17.807 1.477 12 1.477 6.193 6.193 1.477 12 1.477c5.807 0 10.523 4.716 10.523 10.523 0 5.807-4.716 10.523-10.523 10.523M12 24c6.626 0 12-5.374 12-12S18.626 0 12 0C5.379 0 0 5.374 0 12s5.379 12 12 12M9.97 13.574c0-.516-.321-.865-.873-.865h-1.32v1.702h1.32c.552 0 .874-.345.874-.837m-.24-3.276c0-.433-.275-.732-.745-.732h-1.21v1.486h1.21c.47 0 .746-.299.746-.754m2.231 3.372c0 1.546-1.09 2.402-2.65 2.402H5.834V7.91h3.249c1.573 0 2.64.805 2.64 2.277 0 .672-.298 1.27-.781 1.634.552.326 1.021.947 1.021 1.85Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/checkmarx.svg b/assets/lib/simple-icons/icons/checkmarx.svg
new file mode 100644
index 00000000..48df0fdd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/checkmarx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Checkmarx icon</title><path d="M6.544.12A6.553 6.553 0 0 0 0 6.664v10.674a6.551 6.551 0 0 0 6.544 6.542h10.912A6.551 6.551 0 0 0 24 17.338v-.831a2.193 2.193 0 0 0-4.388 0v.83c0 1.19-.967 2.157-2.156 2.157H6.544a2.16 2.16 0 0 1-2.158-2.156V6.748c0-1.19.969-2.16 2.158-2.16 3.843.004 7.814-.009 11.612.001.556.138.892.445 1.058.848.193.47.343 1.118-.404 1.748l-6.26 4.596-1.892-2.441a2.191 2.191 0 0 0-3.075-.391 2.191 2.191 0 0 0-.391 3.076l3.198 4.133a2.197 2.197 0 0 0 3.035.424l7.252-5.301a56.68 56.68 0 0 0 1.22-.977c2.106-1.926 2.517-4.393 1.627-6.553C22.603 1.51 20.268.12 17.435.12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coda.svg b/assets/lib/simple-icons/icons/coda.svg
new file mode 100644
index 00000000..ff916e60
--- /dev/null
+++ b/assets/lib/simple-icons/icons/coda.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coda icon</title><path d="M21.194 0H2.806A2.01 2.01 0 0 0 .8 2v20c0 1.1.903 2 2.006 2h18.388a2.01 2.01 0 0 0 2.006-2v-.933c-.033-1.2-.067-3.7-.067-4.834 0-.633-.468-1.166-1.07-1.166-.668 0-1.103.4-1.437.733-1.003.9-2.508 1.067-3.812.833-.601-.133-1.17-.3-1.638-.6-1.438-.833-2.374-2.4-2.374-4.066 0-1.667.936-3.2 2.374-4.067.502-.3 1.07-.467 1.638-.6 1.27-.233 2.809-.067 3.812.833.367.334.802.734 1.437.734.602 0 1.07-.534 1.07-1.167 0-1.1.034-3.633.067-4.833V2c0-1.1-.903-2-2.006-2Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/facebooklive.svg b/assets/lib/simple-icons/icons/facebooklive.svg
new file mode 100644
index 00000000..557e22da
--- /dev/null
+++ b/assets/lib/simple-icons/icons/facebooklive.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facebook Live icon</title><path d="M9.4777 7.8108a.4611.4611 0 0 0-.462.462v7.452a.461.461 0 0 0 .462.462H23.538v.0024a.4611.4611 0 0 0 .462-.462V8.2728a.4611.4611 0 0 0-.462-.462zm-5.2862.0072C1.879 7.818 0 9.6922 0 12.007c0 2.0922 1.533 3.8267 3.5376 4.1394V13.218h-1.071v-1.211h1.071v-.924c0-1.0497.6208-1.6326 1.578-1.6326.4573 0 .9336.0877.9336.0877v1.0236h-.5237c-.5213 0-.6871.327-.6871.6563v.7866h1.1634l-.1872 1.2108H4.836v2.9286c2.0093-.3104 3.5447-2.0448 3.5447-4.137 0-2.315-1.8766-4.1891-4.1892-4.1891zm7.1676 2.4073h.635v2.9926h1.6278v.5544H11.359zm2.9452 0h.635v3.547h-.635zm1.2439 0h.7014l.8932 2.8078h.0427l.8862-2.8078h.6752l-1.2273 3.547h-.7322zm3.81.0024h2.296v.5473h-1.6609v.9407h1.5709v.5165h-1.5709v.9928h1.661v.5497h-2.296Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flathub.svg b/assets/lib/simple-icons/icons/flathub.svg
new file mode 100644
index 00000000..1efc9b09
--- /dev/null
+++ b/assets/lib/simple-icons/icons/flathub.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flathub icon</title><path d="M12 2.604l-.43.283L0 10.459v6.752l6.393 4.184L12 17.725l5.607 3.671L24 17.211v-6.752L12 2.604zm0 .828l5.434 3.556-2.717 1.778L12 10.545l-2.717-1.78-2.717-1.777L12 3.432zM6.39 7.104l5.434 3.556-5.408 3.54-5.434-3.557 5.409-3.54zm11.22 0l5.431 3.554-5.434 3.557-5.433-3.555 5.435-3.556zM.925 10.867l5.379 3.52a.123.08 0 00.027.013v5.647l-5.406-3.54v-5.64zm11.213.115l5.408 3.54v5.664l-5.408-3.54v-5.664z"/></svg>
diff --git a/assets/lib/simple-icons/icons/ghostery.svg b/assets/lib/simple-icons/icons/ghostery.svg
new file mode 100644
index 00000000..04160fcb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ghostery.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ghostery icon</title><path d="M22.058 19.93c-1.01-2.29-1.185-4.228-1.212-4.99V8.67C20.846 3.882 16.886 0 12 0S3.15 3.882 3.15 8.671v6.36c-.037.82-.236 2.7-1.207 4.899-1.306 2.955-.226 2.603.742 2.36.968-.242 3.13-1.192 3.805-.022.675 1.17 1.238 2.184 2.814 1.523 1.576-.663 2.318-.883 2.543-.883h.306c.225 0 .968.22 2.543.882 1.576.662 2.14-.353 2.814-1.522.676-1.17 2.837-.22 3.805.022.968.243 2.048.595.743-2.36M9.268 4.728c.953 0 1.725 1.198 1.725 2.676 0 1.478-.772 2.677-1.725 2.677-.953 0-1.726-1.198-1.726-2.677 0-1.478.773-2.676 1.726-2.676m2.73 10.697c-2.1 0-3.867-2.025-4.4-4.279 1.029 1.387 2.617 2.277 4.4 2.277 1.784 0 3.372-.89 4.401-2.277-.533 2.254-2.3 4.28-4.4 4.28m2.73-5.345c-.953 0-1.725-1.198-1.725-2.677 0-1.478.772-2.676 1.726-2.676.953 0 1.725 1.198 1.725 2.676 0 1.478-.772 2.677-1.725 2.677Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gofundme.svg b/assets/lib/simple-icons/icons/gofundme.svg
new file mode 100644
index 00000000..99e50574
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gofundme.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoFundMe icon</title><path d="M21.6236 4.0792l-4.2223 3.0705c-.6695.4892-.8127 1.4224-.3309 2.0922.4892.6698 1.4221.8128 2.0921.3312l4.2219-3.0706c.67-.4892.8127-1.4224.3313-2.0922a1.4883 1.4883 0 0 0-2.092-.3312zm-9.6483-1.1816c-.8278 0-1.4978.6698-1.4978 1.4976v2.5212c0 .8279.67 1.4977 1.4978 1.4977.8279 0 1.4974-.6698 1.4974-1.4977V4.3952c0-.8278-.6695-1.4976-1.4974-1.4976zM.2877 4.4103c-.4892.6698-.3387 1.603.3308 2.0922L4.841 9.573c.6695.4891 1.6029.3386 2.092-.3312.4893-.6698.3387-1.603-.3313-2.0922L2.3798 4.0792c-.6773-.4817-1.6107-.3387-2.092.331zm3.695 7.7893C6.1051 10.303 8.905 9.144 11.9753 9.144c3.0705 0 5.8702 1.159 7.9926 3.0555zm14.5556 1.6335c-1.3473 0-2.236.4433-2.8004.9926-.5948.587-1.0232 1.5058-1.0232 2.6497 0 1.302.5646 2.1445 1.0089 2.5885.843.843 1.926 1.0385 2.829 1.0385 1.4827 0 2.2804-.4586 2.7843-.9478.5043-.4892.7234-1.024.8284-1.4078H19.825c-.1056.2107-.279.3687-.4296.459-.3083.1656-.7368.1814-.797.1814-.5492 0-.8583-.1883-1.0088-.3388-.2933-.286-.4296-.7757-.4296-1.1445h5.095v-.2634c0-.7601-.12-1.9567-1.0833-2.8749-.8132-.7676-1.8358-.9325-2.6334-.9325zm.0601 1.5577c.241 0 .6845.0448 1.008.3684.1881.1882.3384.4744.399.7378h-2.77c.0455-.3085.2038-.5572.3694-.7378.2561-.2634.5797-.3684.9936-.3684zm-16.851-1.3549h2.446v.8279c.5795-.7 1.377-.9483 2.047-.9483.4893 0 .9482.1054 1.3171.3086.5044.2634.783.6397.948.9783.2786-.4892.6251-.7827.9335-.9482.4892-.2785.9632-.3387 1.4226-.3387.5038 0 1.3317.0753 1.8961.6247.61.5945.6397 1.4073.6397 1.8814v4.4553h-2.4459v-3.379c0-.7226-.0753-1.2117-.3533-1.4676-.1359-.1204-.324-.2258-.6397-.2258-.2786 0-.5044.0753-.7228.2785-.414.3988-.4437.9633-.4437 1.302v3.507H6.346v-3.3791c0-.6548-.0454-1.1816-.324-1.4676-.2106-.2258-.4891-.2784-.7374-.2784-.2634 0-.474.0451-.6695.2483-.429.414-.429 1.0687-.429 1.4977v3.3791H1.74v-6.856Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/guangzhoumetro.svg b/assets/lib/simple-icons/icons/guangzhoumetro.svg
new file mode 100644
index 00000000..e47a6b5f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/guangzhoumetro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Guangzhou Metro icon</title><path d="M16.433 12.329A16.188 16.188 0 0 1 22.118.009L17.684 0a16.2 16.2 0 0 0-4.776 11.374V24h3.525zm-8.869 0A16.174 16.174 0 0 0 1.882.009L6.319 0a16.238 16.238 0 0 1 4.773 11.374V24H7.564zm0 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gulp.svg b/assets/lib/simple-icons/icons/gulp.svg
index 3ba0f4f6..cfc65ced 100644
--- a/assets/lib/simple-icons/icons/gulp.svg
+++ b/assets/lib/simple-icons/icons/gulp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gulp icon</title><path d="M15.156 19.432l.636-1.084s-1.444.591-3.86.591c-2.418 0-3.84-.568-3.84-.568l.711 1.183.252 3.729c0 .403 1.314.718 2.936.718 1.623 0 2.938-.314 2.938-.718l.229-3.835v-.016zm.615-7.046c-.769.046-1.153.903-1.539 1.805-.143.33-.63 1.737-.948 1.563-.318-.173.413-1.329.619-2.017-.237.174-1.105.849-1.329.215-.358.314-1.129.48-1.042-.329-.191.345-.621.823-1.139.614-.673-.255.395-2.411.66-2.307.266.121-.053.6-.136.794-.186.419-.398.958-.255 1.063.24.194.904-.703.919-.719.124-.165.479-1.229.763-1.107.285.134-.711 1.541-.34 1.826.076.06.383-.03.569-.239.12-.12.078-.42.479-1.378.404-.959.764-2.156 1.039-2.066s.049.703-.051.943c-.464 1.078-1.268 2.844-.89 2.71.374-.135.569-.135.943-.569.374-.434.345-1.152.599-1.137.24.014.21.254.15.418.24-.27 1.152-.868 1.363-.284.254.688-1.304 1.692-.914 1.632.375-.045.988-.434 1.258-.793l.719-6.5s-.734.6-5.361.6-5.284-.584-5.284-.584l.613 5.93c.33-.928 1.108-2.814 2.322-2.74.554.03 1.303 1.109.658 1.139-.27.015-.3-.539-.614-.614-.239-.046-.554.135-.763.345-.404.404-1.304 2.006-1.184 2.801.15 1.018 1.407-.346 1.617-.75.149-.283.254-1.138.568-1.048.33.09-.029.974-.27 1.737-.27.869-.404 1.781-.732 1.676-.33-.104.209-1.227.178-1.422-.313.299-.883 1.02-1.631.659l.374 3.699s1.019.793 4.073.793 4.118-.793 4.118-.793l.479-4.283c-.389.39-1.617 1.063-1.692.3-.059-.614 1.333-1.498.974-1.514l.06-.069zM17.346.669l-2.659 2.8-.486 1.901c1.881.12 3.189.386 3.189.694 0 .419-2.414.757-5.391.757s-5.39-.343-5.39-.763c0-.419 2.414-.764 5.391-.764.423 0 .844 0 1.264.016l.561-2.276L16.65.039c.068-.09.28-.015.474.15.194.149.299.344.239.434v.03l-.017.016zm-3.834 5.795s-.523 0-.61-.08c-.022-.025-.036-.058-.036-.09 0-.058.039-.091.09-.11l.044.075c-.021.006-.029.015-.033.023 0 .041.314.069.555.066.239-.003.531-.023.533-.064 0-.012-.023-.023-.061-.033l.045-.072c.063.02.117.058.117.121 0 .11-.141.128-.23.141-.107.015-.412.023-.412.023h-.002z"/></svg> \ No newline at end of file
+<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>gulp icon</title><path d="M5.936 4.694c-.336 0-.675.078-1.013.222-.34.145-.676.346-1.007.605a7.133 7.133 0 00-.97.917c-.313.354-.61.745-.887 1.164-.276.42-.533.867-.78 1.32h-.001v.001c-.239.473-.448.96-.63 1.455-.18.496-.324.993-.438 1.497-.11.5-.178.987-.2 1.465a.515.515 0 00-.01.091v.095c0 .261.038.53.075.776v.002l.001.002c.068.262.175.504.31.717a1.7 1.7 0 00.537.518c.217.138.474.207.776.207.263 0 .536-.06.817-.185.279-.125.557-.288.834-.479.268-.192.536-.412.794-.66.207-.192.396-.392.583-.59l-.196.608c-.085.293-.18.576-.257.853-.085.274-.152.52-.209.738-.057.216-.096.362-.096.456v.215c0 .241.025.411.104.518a.398.398 0 00.333.152.435.435 0 00.265-.095c.081-.06.15-.137.219-.224v-.002l.002-.001c.057-.087.115-.18.164-.278.05-.101.078-.19.107-.269v-.001l.067-.24.143-.495.19-.662c.076-.247.142-.495.227-.747l.225-.75c.072-.244.14-.465.203-.661.063-.2.116-.362.16-.493.02-.065.04-.116.054-.154l.014-.032.04.018.018-.048c.076-.218.151-.427.227-.626.076-.2.152-.4.21-.597a3.762 3.762 0 00.22-1.29.637.637 0 00-.05-.255.44.44 0 00-.124-.18.499.499 0 00-.174-.1.622.622 0 00-.19-.03.655.655 0 00-.378.127c-.129.086-.225.229-.297.422v.001l-.55 1.764a3.91 3.91 0 01-.317.513v.001a9.407 9.407 0 01-1.71 1.832c-.207.17-.404.301-.6.404a1.063 1.063 0 01-.5.146.48.48 0 01-.312-.103.637.637 0 01-.204-.275 1.582 1.582 0 01-.102-.387 3.182 3.182 0 01-.028-.422c0-.413.066-.874.198-1.394.132-.52.312-1.04.539-1.579.227-.54.492-1.06.786-1.571.293-.511.605-.965.926-1.362.32-.396.64-.706.97-.95.327-.244.62-.362.902-.362a.88.88 0 01.497.145c.152.098.29.263.42.496v-.001c.134.259.269.46.385.606.12.15.259.227.408.227a.51.51 0 00.416-.208c.115-.138.17-.327.17-.556 0-.096-.01-.2-.03-.307a.87.87 0 00-.14-.334c-.314-.47-.651-.807-1.01-1.024H7.06a2.216 2.216 0 00-1.125-.317zm10.961.855a.802.802 0 00-.41.12h-.001l-.001.001a.85.85 0 00-.318.43l-1.889 4.758-.417 1.045c-.153.38-.295.76-.447 1.148a4.792 4.792 0 00-.176.551 4.995 4.995 0 01-.257.215c-.207.16-.403.281-.589.365h-.002c-.184.093-.339.129-.463.129-.082 0-.137-.02-.172-.053-.035-.033-.056-.084-.056-.166 0-.185.028-.39.084-.615.057-.22.132-.451.217-.683a8.73 8.73 0 01.274-.69l.276-.644c.086-.2.153-.382.21-.534a1.15 1.15 0 00.089-.377.71.71 0 00-.143-.437.474.474 0 00-.39-.19.466.466 0 00-.378.179 1.514 1.514 0 00-.254.42 3.917 3.917 0 00-.201.537c-.056.19-.131.368-.207.535-.113.25-.246.524-.416.826a6.64 6.64 0 01-.565.849c-.207.26-.432.479-.675.654-.24.175-.495.257-.75.257-.083 0-.138-.03-.167-.088a.472.472 0 01-.052-.225c.01-.204.046-.419.112-.643.066-.222.141-.443.226-.66.085-.21.18-.424.283-.625.105-.201.2-.391.294-.56v-.001l.248-.47c.068-.136.107-.243.135-.33l.001-.002v-.001c.01-.04.021-.09.021-.145a.419.419 0 00-.054-.214v-.001l-.001-.001a.526.526 0 00-.335-.238.65.65 0 00-.588.103c-.132.091-.231.232-.319.426a23.085 23.085 0 00-.79 1.817c-.19.505-.323.914-.418 1.229a4.666 4.666 0 00-.163.7v.001l-.02.231v.002c0 .214.029.4.09.55v.002c.068.147.148.266.249.357a.893.893 0 00.36.191c.132.04.27.059.41.059.311 0 .598-.058.861-.155s.501-.232.714-.396c.21-.163.4-.346.563-.548.12-.14.21-.285.3-.427-.04.22-.078.437-.078.614 0 .33.063.57.202.717a.695.695 0 00.523.214c.208 0 .439-.057.694-.17.253-.113.51-.262.77-.446.065-.045.127-.093.19-.141l.005.036a1 1 0 00.15.35h.001l.001.002c.08.099.17.18.291.24.123.062.273.091.45.091.253 0 .516-.059.787-.175h.002c.268-.125.537-.279.805-.48.268-.201.545-.44.812-.697l.01-.009c-.046.106-.09.212-.138.319-.219.484-.442.972-.674 1.471-.233.5-.466.994-.684 1.488l-.001.003-.001.002a3.93 3.93 0 01-.104.278c-.036.092-.085.188-.115.298v.001c-.037.1-.075.198-.095.306-.03.11-.04.217-.04.315 0 .208.059.367.172.447a.67.67 0 00.398.115c.122 0 .234-.03.335-.08v-.001h.001a.95.95 0 00.263-.22c.076-.09.14-.192.198-.308.059-.117.107-.242.154-.365l.002-.004v-.004c.008-.037.037-.121.084-.244l.162-.436.19-.512.199-.522.17-.435c.048-.124.077-.21.095-.255v-.001c.019-.038.048-.095.085-.189l.133-.313.161-.37.172-.38.142-.342.103-.226.001-.001c.085-.17.188-.358.302-.566v-.001c.123-.207.255-.405.396-.612v-.001c.152-.2.302-.397.463-.585.161-.187.33-.347.5-.498.173-.14.346-.262.521-.345a1.14 1.14 0 01.499-.128c.086 0 .143.018.178.039a.135.135 0 01.042.103c0 .08-.043.207-.144.353v.001c-.104.16-.226.33-.377.519-.162.19-.323.389-.503.597-.18.21-.352.419-.514.628a6.18 6.18 0 00-.412.603v.001a1.518 1.518 0 00-.205.53v.007a.193.193 0 01-.004.022c-.003.01-.006.014-.006.035v.057c0 .257.092.465.274.606.183.152.441.22.76.22.349 0 .67-.068.97-.204.298-.134.605-.316.92-.556h.001c.315-.236.64-.517.991-.843.341-.325.739-.685 1.184-1.08a.847.847 0 00.262-.352c.059-.138.089-.275.089-.41a.635.635 0 00-.082-.324.278.278 0 00-.248-.148.369.369 0 00-.164.043c-.053.026-.109.06-.17.101-.104.033.017.063.03.108-.538.481-1.004.887-1.373 1.206-.38.332-.699.588-.946.788a5.893 5.893 0 01-.574.41c-.132.079-.233.117-.289.117-.078 0-.132-.02-.156-.043a.142.142 0 01-.043-.108c0-.007.01-.036.035-.075.026-.04.065-.091.117-.152l.398-.465c.162-.181.324-.381.504-.6.18-.22.35-.447.502-.682.16-.23.285-.467.39-.7.101-.233.156-.455.156-.666a.837.837 0 00-.106-.426.92.92 0 00-.277-.3c-.11-.08-.238-.14-.375-.181h-.001a1.557 1.557 0 00-1.043.073 3.064 3.064 0 00-.598.332 5.677 5.677 0 00-.565.45 9.89 9.89 0 00-.38.378l.036-.176c.015-.073.025-.141.034-.207v-.001c.01-.068.013-.116.013-.149a.529.529 0 00-.126-.373v-.001h-.002c-.087-.09-.222-.129-.4-.129-.122 0-.24.07-.34.19a2.18 2.18 0 00-.263.418 4.225 4.225 0 00-.202.48l-.133.378v.001c-.046.159-.097.321-.15.485-.014.004-.027.008-.041.014a.33.33 0 00-.136.089l.003-.003c-.118.114-.251.247-.399.389-.147.142-.303.284-.464.426-.162.133-.326.275-.49.407-.162.13-.32.245-.471.345-.15.101-.29.18-.419.241a.776.776 0 01-.309.088c-.06 0-.085-.014-.1-.042h-.001a.311.311 0 01-.032-.155c0-.113.02-.243.064-.39.042-.146.086-.274.13-.385l.028-.03.374-.952c.142-.365.294-.746.465-1.152l.513-1.254c.17-.427.342-.84.503-1.234l.475-1.102c.142-.336.266-.619.37-.848l-.001.002c.059-.117.097-.227.135-.32v-.002a.934.934 0 00.055-.297c0-.196-.061-.35-.18-.443a.6.6 0 00-.384-.133Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/kde.svg b/assets/lib/simple-icons/icons/kde.svg
new file mode 100644
index 00000000..306db765
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kde.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KDE icon</title><path d="M13.881 0L9.89.382v16.435l3.949-.594V9.216l5.308 7.772 4.162-1.317-5.436-7.475 5.479-7.05L19.105.17 13.84 7.22zM4.834 4.005a.203.203 0 0 0-.123.059L3.145 5.63a.203.203 0 0 0-.03.248L4.949 8.9a7.84 7.84 0 0 0-.772 1.759l-3.367.7a.203.203 0 0 0-.162.199v2.215c0 .093.064.174.155.196l3.268.8a7.83 7.83 0 0 0 .801 2.03L2.98 19.683a.203.203 0 0 0 .027.254l1.566 1.567a.204.204 0 0 0 .249.03l2.964-1.8c.582.336 1.21.6 1.874.78l.692 3.325c.02.094.102.161.198.161h2.215a.202.202 0 0 0 .197-.155l.815-3.332a7.807 7.807 0 0 0 1.927-.811l2.922 1.915c.08.053.186.042.254-.026l1.567-1.566a.202.202 0 0 0 .03-.248l-1.067-1.758-.345.11a.12.12 0 0 1-.135-.047L17.371 15.8a6.347 6.347 0 1 1-8.255-8.674V5.488c-.401.14-.79.31-1.159.511l-.001-.002-2.99-1.96a.203.203 0 0 0-.132-.033Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kofax.svg b/assets/lib/simple-icons/icons/kofax.svg
new file mode 100644
index 00000000..782fd84f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kofax.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kofax icon</title><path d="M1.38 12.94l.576-.5 1.273 1.698h1.835l-2.001-2.593 1.85-1.683h-1.82L1.38 11.545V9.862H0v4.276h1.38z M7.353 9.726c-1.455 0-2.683.5-2.683 2.274s1.228 2.274 2.683 2.274 2.684-.5 2.684-2.274-1.228-2.274-2.684-2.274zm0 3.593c-.728 0-1.228-.41-1.228-1.319 0-.894.5-1.319 1.228-1.319.743 0 1.228.425 1.228 1.32 0 .894-.5 1.318-1.228 1.318zM11.795 14.138v-1.653h2.365v-.925h-2.365v-.742h2.547v-.956h-3.926v4.276zM22.21 11.91l1.593-2.063h-1.638L21.407 11l-.758-1.153h-1.637l1.592 2.062-1.607 2.001-1.668-4.048h-1.683l-1.759 4.276h1.471l.243-.698h1.804l.242.698h2.896l.88-1.289.879 1.289H24zm-6.276.651l.576-1.622h.015l.577 1.622z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/metrodeparis.svg b/assets/lib/simple-icons/icons/metrodeparis.svg
new file mode 100644
index 00000000..0fcf8690
--- /dev/null
+++ b/assets/lib/simple-icons/icons/metrodeparis.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Métro de Paris icon</title><path d="M17.708 18.099c-.202.152-.44.228-.714.228-.242 0-.471-.076-.688-.228-.218-.152-.327-.373-.327-.66V9.626h-.023l-2.984 6.057a1.453 1.453 0 0 1-.385.505c-.145.112-.337.168-.578.168-.24 0-.433-.056-.577-.168a1.442 1.442 0 0 1-.385-.505L8.063 9.627H8.04v7.811a.748.748 0 0 1-.339.66 1.23 1.23 0 0 1-.7.229c-.275 0-.508-.076-.702-.228-.193-.152-.29-.373-.29-.66V6.958c0-.304.096-.589.29-.853.192-.264.537-.396 1.036-.396.37 0 .655.084.856.252.2.169.38.421.542.757l3.277 6.754h.024l3.253-6.754c.16-.336.342-.588.543-.757.2-.168.485-.252.855-.252.498 0 .844.132 1.036.396.193.265.29.55.29.854v10.478c0 .288-.101.509-.302.66zm-5.732 4.156c5.658 0 10.279-4.64 10.279-10.327 0-5.62-4.603-10.183-10.279-10.183-5.674 0-10.23 4.536-10.23 10.183 0 5.59 4.715 10.327 10.23 10.327zm0 1.745C5.495 24 0 18.48 0 11.928 0 5.315 5.34 0 11.976 0 18.613 0 24 5.34 24 11.928 24 18.577 18.6 24 11.976 24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/moleculer.svg b/assets/lib/simple-icons/icons/moleculer.svg
new file mode 100644
index 00000000..d1b12bd7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/moleculer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moleculer icon</title><path d="M15.442.718a2.58 2.58 0 0 0-2.579 2.579 2.58 2.58 0 0 0 1.368 2.275L12.809 8.27a3.505 3.505 0 0 0-1.077-.172 3.505 3.505 0 0 0-3.505 3.505 3.505 3.505 0 0 0 .085.745l-2.83 1.036a2.97 2.97 0 0 0-2.513-1.39A2.97 2.97 0 0 0 0 14.962a2.97 2.97 0 0 0 2.97 2.97 2.97 2.97 0 0 0 2.969-2.97 2.97 2.97 0 0 0-.072-.634l2.716-1.193a3.505 3.505 0 0 0 3.15 1.972 3.505 3.505 0 0 0 2.129-.724l2.276 2.167a4.305 4.305 0 0 0-.749 2.426 4.305 4.305 0 0 0 4.306 4.305A4.305 4.305 0 0 0 24 18.977a4.305 4.305 0 0 0-4.305-4.305 4.305 4.305 0 0 0-2.718.969l-2.424-1.964a3.505 3.505 0 0 0 .684-2.074 3.505 3.505 0 0 0-1.521-2.89l1.204-2.891a2.58 2.58 0 0 0 .522.054 2.58 2.58 0 0 0 2.58-2.58 2.58 2.58 0 0 0-2.58-2.578Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/moscowmetro.svg b/assets/lib/simple-icons/icons/moscowmetro.svg
new file mode 100644
index 00000000..86ce57fa
--- /dev/null
+++ b/assets/lib/simple-icons/icons/moscowmetro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moscow Metro icon</title><path d="M16.603 11.85l-2.481-6.26-2.092 3.66-2.092-3.66-2.481 6.262H6.74v.941h3.736v-.941h-.553l.538-1.555 1.569 2.57 1.569-2.57.538 1.555h-.553v.941h3.751v-.941zm5.335-1.912A9.933 9.933 0 0 0 12 0C6.516 0 2.062 4.453 2.062 9.938c0 2.75 1.121 5.23 2.914 7.023a.804.804 0 0 0 1.375-.568.825.825 0 0 0-.239-.582 8.303 8.303 0 0 1-2.42-5.873c0-4.588 3.72-8.324 8.308-8.324 4.588 0 8.324 3.736 8.324 8.324a8.289 8.289 0 0 1-2.436 5.888l-7.024 7.023L12 24l7.039-7.039a9.891 9.891 0 0 0 2.899-7.023Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mtr.svg b/assets/lib/simple-icons/icons/mtr.svg
new file mode 100644
index 00000000..2938717d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mtr.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MTR icon</title><path d="M11.987 1.913c-1.9 0-3.693.321-5.298.883C2.756 4.268 0 7.826 0 12c0 4.147 2.756 7.706 6.689 9.204 1.632.562 3.425.883 5.325.883a16.74 16.74 0 0 0 5.27-.856C21.217 19.759 24 16.174 24 12.027V12c0-4.174-2.783-7.732-6.716-9.204a16.295 16.295 0 0 0-5.297-.883zM10.89 5.257h2.167v3.827c1.525-.402 2.702-1.766 2.782-3.399l2.168.027c-.16 2.73-2.22 4.95-4.897 5.378v1.793c2.676.428 4.736 2.675 4.924 5.404l-2.167.028c-.08-1.633-1.258-2.997-2.783-3.425v3.853h-2.167V14.89a3.775 3.775 0 0 0-2.81 3.425l-2.167-.028a5.868 5.868 0 0 1 4.923-5.404v-1.766C8.187 10.716 6.1 8.468 5.94 5.74l2.167-.027A3.711 3.711 0 0 0 10.89 9.11Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nbb.svg b/assets/lib/simple-icons/icons/nbb.svg
new file mode 100644
index 00000000..4d1e4ac4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nbb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NBB icon</title><path d="M2.714 11.176h.02l.167 4.327h2.105L6.5 8.482H4.652l-.915 4.288h-.02L3.63 8.482H1.495L0 15.503h1.79zm7.254.649l.01-.02c.462-.098 1.219-.481 1.453-1.583.248-1.16-.362-1.74-1.59-1.74H7.007l-1.494 7.02h2.94c1.209 0 2.153-.619 2.458-2.025.295-1.416-.549-1.613-.944-1.652zm-1.052 1.504c-.099.462-.354.757-.787.757h-.345l.334-1.602h.354c.454 0 .542.373.444.845zm.472-2.753c-.108.511-.452.669-.708.669h-.295l.285-1.347h.266c.403 0 .55.225.452.678zm6.83 2.901c.295-1.416-.55-1.613-.944-1.652l.01-.02c.462-.098 1.219-.481 1.453-1.583.248-1.16-.362-1.74-1.591-1.74h-2.831l-1.495 7.02h2.94c1.21 0 2.153-.619 2.458-2.025zm-1.996-.148c-.098.462-.354.757-.787.757h-.344l.335-1.602h.354c.452 0 .54.373.442.845zm.472-2.753c-.108.511-.453.669-.708.669h-.294l.285-1.347h.266c.402 0 .55.225.45.678zm4.97-2.094h-2.951c.75.615.51 1.669.51 1.669H19.2l2.338 1.857-2.167 1.834h-2.72c-.117.568-.712 1.424-1.125 1.676h4.148L24 12.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/oneplus.svg b/assets/lib/simple-icons/icons/oneplus.svg
new file mode 100644
index 00000000..94a9a00d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/oneplus.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OnePlus icon</title><path d="M0 3.74V24h20.26V12.428h-2.256v9.317H2.254V5.995h9.318V3.742zM18.004 0v3.74h-3.758v2.256h3.758v3.758h2.255V5.996H24V3.74h-3.758V0zm-6.45 18.756V8.862H9.562c0 .682-.228 1.189-.577 1.504-.367.297-.91.437-1.556.437h-.245v1.625h2.133v6.31h2.237z"/></svg>
diff --git a/assets/lib/simple-icons/icons/openbadges.svg b/assets/lib/simple-icons/icons/openbadges.svg
new file mode 100644
index 00000000..3b8f892e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openbadges.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Badges icon</title><path d="M18.43 18.584l-8.265-4.749 1.078-.641.719-.411.719.41 1.796 1.027 1.437.821 1.797 1.027 1.438.822 1.078.616zm-3.234 1.873l-8.24-4.774 1.797-1.027 8.24 4.75-1.797 1.051zm-3.209 1.848l-8.24-4.748 1.797-1.027 8.24 4.749zM3.03 14.246l8.24-4.748v2.079l-.719.41-1.797 1.027-1.438.821-1.796 1.027-1.437.822-1.053.615v-2.054zm0-3.722l8.24-4.749v2.08l-8.24 4.723v-2.054zm0-3.722l8.24-4.749v2.054L3.03 8.856V6.802zm9.677-4.749l1.797 1.027v9.523l-1.078-.616-.719-.41V2.052zm3.209 1.848l1.796 1.027v9.523l-1.797-1.027V3.901zm3.234 1.875l1.796 1.026v9.523l-1.796-1.027V5.775zm3.26.205l-1.49-.822-1.796-1.026-1.412-.847-1.797-1.027-1.437-.822L12.68.411 11.962 0l-.719.411-9.651 5.57v12.012l.718.41L11.987 24l1.438-.822 1.797-1.026 1.437-.821 1.797-1.027 1.437-.821 1.797-1.027.718-.411Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pagerduty.svg b/assets/lib/simple-icons/icons/pagerduty.svg
new file mode 100644
index 00000000..e28e95d4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pagerduty.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PagerDuty icon</title><path d="M16.965 1.18C15.085.164 13.769 0 10.683 0H3.73v14.55h6.926c2.743 0 4.8-.164 6.61-1.37 1.975-1.303 3.004-3.484 3.004-6.007 0-2.716-1.262-4.896-3.305-5.994zm-5.5 10.326h-4.21V3.113l3.977-.027c3.62-.028 5.43 1.234 5.43 4.128 0 3.113-2.248 4.292-5.197 4.292zM3.73 17.61h3.525V24H3.73Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/piwigo.svg b/assets/lib/simple-icons/icons/piwigo.svg
new file mode 100644
index 00000000..61935738
--- /dev/null
+++ b/assets/lib/simple-icons/icons/piwigo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Piwigo icon</title><path d="M16.712 12.777A4.713 4.713 0 0112 17.49a4.713 4.713 0 01-4.713-4.713A4.713 4.713 0 0112 8.065a4.713 4.713 0 014.712 4.712zM19.112 0c-2.572.058-2.358 1.544-8.237 1.555h-4.15A5.947 5.947 0 00.777 7.502v10.55A5.947 5.947 0 006.725 24h10.55a5.947 5.947 0 005.948-5.947V4.08l-.008-.018c0-.014.004-.028.004-.043 0-2.227-1.88-4.02-4.108-4.02zm.09 2.545a1.409 1.409 0 011.407 1.41 1.409 1.409 0 01-1.408 1.408 1.409 1.409 0 01-1.41-1.408 1.409 1.409 0 011.41-1.41zM12 6.12a6.656 6.656 0 016.656 6.656A6.656 6.656 0 0112 19.434a6.656 6.656 0 01-6.656-6.657A6.656 6.656 0 0112 6.121z"/></svg>
diff --git a/assets/lib/simple-icons/icons/powerbi.svg b/assets/lib/simple-icons/icons/powerbi.svg
new file mode 100644
index 00000000..f750ee78
--- /dev/null
+++ b/assets/lib/simple-icons/icons/powerbi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Power BI icon</title><path d="M14.064 12.537c-.725 0-1.313.545-1.313 1.217v5.353c0 .672.589 1.217 1.314 1.217.726 0 1.314-.545 1.314-1.218v-5.352c0-.672-.589-1.217-1.315-1.217zm4.132-4.888c-.726 0-1.314.545-1.314 1.218V19.07c0 .672.59 1.217 1.314 1.217.726 0 1.314-.545 1.314-1.217V8.867c0-.673-.588-1.218-1.314-1.218zm-8.262 3.035c-.725 0-1.313.545-1.313 1.218v7.205c0 .672.589 1.217 1.315 1.217.725 0 1.313-.545 1.313-1.218v-7.205c0-.672-.589-1.217-1.315-1.217zm-4.13 4.398h-.001c-.726 0-1.314.546-1.314 1.218l.001 2.807c0 .672.588 1.217 1.314 1.217.726 0 1.314-.545 1.313-1.218V16.3c0-.673-.588-1.218-1.314-1.218zM24 6.3v9.163c0 1.447-1.27 2.624-2.831 2.624h-.484v-.897h.484c1.027 0 1.863-.775 1.863-1.727V6.3c0-.952-.836-1.726-1.863-1.726H2.831C1.804 4.574.968 5.348.968 6.3v9.163c0 .952.836 1.727 1.863 1.727h.484v.897H2.83C1.27 18.086 0 16.909 0 15.462V6.3c0-1.446 1.27-2.623 2.83-2.623h18.34C22.73 3.676 24 4.853 24 6.3Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/powers.svg b/assets/lib/simple-icons/icons/powers.svg
new file mode 100644
index 00000000..baf25520
--- /dev/null
+++ b/assets/lib/simple-icons/icons/powers.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>POWERS icon</title><path d="M12.31 12.347s-.008.73-.008 1.068c0 .34.339.544.777.544v.486h-2.988v-.486c.408 0 .79-.204.79-.544v-2.673c0-.545-.52-.557-.79-.595v-.466h2.55c1.042 0 2.403-.125 2.403 1.228 0 1.403-1.233 1.441-2.304 1.441zm-.017-2.212v1.559h.494c.35 0 .777-.063.777-.772 0-.749-.318-.795-.907-.795-.254 0-.364.008-.364.008zM12 4.551l12 7.45-12 7.448L0 12zm-8.645 7.45c2.764 1.713 7.373 4.575 8.645 5.364L20.644 12A7141.71 7141.71 0 0 0 12 6.636c-1.272.787-5.881 3.649-8.645 5.365Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/retroarch.svg b/assets/lib/simple-icons/icons/retroarch.svg
new file mode 100644
index 00000000..3b7c7315
--- /dev/null
+++ b/assets/lib/simple-icons/icons/retroarch.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RetroArch icon</title><path d="M6.84 5.76L8.4 7.68H5.28l-.72 2.88H2.64l.72-2.88H1.44L0 13.44h3.84l-.48 1.92h3.36L4.2 18.24h2.82l2.34-2.88h5.28l2.34 2.88h2.82l-2.52-2.88h3.36l-.48-1.92H24l-1.44-5.76h-1.92l.72 2.88h-1.92l-.72-2.88H15.6l1.56-1.92h-2.04l-1.68 1.92h-2.88L8.88 5.76zm.24 3.84H9v1.92H7.08zm7.925 0h1.92v1.92h-1.92Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/retropie.svg b/assets/lib/simple-icons/icons/retropie.svg
new file mode 100644
index 00000000..4c4f1fd4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/retropie.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RetroPie icon</title><path d="M11.923 0a3.59 3.59 0 0 0-1.531 6.839c.04.475.18 2.156.315 3.874a1.356 1.356 0 0 1-.126.016c-.25.016-.499-.027-.748-.007-.32.024-.59.197-.914.197-.298 0-.608-.006-.88.136-.446.232-1.106.086-1.474.467-.298.308-.859.153-1.199.475-.088.083-.101.222-.213.26-.126.043-.257.07-.383.113-.247.083-.51.226-.607.486-.061.166.022.188-.146.257a1.38 1.38 0 0 0-.33.182c-.182.141-.231.336-.258.568-.002.017.003.315.003.314a.918.918 0 0 0-.221.256c-.133.235-.107.484-.009.728.107.264.198.364.209.636-.012.13.05.266.098.383.192.47.307.835.831.884l1.48 3.964C6.564 23.015 9.25 24 11.949 24c2.72 0 5.448-1.001 6.204-2.986l1.522-4.002c.327-.06.603-.178.726-.538.086-.189.174-.393.202-.6a.674.674 0 0 0-.01-.249c.062-.08.123-.15.167-.243.211-.445.162-.964-.268-1.25.114-.407-.014-.695-.385-.91-.188-.109-.29-.091-.347-.296-.053-.19-.14-.339-.307-.437-.215-.126-.458-.15-.684-.243-.093-.242-.33-.385-.565-.462-.195-.064-.398-.073-.594-.126-.203-.054-.317-.242-.524-.318-.225-.081-.463-.089-.698-.113-.253-.027-.43-.18-.669-.243-.253-.066-.502-.05-.758-.065-.258-.015-.476-.15-.73-.182-.202-.026-.403-.009-.606-.001a2.01 2.01 0 0 1-.474-.053c.136-1.721.266-3.391.3-3.843A3.59 3.59 0 0 0 11.924 0zm.95.826c.292-.007.684.158 1.009.518.518.573.59 1.257.332 1.397-.261.145-.741-.145-1.187-.529-.438-.388-.721-.863-.536-1.193.068-.123.207-.19.382-.193zM10.766 6.99a3.584 3.584 0 0 0 2.312 0c-.197 2.54-.459 5.87-.486 6.08-.014.083-.098.176-.218.242a1 1 0 0 1-.464.102c-.027 0-.664-.005-.68-.409-.032-.825-.342-4.563-.464-6.015zm2.371 3.856c.077.017.156.032.237.04.302.025.597-.048.899.015.137.028.25.101.385.134.168.04.339.047.511.043a1.68 1.68 0 0 1 .463.052c.164.044.273.156.43.204.352.106.793.02 1.095.254.059.045.08.113.145.148.068.036.143.061.218.082.13.035.265.046.396.074.151.032.311.082.43.178a.31.31 0 0 1 .12.197c.009.072.088.1.156.13.215.094.453.11.657.232a.46.46 0 0 1 .205.227l.006.02.002.006.01.044c.004.034.014.132.027.222.057.04.12.073.186.099.18.071.474.207.537.4a.208.208 0 0 1 .003.007l.004.023a.24.24 0 0 1-.001.124c-.02.075-.066.238-.095.366.105.077.228.133.317.23.046.05.081.11.1.172l.001.001.002.007.007.03c.046.185-.041.53-.136.636a2.1 2.1 0 0 0-.182.253.44.44 0 0 1 .054.166l.002.018v.016l-.001.029-.002.012-.003.018a2.249 2.249 0 0 1-.18.53c-.12.387-.574.307-.864.408-.028.154-.164.81-.284.965-.237.305-.633.282-.969.27a1.17 1.17 0 0 0-.503.089.668.668 0 0 0-.2.13c-.078.075-.09.155-.121.254-.108.352-.47.512-.795.543-.271.025-.509-.057-.772-.102a1.548 1.548 0 0 0-.773.058.87.87 0 0 0-.322.187c-.086.082-.154.173-.253.24a1.3 1.3 0 0 1-.735.211c-.261 0-.525-.066-.754-.2a1.485 1.485 0 0 0-.747-.183c-.255 0-.522.05-.747.183a1.49 1.49 0 0 1-.757.203c-.337 0-.694-.112-.926-.38-.182-.211-.457-.3-.72-.328-.378-.04-.718.123-1.09.123-.33 0-.713-.112-.889-.431-.067-.123-.067-.267-.17-.367-.135-.132-.33-.192-.509-.214-.354-.044-.702.068-1.03-.14a.586.586 0 0 1-.263-.372c-.023-.084-.161-.562-.18-.663-.029-.15-.484-.048-.637-.135-.138-.08-.208-.29-.253-.389-.044-.098-.18-.405-.19-.5l.006-.005c-.001-.012-.004-.023-.004-.036a.423.423 0 0 1 .104-.283.697.697 0 0 1-.199-.194c-.044-.085-.255-.454-.19-.64l.005-.004a.523.523 0 0 1 .18-.262c.069-.057.16-.1.237-.154a.476.476 0 0 1-.058-.054c-.1-.136-.081-.427.014-.566l.012-.02.002-.003.003-.002a.254.254 0 0 1 .029-.036c.117-.124.279-.185.437-.248a.931.931 0 0 0 .187-.097c.009-.088.003-.189.01-.246a.27.27 0 0 1 .093-.178c.16-.17.522-.23.707-.296a.817.817 0 0 0 .22-.108c.04-.03.036-.133.07-.18.09-.126.259-.19.408-.23.167-.045.342-.053.508-.1a.778.778 0 0 0 .233-.098c.055-.039.082-.113.146-.154.323-.205.74-.116 1.093-.237.125-.043.211-.136.341-.177.176-.056.37-.073.555-.064.164.008.334-.009.493-.05.142-.035.26-.11.408-.136.327-.057.652.03.98-.02.043.551.083 1.081.11 1.475-.67.17-1.125.495-1.125.87 0 .553.983 1 2.195 1 1.212 0 2.195-.447 2.195-1 0-.366-.435-.683-1.08-.858.034-.404.072-.866.123-1.508zm3.865 2.053c-.318 0-.626.059-.891.17-.375.157-.6.407-.634.703a.645.645 0 0 0 .022.252l.02.409.01.2.002.027a1.288 1.288 0 0 0-.347-.207 2.306 2.306 0 0 0-.892-.17c-.319 0-.627.058-.892.169-.375.157-.6.407-.633.703a.645.645 0 0 0 .023.258l.02.402.01.201a.467.467 0 0 0 .073.268l.026.044c.117.214.336.388.63.501.232.09.493.137.754.137.34 0 .662-.078.93-.226.324-.178.51-.436.526-.725a.7.7 0 0 1 .006-.074c.004-.03.008-.058.011-.119l.023-.416a.656.656 0 0 0 .026-.173c0-.016-.003-.032-.004-.049.116.106.263.195.438.262.233.09.493.137.755.137.34 0 .661-.078.93-.226.324-.179.51-.436.525-.725.002-.042.004-.056.006-.074a.948.948 0 0 0 .011-.12l.023-.41a.656.656 0 0 0 .026-.178c.001-.299-.192-.56-.543-.735a2.312 2.312 0 0 0-.99-.216zm0 .27a2.03 2.03 0 0 1 .862.183c.164.082.402.243.401.498 0 .09-.033.175-.092.254l-.134.116a1.033 1.033 0 0 1-.217.143c-.01.004-.018.01-.028.013a2.06 2.06 0 0 1-.788.149c-.293 0-.571-.056-.807-.16l-.025-.01a1.037 1.037 0 0 1-.207-.14l-.132-.114a.414.414 0 0 1-.09-.299c.023-.194.19-.366.47-.484.232-.098.505-.149.787-.149zm-1.212 1.266c.074.06.16.112.256.157.017.011.037.017.054.024.268.128.58.198.906.198.327 0 .642-.068.912-.196l.023-.013a1.34 1.34 0 0 0 .274-.164c-.006.08-.011.077-.016.177-.012.228-.198.399-.385.502a1.68 1.68 0 0 1-.8.193 1.85 1.85 0 0 1-.658-.119c-.192-.074-.389-.194-.49-.38-.059-.103-.061-.08-.067-.194a57.658 57.658 0 0 0-.009-.185zm-1.498.117a2.03 2.03 0 0 1 .862.184c.164.08.401.242.4.497a.42.42 0 0 1-.093.255l-.132.115a1.03 1.03 0 0 1-.213.14 2.053 2.053 0 0 1-.82.165 2.02 2.02 0 0 1-.802-.157l-.03-.013a1.032 1.032 0 0 1-.207-.139l-.133-.116a.413.413 0 0 1-.089-.297c.022-.195.19-.367.47-.485a2.04 2.04 0 0 1 .787-.149zm-1.212 1.266c.08.064.173.122.28.17l.033.013c.268.127.577.196.903.196.327 0 .642-.067.912-.196l.025-.014c.103-.047.194-.102.271-.163-.005.08-.01.078-.016.177-.011.228-.197.4-.385.502a1.665 1.665 0 0 1-.8.193 1.82 1.82 0 0 1-.657-.119c-.192-.074-.389-.194-.491-.38-.058-.104-.06-.08-.066-.194l-.01-.185zm-8.06 2.297c.097.063.205.11.318.14.408.11 1.054-.132 1.236.345.208.541.85.741 1.381.698.43-.035 1.06-.306 1.41.092.404.46 1.092.576 1.665.425.525-.138.91-.457 1.478-.238.627.24 1.206.454 1.853.102.455-.247.623-.592 1.215-.492.522.089 1.02.2 1.503-.104.352-.22.362-.73.783-.78.37-.044.731.044 1.083-.139h.002l-.036.094-1.013 2.66c-.328.863-1.097 1.584-2.223 2.087-1.048.467-2.372.725-3.728.725-1.347 0-2.656-.255-3.686-.717-1.11-.498-1.866-1.217-2.188-2.08L5.02 18.115Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/roots.svg b/assets/lib/simple-icons/icons/roots.svg
index ac68664d..3aea3419 100644
--- a/assets/lib/simple-icons/icons/roots.svg
+++ b/assets/lib/simple-icons/icons/roots.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roots icon</title><path d="M10.285 7.975V4.041c0-.135-.109-.244-.244-.245-.137.001-.245.11-.245.245.007 2.524-.991 4.946-2.775 6.732L1.383 16.43c-.076.076-.095.194-.045.29.262.507.559.995.889 1.46.041.059.106.096.178.103h.021c.065 0 .128-.026.173-.073l5.915-5.938c1.138-1.139 1.776-2.686 1.771-4.297zM17.998.779c-.076-.043-.169-.043-.243 0-.076.045-.123.125-.123.213V11.91c0 1.622.63 3.148 1.774 4.296l1.995 2.007c.046.046.108.073.175.073l.021-.003c.07-.006.137-.044.179-.101 1.448-2.038 2.226-4.476 2.223-6.976-.007-4.295-2.293-8.262-6.001-10.426V.779zM6.367 4.041V.992c0-.086-.045-.168-.119-.213-.076-.045-.17-.045-.246 0C2.292 2.943.008 6.911 0 11.205c0 .342.018.709.057 1.12.01.095.072.177.16.21.027.01.057.014.084.015.064-.001.126-.027.172-.073l4.123-4.138c1.139-1.14 1.775-2.685 1.771-4.296v-.002zm10.614 14.6c-1.784-1.784-2.784-4.207-2.778-6.73V7.975c.001-.136-.109-.247-.244-.248-.136.002-.245.112-.245.248 0 2.543-.986 4.935-2.776 6.732l-5.914 5.937c-.097.096-.098.252-.002.349.01.011.02.02.031.026 2.023 1.455 4.455 2.238 6.947 2.235 2.492.003 4.923-.78 6.947-2.235.059-.042.095-.106.098-.18.009-.07-.016-.144-.067-.195l-1.997-2.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roots icon</title><path d="M8.513 12.27L2.6 18.177a.244.244 0 0 1-.174.072l-.02-.001a.248.248 0 0 1-.178-.102 11.973 11.973 0 0 1-.889-1.452.247.247 0 0 1 .045-.287l5.638-5.628a9.403 9.403 0 0 0 2.776-6.694.245.245 0 0 1 .49 0v3.911a6 6 0 0 1-1.774 4.274zM18 .842a.242.242 0 0 0-.245 0 .246.246 0 0 0-.122.212v10.855a6 6 0 0 0 1.773 4.273l1.997 1.995a.246.246 0 0 0 .173.072l.021-.001a.256.256 0 0 0 .18-.102A11.902 11.902 0 0 0 24 11.21c0-4.255-2.298-8.228-6-10.367zM6.367 4.085V1.054A.244.244 0 0 0 6 .842C2.3 2.982 0 6.954 0 11.21c0 .34.018.705.056 1.115.01.094.072.174.161.208a.294.294 0 0 0 .084.014.245.245 0 0 0 .172-.071l4.123-4.118a5.999 5.999 0 0 0 1.771-4.273zm10.614 14.52a9.402 9.402 0 0 1-2.778-6.696V7.996a.245.245 0 1 0-.489 0 9.401 9.401 0 0 1-2.776 6.696l-5.915 5.905a.244.244 0 0 0-.071.193.243.243 0 0 0 .102.18A11.929 11.929 0 0 0 12 23.192a11.93 11.93 0 0 0 6.947-2.222.237.237 0 0 0 .1-.18.239.239 0 0 0-.068-.193l-1.998-1.992Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shanghaimetro.svg b/assets/lib/simple-icons/icons/shanghaimetro.svg
new file mode 100644
index 00000000..bda77cfd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/shanghaimetro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shanghai Metro icon</title><path d="M20.383 11.664h-1.716l-3.432-4.487-3.073 3.606L9.31 7.177l-3.513 4.487H3.63c.185-4.464 3.872-8.047 8.383-8.047 3.953 0 7.27 2.748 8.15 6.424h3.687C22.91 4.359 17.96.01 12 .01c-6.632 0-12 5.369-12 12 0 1.102.15 2.169.429 3.177h6.516l2.412-2.55 2.805 3.478 2.945-3.502 1.902 2.61h2.69c-1.287 2.967-4.256 5.495-7.699 5.495-2.84 0-5.357-1.681-6.875-3.942H.997C2.852 21.02 7.072 23.988 12 23.988c6.632 0 12-5.368 12-12 0-.116 0-.231-.012-.347l-3.605.023Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tui.svg b/assets/lib/simple-icons/icons/tui.svg
new file mode 100644
index 00000000..34c1f680
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tui.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TUI icon</title><path d="M 24,4.5167394 A 2.1169833,2.1169833 0 0 1 21.883017,6.6337226 2.1169833,2.1169833 0 0 1 19.766033,4.5167394 2.1169833,2.1169833 0 0 1 21.883017,2.3997561 2.1169833,2.1169833 0 0 1 24,4.5167394 Z M 1.1397405,7.7475086 H 6.8452135 C 7.4094414,7.7475086 7.8258416,7.9246762 7.9917247,8.7191088 8.1767914,9.6026898 8.1045702,10.217699 7.1058868,10.287663 L 5.3150273,10.419692 C 6.6330638,18.749954 14.342674,21.465019 18.537145,12.492666 19.232274,11.007618 19.459093,10.737917 20.219673,10.926369 21.251081,11.182529 21.392138,11.716288 20.896746,13.209235 17.273274,24.265846 5.0780515,25.375118 2.685725,10.604759 L 1.2311454,10.709706 C 0.04626669,10.79434 0,9.7956558 0,9.2404558 0,8.1413397 0.40737258,7.7475086 1.1397405,7.7475086 Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/uploaded.svg b/assets/lib/simple-icons/icons/uploaded.svg
new file mode 100644
index 00000000..b62084ee
--- /dev/null
+++ b/assets/lib/simple-icons/icons/uploaded.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Uploaded icon</title><path d="m14.651 13.862c0 2.5477-2.0653 4.613-4.613 4.613-2.5477 0-4.613-2.0653-4.613-4.613 0-6.1507 9.226-6.1507 9.226 0zm3.497 6.04c-1.33 1.334-3.109 3.957-8.119 4.095-5.451 0.148-9.959-4.484-9.978-10.282-0.01-2.945 0.774-4.659 2.82-6.792 1.224-1.278 7.004-6.923 7.004-6.923 2.052 2.052 0.96 4.873-0.108 5.93l-3.732 3.705c-0.47 0.465-1.968 1.925-1.931 4.444 0.045 3.202 2.51 5.85 5.799 5.8 2.632-0.042 3.756-1.356 4.376-1.98l3.841-3.828c1.103-1.093 3.77-2.027 5.829 5e-3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yoast.svg b/assets/lib/simple-icons/icons/yoast.svg
new file mode 100644
index 00000000..20da11d2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/yoast.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yoast icon</title><path d="M15.864 0L14.55 3.652H5.422A3.592 3.592 0 0 0 1.84 7.233v9.529a3.592 3.592 0 0 0 3.582 3.581h1.495a4.9 4.9 0 0 1-.18.029l-.34.047V24h.391c2.76 0 4.442-1.385 5.706-3.657h9.666V7.233a3.593 3.593 0 0 0-3.253-3.565L20.275 0zm.556.778h2.738l-6.055 16.22c-1.55 4.335-3.186 6.064-5.924 6.21v-2.12c1.767-.354 2.418-1.461 2.785-2.408a3.902 3.902 0 0 0 0-2.828L6.43 6.772h2.488l2.512 7.86z"/></svg> \ No newline at end of file
diff --git a/assets/lib/twemoji/twemoji.min.js b/assets/lib/twemoji/twemoji.min.js
index 9e564b90..93a52a89 100644
--- a/assets/lib/twemoji/twemoji.min.js
+++ b/assets/lib/twemoji/twemoji.min.js
@@ -1,2 +1,2 @@
/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */
-var twemoji=function(){"use strict";var twemoji={base:"https://twemoji.maxcdn.com/v/12.1.5/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this)}},parse:parse,replace:replace,test:test},escaper={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5\udeeb\udeec\udef4-\udefa\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd71\udd73-\udd76\udd7a-\udda2\udda5-\uddaa\uddae-\uddb4\uddb7\uddba\uddbc-\uddca\uddd0\uddde-\uddff\ude70-\ude73\ude78-\ude7a\ude80-\ude82\ude90-\ude95]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return"".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode)}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText)}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true))}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname])}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img)}if(!img)fragment.appendChild(createText(rawText,false));img=null}if(modified){if(i<text.length){fragment.appendChild(createText(text.slice(i),true))}subnode.parentNode.replaceChild(fragment,subnode)}}return node}function parseString(str,options){return replace(str,function(rawText){var ret=rawText,iconId=grabTheRightIcon(rawText),src=options.callback(iconId,options),attrib,attrname;if(iconId&&src){ret="<img ".concat('class="',options.className,'" ','draggable="false" ','alt="',rawText,'"',' src="',src,'"');attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&ret.indexOf(" "+attrname+"=")===-1){ret=ret.concat(" ",attrname,'="',escapeHTML(attrib[attrname]),'"')}}ret=ret.concat("/>")}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how}}return(typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i<unicodeSurrogates.length){c=unicodeSurrogates.charCodeAt(i++);if(p){r.push((65536+(p-55296<<10)+(c-56320)).toString(16));p=0}else if(55296<=c&&c<=56319){p=c}else{r.push(c.toString(16))}}return r.join(sep||"-")}}(); \ No newline at end of file
+var twemoji=function(){"use strict";var twemoji={base:"https://twemoji.maxcdn.com/v/13.0.0/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this)}},parse:parse,replace:replace,test:test},escaper={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udeeb\udeec\udef4-\udefc\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78\udd7a-\uddb4\uddb7\uddba\uddbc-\uddcb\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7a\ude80-\ude86\ude90-\udea8\udeb0-\udeb6\udec0-\udec2\uded0-\uded6]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return"".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode)}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText)}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true))}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname])}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img)}if(!img)fragment.appendChild(createText(rawText,false));img=null}if(modified){if(i<text.length){fragment.appendChild(createText(text.slice(i),true))}subnode.parentNode.replaceChild(fragment,subnode)}}return node}function parseString(str,options){return replace(str,function(rawText){var ret=rawText,iconId=grabTheRightIcon(rawText),src=options.callback(iconId,options),attrib,attrname;if(iconId&&src){ret="<img ".concat('class="',options.className,'" ','draggable="false" ','alt="',rawText,'"',' src="',src,'"');attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&ret.indexOf(" "+attrname+"=")===-1){ret=ret.concat(" ",attrname,'="',escapeHTML(attrib[attrname]),'"')}}ret=ret.concat("/>")}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how}}return(typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i<unicodeSurrogates.length){c=unicodeSurrogates.charCodeAt(i++);if(p){r.push((65536+(p-55296<<10)+(c-56320)).toString(16));p=0}else if(55296<=c&&c<=56319){p=c}else{r.push(c.toString(16))}}return r.join(sep||"-")}}(); \ No newline at end of file
diff --git a/exampleSite/config.toml b/exampleSite/config.toml
index 0041afe0..70b50a2e 100644
--- a/exampleSite/config.toml
+++ b/exampleSite/config.toml
@@ -142,7 +142,7 @@ enableEmoji = true
gravatarEmail = ""
# URL of avatar shown in home page
avatarURL = "/images/avatar.png"
- # title shown in home page
+ # title shown in home page (HTML format is supported)
title = ""
# subtitle shown in home page
subtitle = "A Clean, Elegant but Advanced Hugo Theme"
@@ -342,7 +342,7 @@ enableEmoji = true
gravatarEmail = ""
# 主页显示头像的 URL
avatarURL = "/images/avatar.png"
- # 主页显示的网站标题
+ # 主页显示的网站标题 (支持 HTML 格式)
title = ""
# 主页显示的网站副标题
subtitle = "一个简洁、优雅且高效的 Hugo 主题"
@@ -538,7 +538,7 @@ enableEmoji = true
gravatarEmail = ""
# URL of avatar shown in home page
avatarURL = "/images/avatar.png"
- # title shown in home page
+ # title shown in home page (HTML format is supported)
title = ""
# subtitle shown in home page
subtitle = "Un thème Hugo simple, élégant et efficace"
@@ -876,12 +876,16 @@ enableEmoji = true
highlight = true
enableQQ = false
serverURLs = ""
- # emoji config file name, default is "google.yml"
+ # emoji data file name, default is "google.yml"
# ("apple.yml", "google.yml", "facebook.yml", "twitter.yml")
- # located in "assets/data/emoji/" directory, where you can put your config file
- # emoji 配置文件名称, 默认是 "facebook.yml"
+ # located in "themes/LoveIt/assets/data/emoji/" directory
+ # you can store your own data files in the same path under your project:
+ # "assets/data/emoji/"
+ # emoji 数据文件名称, 默认是 "google.yml"
# ("apple.yml", "google.yml", "facebook.yml", "twitter.yml")
- # 位于 "assets/data/emoji/" 目录, 你可以在此存放你自己的配置文件
+ # 位于 "themes/LoveIt/assets/data/emoji/" 目录
+ # 可以在你的项目下相同路径存放你自己的数据文件:
+ # "assets/data/emoji/"
emoji = ""
# Facebook comment config (https://developers.facebook.com/docs/plugins/comments)
# Facebook 评论系统设置 (https://developers.facebook.com/docs/plugins/comments)
@@ -916,6 +920,19 @@ enableEmoji = true
label = ""
lightTheme = "github-light"
darkTheme = "github-dark"
+ # Third-party library config
+ # 第三方库配置
+ [params.page.library]
+ [params.page.library.css]
+ # someCSS = "some.css"
+ # located in "assets/" 位于 "assets/"
+ # Or 或者
+ # someCSS = "https://cdn.example.com/some.css"
+ [params.page.library.js]
+ # someJavascript = "some.js"
+ # located in "assets/" 位于 "assets/"
+ # Or 或者
+ # someJavascript = "https://cdn.example.com/some.js"
# SEO config
# SEO 配置
[params.page.seo]
@@ -975,9 +992,6 @@ enableEmoji = true
# whether to anonymize IP
# 是否匿名化用户 IP
anonymizeIP = true
- # whether to use cookie
- # 是否使用 cookie
- cookie = false
# Fathom Analytics
[params.analytics.fathom]
id = ""
@@ -985,70 +999,31 @@ enableEmoji = true
# 自行托管追踪器时的主机路径
server = ""
- # CSS and JS Files CDN
- # CSS 和 JS 文件的 CDN 设置
+ # Cookie consent config
+ # Cookie 许可配置
+ [params.cookieconsent]
+ enable = false
+ # text strings used for Cookie consent banner
+ # 用于 Cookie 许可横幅的文本字符串
+ [params.cookieconsent.content]
+ message = ""
+ dismiss = ""
+ link = ""
+
+ # CDN config for third-party library files
+ # 第三方库文件的 CDN 设置
[params.cdn]
- # normalize.css@8.0.1 https://github.com/necolas/normalize.css
- normalizeCSS = ""
- # fontawesome-free@5.13.0 https://fontawesome.com/
- fontawesomeFreeCSS = ""
- # simple-icons@2.9.0 https://github.com/simple-icons/simple-icons
- # ("https://cdn.jsdelivr.net/npm/simple-icons@v2/icons/")
- simpleIconsPrefix = ""
- # animate.css@3.7.2 https://github.com/daneden/animate.css
- animateCSS = ""
- # smooth-scroll@16.1.3 https://github.com/cferdinandi/smooth-scroll
- smoothScrollJS = ""
- # autocomplete.js@0.37.1 https://github.com/algolia/autocomplete.js
- autocompleteJS = ""
- # lunr.js@2.3.8 https://lunrjs.com/
- lunrJS = ""
- # algoliasearch@4.2.0 https://github.com/algolia/algoliasearch-client-javascript
- algoliasearchJS = ""
- # lazysizes@5.2.0 https://github.com/aFarkas/lazysizes
- lazysizesJS = ""
- # object-fit-images@3.2.4 https://github.com/fregante/object-fit-images
- objectFitImagesJS = ""
- # twemoji@12.1.5 https://github.com/twitter/twemoji
- twemojiJS = ""
- # lightgallery.js@1.1.3 https://github.com/sachinchoolur/lightgallery.js
- # lg-thumbnail.js@1.1.0 https://github.com/sachinchoolur/lg-thumbnail.js
- # lg-zoom.js@1.0.1 https://github.com/sachinchoolur/lg-zoom.js
- lightgalleryCSS = ""
- lightgalleryJS = ""
- lightgalleryThumbnailJS = ""
- lightgalleryZoomJS = ""
- # clipboard.js@2.0.6 https://github.com/zenorocha/clipboard.js
- clipboardJS = ""
- # sharer.js@0.4.0 https://github.com/ellisonleao/sharer.js
- sharerJS = ""
- # typeit@7.0.4 https://github.com/alexmacarthur/typeit
- typeitJS = ""
- # katex@0.11.1 https://katex.org/
- katexCSS = ""
- katexJS = ""
- katexAutoRenderJS = ""
- katexCopyTexCSS = ""
- katexCopyTexJS = ""
- katexMhchemJS = ""
- # mermaid@8.5.0 https://github.com/knsv/mermaid
- mermaidJS = ""
- # echarts@4.7.0 https://echarts.apache.org/
- echartsJS = ""
- echartsMacaronsJS = ""
- # mapbox-gl@1.10.0 https://docs.mapbox.com/mapbox-gl-js
- mapboxGLCSS = ""
- mapboxGLJS = ""
- # aplayer@1.10.1 https://github.com/MoePlayer/APlayer
- aplayerCSS = ""
- aplayerJS = ""
- # meting@2.0.1 https://github.com/metowolf/MetingJS
- metingJS = ""
- # gitalk@1.6.2 https://github.com/gitalk/gitalk
- gitalkCSS = ""
- gitalkJS = ""
- # valine@1.4.14 https://valine.js.org/
- valineJS = ""
+ # CDN data file name, disabled by default
+ # ("jsdelivr.yml")
+ # located in "themes/LoveIt/assets/data/cdn/" directory
+ # you can store your own data files in the same path under your project:
+ # "assets/data/cdn/"
+ # CDN 数据文件名称, 默认不启用
+ # ("jsdelivr.yml")
+ # 位于 "themes/LoveIt/assets/data/cdn/" 目录
+ # 可以在你的项目下相同路径存放你自己的数据文件:
+ # "assets/data/cdn/"
+ data = "jsdelivr.yml"
# Markup related configuration in Hugo
# Hugo 解析文档的配置
diff --git a/exampleSite/content/about.en.md b/exampleSite/content/about/index.en.md
index 1e38e245..2f6002d3 100644
--- a/exampleSite/content/about.en.md
+++ b/exampleSite/content/about/index.en.md
@@ -79,6 +79,7 @@ math:
* :(fas fa-align-left fa-fw): **Custom style** shortcode
* :(fas fa-i-cursor fa-fw): **Animated typing** supported by [TypeIt](https://typeitjs.com/)
* :(fas fa-arrow-down fa-fw): **Dynamic scroll** supported by [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll)
+* :(fas fa-cookie-bite fa-fw): **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
* ...
### License
@@ -112,3 +113,4 @@ Thanks to the authors of following resources included in the theme:
* [MetingJS](https://github.com/metowolf/MetingJS)
* [Gitalk](https://github.com/gitalk/gitalk)
* [Valine](https://valine.js.org/)
+* [cookieconsent](https://github.com/osano/cookieconsent)
diff --git a/exampleSite/content/about.fr.md b/exampleSite/content/about/index.fr.md
index 9ec0e219..637c9968 100644
--- a/exampleSite/content/about.fr.md
+++ b/exampleSite/content/about/index.fr.md
@@ -84,6 +84,7 @@ Welcome to take the time to propose a translation by [:(fas fa-code-branch fa-fw
* :(fas fa-align-left fa-fw): **Custom style** shortcode
* :(fas fa-i-cursor fa-fw): **Animated typing** supported by [TypeIt](https://typeitjs.com/)
* :(fas fa-arrow-down fa-fw): **Dynamic scroll** supported by [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll)
+* :(fas fa-cookie-bite fa-fw): **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
* ...
### License
@@ -117,3 +118,4 @@ Thanks to the authors of following resources included in the theme:
* [MetingJS](https://github.com/metowolf/MetingJS)
* [Gitalk](https://github.com/gitalk/gitalk)
* [Valine](https://valine.js.org/)
+* [cookieconsent](https://github.com/osano/cookieconsent)
diff --git a/exampleSite/content/about.zh-cn.md b/exampleSite/content/about/index.zh-cn.md
index 8b4f6401..4ae36025 100644
--- a/exampleSite/content/about.zh-cn.md
+++ b/exampleSite/content/about/index.zh-cn.md
@@ -79,6 +79,7 @@ math:
* :(fas fa-align-left fa-fw): 支持**自定义样式**的 shortcode
* :(fas fa-i-cursor fa-fw): 支持基于 [TypeIt](https://typeitjs.com/) 的**打字动画** shortcode
* :(fas fa-arrow-down fa-fw): 支持基于 [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) 的**滚动动画**
+* :(fas fa-cookie-bite fa-fw): 支持基于 [cookieconsent](https://github.com/osano/cookieconsent) 的 **Cookie 许可横幅**
* ...
### 许可协议
@@ -112,3 +113,4 @@ LoveIt 主题中用到了以下项目,感谢它们的作者:
* [MetingJS](https://github.com/metowolf/MetingJS)
* [Gitalk](https://github.com/gitalk/gitalk)
* [Valine](https://valine.js.org/)
+* [cookieconsent](https://github.com/osano/cookieconsent)
diff --git a/exampleSite/content/posts/basic-markdown-syntax.en.md b/exampleSite/content/posts/basic-markdown-syntax/index.en.md
index 99a6c53b..99a6c53b 100644
--- a/exampleSite/content/posts/basic-markdown-syntax.en.md
+++ b/exampleSite/content/posts/basic-markdown-syntax/index.en.md
diff --git a/exampleSite/content/posts/basic-markdown-syntax.fr.md b/exampleSite/content/posts/basic-markdown-syntax/index.fr.md
index 2539bedb..2539bedb 100644
--- a/exampleSite/content/posts/basic-markdown-syntax.fr.md
+++ b/exampleSite/content/posts/basic-markdown-syntax/index.fr.md
diff --git a/exampleSite/content/posts/basic-markdown-syntax.zh-cn.md b/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md
index 70f42b71..70f42b71 100644
--- a/exampleSite/content/posts/basic-markdown-syntax.zh-cn.md
+++ b/exampleSite/content/posts/basic-markdown-syntax/index.zh-cn.md
diff --git a/exampleSite/content/posts/emoji-support.en.md b/exampleSite/content/posts/emoji-support/index.en.md
index 8e4f6a40..8e4f6a40 100644
--- a/exampleSite/content/posts/emoji-support.en.md
+++ b/exampleSite/content/posts/emoji-support/index.en.md
diff --git a/exampleSite/content/posts/emoji-support.fr.md b/exampleSite/content/posts/emoji-support/index.fr.md
index cc959380..cc959380 100644
--- a/exampleSite/content/posts/emoji-support.fr.md
+++ b/exampleSite/content/posts/emoji-support/index.fr.md
diff --git a/exampleSite/content/posts/emoji-support.zh-cn.md b/exampleSite/content/posts/emoji-support/index.zh-cn.md
index 2411987e..2411987e 100644
--- a/exampleSite/content/posts/emoji-support.zh-cn.md
+++ b/exampleSite/content/posts/emoji-support/index.zh-cn.md
diff --git a/exampleSite/content/posts/theme-documentation-basics.en.md b/exampleSite/content/posts/theme-documentation-basics/index.en.md
index 8aba8385..1eb838cc 100644
--- a/exampleSite/content/posts/theme-documentation-basics.en.md
+++ b/exampleSite/content/posts/theme-documentation-basics/index.en.md
@@ -307,7 +307,7 @@ Please open the code block below to view the complete sample configuration :(far
gravatarEmail = ""
# URL of avatar shown in home page
avatarURL = "/images/avatar.png"
- # {{< version 0.2.5 >}} title shown in home page
+ # {{< version 0.2.7 changed >}} title shown in home page (HTML format is supported)
title = ""
# subtitle shown in home page
subtitle = "This is My New Hugo Site"
@@ -516,9 +516,11 @@ Please open the code block below to view the complete sample configuration :(far
highlight = true
enableQQ = false
serverURLs = ""
- # {{< version 0.2.6 >}} emoji config file name, default is "facebook.yml"
+ # {{< version 0.2.6 >}} emoji data file name, default is "google.yml"
# ("apple.yml", "google.yml", "facebook.yml", "twitter.yml")
- # located in "assets/data/emoji/" directory, where you can put your config file
+ # located in "themes/LoveIt/assets/data/emoji/" directory
+ # you can store your own data files in the same path under your project:
+ # "assets/data/emoji/"
emoji = ""
# {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook comment" >}} config
[params.page.comment.facebook]
@@ -549,6 +551,18 @@ Please open the code block below to view the complete sample configuration :(far
label = ""
lightTheme = "github-light"
darkTheme = "github-dark"
+ # {{< version 0.2.7 >}} Third-party library config
+ [params.page.library]
+ [params.page.library.css]
+ # someCSS = "some.css"
+ # located in "assets/"
+ # Or
+ # someCSS = "https://cdn.example.com/some.css"
+ [params.page.library.js]
+ # someJavascript = "some.js"
+ # located in "assets/"
+ # Or
+ # someJavascript = "https://cdn.example.com/some.js"
# {{< version 0.2.0 >}} SEO config
[params.page.seo]
# Publisher info
@@ -596,77 +610,29 @@ Please open the code block below to view the complete sample configuration :(far
id = ""
# whether to anonymize IP
anonymizeIP = true
- # whether to use cookie
- cookie = false
# Fathom Analytics
[params.analytics.fathom]
id = ""
# server url for your tracker if you're self hosting
server = ""
- # CSS and JS Files CDN config
+ # {{< version 0.2.7 >}} Cookie consent config
+ [params.cookieconsent]
+ enable = true
+ # text strings used for Cookie consent banner
+ [params.cookieconsent.content]
+ message = ""
+ dismiss = ""
+ link = ""
+
+ # {{< version 0.2.7 changed >}} CDN config for third-party library files
[params.cdn]
- # {{< version 0.2.0 >}} {{< link "https://github.com/necolas/normalize.css" "normalize.css" >}}@8.0.1
- normalizeCSS = ""
- # {{< link "https://fontawesome.com/" "fontawesome-free" >}}@5.13.0
- fontawesomeFreeCSS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/simple-icons/simple-icons" "simple-icons" >}}@2.9.0
- # ("https://cdn.jsdelivr.net/npm/simple-icons@v2/icons/")
- simpleIconsPrefix = ""
- # animate.css@3.7.2 https://github.com/daneden/animate.css
- animateCSS = ""
- # {{< link "https://github.com/cferdinandi/smooth-scroll" "smooth-scroll" >}}@16.1.3
- smoothScrollJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/algolia/autocomplete.js" "autocomplete.js" >}}@0.37.1
- autocompleteJS = ""
- # {{< version 0.2.0 >}} {{< link "https://lunrjs.com/" "lunr.js" >}}@2.3.8
- lunrJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/algolia/algoliasearch-client-javascript" "algoliasearch" >}}@4.2.0
- algoliasearchJS = ""
- # {{< link "https://github.com/aFarkas/lazysizes" "lazysizes" >}}@5.2.0
- lazysizesJS = ""
- # {{< version 0.2.3 >}} {{< link "https://github.com/fregante/object-fit-images" "object-fit-images" >}}@3.2.4
- objectFitImagesJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/twitter/twemoji" "twemoji" >}}@12.1.5
- twemojiJS = ""
- # {{< link "https://github.com/sachinchoolur/lightgallery.js" "lightgallery.js" >}}@1.1.3
- # {{< link "https://github.com/sachinchoolur/lg-thumbnail.js" "lg-thumbnail.js" >}}@1.1.0
- # {{< link "https://github.com/sachinchoolur/lg-zoom.js" "lg-zoom.js" >}}@1.0.1
- lightgalleryCSS = ""
- lightgalleryJS = ""
- lightgalleryThumbnailJS = ""
- lightgalleryZoomJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/zenorocha/clipboard.js" "clipboard.js" >}}@2.0.6
- clipboardJS = ""
- # {{< link "https://github.com/ellisonleao/sharer.js" "sharer.js" >}}@0.4.0
- sharerJS = ""
- # {{< link "https://github.com/alexmacarthur/typeit" "typeit" >}}@7.0.4
- typeitJS = ""
- # {{< link "https://github.com/KaTeX/KaTeX" "katex" >}}@0.11.1
- katexCSS = ""
- katexJS = ""
- katexAutoRenderJS = ""
- katexCopyTexCSS = ""
- katexCopyTexJS = ""
- katexMhchemJS = ""
- # {{< link "https://github.com/knsv/mermaid" "mermaid" >}}@8.5.0
- mermaidJS = ""
- # {{< link "https://echarts.apache.org/" "echarts" >}}@4.7.0
- echartsJS = ""
- echartsMacaronsJS = ""
- # {{< version 0.2.0 >}} {{< link "https://docs.mapbox.com/mapbox-gl-js" mapbox-gl >}}@1.10.0
- mapboxGLCSS = ""
- mapboxGLJS = ""
- # {{< link "https://github.com/MoePlayer/APlayer" "aplayer" >}}@1.10.1
- aplayerCSS = ""
- aplayerJS = ""
- # {{< link "https://github.com/metowolf/MetingJS" "meting" >}}@2.0.1
- metingJS = ""
- # {{< link "https://github.com/gitalk/gitalk" "gitalk" >}}@1.6.2
- gitalkCSS = ""
- gitalkJS = ""
- # {{< link "https://valine.js.org/" "valine" >}}@1.4.14
- valineJS = ""
+ # CDN data file name, disabled by default
+ # ("jsdelivr.yml")
+ # located in "themes/LoveIt/assets/data/cdn/" directory
+ # you can store your own data files in the same path under your project:
+ # "assets/data/cdn/"
+ data = ""
# Markup related config in Hugo
[markup]
@@ -759,13 +725,17 @@ You could enable these features with `hugo serve -e production`.
{{< /admonition >}}
{{< admonition tip "Tips about CDN Configuration" >}}
-Full HTML tags or URLs are supported for CDN configuration:
+{{< version 0.2.7 changed >}}
```toml
-smoothScrollJS = '<script src="https://cdn.jsdelivr.net/npm/smooth-scroll@16.1.3/dist/smooth-scroll.min.js" integrity="sha256-vP+F+14A1ogChQs5Osd5LJl/ci9TbzjiZjjEbcqOXrY=" crossorigin="anonymous"></script>'
-# Or
-smoothScrollJS = 'https://cdn.jsdelivr.net/npm/smooth-scroll@16/dist/smooth-scroll.min.js'
-```
+[params.cdn]
+ # CDN data file name, disabled by default
+ # ("jsdelivr.yml")
+ data = ""
+````
+
+The default CDN data file is located in `themes/LoveIt/assets/data/cdn/` directory.
+You can store your own data file in the same path under your project: `assets/data/cdn/`.
{{< /admonition >}}
{{< admonition tip "Tips about social Configuration" >}}
@@ -795,7 +765,7 @@ Or You can set more options through a dict:
title = "Mastodon"
```
-The default configuration of all supported social links is located in `themes/LoveIt/assets/data/social.yaml`,
+The default data of all supported social links is located in `themes/LoveIt/assets/data/social.yaml`,
which is you can refer to.
{{< /admonition >}}
@@ -822,6 +792,10 @@ Add a logo image (127x40) and a cover image (800x600) in the `static` directory.
### 3.4 Style Customization
+{{< admonition >}}
+Hugo **extended** version is necessary for the style customization.
+{{< /admonition >}}
+
**LoveIt** theme has been built to be as configurable as possible by defining custom `.scss` style files.
The directory including the custom `.scss` style files is `config/css` relative to **your project root directory**.
@@ -845,7 +819,7 @@ In `config/css/_custom.scss`, you can add some css style code to customize the s
### 4.1 Compatibility {#language-compatibility}
-{{< version 0.2.6 changed >}}
+{{< version 0.2.7 changed >}}
| Language | Hugo Code | HTML `lang` Attribute | Theme Docs | Lunr.js Support |
|:-------------------- |:---------:|:---------------------:|:-----------------------------:|:-----------------------------:|
@@ -859,6 +833,8 @@ In `config/css/_custom.scss`, you can add some css style code to customize the s
| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
| Serbian | `sr` | `sr` | :(far fa-square fa-fw): | :(far fa-square fa-fw): |
+| Russian | `ru` | `ru` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
+| Romanian | `ro` | `ro` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
### 4.2 Basic Configuration
diff --git a/exampleSite/content/posts/theme-documentation-basics.fr.md b/exampleSite/content/posts/theme-documentation-basics/index.fr.md
index 3c6a4aca..7da1cd4d 100644
--- a/exampleSite/content/posts/theme-documentation-basics.fr.md
+++ b/exampleSite/content/posts/theme-documentation-basics/index.fr.md
@@ -312,7 +312,7 @@ Please open the code block below to view the complete sample configuration :(far
gravatarEmail = ""
# URL of avatar shown in home page
avatarURL = "/images/avatar.png"
- # {{< version 0.2.5 >}} title shown in home page
+ # {{< version 0.2.7 changed >}} title shown in home page (HTML format is supported)
title = ""
# subtitle shown in home page
subtitle = "This is My New Hugo Site"
@@ -521,9 +521,11 @@ Please open the code block below to view the complete sample configuration :(far
highlight = true
enableQQ = false
serverURLs = ""
- # {{< version 0.2.6 >}} emoji config file name, default is "facebook.yml"
+ # {{< version 0.2.6 >}} emoji data file name, default is "google.yml"
# ("apple.yml", "google.yml", "facebook.yml", "twitter.yml")
- # located in "assets/data/emoji/" directory, where you can put your config file
+ # located in "themes/LoveIt/assets/data/emoji/" directory
+ # you can store your own data files in the same path under your project:
+ # "assets/data/emoji/"
emoji = ""
# {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook comment" >}} config
[params.page.comment.facebook]
@@ -554,6 +556,18 @@ Please open the code block below to view the complete sample configuration :(far
label = ""
lightTheme = "github-light"
darkTheme = "github-dark"
+ # {{< version 0.2.7 >}} Third-party library config
+ [params.page.library]
+ [params.page.library.css]
+ # someCSS = "some.css"
+ # located in "assets/"
+ # Or
+ # someCSS = "https://cdn.example.com/some.css"
+ [params.page.library.js]
+ # someJavascript = "some.js"
+ # located in "assets/"
+ # Or
+ # someJavascript = "https://cdn.example.com/some.js"
# {{< version 0.2.0 >}} SEO config
[params.page.seo]
# Publisher info
@@ -601,77 +615,29 @@ Please open the code block below to view the complete sample configuration :(far
id = ""
# whether to anonymize IP
anonymizeIP = true
- # whether to use cookie
- cookie = false
# Fathom Analytics
[params.analytics.fathom]
id = ""
# server url for your tracker if you're self hosting
server = ""
- # CSS and JS Files CDN config
+ # {{< version 0.2.7 >}} Cookie consent config
+ [params.cookieconsent]
+ enable = true
+ # text strings used for Cookie consent banner
+ [params.cookieconsent.content]
+ message = ""
+ dismiss = ""
+ link = ""
+
+ # {{< version 0.2.7 changed >}} CDN config for third-party library files
[params.cdn]
- # {{< version 0.2.0 >}} {{< link "https://github.com/necolas/normalize.css" "normalize.css" >}}@8.0.1
- normalizeCSS = ""
- # {{< link "https://fontawesome.com/" "fontawesome-free" >}}@5.13.0
- fontawesomeFreeCSS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/simple-icons/simple-icons" "simple-icons" >}}@2.9.0
- # ("https://cdn.jsdelivr.net/npm/simple-icons@v2/icons/")
- simpleIconsPrefix = ""
- # animate.css@3.7.2 https://github.com/daneden/animate.css
- animateCSS = ""
- # {{< link "https://github.com/cferdinandi/smooth-scroll" "smooth-scroll" >}}@16.1.3
- smoothScrollJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/algolia/autocomplete.js" "autocomplete.js" >}}@0.37.1
- autocompleteJS = ""
- # {{< version 0.2.0 >}} {{< link "https://lunrjs.com/" "lunr.js" >}}@2.3.8
- lunrJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/algolia/algoliasearch-client-javascript" "algoliasearch" >}}@4.2.0
- algoliasearchJS = ""
- # {{< link "https://github.com/aFarkas/lazysizes" "lazysizes" >}}@5.2.0
- lazysizesJS = ""
- # {{< version 0.2.3 >}} {{< link "https://github.com/fregante/object-fit-images" "object-fit-images" >}}@3.2.4
- objectFitImagesJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/twitter/twemoji" "twemoji" >}}@12.1.5
- twemojiJS = ""
- # {{< link "https://github.com/sachinchoolur/lightgallery.js" "lightgallery.js" >}}@1.1.3
- # {{< link "https://github.com/sachinchoolur/lg-thumbnail.js" "lg-thumbnail.js" >}}@1.1.0
- # {{< link "https://github.com/sachinchoolur/lg-zoom.js" "lg-zoom.js" >}}@1.0.1
- lightgalleryCSS = ""
- lightgalleryJS = ""
- lightgalleryThumbnailJS = ""
- lightgalleryZoomJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/zenorocha/clipboard.js" "clipboard.js" >}}@2.0.6
- clipboardJS = ""
- # {{< link "https://github.com/ellisonleao/sharer.js" "sharer.js" >}}@0.4.0
- sharerJS = ""
- # {{< link "https://github.com/alexmacarthur/typeit" "typeit" >}}@7.0.4
- typeitJS = ""
- # {{< link "https://github.com/KaTeX/KaTeX" "katex" >}}@0.11.1
- katexCSS = ""
- katexJS = ""
- katexAutoRenderJS = ""
- katexCopyTexCSS = ""
- katexCopyTexJS = ""
- katexMhchemJS = ""
- # {{< link "https://github.com/knsv/mermaid" "mermaid" >}}@8.5.0
- mermaidJS = ""
- # {{< link "https://echarts.apache.org/" "echarts" >}}@4.7.0
- echartsJS = ""
- echartsMacaronsJS = ""
- # {{< version 0.2.0 >}} {{< link "https://docs.mapbox.com/mapbox-gl-js" mapbox-gl >}}@1.10.0
- mapboxGLCSS = ""
- mapboxGLJS = ""
- # {{< link "https://github.com/MoePlayer/APlayer" "aplayer" >}}@1.10.1
- aplayerCSS = ""
- aplayerJS = ""
- # {{< link "https://github.com/metowolf/MetingJS" "meting" >}}@2.0.1
- metingJS = ""
- # {{< link "https://github.com/gitalk/gitalk" "gitalk" >}}@1.6.2
- gitalkCSS = ""
- gitalkJS = ""
- # {{< link "https://valine.js.org/" "valine" >}}@1.4.14
- valineJS = ""
+ # CDN data file name, disabled by default
+ # ("jsdelivr.yml")
+ # located in "themes/LoveIt/assets/data/cdn/" directory
+ # you can store your own data files in the same path under your project:
+ # "assets/data/cdn/"
+ data = ""
# Markup related config in Hugo
[markup]
@@ -764,13 +730,17 @@ You could enable these features with `hugo serve -e production`.
{{< /admonition >}}
{{< admonition tip "Tips about CDN Configuration" >}}
-Full HTML tags or URLs are supported for CDN configuration:
+{{< version 0.2.7 changed >}}
```toml
-smoothScrollJS = '<script src="https://cdn.jsdelivr.net/npm/smooth-scroll@16.1.3/dist/smooth-scroll.min.js" integrity="sha256-vP+F+14A1ogChQs5Osd5LJl/ci9TbzjiZjjEbcqOXrY=" crossorigin="anonymous"></script>'
-# Or
-smoothScrollJS = 'https://cdn.jsdelivr.net/npm/smooth-scroll@16/dist/smooth-scroll.min.js'
-```
+[params.cdn]
+ # CDN data file name, disabled by default
+ # ("jsdelivr.yml")
+ data = ""
+````
+
+The default CDN data file is located in `themes/LoveIt/assets/data/cdn/` directory.
+You can store your own data file in the same path under your project: `assets/data/cdn/`.
{{< /admonition >}}
{{< admonition tip "Tips about social Configuration" >}}
@@ -800,7 +770,7 @@ Or You can set more options through a dict:
title = "Mastodon"
```
-The default configuration of all supported social links is located in `themes/LoveIt/assets/data/social.yaml`,
+The default data of all supported social links is located in `themes/LoveIt/assets/data/social.yaml`,
which is you can refer to.
{{< /admonition >}}
@@ -827,6 +797,10 @@ Add a logo image (127x40) and a cover image (800x600) in the `static` directory.
### 3.4 Style Customization
+{{< admonition >}}
+Hugo **extended** version is necessary for the style customization.
+{{< /admonition >}}
+
**LoveIt** theme has been built to be as configurable as possible by defining custom `.scss` style files.
The directory including the custom `.scss` style files is `config/css` relative to **your project root directory**.
@@ -850,7 +824,7 @@ In `config/css/_custom.scss`, you can add some css style code to customize the s
### 4.1 Compatibility {#language-compatibility}
-{{< version 0.2.6 changed >}}
+{{< version 0.2.7 changed >}}
| Language | Hugo Code | HTML `lang` Attribute | Theme Docs | Lunr.js Support |
|:-------------------- |:---------:|:---------------------:|:-----------------------------:|:-----------------------------:|
@@ -862,7 +836,10 @@ In `config/css/_custom.scss`, you can add some css style code to customize the s
| Italian | `it` | `it` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
| Spanish | `es` | `es` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
+| German | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
| Serbian | `sr` | `sr` | :(far fa-square fa-fw): | :(far fa-square fa-fw): |
+| Russian | `ru` | `ru` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
+| Romanian | `ro` | `ro` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
### 4.2 Basic Configuration
diff --git a/exampleSite/content/posts/theme-documentation-basics.zh-cn.md b/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md
index b68bb026..1249ab9e 100644
--- a/exampleSite/content/posts/theme-documentation-basics.zh-cn.md
+++ b/exampleSite/content/posts/theme-documentation-basics/index.zh-cn.md
@@ -310,7 +310,7 @@ hugo
gravatarEmail = ""
# 主页显示头像的 URL
avatarURL = "/images/avatar.png"
- # {{< version 0.2.5 >}} 主页显示的网站标题
+ # {{< version 0.2.7 changed >}} 主页显示的网站标题 (支持 HTML 格式)
title = ""
# 主页显示的网站副标题
subtitle = "这是我的全新 Hugo 网站"
@@ -519,9 +519,11 @@ hugo
highlight = true
enableQQ = false
serverURLs = ""
- # {{< version 0.2.6 >}} emoji 配置文件名称, 默认是 "facebook.yml"
+ # {{< version 0.2.6 >}} emoji 数据文件名称, 默认是 "google.yml"
# ("apple.yml", "google.yml", "facebook.yml", "twitter.yml")
- # 位于 "assets/data/emoji/" 目录, 你可以在此存放你自己的配置文件
+ # 位于 "themes/LoveIt/assets/data/emoji/" 目录
+ # 可以在你的项目下相同路径存放你自己的数据文件:
+ # "assets/data/emoji/"
emoji = ""
# {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook 评论系统" >}}设置
[params.page.comment.facebook]
@@ -552,6 +554,18 @@ hugo
label = ""
lightTheme = "github-light"
darkTheme = "github-dark"
+ # {{< version 0.2.7 >}} 第三方库配置
+ [params.page.library]
+ [params.page.library.css]
+ # someCSS = "some.css"
+ # 位于 "assets/"
+ # 或者
+ # someCSS = "https://cdn.example.com/some.css"
+ [params.page.library.js]
+ # someJavascript = "some.js"
+ # 位于 "assets/"
+ # 或者
+ # someJavascript = "https://cdn.example.com/some.js"
# {{< version 0.2.0 >}} SEO config
[params.page.seo]
# 出版者信息
@@ -599,77 +613,29 @@ hugo
id = ""
# 是否匿名化用户 IP
anonymizeIP = true
- # 是否使用 cookie
- cookie = false
# Fathom Analytics
[params.analytics.fathom]
id = ""
# 自行托管追踪器时的主机路径
server = ""
- # CSS 和 JS 文件的 CDN 设置
+ # {{< version 0.2.7 >}} Cookie 许可配置
+ [params.cookieconsent]
+ enable = true
+ # 用于 Cookie 许可横幅的文本字符串
+ [params.cookieconsent.content]
+ message = ""
+ dismiss = ""
+ link = ""
+
+ # {{< version 0.2.7 changed >}} 第三方库文件的 CDN 设置
[params.cdn]
- # {{< version 0.2.0 >}} {{< link "https://github.com/necolas/normalize.css" "normalize.css" >}}@8.0.1
- normalizeCSS = ""
- # {{< link "https://fontawesome.com/" "fontawesome-free" >}}@5.13.0
- fontawesomeFreeCSS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/simple-icons/simple-icons" "simple-icons" >}}@2.9.0
- # ("https://cdn.jsdelivr.net/npm/simple-icons@v2/icons/")
- simpleIconsPrefix = ""
- # animate.css@3.7.2 https://github.com/daneden/animate.css
- animateCSS = ""
- # {{< link "https://github.com/cferdinandi/smooth-scroll" "smooth-scroll" >}}@16.1.3
- smoothScrollJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/algolia/autocomplete.js" "autocomplete.js" >}}@0.37.1
- autocompleteJS = ""
- # {{< version 0.2.0 >}} {{< link "https://lunrjs.com/" "lunr.js" >}}@2.3.8
- lunrJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/algolia/algoliasearch-client-javascript" "algoliasearch" >}}@4.2.0
- algoliasearchJS = ""
- # {{< link "https://github.com/aFarkas/lazysizes" "lazysizes" >}}@5.2.0
- lazysizesJS = ""
- # {{< version 0.2.3 >}} {{< link "https://github.com/fregante/object-fit-images" "object-fit-images" >}}@3.2.4
- objectFitImagesJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/twitter/twemoji" "twemoji" >}}@12.1.5
- twemojiJS = ""
- # {{< link "https://github.com/sachinchoolur/lightgallery.js" "lightgallery.js" >}}@1.1.3
- # {{< link "https://github.com/sachinchoolur/lg-thumbnail.js" "lg-thumbnail.js" >}}@1.1.0
- # {{< link "https://github.com/sachinchoolur/lg-zoom.js" "lg-zoom.js" >}}@1.0.1
- lightgalleryCSS = ""
- lightgalleryJS = ""
- lightgalleryThumbnailJS = ""
- lightgalleryZoomJS = ""
- # {{< version 0.2.0 >}} {{< link "https://github.com/zenorocha/clipboard.js" "clipboard.js" >}}@2.0.6
- clipboardJS = ""
- # {{< link "https://github.com/ellisonleao/sharer.js" "sharer.js" >}}@0.4.0
- sharerJS = ""
- # {{< link "https://github.com/alexmacarthur/typeit" "typeit" >}}@7.0.4
- typeitJS = ""
- # {{< link "https://github.com/KaTeX/KaTeX" "katex" >}}@0.11.1
- katexCSS = ""
- katexJS = ""
- katexAutoRenderJS = ""
- katexCopyTexCSS = ""
- katexCopyTexJS = ""
- katexMhchemJS = ""
- # {{< link "https://github.com/knsv/mermaid" "mermaid" >}}@8.5.0
- mermaidJS = ""
- # {{< link "https://echarts.apache.org/" "echarts" >}}@4.7.0
- echartsJS = ""
- echartsMacaronsJS = ""
- # {{< version 0.2.0 >}} {{< link "https://docs.mapbox.com/mapbox-gl-js" mapbox-gl >}}@1.10.0
- mapboxGLCSS = ""
- mapboxGLJS = ""
- # {{< link "https://github.com/MoePlayer/APlayer" "aplayer" >}}@1.10.1
- aplayerCSS = ""
- aplayerJS = ""
- # {{< link "https://github.com/metowolf/MetingJS" "meting" >}}@2.0.1
- metingJS = ""
- # {{< link "https://github.com/gitalk/gitalk" "gitalk" >}}@1.6.2
- gitalkCSS = ""
- gitalkJS = ""
- # {{< link "https://valine.js.org/" "valine" >}}@1.4.14
- valineJS = ""
+ # CDN 数据文件名称, 默认不启用
+ # ("jsdelivr.yml")
+ # 位于 "themes/LoveIt/assets/data/cdn/" 目录
+ # 可以在你的项目下相同路径存放你自己的数据文件:
+ # "assets/data/cdn/"
+ data = ""
# Hugo 解析文档的配置
[markup]
@@ -763,13 +729,17 @@ hugo
{{< /admonition >}}
{{< admonition tip "关于 CDN 配置的技巧" >}}
-在 CDN 的配置中, 完整的 HTML 标签和 URL 都是支持的:
+{{< version 0.2.7 changed >}}
```toml
-smoothScrollJS = '<script src="https://cdn.jsdelivr.net/npm/smooth-scroll@16.1.3/dist/smooth-scroll.min.js" integrity="sha256-vP+F+14A1ogChQs5Osd5LJl/ci9TbzjiZjjEbcqOXrY=" crossorigin="anonymous"></script>'
-# 或者
-smoothScrollJS = 'https://cdn.jsdelivr.net/npm/smooth-scroll@16/dist/smooth-scroll.min.js'
-```
+[params.cdn]
+ # CDN 数据文件名称, 默认不启用
+ # ("jsdelivr.yml")
+ data = ""
+````
+
+默认的 CDN 数据文件位于 `themes/LoveIt/assets/data/cdn/` 目录.
+可以在你的项目下相同路径存放你自己的数据文件: `assets/data/cdn/`.
{{< /admonition >}}
{{< admonition tip "关于社交链接配置的技巧" >}}
@@ -799,7 +769,7 @@ smoothScrollJS = 'https://cdn.jsdelivr.net/npm/smooth-scroll@16/dist/smooth-scro
title = "Mastodon"
```
-所有支持的社交链接的默认配置位于 `themes/LoveIt/assets/data/social.yaml`.
+所有支持的社交链接的默认数据位于 `themes/LoveIt/assets/data/social.yaml`.
你可以参考它来配置你的社交链接.
{{< /admonition >}}
@@ -826,6 +796,10 @@ smoothScrollJS = 'https://cdn.jsdelivr.net/npm/smooth-scroll@16/dist/smooth-scro
### 3.4 自定义样式
+{{< admonition >}}
+Hugo **extended** 版本对于自定义样式是必需的.
+{{< /admonition >}}
+
通过定义自定义 `.scss` 样式文件, **LoveIt** 主题支持可配置的样式.
包含自定义 `.scss` 样式文件的目录相对于 **你的项目根目录** 的路径为 `config/css`.
@@ -849,7 +823,7 @@ $code-font-family: Fira Mono, Source Code Pro, Menlo, Consolas, Monaco, monospac
### 4.1 兼容性 {#language-compatibility}
-{{< version 0.2.6 changed >}}
+{{< version 0.2.7 changed >}}
| 语言 | Hugo 代码 | HTML `lang` 属性 | 主题文档 | Lunr.js 支持 |
|:---- |:----:|:----:|:----:|:----:|
@@ -862,6 +836,8 @@ $code-font-family: Fira Mono, Source Code Pro, Menlo, Consolas, Monaco, monospac
| 西班牙语 | `es` | `es` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
| 德语 | `de` | `de` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
| 塞尔维亚语 | `pl` | `pl` | :(far fa-square fa-fw): | :(far fa-square fa-fw): |
+| 俄语 | `ru` | `ru` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
+| 罗马尼亚语 | `ro` | `ro` | :(far fa-square fa-fw): | :(far fa-check-square fa-fw): |
### 4.2 基本配置
diff --git a/exampleSite/content/posts/theme-documentation-built-in-shortcodes.en.md b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md
index 9eebc105..9eebc105 100644
--- a/exampleSite/content/posts/theme-documentation-built-in-shortcodes.en.md
+++ b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.en.md
diff --git a/exampleSite/content/posts/theme-documentation-built-in-shortcodes.fr.md b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.fr.md
index 0978d1c9..0978d1c9 100644
--- a/exampleSite/content/posts/theme-documentation-built-in-shortcodes.fr.md
+++ b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.fr.md
diff --git a/exampleSite/content/posts/theme-documentation-built-in-shortcodes.zh-cn.md b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md
index 53692579..53692579 100644
--- a/exampleSite/content/posts/theme-documentation-built-in-shortcodes.zh-cn.md
+++ b/exampleSite/content/posts/theme-documentation-built-in-shortcodes/index.zh-cn.md
diff --git a/exampleSite/content/posts/theme-documentation-content.en.md b/exampleSite/content/posts/theme-documentation-content/index.en.md
index 6def06e8..e60b4085 100644
--- a/exampleSite/content/posts/theme-documentation-content.en.md
+++ b/exampleSite/content/posts/theme-documentation-content/index.en.md
@@ -90,6 +90,17 @@ share:
comment:
enable: true
# ...
+library:
+ css:
+ # someCSS = "some.css"
+ # located in "assets/"
+ # Or
+ # someCSS = "https://cdn.example.com/some.css"
+ js:
+ # someJS = "some.js"
+ # located in "assets/"
+ # Or
+ # someJS = "https://cdn.example.com/some.js"
---
```
@@ -125,6 +136,7 @@ comment:
* **mapbox**: {{< version 0.2.0 >}} the same as the `params.page.mapbox` part in the [site configuration](../theme-documentation-basics#site-configuration).
* **share**: the same as the `params.page.share` part in the [site configuration](../theme-documentation-basics#site-configuration).
* **comment**: {{< version 0.2.0 changed >}} the same as the `params.page.comment` part in the [site configuration](../theme-documentation-basics#site-configuration).
+* **library**: {{< version 0.2.7 >}} the same as the `params.page.library` part in the [site configuration](../theme-documentation-basics#site-configuration).
## 3 Content Summaries
diff --git a/exampleSite/content/posts/theme-documentation-content.fr.md b/exampleSite/content/posts/theme-documentation-content/index.fr.md
index f5de0223..46132b44 100644
--- a/exampleSite/content/posts/theme-documentation-content.fr.md
+++ b/exampleSite/content/posts/theme-documentation-content/index.fr.md
@@ -95,6 +95,17 @@ share:
comment:
enable: true
# ...
+library:
+ css:
+ # someCSS = "some.css"
+ # located in "assets/"
+ # Or
+ # someCSS = "https://cdn.example.com/some.css"
+ js:
+ # someJS = "some.js"
+ # located in "assets/"
+ # Or
+ # someJS = "https://cdn.example.com/some.js"
---
```
@@ -130,6 +141,7 @@ comment:
* **mapbox**: {{< version 0.2.0 >}} the same as the `params.page.mapbox` part in the [site configuration](../theme-documentation-basics#site-configuration).
* **share**: the same as the `params.page.share` part in the [site configuration](../theme-documentation-basics#site-configuration).
* **comment**: {{< version 0.2.0 changed >}} the same as the `params.page.comment` part in the [site configuration](../theme-documentation-basics#site-configuration).
+* **library**: {{< version 0.2.7 >}} the same as the `params.page.library` part in the [site configuration](../theme-documentation-basics#site-configuration).
## 3 Content Summaries
diff --git a/exampleSite/content/posts/theme-documentation-content.zh-cn.md b/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md
index c69a564b..618edffe 100644
--- a/exampleSite/content/posts/theme-documentation-content.zh-cn.md
+++ b/exampleSite/content/posts/theme-documentation-content/index.zh-cn.md
@@ -90,6 +90,17 @@ share:
comment:
enable: true
# ...
+library:
+ css:
+ # someCSS = "some.css"
+ # 位于 "assets/"
+ # 或者
+ # someCSS = "https://cdn.example.com/some.css"
+ js:
+ # someJS = "some.js"
+ # 位于 "assets/"
+ # 或者
+ # someJS = "https://cdn.example.com/some.js"
---
```
@@ -125,6 +136,7 @@ comment:
* **mapbox**: {{< version 0.2.0 >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.mapbox` 部分相同.
* **share**: 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.share` 部分相同.
* **comment**: {{< version 0.2.0 changed >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.comment` 部分相同.
+* **library**: {{< version 0.2.7 >}} 和 [网站配置](../theme-documentation-basics#site-configuration) 中的 `params.page.library` 部分相同.
## 3 内容摘要
diff --git a/exampleSite/content/posts/theme-documentation-extended-shortcodes.en.md b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md
index dfbd86f9..dfbd86f9 100644
--- a/exampleSite/content/posts/theme-documentation-extended-shortcodes.en.md
+++ b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.en.md
diff --git a/exampleSite/content/posts/theme-documentation-extended-shortcodes.fr.md b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.fr.md
index 8bbbd3e3..8bbbd3e3 100644
--- a/exampleSite/content/posts/theme-documentation-extended-shortcodes.fr.md
+++ b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.fr.md
diff --git a/exampleSite/content/posts/theme-documentation-extended-shortcodes.zh-cn.md b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md
index dd5a9fc6..dd5a9fc6 100644
--- a/exampleSite/content/posts/theme-documentation-extended-shortcodes.zh-cn.md
+++ b/exampleSite/content/posts/theme-documentation-extended-shortcodes/index.zh-cn.md
diff --git a/i18n/de.toml b/i18n/de.toml
index 5cf537e5..8440ea6e 100644
--- a/i18n/de.toml
+++ b/i18n/de.toml
@@ -88,6 +88,15 @@ other = "lib/lunr/lunr.de.js"
[copyToClipboard]
other = "In Zwischenablage kopieren"
+
+[cookieconsentMessage]
+other = "Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern."
+
+[cookieconsentDismiss]
+other = "Zustimmen"
+
+[cookieconsentLink]
+other = "Erfahren Sie mehr"
# === partials/assets.html ===
# === partials/plugin/share.html ===
diff --git a/i18n/en.toml b/i18n/en.toml
index b9f88a87..ccd8fa72 100644
--- a/i18n/en.toml
+++ b/i18n/en.toml
@@ -84,6 +84,15 @@ other = "en"
[copyToClipboard]
other = "Copy to clipboard"
+
+[cookieconsentMessage]
+other = "This website uses Cookies to improve your experience."
+
+[cookieconsentDismiss]
+other = "Got it!"
+
+[cookieconsentLink]
+other = "Learn more"
# === partials/assets.html ===
# === partials/plugin/share.html ===
diff --git a/i18n/es.toml b/i18n/es.toml
index 64e3dbc5..992f161b 100644
--- a/i18n/es.toml
+++ b/i18n/es.toml
@@ -88,6 +88,15 @@ other = "lib/lunr/lunr.es.js"
[copyToClipboard]
other = "Copiar al portapapeles"
+
+[cookieconsentMessage]
+other = "Este sitio web utiliza Cookies para mejorar su experiencia."
+
+[cookieconsentDismiss]
+other = "De acuerdo"
+
+[cookieconsentLink]
+other = "Aprende más"
# === partials/assets.html ===
# === partials/plugin/share.html ===
diff --git a/i18n/fr.toml b/i18n/fr.toml
index 300c72b5..451ad26d 100644
--- a/i18n/fr.toml
+++ b/i18n/fr.toml
@@ -88,6 +88,15 @@ other = "lib/lunr/lunr.fr.js"
[copyToClipboard]
other = "Copier dans le presse-papiers"
+
+[cookieconsentMessage]
+other = "Ce site Web utilise des Cookies pour améliorer votre expérience."
+
+[cookieconsentDismiss]
+other = "Se mettre d'accord"
+
+[cookieconsentLink]
+other = "Apprendre encore plus"
# === partials/assets.html ===
# === partials/plugin/share.html ===
diff --git a/i18n/it.toml b/i18n/it.toml
index 4d79ab47..cb24f568 100644
--- a/i18n/it.toml
+++ b/i18n/it.toml
@@ -88,6 +88,15 @@ other = "lib/lunr/lunr.it.js"
[copyToClipboard]
other = "Copia negli appunti"
+
+[cookieconsentMessage]
+other = "Questo sito Web utilizza i Cookies per migliorare la tua esperienza."
+
+[cookieconsentDismiss]
+other = "Essere d'accordo"
+
+[cookieconsentLink]
+other = "Per saperne di più"
# === partials/assets.html ===
# === partials/plugin/share.html ===
diff --git a/i18n/pl.toml b/i18n/pl.toml
index 92cf05ed..fbe274ec 100644
--- a/i18n/pl.toml
+++ b/i18n/pl.toml
@@ -131,6 +131,15 @@ other = "Strona główna"
[readMore]
other = "Czytaj więcej"
+
+[cookieconsentMessage]
+other = "Ta strona korzysta z plików Cookies, aby poprawić komfort użytkowania."
+
+[cookieconsentDismiss]
+other = "Zgodzić się"
+
+[cookieconsentLink]
+other = "Ucz się więcej"
# === posts/single.html ===
# === 404.html ===
diff --git a/i18n/pt-BR.toml b/i18n/pt-BR.toml
index 6c9856ec..d7653054 100644
--- a/i18n/pt-BR.toml
+++ b/i18n/pt-BR.toml
@@ -88,6 +88,15 @@ other = "lib/lunr/lunr.pt.js"
[copyToClipboard]
other = "Copiar para a área de transferência"
+
+[cookieconsentMessage]
+other = "Este site usa Cookies para melhorar sua experiência."
+
+[cookieconsentDismiss]
+other = "Aceita"
+
+[cookieconsentLink]
+other = "Saber mais"
# === partials/assets.html ===
# === partials/plugin/share.html ===
diff --git a/i18n/ro.toml b/i18n/ro.toml
new file mode 100644
index 00000000..cceb805e
--- /dev/null
+++ b/i18n/ro.toml
@@ -0,0 +1,203 @@
+# Translations for Romanian
+# Traduceri pentru limba română
+# https://gohugo.io/content-management/multilingual/#translation-of-strings
+
+# === baseof ==
+[backToTop]
+other = "Înapoi Sus"
+
+[viewComments]
+other = "Vizualizare Comentarii"
+# === baseof ==
+
+# === Post ===
+[posts]
+other = "Articole"
+# === Post ===
+
+# === Taxonomy ===
+[allSome]
+other = "Toate %s"
+
+[tag]
+other = "Etichetă"
+
+[tags]
+other = "Etichete"
+
+[category]
+other = "Categorie"
+
+[categories]
+other = "Categorii"
+# === Taxonomy ===
+
+# === Pagination ===
+[more]
+other = "Mai mult"
+# === Pagination ===
+
+# === partials/header.html ===
+[selectLanguage]
+other = "Selectare Limbă"
+
+[switchTheme]
+other = "Schimbare Temă"
+# === partials/header.html ===
+
+# === partials/footer.html ===
+[poweredBySome]
+other = "Realizat de către %s"
+
+[theme]
+other = "Temă"
+# === partials/footer.html ===
+
+# === partials/comment.html ===
+[valineLang]
+other = "en"
+
+[valinePlaceholder]
+other = "Comentariul dvs ..."
+
+[facebookLanguageCode]
+other = "ro_RO"
+# === partials/comment.html ===
+
+# === partials/assets.html ===
+[search]
+other = "Căutare"
+
+[searchPlaceholder]
+other = "Căutarea titlului sau conținutului articolului ..."
+
+[clear]
+other = "Golire"
+
+[cancel]
+other = "Anulare"
+
+[noResultsFound]
+other = "Nici un rezultat gasit"
+
+[lunrLanguageCode]
+other = "ro"
+
+[lunrLanguageLib]
+other = "lib/lunr/lunr.ro.js"
+
+[copyToClipboard]
+other = "Copiați în clipboard"
+
+[cookieconsentMessage]
+other = "Acest site web utilizează Cookies pentru a vă îmbunătăți experiența."
+
+[cookieconsentDismiss]
+other = "De acord"
+
+[cookieconsentLink]
+other = "Aflați mai multe"
+# === partials/assets.html ===
+
+# === partials/plugin/share.html ===
+[shareOn]
+other = "Distribuie pe"
+# === partials/plugin/share.html ===
+
+# === posts/single.html ===
+[contents]
+other = "Cuprins"
+
+[publish]
+other = "publicat la"
+
+[included]
+other = "inclus în"
+
+[wordCount]
+other = "aproximativ {{ .Count }} cuvinte"
+
+[readingTime]
+other = "{{ .Count }} min"
+
+[views]
+other = "vizualizări"
+
+[author]
+other = "Autor"
+
+[lastMod]
+other = "Articolul a fost actualizat la %s"
+
+[license]
+other = "Publicat sub licența %s"
+
+[seeMarkdown]
+other = "Citire Markdown"
+
+[back]
+other = "Înapoi"
+
+[home]
+other = "Acasă"
+
+[readMore]
+other = "Citește mai mult"
+# === posts/single.html ===
+
+# === 404.html ===
+[pageNotFound]
+other = "Pagina nu a fost găsită"
+
+[pageNotFoundText]
+other = "Pagina pe care o căutați nu există. Ne cerem scuze."
+# === 404.html ===
+
+# === shortcodes/admonition.html ===
+[note]
+other = "Notă"
+
+[abstract]
+other = "Rezumat"
+
+[info]
+other = "Info"
+
+[tip]
+other = "Sfat"
+
+[success]
+other = "Succes"
+
+[question]
+other = "Întrebare"
+
+[warning]
+other = "Avertizare"
+
+[failure]
+other = "Eșec"
+
+[danger]
+other = "Pericol"
+
+[bug]
+other = "Bug"
+
+[example]
+other = "Exemplu"
+
+[quote]
+other = "Citat"
+# === shortcodes/admonition.html ===
+
+# === shortcodes/version.html ===
+[new]
+other = "NOU"
+
+[changed]
+other = "SCHIMBAT"
+
+[deleted]
+other = "ȘTERS"
+# === shortcodes/version.html ===
diff --git a/i18n/ru.toml b/i18n/ru.toml
new file mode 100644
index 00000000..61b93093
--- /dev/null
+++ b/i18n/ru.toml
@@ -0,0 +1,203 @@
+# Translations for Russian
+# Переводы на русский
+# https://gohugo.io/content-management/multilingual/#translation-of-strings
+
+# === baseof ==
+[backToTop]
+other = "Наверх"
+
+[viewComments]
+other = "Посмотреть комментарии"
+# === baseof ==
+
+# === Post ===
+[posts]
+other = "Статьи"
+# === Post ===
+
+# === Taxonomy ===
+[allSome]
+other = "Все %s"
+
+[tag]
+other = "Тэг"
+
+[tags]
+other = "Тэги"
+
+[category]
+other = "Категория"
+
+[categories]
+other = "Категории"
+# === Taxonomy ===
+
+# === Pagination ===
+[more]
+other = "Больше"
+# === Pagination ===
+
+# === partials/header.html ===
+[selectLanguage]
+other = "Выбор Языка"
+
+[switchTheme]
+other = "Сменить Тему"
+# === partials/header.html ===
+
+# === partials/footer.html ===
+[poweredBySome]
+other = "Сделано %s"
+
+[theme]
+other = "Тема"
+# === partials/footer.html ===
+
+# === partials/comment.html ===
+[valineLang]
+other = "en"
+
+[valinePlaceholder]
+other = "Ваш комментарий ..."
+
+[facebookLanguageCode]
+other = "ru_RU"
+# === partials/comment.html ===
+
+# === partials/assets.html ===
+[search]
+other = "Поиск"
+
+[searchPlaceholder]
+other = "Поиск заголовков или содержимого ..."
+
+[clear]
+other = "Очистить"
+
+[cancel]
+other = "Отменить"
+
+[noResultsFound]
+other = "Результатов не найдено"
+
+[lunrLanguageCode]
+other = "ru"
+
+[lunrLanguageLib]
+other = "lib/lunr/lunr.ru.js"
+
+[copyToClipboard]
+other = "Копировать в буфер обмена"
+
+[cookieconsentMessage]
+other = "Этот сайт использует Cookies для улучшения вашего опыта."
+
+[cookieconsentDismiss]
+other = "Согласен"
+
+[cookieconsentLink]
+other = "Учить больше"
+# === partials/assets.html ===
+
+# === partials/plugin/share.html ===
+[shareOn]
+other = "Поделиться в"
+# === partials/plugin/share.html ===
+
+# === posts/single.html ===
+[contents]
+other = "Содержание"
+
+[publish]
+other = "Опубликовано"
+
+[included]
+other = "включен в"
+
+[wordCount]
+other = "около {{ .Count }} слов"
+
+[readingTime]
+other = "{{ .Count }} мин"
+
+[views]
+other = "просмотров"
+
+[author]
+other = "Автор"
+
+[lastMod]
+other = "Статья была обновлена %s"
+
+[license]
+other = "Опубликовано под лицензии %s"
+
+[seeMarkdown]
+other = "Читать Markdown"
+
+[back]
+other = "Назад"
+
+[home]
+other = "Домой"
+
+[readMore]
+other = "Читать больше"
+# === posts/single.html ===
+
+# === 404.html ===
+[pageNotFound]
+other = "Страница не найдена"
+
+[pageNotFoundText]
+other = "Страница, которую вы ищете, не существует. Приносим извинения."
+# === 404.html ===
+
+# === shortcodes/admonition.html ===
+[note]
+other = "Замечание"
+
+[abstract]
+other = "Краткое описание"
+
+[info]
+other = "Инфо"
+
+[tip]
+other = "Совет"
+
+[success]
+other = "Удачто"
+
+[question]
+other = "Вопрос"
+
+[warning]
+other = "Предупреждение"
+
+[failure]
+other = "Отказ"
+
+[danger]
+other = "Опасность"
+
+[bug]
+other = "Ошибка"
+
+[example]
+other = "Пример"
+
+[quote]
+other = "Цитата"
+# === shortcodes/admonition.html ===
+
+# === shortcodes/version.html ===
+[new]
+other = "НОВЫЙ"
+
+[changed]
+other = "ИЗМЕНЕН"
+
+[deleted]
+other = "УДАЛЕН"
+# === shortcodes/version.html ===
diff --git a/i18n/sr.toml b/i18n/sr.toml
index 118f32cb..af8484cc 100644
--- a/i18n/sr.toml
+++ b/i18n/sr.toml
@@ -85,6 +85,15 @@ other = "sr"
[copyToClipboard]
other = "Копирај на радну таблу"
+
+[cookieconsentMessage]
+other = "Ова веб локација користи Cookies да би побољшала ваше искуство."
+
+[cookieconsentDismiss]
+other = "Договорити се"
+
+[cookieconsentLink]
+other = "Сазнајте више"
# === partials/assets.html ===
# === partials/plugin/share.html ===
diff --git a/i18n/zh-CN.toml b/i18n/zh-CN.toml
index 67f19da8..b50a115b 100644
--- a/i18n/zh-CN.toml
+++ b/i18n/zh-CN.toml
@@ -91,6 +91,15 @@ other = "lib/lunr/lunr.segmentit.js"
[copyToClipboard]
other = "复制到剪贴板"
+
+[cookieconsentMessage]
+other = "本网站使用 Cookies 来改善您的浏览体验."
+
+[cookieconsentDismiss]
+other = "同意"
+
+[cookieconsentLink]
+other = "了解更多"
# === partials/assets.html ===
# === partials/plugin/share.html ===
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index a196159c..07b6e5eb 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -1,3 +1,4 @@
+{{- .Scratch.Set "version" "0.2.7" -}}
{{- $version := "0.2.X" -}}
{{- /* LoveIt theme version detection */ -}}
@@ -10,20 +11,32 @@
{{- end -}}
{{- $params := .Params | merge .Site.Params.page -}}
-{{- .Scratch.Set "version" "0.2.6" -}}
{{- if eq hugo.Environment "production" -}}
- {{- .Scratch.Set "cdn" .Site.Params.cdn -}}
+ {{- $cdn := .Site.Params.cdn -}}
+ {{- with $cdn.data -}}
+ {{- $cdnData := printf "data/cdn/%s" . | resources.Get | transform.Unmarshal -}}
+ {{- $cdn = dict "simpleIconsPrefix" $cdnData.prefix.simpleIcons -}}
+ {{- $prefix := $cdnData.prefix.libFiles | default "" -}}
+ {{- range $key, $value := $cdnData.libFiles -}}
+ {{- $cdn = printf "%s%s" $prefix $value | dict $key | merge $cdn -}}
+ {{- end -}}
+ {{- end -}}
+ {{- .Scratch.Set "cdn" $cdn -}}
{{- .Scratch.Set "fingerprint" .Site.Params.fingerprint -}}
{{- .Scratch.Set "analytics" .Site.Params.analytics -}}
{{- .Scratch.Set "comment" $params.comment -}}
+ {{- if eq .Params.comment true -}}
+ {{- .Scratch.Set "comment" .Site.Params.comment -}}
+ {{- else if eq .Params.comment false -}}
+ {{- .Scratch.Set "comment" dict -}}
+ {{- end -}}
{{- else if eq .Site .Sites.First -}}
{{- warnf "\n\nCurrent environment is \"development\". The \"comment system\", \"CDN\" and \"fingerprint\" will be disabled.\n当前运行环境是 \"development\". \"评论系统\", \"CDN\" 和 \"fingerprint\" 不会启用.\n" -}}
{{- end -}}
{{- .Scratch.Set "params" $params -}}
-{{- $this := dict "desktop" .Site.Params.header.desktopMode "mobile" .Site.Params.header.mobileMode | dict "headerMode" | dict "config" -}}
-{{- .Scratch.Set "this" $this -}}
+{{- .Scratch.Set "this" dict -}}
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
@@ -41,7 +54,7 @@
{{- partial "head/link.html" . -}}
{{- partial "head/seo.html" . -}}
</head>
- <body>
+ <body header-desktop="{{ .Site.Params.header.desktopMode }}" header-mobile="{{ .Site.Params.header.mobileMode }}">
{{- /* Check theme isDark before body rendering */ -}}
{{- $theme := .Site.Params.defaulttheme -}}
<script type="text/javascript">(window.localStorage && localStorage.getItem('theme') ? localStorage.getItem('theme') === 'dark' : ('{{ $theme }}' === 'auto' ? window.matchMedia('(prefers-color-scheme: dark)').matches : '{{ $theme }}' === 'dark')) && document.body.setAttribute('theme', 'dark');</script>
diff --git a/layouts/_default/section.html b/layouts/_default/section.html
index e81c187a..9d07c925 100644
--- a/layouts/_default/section.html
+++ b/layouts/_default/section.html
@@ -10,25 +10,27 @@
</h2>
{{- /* Paginate */ -}}
- {{- $pages := .Pages.GroupByDate "2006" -}}
- {{- with .Site.Params.section.paginate | default .Site.Params.paginate -}}
- {{- $pages = $.Paginate $pages . -}}
- {{- else -}}
- {{- $pages = .Paginate $pages -}}
- {{- end -}}
- {{- range $pages.PageGroups -}}
- <h3 class="group-title">{{ .Key }}</h3>
- {{- range .Pages -}}
- <article class="archive-item">
- <a href="{{ .RelPermalink }}" class="archive-item-link">
- {{- .Title -}}
- </a>
- <span class="archive-item-date">
- {{- .Date.Format ($.Site.Params.section.dateFormat | default "01-02") -}}
- </span>
- </article>
+ {{- if .Pages -}}
+ {{- $pages := .Pages.GroupByDate "2006" -}}
+ {{- with .Site.Params.section.paginate | default .Site.Params.paginate -}}
+ {{- $pages = $.Paginate $pages . -}}
+ {{- else -}}
+ {{- $pages = .Paginate $pages -}}
+ {{- end -}}
+ {{- range $pages.PageGroups -}}
+ <h3 class="group-title">{{ .Key }}</h3>
+ {{- range .Pages -}}
+ <article class="archive-item">
+ <a href="{{ .RelPermalink }}" class="archive-item-link">
+ {{- .Title -}}
+ </a>
+ <span class="archive-item-date">
+ {{- .Date.Format ($.Site.Params.section.dateFormat | default "01-02") -}}
+ </span>
+ </article>
+ {{- end -}}
{{- end -}}
+ {{- partial "paginator.html" . -}}
{{- end -}}
- {{- partial "paginator.html" . -}}
</div>
{{- end -}}
diff --git a/layouts/_default/summary.html b/layouts/_default/summary.html
index aeef606e..7f4c12d9 100644
--- a/layouts/_default/summary.html
+++ b/layouts/_default/summary.html
@@ -1,11 +1,10 @@
{{- $params := .Params | merge .Site.Params.page -}}
<article class="single summary" itemscope itemtype="http://schema.org/Article">
{{- /* Featured image */ -}}
- {{- with $params.featuredimage -}}
+ {{- with $params.featuredimagepreview | default $params.featuredimage -}}
<div class="featured-image-preview">
<a href="{{ $.RelPermalink }}">
- {{- $image := $params.featuredimagepreview | default . -}}
- {{- dict "src" $image "alt" $.Description "large" true | partial "plugin/image.html" -}}
+ {{- dict "src" . "alt" $.Description "large" true | partial "plugin/image.html" -}}
</a>
</div>
{{- end -}}
diff --git a/layouts/index.html b/layouts/index.html
index 82da87b0..eabc90cf 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -1,8 +1,11 @@
{{- define "content" -}}
{{- $params := .Scratch.Get "params" -}}
- <div class="page home">
+ {{- $profile := .Site.Params.home.profile -}}
+ {{- $posts := .Site.Params.home.posts -}}
+
+ <div class="page home"{{ if ne $posts.enable false }} posts{{ end }}>
{{- /* Profile */ -}}
- {{- if ne .Site.Params.home.profile.enable false -}}
+ {{- if ne $profile.enable false -}}
{{- partial "home/profile.html" . -}}
{{- end -}}
@@ -16,7 +19,7 @@
{{- end -}}
{{- /* Posts */ -}}
- {{- if ne .Site.Params.home.posts.enable false -}}
+ {{- if ne $posts.enable false | and .Site.RegularPages -}}
{{- /* Paginate */ -}}
{{- $pages := where .Site.RegularPages "Type" "posts" -}}
{{- if .Site.Params.page.hiddenFromHomePage -}}
@@ -24,7 +27,7 @@
{{- else -}}
{{- $pages = where $pages "Params.hiddenfromhomepage" "!=" true -}}
{{- end -}}
- {{- with .Site.Params.home.posts.paginate | default .Site.Params.paginate -}}
+ {{- with $posts.paginate | default .Site.Params.paginate -}}
{{- $pages = $.Paginate $pages . -}}
{{- else -}}
{{- $pages = .Paginate $pages -}}
diff --git a/layouts/partials/assets.html b/layouts/partials/assets.html
index edb52c8b..7381e079 100644
--- a/layouts/partials/assets.html
+++ b/layouts/partials/assets.html
@@ -5,60 +5,60 @@
{{- /* Smooth Scroll */ -}}
{{- $source := $cdn.smoothScrollJS | default "lib/smooth-scroll/smooth-scroll.min.js" -}}
-{{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+{{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- /* Search */ -}}
{{- if .Site.Params.search | and .Site.Params.search.enable -}}
{{- $search := .Site.Params.search -}}
{{- $source := $cdn.autocompleteJS | default "lib/autocomplete/autocomplete.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $config = dict "maxResultLength" $search.maxResultLength "snippetLength" $search.snippetLength "highlightTag" $search.highlightTag "noResultsFound" (T "noResultsFound") | dict "search" | merge $config -}}
{{- if eq $search.type "lunr" -}}
{{- with .Site.Home.OutputFormats.Get "json" -}}
{{- $config = dict "type" "lunr" "lunrIndexURL" .RelPermalink | dict "search" | merge $config -}}
{{- end -}}
{{- $source := $cdn.lunrJS | default "lib/lunr/lunr.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- if T "lunrLanguageLib" -}}
{{- $config = T "lunrLanguageCode" | dict "lunrLanguageCode" | dict "search" | merge $config -}}
{{- with T "lunrSegmentitLib" -}}
{{- $config = dict "lunrSegmentitURL" (resources.Get .).RelPermalink | dict "search" | merge $config -}}
{{- end -}}
- {{- dict "source" "lib/lunr/lunr.stemmer.support.js" "minify" true "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
- {{- dict "source" (T "lunrLanguageLib") "minify" true "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" "lib/lunr/lunr.stemmer.support.js" "minify" true "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" (T "lunrLanguageLib") "minify" true "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- end -}}
{{- else if eq $search.type "algolia" -}}
{{- $source := $cdn.algoliasearchJS | default "lib/algoliasearch/algoliasearch-lite.umd.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $config = dict "type" "algolia" "algoliaIndex" $search.algolia.index "algoliaAppID" $search.algolia.appID "algoliaSearchKey" $search.algolia.searchKey | dict "search" | merge $config -}}
{{- end -}}
{{- end -}}
{{- /* lazysizes */ -}}
{{- $source := $cdn.lazysizesJS | default "lib/lazysizes/lazysizes.min.js" -}}
-{{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+{{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- /* object-fit-images */ -}}
{{- $source := $cdn.objectFitImagesJS | default "lib/object-fit-images/ofi.min.js" -}}
-{{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+{{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- /* twemoji */ -}}
{{- if $params.twemoji -}}
{{- $source := $cdn.twemojiJS | default "lib/twemoji/twemoji.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $config = dict "twemoji" true | merge $config -}}
{{- end -}}
{{- /* lightgallery.js */ -}}
{{- if $params.lightgallery -}}
{{- $source := $cdn.lightgalleryCSS | default "lib/lightgallery/lightgallery.min.css" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- $source := $cdn.lightgalleryJS | default "lib/lightgallery/lightgallery.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $source := $cdn.lightgalleryThumbnailJS | default "lib/lightgallery/lg-thumbnail.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $source := $cdn.lightgalleryZoomJS | default "lib/lightgallery/lg-zoom.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $config = dict "selector" ".lightgallery" "speed" 400 "hideBarsDelay" 2000 "thumbnail" true "exThumbImage" "data-thumbnail" "thumbWidth" 80 "thumbContHeight" 80 "actualSize" false | dict "lightGallery" | merge $config -}}
{{- $styleArr := (.Scratch.Get "this").styleArr | default slice -}}
{{- $styleArr | append ".lg-toolbar .lg-icon::after { color: #999; }" | .Scratch.SetInMap "this" "styleArr" -}}
@@ -70,14 +70,14 @@
{{- /* clipboard.js */ -}}
{{- if ne $code.copy false -}}
{{- $source := $cdn.clipboardJS | default "lib/clipboard/clipboard.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $config = T "copyToClipboard" | dict "copyTitle" | dict "code" | merge $config -}}
{{- end -}}
{{- /* Sharer.js */ -}}
{{- if $params.share.enable -}}
{{- $source := $cdn.sharerJS | default "lib/sharer/sharer.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- end -}}
{{- /* TypeIt */ -}}
@@ -89,23 +89,28 @@
{{- end -}}
{{- /* KaTeX */ -}}
-{{- if $params.math.enable -}}
- {{- $math := $params.math -}}
+{{- $math := $params.math -}}
+{{- if eq $math true -}}
+ {{- $math = .Site.Params.page.math | default dict -}}
+{{- else if eq $math false -}}
+ {{- $math = dict "enable" false -}}
+{{- end -}}
+{{- if $math.enable -}}
{{- $source := $cdn.katexCSS | default "lib/katex/katex.min.css" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- $source := $cdn.katexJS | default "lib/katex/katex.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $source := $cdn.katexAutoRenderJS | default "lib/katex/auto-render.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- if $math.copyTex -}}
{{- $source := $cdn.katexCopyTexCSS | default "lib/katex/copy-tex.min.css" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- $source := $cdn.katexCopyTexJS | default "lib/katex/copy-tex.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- end -}}
{{- if $math.mhchem -}}
{{- $source := $cdn.katexMhchemJS | default "lib/katex/mhchem.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- end -}}
{{- $delimiters := slice (dict "left" "$$" "right" "$$" "display" true) (dict "left" "\\[" "right" "\\]" "display" true) -}}
{{- if and $math.blockLeftDelimiter $math.blockRightDelimiter -}}
@@ -121,26 +126,26 @@
{{- /* mermaid */ -}}
{{- if (.Scratch.Get "this").mermaid -}}
{{- $source := $cdn.mermaidJS | default "lib/mermaid/mermaid.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $options := dict "targetPath" "lib/mermaid/mermaid.min.css" "enableSourceMap" true -}}
- {{- dict "source" "lib/mermaid/mermaid.scss" "toCSS" $options "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" "lib/mermaid/mermaid.scss" "toCSS" $options "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- end -}}
{{- /* ECharts */ -}}
{{- if (.Scratch.Get "this").echarts -}}
{{- $source := $cdn.echartsJS | default "lib/echarts/echarts.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $source := $cdn.echartsMacaronsJS | default "lib/echarts/macarons.js" -}}
- {{- dict "source" $source "minify" true "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "minify" true "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- end -}}
{{- /* Mapbox GL */ -}}
{{- if (.Scratch.Get "this").mapbox -}}
{{- $source := $cdn.mapboxGLCSS | default "lib/mapbox-gl/mapbox-gl.min.css" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- $source := $cdn.mapboxGLJS | default "lib/mapbox-gl/mapbox-gl.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
- {{- dict "source" "lib/mapbox-gl/mapbox-gl-language.js" "minify" true "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" "lib/mapbox-gl/mapbox-gl-language.js" "minify" true "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $config = dict "accessToken" $params.mapbox.accessToken "RTLTextPlugin" "https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.0/mapbox-gl-rtl-text.js" | dict "mapbox" | merge $config -}}
{{- end -}}
@@ -148,19 +153,39 @@
{{- if (.Scratch.Get "this").music -}}
{{- /* APlayer */ -}}
{{- $source := $cdn.aplayerCSS | default "lib/aplayer/APlayer.min.css" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- $options := dict "targetPath" "lib/aplayer/dark.min.css" "enableSourceMap" true -}}
- {{- dict "source" "lib/aplayer/dark.scss" "toCSS" $options "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" "lib/aplayer/dark.scss" "toCSS" $options "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- $source := $cdn.aplayerJS | default "lib/aplayer/APlayer.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- /* MetingJS */ -}}
{{- $source := $cdn.metingJS | default "lib/meting/Meting.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
+{{- end -}}
+
+{{- /* Cookie Consent */ -}}
+{{- if .Site.Params.cookieconsent | and .Site.Params.cookieconsent.enable -}}
+ {{- $source := $cdn.cookieconsentCSS | default "lib/cookieconsent/cookieconsent.min.css" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- $source := $cdn.cookieconsentJS | default "lib/cookieconsent/cookieconsent.min.js" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
+ {{- $cookieconsentConfig := dict "popup" (dict "background" "#1aa3ff") "button" (dict "background" "#f0f0f0") | dict "theme" "edgeless" "palette" -}}
+ {{- $cookieconsentConfig = .Site.Params.cookieconsent | merge $cookieconsentConfig -}}
+ {{- $cookieconsentConfig = dict "message" ($cookieconsentConfig.content.message | default (T "cookieconsentMessage")) "dismiss" ($cookieconsentConfig.content.dismiss | default (T "cookieconsentDismiss")) "link" ($cookieconsentConfig.content.link | default (T "cookieconsentLink")) | dict "content" | merge $cookieconsentConfig -}}
+ {{- $config = $cookieconsentConfig | dict "cookieconsent" | merge $config -}}
+{{- end -}}
+
+{{- range $params.library.css -}}
+ {{- dict "source" . "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+{{- end -}}
+
+{{- range $params.library.js -}}
+ {{- dict "source" . "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
{{- end -}}
{{- /* Theme script */ -}}
-{{- dict "source" "js/theme.min.js" "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+{{- dict "source" "js/theme.min.js" "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $_ := (resources.Get "js/theme.min.js.map").RelPermalink -}}
{{- range (.Scratch.Get "this").stylesheet -}}
diff --git a/layouts/partials/comment.html b/layouts/partials/comment.html
index 71ea677d..f5644b76 100644
--- a/layouts/partials/comment.html
+++ b/layouts/partials/comment.html
@@ -1,28 +1,29 @@
{{- $cdn := .Scratch.Get "cdn" | default dict -}}
{{- $fingerprint := .Scratch.Get "fingerprint" -}}
-{{- $comment := .Scratch.Get "comment" | default (dict "disqus" dict "gitalk" dict "valine" dict "facebook" dict "telegram" dict "commento" dict "utterances" dict) -}}
+{{- $comment := .Scratch.Get "comment" | default dict -}}
{{- $commentConfig := dict -}}
{{- if $comment.enable -}}
<div id="comments">
{{- /* Disqus Comment System */ -}}
- {{- if $comment.disqus.enable -}}
+ {{- $disqus := $comment.disqus | default dict -}}
+ {{- if $disqus.enable -}}
<div id="disqus_thread" class="comment"></div>
- {{- $source := printf "https://%s.disqus.com/embed.js" $comment.disqus.shortname -}}
- {{- dict "source" $source "defer" true | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- $source := printf "https://%s.disqus.com/embed.js" $disqus.shortname -}}
+ {{- dict "source" $source "defer" true | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
<noscript>
Please enable JavaScript to view the comments powered by <a href="https://disqus.com/?ref_noscript">Disqus</a>.
</noscript>
{{- end -}}
{{- /* Gitalk Comment System */ -}}
- {{- if $comment.gitalk.enable -}}
- {{- $gitalk := $comment.gitalk -}}
+ {{- $gitalk := $comment.gitalk | default dict -}}
+ {{- if $gitalk.enable -}}
<div id="gitalk" class="comment"></div>
{{- $source := $cdn.gitalkCSS | default "lib/gitalk/gitalk.css" -}}
- {{- dict "source" $source "minify" true "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" $source "minify" true "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- $source := $cdn.gitalkJS | default "lib/gitalk/gitalk.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $commentConfig = dict "id" .Date "title" .Title "clientID" $gitalk.clientId "clientSecret" $gitalk.clientSecret "repo" $gitalk.repo "owner" $gitalk.owner "admin" (slice $gitalk.owner) | dict "gitalk" | merge $commentConfig -}}
<noscript>
Please enable JavaScript to view the comments powered by <a href="https://github.com/gitalk/gitalk"></a>Gitalk</a>.
@@ -30,13 +31,13 @@
{{- end -}}
{{- /* Valine Comment System */ -}}
- {{- if $comment.valine.enable -}}
- {{- $valine := $comment.valine -}}
+ {{- $valine := $comment.valine | default dict -}}
+ {{- if $valine.enable -}}
<div id="valine" class="comment"></div>
{{- $options := dict "targetPath" "lib/valine/valine.min.css" -}}
- {{- dict "source" "lib/valine/valine.scss" "toCSS" $options | dict "scratch" $.Scratch "data" | partial "scratch/stylesheet.html" -}}
+ {{- dict "source" "lib/valine/valine.scss" "toCSS" $options | dict "scratch" .Scratch "data" | partial "scratch/stylesheet.html" -}}
{{- $source := $cdn.valineJS | default "lib/valine/Valine.min.js" -}}
- {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "fingerprint" $fingerprint | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
{{- $commentConfig = dict "el" "#valine" "appId" $valine.appId "appKey" $valine.appKey "lang" ($valine.lang | default (T "valineLang")) "visitor" $valine.visitor "recordIP" $valine.recordIP "placeholder" ($valine.placeholder | default (T "valinePlaceholder")) "highlight" (ne $valine.highlight false) "enableQQ" $valine.enableQQ | dict "valine" | merge $commentConfig -}}
{{- with $valine.avatar -}}
{{- $commentConfig = dict "avatar" . | dict "valine" | merge $commentConfig -}}
@@ -50,15 +51,15 @@
{{- with $valine.serverURLs -}}
{{- $commentConfig = dict "serverURLs" . | dict "valine" | merge $commentConfig -}}
{{- end -}}
- {{- $commentConfig = $valine.emoji | default "facebook.yml" | printf "data/emoji/%s" | resources.Get | transform.Unmarshal | dict "valine" | merge $commentConfig -}}
+ {{- $commentConfig = $valine.emoji | default "google.yml" | printf "data/emoji/%s" | resources.Get | transform.Unmarshal | dict "valine" | merge $commentConfig -}}
<noscript>
Please enable JavaScript to view the comments powered by <a href="https://valine.js.org/">Valine</a>.
</noscript>
{{- end -}}
{{- /* Facebook Comment System */ -}}
- {{- if $comment.facebook.enable -}}
- {{- $facebook := $comment.facebook -}}
+ {{- $facebook := $comment.facebook | default dict -}}
+ {{- if $facebook.enable -}}
<div id="fb-root" class="comment"></div>
<div
class="fb-comments"
@@ -67,15 +68,15 @@
data-numposts="{{ $facebook.numPosts }}"
></div>
{{- $source := printf "https://connect.facebook.net/%s/sdk.js#xfbml=1&version=v5.0&appId=%s&autoLogAppEvents=1" ($facebook.languageCode | default (T "facebookLanguageCode")) $facebook.appId -}}
- {{- dict "source" $source "defer" true | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" $source "defer" true | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
<noscript>
Please enable JavaScript to view the comments powered by <a href="https://developers.facebook.com/docs/plugins/comments/"></a>Facebook</a>.
</noscript>
{{- end -}}
{{- /* Telegram Comments System */ -}}
- {{- if $comment.telegram.enable -}}
- {{- $telegram := $comment.telegram -}}
+ {{- $telegram := $comment.telegram | default dict -}}
+ {{- if $telegram.enable -}}
<div id="telegram-comments" class="comment"></div>
{{- $attr := printf `data-comments-app-website="%s"` $telegram.siteID -}}
{{- $attr = printf `%s data-limit="%s"` $attr ($telegram.limit | default 5) -}}
@@ -94,25 +95,26 @@
{{- if $telegram.outlined -}}
{{- $attr = printf `%s data-outlined="1"` $attr -}}
{{- end -}}
- {{- dict "source" "https://comments.app/js/widget.js?2" "defer" true "attr" $attr | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" "https://comments.app/js/widget.js?2" "defer" true "attr" $attr | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
<noscript>
Please enable JavaScript to view the comments powered by <a href="https://comments.app/">Telegram Comments</a>.
</noscript>
{{- end -}}
{{- /* Commento Comment System */ -}}
- {{- if $comment.commento.enable -}}
+ {{- $commento := $comment.commento | default dict -}}
+ {{- if $commento.enable -}}
<div id="commento"></div>
- {{- dict "source" "https://cdn.commento.io/js/commento.js" "defer" true | dict "scratch" $.Scratch "data" | partial "scratch/script.html" -}}
+ {{- dict "source" "https://cdn.commento.io/js/commento.js" "defer" true | dict "scratch" .Scratch "data" | partial "scratch/script.html" -}}
<noscript>
Please enable JavaScript to view the comments powered by <a href="https://commento.io/">Commento</a>.
</noscript>
{{- end -}}
{{- /* Utterances Comment System */ -}}
- {{- if $comment.utterances.enable -}}
+ {{- $utterances := $comment.utterances | default dict -}}
+ {{- if $utterances.enable -}}
<div id="utterances"></div>
- {{- $utterances := $comment.utterances -}}
{{- $commentConfig = dict "repo" $utterances.repo | dict "utterances" | merge $commentConfig -}}
{{- $commentConfig = $utterances.issueTerm | default "pathname" | dict "issueTerm" | dict "utterances" | merge $commentConfig -}}
{{- $commentConfig = dict "label" $utterances.label | dict "utterances" | merge $commentConfig -}}
diff --git a/layouts/partials/head/link.html b/layouts/partials/head/link.html
index 04d5b6df..0e3fd731 100644
--- a/layouts/partials/head/link.html
+++ b/layouts/partials/head/link.html
@@ -36,8 +36,7 @@
{{- /* style.min.css */ -}}
{{- $stylesheet := dict "source" "css/style.template.scss" "fingerprint" $fingerprint -}}
-{{- $targetPath := cond .Site.IsMultiLingual (printf "css/style.%s.min.css" .Language.Lang) "css/style.min.css" -}}
-{{- $options := dict "targetPath" $targetPath "includePaths" (slice "config/css") "enableSourceMap" true -}}
+{{- $options := dict "targetPath" "css/style.min.css" "includePaths" (slice "config/css") "enableSourceMap" true -}}
{{- $stylesheet = dict "template" "style.scss" "context" . "toCSS" $options | merge $stylesheet -}}
{{- partial "plugin/stylesheet.html" $stylesheet -}}
diff --git a/layouts/partials/home/profile.html b/layouts/partials/home/profile.html
index 4563e19c..1eb65cb0 100644
--- a/layouts/partials/home/profile.html
+++ b/layouts/partials/home/profile.html
@@ -23,7 +23,7 @@
{{- with $profile.title -}}
<h1 class="home-title">
- {{- . -}}
+ {{- . | safeHTML -}}
</h1>
{{- end -}}
@@ -40,7 +40,7 @@
{{- end -}}
{{- if $profile.social -}}
- <div class="social-links">
+ <div class="links">
{{- $socialMap := resources.Get "data/social.yml" | transform.Unmarshal -}}
{{- $socialArr := slice -}}
{{- range $key, $value := .Site.Params.social -}}
diff --git a/layouts/partials/plugin/analytics.html b/layouts/partials/plugin/analytics.html
index 7714da6d..ec2eb9a0 100644
--- a/layouts/partials/plugin/analytics.html
+++ b/layouts/partials/plugin/analytics.html
@@ -2,18 +2,16 @@
{{- /* Google Analytics */ -}}
{{- with .google.id -}}
<script type="text/javascript">
- window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
- ga('create', '{{ . }}', {{- if $.google.cookie }}'auto'{{ else }}{ 'storage': 'none' }{{ end }});
- {{- if $.google.anonymizeIP }}ga('set', 'anonymizeIp', true);{{ end -}}
- ga('send', 'pageview');
+ window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());
+ gtag('config', '{{ . }}'{{ if $.google.anonymizeIP }}, { 'anonymize_ip': true }{{ end }});
</script>
- {{- dict "source" "https://www.google-analytics.com/analytics.js" "async" true | partial "plugin/script.html" -}}
+ {{- printf "https://www.googletagmanager.com/gtag/js?id=%s" . | dict "async" true "source" | partial "plugin/script.html" -}}
{{- end -}}
{{- /* Fathom Analytics */ -}}
{{- with .fathom.id -}}
<script type="text/javascript">
- window.fathom=window.fathom||function(){(fathom.q=fathom.q||[]).push(arguments)};
+ window.fathom=window.fathom||function(){(fathom.q=fathom.q||[]).push(arguments);};
fathom('set', 'siteId', '{{ . }}');
fathom('trackPageview');
</script>
diff --git a/layouts/posts/single.html b/layouts/posts/single.html
index 240b0d51..e0189fe1 100644
--- a/layouts/posts/single.html
+++ b/layouts/posts/single.html
@@ -3,11 +3,18 @@
{{- define "content" -}}
{{- $params := .Scratch.Get "params" -}}
+ {{- $toc := $params.toc -}}
+ {{- if eq $toc true -}}
+ {{- $toc = .Site.Params.page.toc | default dict -}}
+ {{- else if eq $toc false -}}
+ {{- $toc = dict "enable" false -}}
+ {{- end -}}
+
{{- /* Auto TOC */ -}}
- {{- if ne $params.toc.enable false -}}
+ {{- if ne $toc.enable false -}}
<div class="toc" id="toc-auto">
<h2 class="toc-title">{{ T "contents" }}</h2>
- <div class="toc-content{{ if eq $params.toc.auto false }} always-active{{ end }}" id="toc-content-auto"></div>
+ <div class="toc-content{{ if eq $toc.auto false }} always-active{{ end }}" id="toc-content-auto"></div>
</div>
{{- end -}}
@@ -66,7 +73,7 @@
{{- end -}}
{{- /* Static TOC */ -}}
- {{- if ne $params.toc.enable false -}}
+ {{- if ne $toc.enable false -}}
<div class="details toc" id="toc-static">
<div class="details-summary toc-title">
<span>{{ T "contents" }}</span>
diff --git a/layouts/taxonomy/list.html b/layouts/taxonomy/list.html
index 8e6d5531..249d066a 100644
--- a/layouts/taxonomy/list.html
+++ b/layouts/taxonomy/list.html
@@ -17,25 +17,27 @@
</h2>
{{- /* Paginate */ -}}
- {{- $pages := .Pages.GroupByDate "2006" -}}
- {{- with .Site.Params.list.paginate | default .Site.Params.paginate -}}
- {{- $pages = $.Paginate $pages . -}}
- {{- else -}}
- {{- $pages = .Paginate $pages -}}
- {{- end -}}
- {{- range $pages.PageGroups -}}
- <h3 class="group-title">{{ .Key }}</h3>
- {{- range .Pages -}}
- <article class="archive-item">
- <a href="{{ .RelPermalink }}" class="archive-item-link">
- {{- .Title -}}
- </a>
- <span class="archive-item-date">
- {{- .Date.Format ($.Site.Params.list.dateFormat | default "01-02") -}}
- </span>
- </article>
+ {{- if .Pages -}}
+ {{- $pages := .Pages.GroupByDate "2006" -}}
+ {{- with .Site.Params.list.paginate | default .Site.Params.paginate -}}
+ {{- $pages = $.Paginate $pages . -}}
+ {{- else -}}
+ {{- $pages = .Paginate $pages -}}
+ {{- end -}}
+ {{- range $pages.PageGroups -}}
+ <h3 class="group-title">{{ .Key }}</h3>
+ {{- range .Pages -}}
+ <article class="archive-item">
+ <a href="{{ .RelPermalink }}" class="archive-item-link">
+ {{- .Title -}}
+ </a>
+ <span class="archive-item-date">
+ {{- .Date.Format ($.Site.Params.list.dateFormat | default "01-02") -}}
+ </span>
+ </article>
+ {{- end -}}
{{- end -}}
+ {{- partial "paginator.html" . -}}
{{- end -}}
- {{- partial "paginator.html" . -}}
</div>
{{- end -}}
diff --git a/resources/_gen/assets/scss/css/style.template.scss_788c4a23da05f3aa3e03b28055a2e5f9.content b/resources/_gen/assets/scss/css/style.template.scss_788c4a23da05f3aa3e03b28055a2e5f9.content
deleted file mode 100644
index 8a0c9fcd..00000000
--- a/resources/_gen/assets/scss/css/style.template.scss_788c4a23da05f3aa3e03b28055a2e5f9.content
+++ /dev/null
@@ -1,3 +0,0 @@
-@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@800&display=swap");html{font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-display:swap;font-size:16px;line-height:1.5rem;width:100%}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background-color:rgba(53,166,247,0.25)}[theme=dark] ::selection{background-color:rgba(50,112,194,0.4)}body{background-color:#fff;color:#161209;word-wrap:break-word;overflow-wrap:break-word;scrollbar-color:auto}body[theme=dark]{color:#a9a9b3;background-color:#292a2d}input::-ms-clear{display:none}a,a::before,a::after{text-decoration:none;color:#161209}[theme=dark] a,[theme=dark] a::before,[theme=dark] a::after{color:#a9a9b3}a:active,a:hover{color:#2d96bd}[theme=dark] a:active,[theme=dark] a:hover{color:#fff}#mask{background-repeat:no-repeat;background-position:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background-color:rgba(0,0,0,0)}.blur #mask{z-index:100;background-color:rgba(0,0,0,0.25)}svg.icon{display:inline-block;width:1.25em;height:1em;text-align:center}svg.icon path{fill:currentColor}img.emoji{height:1em;width:1em;margin:0 .05em 0 .1em;vertical-align:-.1em}.details .details-summary:hover{cursor:pointer}.details i.details-icon{color:#a9a9b3;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}[theme=dark] .details i.details-icon{color:#5d5d5f}.details .details-content{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.details.open i.details-icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.details.open .details-content{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}#fixed-buttons{display:none}.fixed-button{display:none;z-index:100;position:fixed;right:1.5rem;font-size:1rem;line-height:1.3rem;padding:.6rem .6rem;color:#a9a9b3;background:#f8f8f8;-webkit-border-radius:2rem;-moz-border-radius:2rem;border-radius:2rem}.blur .fixed-button{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.fixed-button:hover,.fixed-button:active{color:#161209;cursor:pointer}.fixed-button:active,.fixed-button:focus,.fixed-button:hover{outline:none}[theme=dark] .fixed-button{color:#5d5d5f;background:#252627}[theme=dark] .fixed-button:hover,[theme=dark] .fixed-button:active{color:#a9a9b3}#back-to-top{display:block;bottom:1.5rem}#view-comments{bottom:4.5rem}img{-o-object-fit:contain;object-fit:contain;font-family:"object-fit: contain;"}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding:0 1rem}.page{position:relative;max-width:800px;width:60%;margin:0 auto;padding-top:3.5rem}.blur .page{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.toc .toc-title{font-size:1.2rem;font-weight:bold;text-transform:uppercase}.toc .toc-content{font-size:1rem}.toc .toc-content ul{text-indent:-0.85rem;padding-left:.8rem;list-style:none}.toc .toc-content ul a:first-child::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}[theme=dark] .toc .toc-content ul a:first-child::before{color:#55bde2}.toc .toc-content ul ul{padding-left:1.5rem}.toc ruby{background:#f5f5f5}.toc ruby rt{color:#a9a9b3}[theme=dark] .toc ruby{background:#272C34}[theme=dark] .toc ruby rt{color:#5d5d5f}#toc-auto{display:block;position:absolute;width:12000px;padding:0 .8rem;border-left:4px solid #f0f0f0;word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box;top:10rem;left:0;visibility:hidden}.blur #toc-auto{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}[theme=dark] #toc-auto{border-left-color:#363636}#toc-auto .toc-title{margin:.8rem 0}#toc-auto .toc-content.always-active ul{display:block}#toc-auto .toc-content>nav>ul{margin:.625rem 0}#toc-auto .toc-content ul ul{display:none}#toc-auto .toc-content ul .has-active>ul{display:block}#toc-auto .toc-content a.active{font-weight:bold;color:#2d96bd}[theme=dark] #toc-auto .toc-content a.active{color:#55bde2}#toc-auto .toc-content a.active::before{color:#ef3982}[theme=dark] #toc-auto .toc-content a.active::before{color:#bdebfc}#toc-static{display:none;margin:.8rem 0}#toc-static .toc-title{display:flex;justify-content:space-between;line-height:2em;padding:0 .75rem;background:#e6e6e6}[theme=dark] #toc-static .toc-title{background:#1a1d23}#toc-static .toc-content{background-color:#f5f5f5}#toc-static .toc-content>nav>ul{margin:0;padding:.4rem 1rem .4rem 1.8rem}[theme=dark] #toc-static .toc-content{background-color:#272C34}#toc-static.open .toc-title{background:#ededed}[theme=dark] #toc-static.open .toc-title{background:#20252b}.single .single-title{margin:1rem 0 .5rem;font-size:1.6rem;font-weight:bold;line-height:140%}.single .single-subtitle{margin:.4rem 0;font-size:1.2rem;font-weight:normal;font-style:italic;line-height:100%}.single .post-meta{font-size:.875rem;color:#a9a9b3}.single .post-meta span{display:inline-block}[theme=dark] .single .post-meta{color:#5d5d5f}.single .post-meta a,.single .post-meta a::before,.single .post-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-meta a,[theme=dark] .single .post-meta a::before,[theme=dark] .single .post-meta a::after{color:#a9a9b3}.single .post-meta a:active,.single .post-meta a:hover{color:#ef3982}[theme=dark] .single .post-meta a:active,[theme=dark] .single .post-meta a:hover{color:#fff}.single .post-meta .author{font-size:1.05rem}.single .featured-image{margin:.5rem 0 1rem 0}.single .featured-image img{display:block;width:100%;height:auto;margin:0 auto;overflow:hidden}.single .content>h2{font-size:1.5rem}.single .content>h2 code{font-size:1.25rem}.single .content>h3{font-size:1.375rem}.single .content>h3 code{font-size:1.125rem}.single .content>h4{font-size:1.25rem}.single .content>h4 code{font-size:1rem}.single .content>h5{font-size:1.125rem}.single .content>h6{font-size:1rem}.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}[theme=dark] .single .content h2,[theme=dark] .single .content h3,[theme=dark] .single .content h4,[theme=dark] .single .content h5,[theme=dark] .single .content h6{font-weight:bolder}.single .content>h2>.header-mark::before,.single .content>h3>.header-mark::before,.single .content>h4>.header-mark::before,.single .content>h5>.header-mark::before,.single .content>h6>.header-mark::before{content:"|";margin-right:.3125rem;color:#2d96bd}[theme=dark] .single .content>h2>.header-mark::before,[theme=dark] .single .content>h3>.header-mark::before,[theme=dark] .single .content>h4>.header-mark::before,[theme=dark] .single .content>h5>.header-mark::before,[theme=dark] .single .content>h6>.header-mark::before{color:#55bde2}.single .content>h2>.header-mark::before{content:"#"}.single .content p{margin:.5rem 0}.single .content b,.single .content strong{font-weight:bold}[theme=dark] .single .content b,[theme=dark] .single .content strong{color:#ddd}.single .content a,.single .content a::before,.single .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content a,[theme=dark] .single .content a::before,[theme=dark] .single .content a::after{color:#55bde2}.single .content a:active,.single .content a:hover{color:#ef3982}[theme=dark] .single .content a:active,[theme=dark] .single .content a:hover{color:#bdebfc}.single .content a{word-wrap:break-word;overflow-wrap:break-word}[theme=dark] .single .content a b,[theme=dark] .single .content a strong{color:#55bde2}.single .content [theme=dark] a:hover b,.single .content [theme=dark] a:hover strong{color:#bdebfc}.single .content ul,.single .content ol{margin:.5rem 0;padding-left:2.5rem}.single .content ul{list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}[theme=dark] .single .content ruby{background:#272C34}[theme=dark] .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}[theme=dark] .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff;border-collapse:collapse}[theme=dark] .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}[theme=dark] .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px solid #e8e8e8}[theme=dark] .single .content .table-wrapper>table th,[theme=dark] .single .content .table-wrapper>table td{border-color:#1c2025}.single .content img{max-width:100%;min-height:1em}.single .content figure{margin:.5rem;text-align:center}.single .content figure .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.5rem;margin:0 auto;font-size:.875rem;color:#969696}.single .content figure img{display:block;height:auto;margin:0 auto;overflow:hidden}.single .content .lazyloading{-o-object-fit:none;object-fit:none;font-family:"object-fit: none;"}.single .content blockquote{display:block;border-left:0.5rem solid #6bd6fd;background-color:rgba(107,214,253,0.2);padding:.25rem .75rem;margin:1rem 0}[theme=dark] .single .content blockquote{border-left-color:#59c5ec;background-color:rgba(89,197,236,0.2)}.single .content .footnotes{color:#a9a9b3}[theme=dark] .single .content .footnotes{color:#5d5d5f}.single .content .footnotes p{margin:.25rem 0}.single .content code{display:inline-block;max-width:100%;padding:0 .4rem;word-wrap:break-word;overflow-wrap:break-word;-webkit-line-break:anywhere;-ms-line-break:anywhere;line-break:anywhere;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content code{color:#E5BF78}.single .content pre{margin:0;padding:.25rem 0 .25rem .5rem;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.single .content pre code{padding:0}.single .content pre img{min-height:1em;max-height:1.2em;vertical-align:text-bottom}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}[theme=dark] .single .content code,[theme=dark] .single .content pre,[theme=dark] .single .content .highlight table,[theme=dark] .single .content .highlight tr,[theme=dark] .single .content .highlight td{background:#272C34}.single .content .highlight,.single .content .gist{font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem}.single .content .highlight .table-wrapper>table,.single .content .highlight .table-wrapper>table thead,.single .content .highlight .table-wrapper>table tr,.single .content .highlight .table-wrapper>table td,.single .content .gist .table-wrapper>table,.single .content .gist .table-wrapper>table thead,.single .content .gist .table-wrapper>table tr,.single .content .gist .table-wrapper>table td{margin:0;padding:0;border:none !important;white-space:nowrap}.single .content .highlight{line-height:1.4em;margin:.5rem 0}.single .content .highlight>.chroma{position:relative}.single .content .highlight>.chroma .code-header{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;color:#9c9c9c;background:#e1e1e1}[theme=dark] .single .content .highlight>.chroma .code-header{color:#b1b0b0;background:#1a1d23}.single .content .highlight>.chroma .code-header:hover{cursor:pointer}.single .content .highlight>.chroma .code-header .code-title{width:100%;padding:.4rem}.single .content .highlight>.chroma .code-header .code-title::after{padding-left:.2rem;content:'Code'}.single .content .highlight>.chroma .code-header.language-bash .code-title::after{content:"Bash"}.single .content .highlight>.chroma .code-header.language-c .code-title::after{content:"C"}.single .content .highlight>.chroma .code-header.language-cs .code-title::after{content:"C#"}.single .content .highlight>.chroma .code-header.language-cpp .code-title::after{content:"C++"}.single .content .highlight>.chroma .code-header.language-clojure .code-title::after{content:"Clojure"}.single .content .highlight>.chroma .code-header.language-coffeescript .code-title::after{content:"CoffeeScript"}.single .content .highlight>.chroma .code-header.language-css .code-title::after{content:"CSS"}.single .content .highlight>.chroma .code-header.language-dart .code-title::after{content:"Dart"}.single .content .highlight>.chroma .code-header.language-diff .code-title::after{content:"Diff"}.single .content .highlight>.chroma .code-header.language-erlang .code-title::after{content:"Erlang"}.single .content .highlight>.chroma .code-header.language-go .code-title::after{content:"Go"}.single .content .highlight>.chroma .code-header.language-go-html-template .code-title::after{content:"Go HTML Template"}.single .content .highlight>.chroma .code-header.language-groovy .code-title::after{content:"Groovy"}.single .content .highlight>.chroma .code-header.language-haskell .code-title::after{content:"Haskell"}.single .content .highlight>.chroma .code-header.language-html .code-title::after{content:"HTML"}.single .content .highlight>.chroma .code-header.language-http .code-title::after{content:"HTTP"}.single .content .highlight>.chroma .code-header.language-xml .code-title::after{content:"XML"}.single .content .highlight>.chroma .code-header.language-java .code-title::after{content:"Java"}.single .content .highlight>.chroma .code-header.language-js .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-javascript .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-json .code-title::after{content:"JSON"}.single .content .highlight>.chroma .code-header.language-kotlin .code-title::after{content:"Kotlin"}.single .content .highlight>.chroma .code-header.language-latex .code-title::after{content:"LaTeX"}.single .content .highlight>.chroma .code-header.language-less .code-title::after{content:"Less"}.single .content .highlight>.chroma .code-header.language-lisp .code-title::after{content:"Lisp"}.single .content .highlight>.chroma .code-header.language-lua .code-title::after{content:"Lua"}.single .content .highlight>.chroma .code-header.language-makefile .code-title::after{content:"Makefile"}.single .content .highlight>.chroma .code-header.language-markdown .code-title::after{content:"Markdown"}.single .content .highlight>.chroma .code-header.language-matlab .code-title::after{content:"Matlab"}.single .content .highlight>.chroma .code-header.language-objectivec .code-title::after{content:"Objective-C"}.single .content .highlight>.chroma .code-header.language-php .code-title::after{content:"PHP"}.single .content .highlight>.chroma .code-header.language-perl .code-title::after{content:"Perl"}.single .content .highlight>.chroma .code-header.language-python .code-title::after{content:"Python"}.single .content .highlight>.chroma .code-header.language-r .code-title::after{content:"R"}.single .content .highlight>.chroma .code-header.language-ruby .code-title::after{content:"Ruby"}.single .content .highlight>.chroma .code-header.language-rust .code-title::after{content:"Rust"}.single .content .highlight>.chroma .code-header.language-scala .code-title::after{content:"Scala"}.single .content .highlight>.chroma .code-header.language-scss .code-title::after{content:"Scss"}.single .content .highlight>.chroma .code-header.language-shell .code-title::after{content:"Shell"}.single .content .highlight>.chroma .code-header.language-sql .code-title::after{content:"SQL"}.single .content .highlight>.chroma .code-header.language-swift .code-title::after{content:"Swift"}.single .content .highlight>.chroma .code-header.language-tex .code-title::after{content:"TeX"}.single .content .highlight>.chroma .code-header.language-toml .code-title::after{content:"TOML"}.single .content .highlight>.chroma .code-header.language-ts .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-typescript .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-vue .code-title::after{content:"Vue"}.single .content .highlight>.chroma .code-header.language-yml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .code-header.language-yaml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .lntd:first-child{min-width:1.6rem;text-align:right}.single .content .highlight>.chroma .lntd:last-child{width:100%}.single .content .highlight>.chroma .lntd:last-child pre{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:intrinsic;min-width:max-content}.single .content .highlight>.chroma .ln{padding-right:.75rem}.single .content .highlight>.chroma .hl{display:block;background-color:#dcdcdc}[theme=dark] .single .content .highlight>.chroma .hl{background-color:#1c2025}.single .content .highlight>.chroma .ln,.single .content .highlight>.chroma .lnt{color:#a9a9b3}[theme=dark] .single .content .highlight>.chroma .ln,[theme=dark] .single .content .highlight>.chroma .lnt{color:#5d5d5f}.single .content .highlight>.chroma .arrow{padding:0 .2rem;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}.single .content .highlight>.chroma .ellipses{padding:.4rem}.single .content .highlight>.chroma .copy{display:none;padding:.4rem}.single .content .highlight>.chroma .copy:hover{cursor:pointer;color:#2d96bd}[theme=dark] .single .content .highlight>.chroma .copy:hover{color:#fff}.single .content .highlight>.chroma .table-wrapper{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.single .content .highlight>.chroma.open .code-header{background:#ededed}[theme=dark] .single .content .highlight>.chroma.open .code-header{background:#20252b}.single .content .highlight>.chroma.open .table-wrapper{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}.single .content .highlight>.chroma.open .arrow{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.single .content .highlight>.chroma.open .ellipses{display:none}.single .content .highlight>.chroma.open .copy{display:inline}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}[theme=dark] .single .content .highlight .p{color:#a9a9b3}[theme=dark] .single .content .highlight .k{color:#d371e3}[theme=dark] .single .content .highlight .kc{color:#d371e3}[theme=dark] .single .content .highlight .kd{color:#d371e3}[theme=dark] .single .content .highlight .kn{color:#d371e3}[theme=dark] .single .content .highlight .kp{color:#d371e3}[theme=dark] .single .content .highlight .kr{color:#d371e3}[theme=dark] .single .content .highlight .kt{color:#d371e3}[theme=dark] .single .content .highlight .n{color:#a9b2c0}[theme=dark] .single .content .highlight .na{color:#41b0f5}[theme=dark] .single .content .highlight .nb{color:#19b9c4}[theme=dark] .single .content .highlight .bp{color:#ecbf6f}[theme=dark] .single .content .highlight .nc{color:#ecbf6f}[theme=dark] .single .content .highlight .no{color:#41b0f5}[theme=dark] .single .content .highlight .nd{color:#ecbf6f}[theme=dark] .single .content .highlight .ni{color:#41b0f5}[theme=dark] .single .content .highlight .ne{color:#41b0f5}[theme=dark] .single .content .highlight .nf{color:#41b0f5}[theme=dark] .single .content .highlight .fm{color:#19b9c4}[theme=dark] .single .content .highlight .nl{color:#41b0f5}[theme=dark] .single .content .highlight .nn{color:#41b0f5}[theme=dark] .single .content .highlight .nx{color:#a9a9b3}[theme=dark] .single .content .highlight .py{color:#41b0f5}[theme=dark] .single .content .highlight .nt{color:#41b0f5}[theme=dark] .single .content .highlight .nv{color:#41b0f5}[theme=dark] .single .content .highlight .vc{color:#41b0f5}[theme=dark] .single .content .highlight .vg{color:#41b0f5}[theme=dark] .single .content .highlight .vi{color:#41b0f5}[theme=dark] .single .content .highlight .vm{color:#41b0f5}[theme=dark] .single .content .highlight .l{color:#2aa198}[theme=dark] .single .content .highlight .ld{color:#2aa198}[theme=dark] .single .content .highlight .s{color:#8cc570}[theme=dark] .single .content .highlight .sa{color:#8cc570}[theme=dark] .single .content .highlight .sb{color:#8cc570}[theme=dark] .single .content .highlight .sc{color:#8cc570}[theme=dark] .single .content .highlight .dl{color:#8cc570}[theme=dark] .single .content .highlight .sd{color:#8cc570}[theme=dark] .single .content .highlight .s2{color:#8cc570}[theme=dark] .single .content .highlight .se{color:#8cc570}[theme=dark] .single .content .highlight .sh{color:#8cc570}[theme=dark] .single .content .highlight .si{color:#8cc570}[theme=dark] .single .content .highlight .sx{color:#8cc570}[theme=dark] .single .content .highlight .sr{color:#8cc570}[theme=dark] .single .content .highlight .s1{color:#8cc570}[theme=dark] .single .content .highlight .ss{color:#8cc570}[theme=dark] .single .content .highlight .m{color:#db985c}[theme=dark] .single .content .highlight .mb{color:#db985c}[theme=dark] .single .content .highlight .mf{color:#db985c}[theme=dark] .single .content .highlight .mh{color:#db985c}[theme=dark] .single .content .highlight .mi{color:#db985c}[theme=dark] .single .content .highlight .il{color:#db985c}[theme=dark] .single .content .highlight .mo{color:#db985c}[theme=dark] .single .content .highlight .o{color:#ecbf6f}[theme=dark] .single .content .highlight .ow{color:#d371e3}[theme=dark] .single .content .highlight .c{color:#7e848f}[theme=dark] .single .content .highlight .ch{color:#7e848f}[theme=dark] .single .content .highlight .cm{color:#7e848f}[theme=dark] .single .content .highlight .c1{color:#7e848f}[theme=dark] .single .content .highlight .cs{color:#7e848f}[theme=dark] .single .content .highlight .cp{color:#7e848f}[theme=dark] .single .content .highlight .cpf{color:#7e848f}[theme=dark] .single .content .highlight .g{color:#f16372}[theme=dark] .single .content .highlight .gd{color:#f16372}[theme=dark] .single .content .highlight .ge{color:#f16372}[theme=dark] .single .content .highlight .gr{color:#f16372}[theme=dark] .single .content .highlight .gh{color:#f16372}[theme=dark] .single .content .highlight .gi{color:#f16372}[theme=dark] .single .content .highlight .go{color:#f16372}[theme=dark] .single .content .highlight .gp{color:#f16372}[theme=dark] .single .content .highlight .gs{color:#f16372}[theme=dark] .single .content .highlight .gu{color:#f16372}[theme=dark] .single .content .highlight .gt{color:#f16372}[theme=dark] .single .content .highlight .w{color:#bbb}.single .content .gist .gist-file,.single .content .gist .gist-data,.single .content .gist .gist-meta{border:none}.single .content .gist .gist-meta{padding:.4rem .8rem;background-color:#e8e8e8}.single .content .gist .gist-meta a,.single .content .gist .gist-meta a::before,.single .content .gist .gist-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content .gist .gist-meta a,[theme=dark] .single .content .gist .gist-meta a::before,[theme=dark] .single .content .gist .gist-meta a::after{color:#55bde2}.single .content .gist .gist-meta a:active,.single .content .gist .gist-meta a:hover{color:#ef3982}[theme=dark] .single .content .gist .gist-meta a:active,[theme=dark] .single .content .gist .gist-meta a:hover{color:#bdebfc}[theme=dark] .single .content .gist .gist-meta{background-color:#1c2025}[theme=dark] .single .content .gist .highlight{background:#141414}[theme=dark] .single .content .gist .blob-num,[theme=dark] .single .content .gist .blob-code-inner,[theme=dark] .single .content .gist .highlight,[theme=dark] .single .content .gist .pl-enm,[theme=dark] .single .content .gist .pl-ko,[theme=dark] .single .content .gist .pl-mo,[theme=dark] .single .content .gist .pl-mp1 .pl-sf,[theme=dark] .single .content .gist .pl-ms,[theme=dark] .single .content .gist .pl-pdc1,[theme=dark] .single .content .gist .pl-scp,[theme=dark] .single .content .gist .pl-smc,[theme=dark] .single .content .gist .pl-som,[theme=dark] .single .content .gist .pl-va,[theme=dark] .single .content .gist .pl-vpf,[theme=dark] .single .content .gist .pl-vpu,[theme=dark] .single .content .gist .pl-mdr{color:#aab1bf}[theme=dark] .single .content .gist .pl-mb,[theme=dark] .single .content .gist .pl-pdb{font-weight:700}[theme=dark] .single .content .gist .pl-c,[theme=dark] .single .content .gist .pl-c span,[theme=dark] .single .content .gist .pl-pdc{color:#5b6270;font-style:italic}[theme=dark] .single .content .gist .pl-sr .pl-cce{color:#56b5c2;font-weight:400}[theme=dark] .single .content .gist .pl-ef,[theme=dark] .single .content .gist .pl-en,[theme=dark] .single .content .gist .pl-enf,[theme=dark] .single .content .gist .pl-eoai,[theme=dark] .single .content .gist .pl-kos,[theme=dark] .single .content .gist .pl-mh .pl-pdh,[theme=dark] .single .content .gist .pl-mr{color:#61afef}[theme=dark] .single .content .gist .pl-ens,[theme=dark] .single .content .gist .pl-vi{color:#be5046}[theme=dark] .single .content .gist .pl-enti,[theme=dark] .single .content .gist .pl-mai .pl-sf,[theme=dark] .single .content .gist .pl-ml,[theme=dark] .single .content .gist .pl-sf,[theme=dark] .single .content .gist .pl-sr,[theme=dark] .single .content .gist .pl-sr .pl-sra,[theme=dark] .single .content .gist .pl-src,[theme=dark] .single .content .gist .pl-st,[theme=dark] .single .content .gist .pl-vo{color:#56b5c2}[theme=dark] .single .content .gist .pl-eoi,[theme=dark] .single .content .gist .pl-mri,[theme=dark] .single .content .gist .pl-pds,[theme=dark] .single .content .gist .pl-pse .pl-s1,[theme=dark] .single .content .gist .pl-s,[theme=dark] .single .content .gist .pl-s1{color:#97c279}[theme=dark] .single .content .gist .pl-k,[theme=dark] .single .content .gist .pl-kolp,[theme=dark] .single .content .gist .pl-mc,[theme=dark] .single .content .gist .pl-pde{color:#c578dd}[theme=dark] .single .content .gist .pl-mi,[theme=dark] .single .content .gist .pl-pdi{color:#c578dd;font-style:italic}[theme=dark] .single .content .gist .pl-mp,[theme=dark] .single .content .gist .pl-stp{color:#818896}[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi,[theme=dark] .single .content .gist .pl-mdr{font-weight:400}[theme=dark] .single .content .gist .pl-mdht,[theme=dark] .single .content .gist .pl-mi1{color:#97c279;background:#020}[theme=dark] .single .content .gist .pl-md,[theme=dark] .single .content .gist .pl-mdhf{color:#df6b75;background:#200}[theme=dark] .single .content .gist .pl-corl{color:#df6b75;text-decoration:underline}[theme=dark] .single .content .gist .pl-ib{background:#df6b75}[theme=dark] .single .content .gist .pl-ii{background:#e0c184;color:#fff}[theme=dark] .single .content .gist .pl-iu{background:#e05151}[theme=dark] .single .content .gist .pl-ms1{color:#aab1bf;background:#373b41}[theme=dark] .single .content .gist .pl-c1,[theme=dark] .single .content .gist .pl-cn,[theme=dark] .single .content .gist .pl-e,[theme=dark] .single .content .gist .pl-eoa,[theme=dark] .single .content .gist .pl-eoac,[theme=dark] .single .content .gist .pl-eoac .pl-pde,[theme=dark] .single .content .gist .pl-kou,[theme=dark] .single .content .gist .pl-mm,[theme=dark] .single .content .gist .pl-mp .pl-s3,[theme=dark] .single .content .gist .pl-mq,[theme=dark] .single .content .gist .pl-s3,[theme=dark] .single .content .gist .pl-sok,[theme=dark] .single .content .gist .pl-sv,[theme=dark] .single .content .gist .pl-mb{color:#d19965}[theme=dark] .single .content .gist .pl-enc,[theme=dark] .single .content .gist .pl-entc,[theme=dark] .single .content .gist .pl-pse .pl-s2,[theme=dark] .single .content .gist .pl-s2,[theme=dark] .single .content .gist .pl-sc,[theme=dark] .single .content .gist .pl-smp,[theme=dark] .single .content .gist .pl-sr .pl-sre,[theme=dark] .single .content .gist .pl-stj,[theme=dark] .single .content .gist .pl-v,[theme=dark] .single .content .gist .pl-pdb{color:#e4bf7a}[theme=dark] .single .content .gist .pl-ent,[theme=dark] .single .content .gist .pl-entl,[theme=dark] .single .content .gist .pl-entm,[theme=dark] .single .content .gist .pl-mh,[theme=dark] .single .content .gist .pl-pdv,[theme=dark] .single .content .gist .pl-smi,[theme=dark] .single .content .gist .pl-sol,[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi{color:#df6b75}[theme=dark] .single .content iframe.instagram-media{border:none !important}.single .content .admonition{position:relative;margin:1rem 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{font-weight:bold;margin:0 -0.75rem;padding:.25rem 1.8rem;border-bottom:1px solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition .admonition-content{padding:.5rem 0}.single .content .admonition i.icon{font-size:0.85rem;color:#448aff;position:absolute;top:.6rem;left:.4rem}.single .content .admonition i.details-icon{position:absolute;top:.6rem;right:.3rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.note.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.25)}.single .content .admonition.abstract.open .admonition-title{background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.25)}.single .content .admonition.info.open .admonition-title{background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.25)}.single .content .admonition.tip.open .admonition-title{background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.25)}.single .content .admonition.success.open .admonition-title{background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.25)}.single .content .admonition.question.open .admonition-title{background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.25)}.single .content .admonition.warning.open .admonition-title{background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.25)}.single .content .admonition.failure.open .admonition-title{background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.25)}.single .content .admonition.danger.open .admonition-title{background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.25)}.single .content .admonition.bug.open .admonition-title{background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.25)}.single .content .admonition.example.open .admonition-title{background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(159,159,159,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(159,159,159,0.1);background-color:rgba(159,159,159,0.25)}.single .content .admonition.quote.open .admonition-title{background-color:rgba(159,159,159,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content .echarts{margin:.5rem 0;text-align:center}.single .content .mapbox{margin:.5rem 0;padding:.5rem 0}.single .content meting-js{margin:.5rem 0}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #f0f0f0;border-bottom:none}[theme=dark] .single .content hr{border-top:1px dashed #363636}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #f0f0f0;border-bottom-color:#f0f0f0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #f0f0f0;box-shadow:inset 0 -1px 0 #f0f0f0;font-size:.8rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content kbd{background-color:#292a2d;border:1px solid #363636;border-bottom-color:#363636;-webkit-box-shadow:inset 0 -1px 0 #363636;box-shadow:inset 0 -1px 0 #363636;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;word-break:break-all}.single .content .version{height:1.25em;vertical-align:text-bottom}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #f0f0f0;padding:1rem 0 0.3rem}[theme=dark] .single .post-footer .post-info{border-bottom:1px solid #363636}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-mod a,.single .post-footer .post-info .post-info-line .post-info-mod a::before,.single .post-footer .post-info .post-info-line .post-info-mod a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-mod a:active,.single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-md{font-size:0.8rem;width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a,.single .post-footer .post-info .post-info-line .post-info-md a::before,.single .post-footer .post-info .post-info-line .post-info-md a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-md a:active,.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-share a *{vertical-align:text-bottom}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-tags{max-width:65%}.single .post-footer .post-tags *{display:inline}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{-webkit-transform:translateX(-4px);-moz-transform:translateX(-4px);-ms-transform:translateX(-4px);-o-transform:translateX(-4px);transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{-webkit-transform:translateX(4px);-moz-transform:translateX(4px);-ms-transform:translateX(4px);-o-transform:translateX(4px);transform:translateX(4px)}.single #comments{padding:4rem 0}.special .single-title,.special .single-subtitle{text-align:right}.archive .single-title{text-align:right}.archive .group-title{margin-top:1.5rem;margin-bottom:1rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block;margin-top:1rem;margin-bottom:.75rem}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;margin:.25rem 0 .25rem 1.5rem}.archive .archive-item-link{min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}[theme=dark] .archive .archive-item-link{color:#a9a9b3}[theme=dark] .archive .archive-item-link:hover{color:#fff}.archive .archive-item-date{width:4em;text-align:right;color:#a9a9b3}[theme=dark] .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a,.archive .tag-cloud-tags a::before,.archive .tag-cloud-tags a::after{text-decoration:none;color:#161209}[theme=dark] .archive .tag-cloud-tags a,[theme=dark] .archive .tag-cloud-tags a::before,[theme=dark] .archive .tag-cloud-tags a::after{color:#a9a9b3}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:hover{color:#2d96bd}[theme=dark] .archive .tag-cloud-tags a:active,[theme=dark] .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;overflow-wrap:break-word;-webkit-transition:all ease-out 0.3s;-moz-transition:all ease-out 0.3s;-o-transition:all ease-out 0.3s;transition:all ease-out 0.3s}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.archive .tag-cloud-tags a sup{color:#a9a9b3}[theme=dark] .archive .tag-cloud-tags a sup{color:#5d5d5f}.home .home-profile{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0);padding:2rem 0 0.5rem;text-align:center}.home .home-profile .home-avatar{padding:0.6rem}.home .home-profile .home-avatar img{display:inline-block;width:6rem;height:auto;margin:0 auto;-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);-webkit-transition:all 0.4s ease;-moz-transition:all 0.4s ease;-o-transition:all 0.4s ease;transition:all 0.4s ease}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem)}.home .home-profile .home-title{font-size:1.2rem;font-weight:bold;margin:0;padding:.4rem}.home .home-profile .home-subtitle{font-size:1rem;font-weight:normal;margin:0;padding:.4rem}.home .home-profile .social-links{padding:.4rem .2rem;font-size:1.6rem}.home .home-profile .social-links a *{vertical-align:text-bottom}.home .home-profile .social-links img{height:1.4rem;padding:0 .25rem}.home .home-profile .home-disclaimer{font-size:1rem;line-height:1.4rem;font-weight:normal;margin:0;padding:.4rem;color:#a9a9b3}[theme=dark] .home .home-profile .home-disclaimer{color:#5d5d5f}.home .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #f0f0f0}[theme=dark] .home .summary{color:#a9a9b3;border-bottom:1px dashed #363636}.home .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto;-webkit-transition:transform 0.4s ease;-moz-transition:transform 0.4s ease;-o-transition:transform 0.4s ease;transition:transform 0.4s ease}.home .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.home .summary .featured-image-preview:hover{-webkit-transform:scale(1.01);-moz-transform:scale(1.01);-ms-transform:scale(1.01);-o-transform:scale(1.01);transform:scale(1.01)}.home .summary .single-title{font-size:1.25rem;line-height:140%;margin:0.4rem 0}.home .summary .content{display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .home .summary .content{color:#5d5d5f}.home .summary .content h2,.home .summary .content h3,.home .summary .content h4,.home .summary .content h5,.home .summary .content h6,.home .summary .content p{font-size:1rem;line-height:1.5;display:inline}.home .summary .content h2::after,.home .summary .content h3::after,.home .summary .content h4::after,.home .summary .content h5::after,.home .summary .content h6::after,.home .summary .content p::after{content:"\A";white-space:pre}.home .summary .content h2{font-size:1.125rem}.home .summary .content a,.home .summary .content a::before,.home .summary .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home .summary .content a,[theme=dark] .home .summary .content a::before,[theme=dark] .home .summary .content a::after{color:#a9a9b3}.home .summary .content a:active,.home .summary .content a:hover{color:#ef3982}[theme=dark] .home .summary .content a:active,[theme=dark] .home .summary .content a:hover{color:#fff}.home .summary .content b,.home .summary .content strong{color:#a9a9b3}[theme=dark] .home .summary .content b,[theme=dark] .home .summary .content strong{color:#5d5d5f}.home .summary .post-footer{margin-top:.4rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.home .summary .post-footer a,.home .summary .post-footer a::before,.home .summary .post-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home .summary .post-footer a,[theme=dark] .home .summary .post-footer a::before,[theme=dark] .home .summary .post-footer a::after{color:#55bde2}.home .summary .post-footer a:active,.home .summary .post-footer a:hover{color:#ef3982}[theme=dark] .home .summary .post-footer a:active,[theme=dark] .home .summary .post-footer a:hover{color:#bdebfc}.home .summary .post-footer .post-tags{padding:0}.home .summary .post-footer .post-tags a,.home .summary .post-footer .post-tags a::before,.home .summary .post-footer .post-tags a::after{text-decoration:none;color:#161209}[theme=dark] .home .summary .post-footer .post-tags a,[theme=dark] .home .summary .post-footer .post-tags a::before,[theme=dark] .home .summary .post-footer .post-tags a::after{color:#a9a9b3}.home .summary .post-footer .post-tags a:active,.home .summary .post-footer .post-tags a:hover{color:#2d96bd}[theme=dark] .home .summary .post-footer .post-tags a:active,[theme=dark] .home .summary .post-footer .post-tags a:hover{color:#fff}#content-404{font-size:1.8rem;line-height:3rem;-webkit-transform:translateY(30vh);-moz-transform:translateY(30vh);-ms-transform:translateY(30vh);-o-transform:translateY(30vh);transform:translateY(30vh);text-align:center}header{width:100%;z-index:150;background-color:#f8f8f8}[theme=dark] header{background-color:#252627}header .logo{min-height:1.5em;height:1.5em;vertical-align:text-bottom}header .logo,header .header-title-pre{padding-right:.25rem}header .header-title-post{padding-left:.25rem}.header-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%}.header-title{font-family:Nunito,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;margin-right:.5rem;min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-flex:10;flex:10}.menu .menu-item{position:relative}.language-select{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%}.language-select:hover{cursor:pointer}.search{position:relative}.search input{color:transparent;box-sizing:border-box;height:2.5rem;width:2.5rem;-webkit-border-radius:.5rem;-moz-border-radius:.5rem;border-radius:.5rem;border:none;outline:none;background-color:#f8f8f8;vertical-align:baseline !important;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}[theme=dark] .search input{background-color:#252627}.search input::-webkit-input-placeholder{color:rgba(0,0,0,0)}.search input:-moz-placeholder{color:rgba(0,0,0,0)}.search input::-moz-placeholder{color:rgba(0,0,0,0)}.search input:-ms-input-placeholder{color:rgba(0,0,0,0)}.search input::placeholder{color:rgba(0,0,0,0)}.search .search-button{margin:0;position:absolute;left:auto;right:1rem}.search .search-toggle{left:.5rem;right:auto}.search .search-loading{display:none}.search .search-clear{display:none}.open .search input,.search.mobile input{color:#161209;background-color:#e9e9e9;padding:0 2rem 0 2rem}[theme=dark] .open .search input,[theme=dark] .search.mobile input{color:#a9a9b3;background-color:#363636}[theme=dark] .open .search input::-webkit-input-placeholder,[theme=dark] .search.mobile input::-webkit-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-moz-placeholder,[theme=dark] .search.mobile input:-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input::-moz-placeholder,[theme=dark] .search.mobile input::-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-ms-input-placeholder,[theme=dark] .search.mobile input:-ms-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input::placeholder,[theme=dark] .search.mobile input::placeholder{color:#5d5d5f}.open .search input::-webkit-input-placeholder,.search.mobile input::-webkit-input-placeholder{color:#a9a9b3}.open .search input:-moz-placeholder,.search.mobile input:-moz-placeholder{color:#a9a9b3}.open .search input::-moz-placeholder,.search.mobile input::-moz-placeholder{color:#a9a9b3}.open .search input:-ms-input-placeholder,.search.mobile input:-ms-input-placeholder{color:#a9a9b3}.open .search input::placeholder,.search.mobile input::placeholder{color:#a9a9b3}.open .search .search-button,.search.mobile .search-button{color:#a9a9b3}[theme=dark] .open .search .search-button,[theme=dark] .search.mobile .search-button{color:#5d5d5f}.open .search .search-clear:hover,.search.mobile .search-clear:hover{color:#ff6b6b}.open .search .search-toggle:hover,.search.mobile .search-toggle:hover{cursor:default}.theme-switch i{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}#header-desktop{display:block;position:fixed;height:3.5rem;line-height:3.5rem}#header-desktop .header-wrapper{padding:0 2rem 0 10vh}#header-desktop .header-wrapper .header-title{font-size:1.5rem}#header-desktop .header-wrapper .menu{overflow:hidden;white-space:nowrap}#header-desktop .header-wrapper .menu .menu-inner{float:right}#header-desktop .header-wrapper .menu .menu-item{margin:0 .5rem}#header-desktop .header-wrapper .menu .menu-item.delimiter{border-left:1.5px solid #161209}[theme=dark] #header-desktop .header-wrapper .menu .menu-item.delimiter{border-left-color:#363636}#header-desktop .header-wrapper .menu .menu-item.language{margin-right:0}#header-desktop .header-wrapper .menu .menu-item.search{margin:0 -.5rem 0 0}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}[theme=dark] #header-desktop .header-wrapper .menu a.active{color:#fff}#header-desktop.open .header-wrapper .menu .menu-item.search{margin:0 .25rem 0 .5rem}#header-desktop.open .header-wrapper .menu .menu-item.search input{width:24rem}#header-mobile{display:none;position:fixed;height:3.5rem;line-height:3.5rem}#header-mobile .header-container{padding:0;margin:0}#header-mobile .header-container .header-wrapper{padding:0 1rem;font-size:1.125rem;-webkit-transition:margin-top 0.3s ease;-moz-transition:margin-top 0.3s ease;-o-transition:margin-top 0.3s ease;transition:margin-top 0.3s ease}#header-mobile .header-container .header-wrapper .header-title{font-size:1.5rem;max-width:80%}#header-mobile .header-container .header-wrapper .menu-toggle{line-height:4rem;cursor:pointer;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}#header-mobile .header-container .header-wrapper .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}[theme=dark] #header-mobile .header-container .header-wrapper .menu-toggle span{background:#a9a9b3}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(1){-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-o-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(3){-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-o-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-container .menu{text-align:center;background:#f8f8f8;border-top:2px solid #f0f0f0;display:none;padding-top:.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}#header-mobile .header-container .menu .search-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;padding:.5rem 1rem;line-height:2.5rem}#header-mobile .header-container .menu .search{flex-grow:10}#header-mobile .header-container .menu .search .algolia-autocomplete,#header-mobile .header-container .menu .search input{width:100%}#header-mobile .header-container .menu .search-button{top:0}#header-mobile .header-container .menu .search-cancel{display:none;margin-left:.75rem}#header-mobile .header-container .menu .menu-item{display:block;line-height:2.5rem}#header-mobile .header-container .menu.active{display:block}[theme=dark] #header-mobile .header-container .menu{background:#252627;border-top-color:#363636}#header-mobile.open .header-wrapper{margin-top:-3.5rem}#header-mobile.open .menu{padding-top:0;border-top:none}#header-mobile.open .menu .menu-item{display:none}#header-mobile.open .menu .search-cancel{display:inline}.search-dropdown{position:fixed;z-index:200;top:3.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}.search-dropdown.desktop{right:2rem;width:30rem}.search-dropdown.mobile{right:0;width:100%}.search-dropdown .dropdown-menu{right:0 !important;background-color:#fff}[theme=dark] .search-dropdown .dropdown-menu{background-color:#292a2d}.search-dropdown .dropdown-menu .suggestions{overflow-y:auto;max-height:calc(100vh - 3.5rem)}.search-dropdown .dropdown-menu .suggestions .suggestion{padding:.75rem 1rem}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:bold;max-width:75%}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{font-size:.875rem;float:right;text-align:right;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{line-height:1.25rem;display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion em{font-style:normal;background-color:rgba(53,166,247,0.25)}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion em{background-color:rgba(50,112,194,0.4)}.search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#e8e8e8}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#323843}.search-dropdown .dropdown-menu .suggestions .suggestion:hover{cursor:pointer}.search-dropdown .dropdown-menu .search-empty{padding:1rem;text-align:center}.search-dropdown .dropdown-menu .search-empty .search-query{font-weight:bold}[theme=dark] .search-dropdown .dropdown-menu .search-empty .search-query{color:#ddd}.search-dropdown .dropdown-menu .search-footer{padding:.5rem 1rem;float:right;font-size:.8rem;color:#a9a9b3}.search-dropdown .dropdown-menu .search-footer [theme=dark]{color:#5d5d5f}.search-dropdown .dropdown-menu .search-footer a,.search-dropdown .dropdown-menu .search-footer a::before,.search-dropdown .dropdown-menu .search-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .search-dropdown .dropdown-menu .search-footer a,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::before,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::after{color:#55bde2}.search-dropdown .dropdown-menu .search-footer a:active,.search-dropdown .dropdown-menu .search-footer a:hover{color:#ef3982}[theme=dark] .search-dropdown .dropdown-menu .search-footer a:active,[theme=dark] .search-dropdown .dropdown-menu .search-footer a:hover{color:#bdebfc}.search-dropdown .dropdown-menu .search-footer a{font-size:1rem}footer{height:2rem;width:100%;text-align:center;line-height:1.25rem;padding:1rem 0}footer .footer-container{font-size:.875rem}footer .footer-container .footer-line{width:100%}footer .footer-container .footer-line .icp-br{display:none}.blur footer{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}[theme=dark] .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s;bottom:0px}[theme=dark] .pagination li:before,[theme=dark] .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}[theme=dark] .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1440px){.page{width:56%}}@media only screen and (max-width: 1200px){.page{width:52%}#header-desktop .header-wrapper{padding-right:1rem}.search-dropdown.desktop{right:1rem}}@media only screen and (max-width: 960px){#toc-auto{display:none}#toc-static{display:block}.page{width:80%}#header-desktop .header-wrapper{padding-left:1rem}}@media only screen and (max-width: 680px){#header-desktop{display:none}#header-mobile{display:block}body.blur{overflow:hidden}.page{width:100%;padding-top:3.5rem}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}}
-
-/*# sourceMappingURL=style.fr.min.css.map */ \ No newline at end of file
diff --git a/resources/_gen/assets/scss/css/style.template.scss_788c4a23da05f3aa3e03b28055a2e5f9.json b/resources/_gen/assets/scss/css/style.template.scss_788c4a23da05f3aa3e03b28055a2e5f9.json
deleted file mode 100644
index f10a9b24..00000000
--- a/resources/_gen/assets/scss/css/style.template.scss_788c4a23da05f3aa3e03b28055a2e5f9.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Target":"css/style.fr.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file
diff --git a/resources/_gen/assets/scss/css/style.template.scss_84a735b886b24531b6e80c5fb2060510.content b/resources/_gen/assets/scss/css/style.template.scss_84a735b886b24531b6e80c5fb2060510.content
deleted file mode 100644
index 7895cbdb..00000000
--- a/resources/_gen/assets/scss/css/style.template.scss_84a735b886b24531b6e80c5fb2060510.content
+++ /dev/null
@@ -1,3 +0,0 @@
-@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@800&display=swap");html{font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-display:swap;font-size:16px;line-height:1.5rem;width:100%}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background-color:rgba(53,166,247,0.25)}[theme=dark] ::selection{background-color:rgba(50,112,194,0.4)}body{background-color:#fff;color:#161209;word-wrap:break-word;overflow-wrap:break-word;scrollbar-color:auto}body[theme=dark]{color:#a9a9b3;background-color:#292a2d}input::-ms-clear{display:none}a,a::before,a::after{text-decoration:none;color:#161209}[theme=dark] a,[theme=dark] a::before,[theme=dark] a::after{color:#a9a9b3}a:active,a:hover{color:#2d96bd}[theme=dark] a:active,[theme=dark] a:hover{color:#fff}#mask{background-repeat:no-repeat;background-position:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background-color:rgba(0,0,0,0)}.blur #mask{z-index:100;background-color:rgba(0,0,0,0.25)}svg.icon{display:inline-block;width:1.25em;height:1em;text-align:center}svg.icon path{fill:currentColor}img.emoji{height:1em;width:1em;margin:0 .05em 0 .1em;vertical-align:-.1em}.details .details-summary:hover{cursor:pointer}.details i.details-icon{color:#a9a9b3;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}[theme=dark] .details i.details-icon{color:#5d5d5f}.details .details-content{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.details.open i.details-icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.details.open .details-content{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}#fixed-buttons{display:none}.fixed-button{display:none;z-index:100;position:fixed;right:1.5rem;font-size:1rem;line-height:1.3rem;padding:.6rem .6rem;color:#a9a9b3;background:#f8f8f8;-webkit-border-radius:2rem;-moz-border-radius:2rem;border-radius:2rem}.blur .fixed-button{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.fixed-button:hover,.fixed-button:active{color:#161209;cursor:pointer}.fixed-button:active,.fixed-button:focus,.fixed-button:hover{outline:none}[theme=dark] .fixed-button{color:#5d5d5f;background:#252627}[theme=dark] .fixed-button:hover,[theme=dark] .fixed-button:active{color:#a9a9b3}#back-to-top{display:block;bottom:1.5rem}#view-comments{bottom:4.5rem}img{-o-object-fit:contain;object-fit:contain;font-family:"object-fit: contain;"}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding:0 1rem}.page{position:relative;max-width:800px;width:60%;margin:0 auto;padding-top:3.5rem}.blur .page{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.toc .toc-title{font-size:1.2rem;font-weight:bold;text-transform:uppercase}.toc .toc-content{font-size:1rem}.toc .toc-content ul{text-indent:-0.85rem;padding-left:.8rem;list-style:none}.toc .toc-content ul a:first-child::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}[theme=dark] .toc .toc-content ul a:first-child::before{color:#55bde2}.toc .toc-content ul ul{padding-left:1.5rem}.toc ruby{background:#f5f5f5}.toc ruby rt{color:#a9a9b3}[theme=dark] .toc ruby{background:#272C34}[theme=dark] .toc ruby rt{color:#5d5d5f}#toc-auto{display:block;position:absolute;width:12000px;padding:0 .8rem;border-left:4px solid #f0f0f0;word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box;top:10rem;left:0;visibility:hidden}.blur #toc-auto{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}[theme=dark] #toc-auto{border-left-color:#363636}#toc-auto .toc-title{margin:.8rem 0}#toc-auto .toc-content.always-active ul{display:block}#toc-auto .toc-content>nav>ul{margin:.625rem 0}#toc-auto .toc-content ul ul{display:none}#toc-auto .toc-content ul .has-active>ul{display:block}#toc-auto .toc-content a.active{font-weight:bold;color:#2d96bd}[theme=dark] #toc-auto .toc-content a.active{color:#55bde2}#toc-auto .toc-content a.active::before{color:#ef3982}[theme=dark] #toc-auto .toc-content a.active::before{color:#bdebfc}#toc-static{display:none;margin:.8rem 0}#toc-static .toc-title{display:flex;justify-content:space-between;line-height:2em;padding:0 .75rem;background:#e6e6e6}[theme=dark] #toc-static .toc-title{background:#1a1d23}#toc-static .toc-content{background-color:#f5f5f5}#toc-static .toc-content>nav>ul{margin:0;padding:.4rem 1rem .4rem 1.8rem}[theme=dark] #toc-static .toc-content{background-color:#272C34}#toc-static.open .toc-title{background:#ededed}[theme=dark] #toc-static.open .toc-title{background:#20252b}.single .single-title{margin:1rem 0 .5rem;font-size:1.6rem;font-weight:bold;line-height:140%}.single .single-subtitle{margin:.4rem 0;font-size:1.2rem;font-weight:normal;font-style:italic;line-height:100%}.single .post-meta{font-size:.875rem;color:#a9a9b3}.single .post-meta span{display:inline-block}[theme=dark] .single .post-meta{color:#5d5d5f}.single .post-meta a,.single .post-meta a::before,.single .post-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-meta a,[theme=dark] .single .post-meta a::before,[theme=dark] .single .post-meta a::after{color:#a9a9b3}.single .post-meta a:active,.single .post-meta a:hover{color:#ef3982}[theme=dark] .single .post-meta a:active,[theme=dark] .single .post-meta a:hover{color:#fff}.single .post-meta .author{font-size:1.05rem}.single .featured-image{margin:.5rem 0 1rem 0}.single .featured-image img{display:block;width:100%;height:auto;margin:0 auto;overflow:hidden}.single .content>h2{font-size:1.5rem}.single .content>h2 code{font-size:1.25rem}.single .content>h3{font-size:1.375rem}.single .content>h3 code{font-size:1.125rem}.single .content>h4{font-size:1.25rem}.single .content>h4 code{font-size:1rem}.single .content>h5{font-size:1.125rem}.single .content>h6{font-size:1rem}.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}[theme=dark] .single .content h2,[theme=dark] .single .content h3,[theme=dark] .single .content h4,[theme=dark] .single .content h5,[theme=dark] .single .content h6{font-weight:bolder}.single .content>h2>.header-mark::before,.single .content>h3>.header-mark::before,.single .content>h4>.header-mark::before,.single .content>h5>.header-mark::before,.single .content>h6>.header-mark::before{content:"|";margin-right:.3125rem;color:#2d96bd}[theme=dark] .single .content>h2>.header-mark::before,[theme=dark] .single .content>h3>.header-mark::before,[theme=dark] .single .content>h4>.header-mark::before,[theme=dark] .single .content>h5>.header-mark::before,[theme=dark] .single .content>h6>.header-mark::before{color:#55bde2}.single .content>h2>.header-mark::before{content:"#"}.single .content p{margin:.5rem 0}.single .content b,.single .content strong{font-weight:bold}[theme=dark] .single .content b,[theme=dark] .single .content strong{color:#ddd}.single .content a,.single .content a::before,.single .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content a,[theme=dark] .single .content a::before,[theme=dark] .single .content a::after{color:#55bde2}.single .content a:active,.single .content a:hover{color:#ef3982}[theme=dark] .single .content a:active,[theme=dark] .single .content a:hover{color:#bdebfc}.single .content a{word-wrap:break-word;overflow-wrap:break-word}[theme=dark] .single .content a b,[theme=dark] .single .content a strong{color:#55bde2}.single .content [theme=dark] a:hover b,.single .content [theme=dark] a:hover strong{color:#bdebfc}.single .content ul,.single .content ol{margin:.5rem 0;padding-left:2.5rem}.single .content ul{list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}[theme=dark] .single .content ruby{background:#272C34}[theme=dark] .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}[theme=dark] .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff;border-collapse:collapse}[theme=dark] .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}[theme=dark] .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px solid #e8e8e8}[theme=dark] .single .content .table-wrapper>table th,[theme=dark] .single .content .table-wrapper>table td{border-color:#1c2025}.single .content img{max-width:100%;min-height:1em}.single .content figure{margin:.5rem;text-align:center}.single .content figure .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.5rem;margin:0 auto;font-size:.875rem;color:#969696}.single .content figure img{display:block;height:auto;margin:0 auto;overflow:hidden}.single .content .lazyloading{-o-object-fit:none;object-fit:none;font-family:"object-fit: none;"}.single .content blockquote{display:block;border-left:0.5rem solid #6bd6fd;background-color:rgba(107,214,253,0.2);padding:.25rem .75rem;margin:1rem 0}[theme=dark] .single .content blockquote{border-left-color:#59c5ec;background-color:rgba(89,197,236,0.2)}.single .content .footnotes{color:#a9a9b3}[theme=dark] .single .content .footnotes{color:#5d5d5f}.single .content .footnotes p{margin:.25rem 0}.single .content code{display:inline-block;max-width:100%;padding:0 .4rem;word-wrap:break-word;overflow-wrap:break-word;-webkit-line-break:anywhere;-ms-line-break:anywhere;line-break:anywhere;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content code{color:#E5BF78}.single .content pre{margin:0;padding:.25rem 0 .25rem .5rem;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.single .content pre code{padding:0}.single .content pre img{min-height:1em;max-height:1.2em;vertical-align:text-bottom}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}[theme=dark] .single .content code,[theme=dark] .single .content pre,[theme=dark] .single .content .highlight table,[theme=dark] .single .content .highlight tr,[theme=dark] .single .content .highlight td{background:#272C34}.single .content .highlight,.single .content .gist{font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem}.single .content .highlight .table-wrapper>table,.single .content .highlight .table-wrapper>table thead,.single .content .highlight .table-wrapper>table tr,.single .content .highlight .table-wrapper>table td,.single .content .gist .table-wrapper>table,.single .content .gist .table-wrapper>table thead,.single .content .gist .table-wrapper>table tr,.single .content .gist .table-wrapper>table td{margin:0;padding:0;border:none !important;white-space:nowrap}.single .content .highlight{line-height:1.4em;margin:.5rem 0}.single .content .highlight>.chroma{position:relative}.single .content .highlight>.chroma .code-header{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;color:#9c9c9c;background:#e1e1e1}[theme=dark] .single .content .highlight>.chroma .code-header{color:#b1b0b0;background:#1a1d23}.single .content .highlight>.chroma .code-header:hover{cursor:pointer}.single .content .highlight>.chroma .code-header .code-title{width:100%;padding:.4rem}.single .content .highlight>.chroma .code-header .code-title::after{padding-left:.2rem;content:'Code'}.single .content .highlight>.chroma .code-header.language-bash .code-title::after{content:"Bash"}.single .content .highlight>.chroma .code-header.language-c .code-title::after{content:"C"}.single .content .highlight>.chroma .code-header.language-cs .code-title::after{content:"C#"}.single .content .highlight>.chroma .code-header.language-cpp .code-title::after{content:"C++"}.single .content .highlight>.chroma .code-header.language-clojure .code-title::after{content:"Clojure"}.single .content .highlight>.chroma .code-header.language-coffeescript .code-title::after{content:"CoffeeScript"}.single .content .highlight>.chroma .code-header.language-css .code-title::after{content:"CSS"}.single .content .highlight>.chroma .code-header.language-dart .code-title::after{content:"Dart"}.single .content .highlight>.chroma .code-header.language-diff .code-title::after{content:"Diff"}.single .content .highlight>.chroma .code-header.language-erlang .code-title::after{content:"Erlang"}.single .content .highlight>.chroma .code-header.language-go .code-title::after{content:"Go"}.single .content .highlight>.chroma .code-header.language-go-html-template .code-title::after{content:"Go HTML Template"}.single .content .highlight>.chroma .code-header.language-groovy .code-title::after{content:"Groovy"}.single .content .highlight>.chroma .code-header.language-haskell .code-title::after{content:"Haskell"}.single .content .highlight>.chroma .code-header.language-html .code-title::after{content:"HTML"}.single .content .highlight>.chroma .code-header.language-http .code-title::after{content:"HTTP"}.single .content .highlight>.chroma .code-header.language-xml .code-title::after{content:"XML"}.single .content .highlight>.chroma .code-header.language-java .code-title::after{content:"Java"}.single .content .highlight>.chroma .code-header.language-js .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-javascript .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-json .code-title::after{content:"JSON"}.single .content .highlight>.chroma .code-header.language-kotlin .code-title::after{content:"Kotlin"}.single .content .highlight>.chroma .code-header.language-latex .code-title::after{content:"LaTeX"}.single .content .highlight>.chroma .code-header.language-less .code-title::after{content:"Less"}.single .content .highlight>.chroma .code-header.language-lisp .code-title::after{content:"Lisp"}.single .content .highlight>.chroma .code-header.language-lua .code-title::after{content:"Lua"}.single .content .highlight>.chroma .code-header.language-makefile .code-title::after{content:"Makefile"}.single .content .highlight>.chroma .code-header.language-markdown .code-title::after{content:"Markdown"}.single .content .highlight>.chroma .code-header.language-matlab .code-title::after{content:"Matlab"}.single .content .highlight>.chroma .code-header.language-objectivec .code-title::after{content:"Objective-C"}.single .content .highlight>.chroma .code-header.language-php .code-title::after{content:"PHP"}.single .content .highlight>.chroma .code-header.language-perl .code-title::after{content:"Perl"}.single .content .highlight>.chroma .code-header.language-python .code-title::after{content:"Python"}.single .content .highlight>.chroma .code-header.language-r .code-title::after{content:"R"}.single .content .highlight>.chroma .code-header.language-ruby .code-title::after{content:"Ruby"}.single .content .highlight>.chroma .code-header.language-rust .code-title::after{content:"Rust"}.single .content .highlight>.chroma .code-header.language-scala .code-title::after{content:"Scala"}.single .content .highlight>.chroma .code-header.language-scss .code-title::after{content:"Scss"}.single .content .highlight>.chroma .code-header.language-shell .code-title::after{content:"Shell"}.single .content .highlight>.chroma .code-header.language-sql .code-title::after{content:"SQL"}.single .content .highlight>.chroma .code-header.language-swift .code-title::after{content:"Swift"}.single .content .highlight>.chroma .code-header.language-tex .code-title::after{content:"TeX"}.single .content .highlight>.chroma .code-header.language-toml .code-title::after{content:"TOML"}.single .content .highlight>.chroma .code-header.language-ts .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-typescript .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-vue .code-title::after{content:"Vue"}.single .content .highlight>.chroma .code-header.language-yml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .code-header.language-yaml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .lntd:first-child{min-width:1.6rem;text-align:right}.single .content .highlight>.chroma .lntd:last-child{width:100%}.single .content .highlight>.chroma .lntd:last-child pre{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:intrinsic;min-width:max-content}.single .content .highlight>.chroma .ln{padding-right:.75rem}.single .content .highlight>.chroma .hl{display:block;background-color:#dcdcdc}[theme=dark] .single .content .highlight>.chroma .hl{background-color:#1c2025}.single .content .highlight>.chroma .ln,.single .content .highlight>.chroma .lnt{color:#a9a9b3}[theme=dark] .single .content .highlight>.chroma .ln,[theme=dark] .single .content .highlight>.chroma .lnt{color:#5d5d5f}.single .content .highlight>.chroma .arrow{padding:0 .2rem;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}.single .content .highlight>.chroma .ellipses{padding:.4rem}.single .content .highlight>.chroma .copy{display:none;padding:.4rem}.single .content .highlight>.chroma .copy:hover{cursor:pointer;color:#2d96bd}[theme=dark] .single .content .highlight>.chroma .copy:hover{color:#fff}.single .content .highlight>.chroma .table-wrapper{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.single .content .highlight>.chroma.open .code-header{background:#ededed}[theme=dark] .single .content .highlight>.chroma.open .code-header{background:#20252b}.single .content .highlight>.chroma.open .table-wrapper{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}.single .content .highlight>.chroma.open .arrow{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.single .content .highlight>.chroma.open .ellipses{display:none}.single .content .highlight>.chroma.open .copy{display:inline}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}[theme=dark] .single .content .highlight .p{color:#a9a9b3}[theme=dark] .single .content .highlight .k{color:#d371e3}[theme=dark] .single .content .highlight .kc{color:#d371e3}[theme=dark] .single .content .highlight .kd{color:#d371e3}[theme=dark] .single .content .highlight .kn{color:#d371e3}[theme=dark] .single .content .highlight .kp{color:#d371e3}[theme=dark] .single .content .highlight .kr{color:#d371e3}[theme=dark] .single .content .highlight .kt{color:#d371e3}[theme=dark] .single .content .highlight .n{color:#a9b2c0}[theme=dark] .single .content .highlight .na{color:#41b0f5}[theme=dark] .single .content .highlight .nb{color:#19b9c4}[theme=dark] .single .content .highlight .bp{color:#ecbf6f}[theme=dark] .single .content .highlight .nc{color:#ecbf6f}[theme=dark] .single .content .highlight .no{color:#41b0f5}[theme=dark] .single .content .highlight .nd{color:#ecbf6f}[theme=dark] .single .content .highlight .ni{color:#41b0f5}[theme=dark] .single .content .highlight .ne{color:#41b0f5}[theme=dark] .single .content .highlight .nf{color:#41b0f5}[theme=dark] .single .content .highlight .fm{color:#19b9c4}[theme=dark] .single .content .highlight .nl{color:#41b0f5}[theme=dark] .single .content .highlight .nn{color:#41b0f5}[theme=dark] .single .content .highlight .nx{color:#a9a9b3}[theme=dark] .single .content .highlight .py{color:#41b0f5}[theme=dark] .single .content .highlight .nt{color:#41b0f5}[theme=dark] .single .content .highlight .nv{color:#41b0f5}[theme=dark] .single .content .highlight .vc{color:#41b0f5}[theme=dark] .single .content .highlight .vg{color:#41b0f5}[theme=dark] .single .content .highlight .vi{color:#41b0f5}[theme=dark] .single .content .highlight .vm{color:#41b0f5}[theme=dark] .single .content .highlight .l{color:#2aa198}[theme=dark] .single .content .highlight .ld{color:#2aa198}[theme=dark] .single .content .highlight .s{color:#8cc570}[theme=dark] .single .content .highlight .sa{color:#8cc570}[theme=dark] .single .content .highlight .sb{color:#8cc570}[theme=dark] .single .content .highlight .sc{color:#8cc570}[theme=dark] .single .content .highlight .dl{color:#8cc570}[theme=dark] .single .content .highlight .sd{color:#8cc570}[theme=dark] .single .content .highlight .s2{color:#8cc570}[theme=dark] .single .content .highlight .se{color:#8cc570}[theme=dark] .single .content .highlight .sh{color:#8cc570}[theme=dark] .single .content .highlight .si{color:#8cc570}[theme=dark] .single .content .highlight .sx{color:#8cc570}[theme=dark] .single .content .highlight .sr{color:#8cc570}[theme=dark] .single .content .highlight .s1{color:#8cc570}[theme=dark] .single .content .highlight .ss{color:#8cc570}[theme=dark] .single .content .highlight .m{color:#db985c}[theme=dark] .single .content .highlight .mb{color:#db985c}[theme=dark] .single .content .highlight .mf{color:#db985c}[theme=dark] .single .content .highlight .mh{color:#db985c}[theme=dark] .single .content .highlight .mi{color:#db985c}[theme=dark] .single .content .highlight .il{color:#db985c}[theme=dark] .single .content .highlight .mo{color:#db985c}[theme=dark] .single .content .highlight .o{color:#ecbf6f}[theme=dark] .single .content .highlight .ow{color:#d371e3}[theme=dark] .single .content .highlight .c{color:#7e848f}[theme=dark] .single .content .highlight .ch{color:#7e848f}[theme=dark] .single .content .highlight .cm{color:#7e848f}[theme=dark] .single .content .highlight .c1{color:#7e848f}[theme=dark] .single .content .highlight .cs{color:#7e848f}[theme=dark] .single .content .highlight .cp{color:#7e848f}[theme=dark] .single .content .highlight .cpf{color:#7e848f}[theme=dark] .single .content .highlight .g{color:#f16372}[theme=dark] .single .content .highlight .gd{color:#f16372}[theme=dark] .single .content .highlight .ge{color:#f16372}[theme=dark] .single .content .highlight .gr{color:#f16372}[theme=dark] .single .content .highlight .gh{color:#f16372}[theme=dark] .single .content .highlight .gi{color:#f16372}[theme=dark] .single .content .highlight .go{color:#f16372}[theme=dark] .single .content .highlight .gp{color:#f16372}[theme=dark] .single .content .highlight .gs{color:#f16372}[theme=dark] .single .content .highlight .gu{color:#f16372}[theme=dark] .single .content .highlight .gt{color:#f16372}[theme=dark] .single .content .highlight .w{color:#bbb}.single .content .gist .gist-file,.single .content .gist .gist-data,.single .content .gist .gist-meta{border:none}.single .content .gist .gist-meta{padding:.4rem .8rem;background-color:#e8e8e8}.single .content .gist .gist-meta a,.single .content .gist .gist-meta a::before,.single .content .gist .gist-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content .gist .gist-meta a,[theme=dark] .single .content .gist .gist-meta a::before,[theme=dark] .single .content .gist .gist-meta a::after{color:#55bde2}.single .content .gist .gist-meta a:active,.single .content .gist .gist-meta a:hover{color:#ef3982}[theme=dark] .single .content .gist .gist-meta a:active,[theme=dark] .single .content .gist .gist-meta a:hover{color:#bdebfc}[theme=dark] .single .content .gist .gist-meta{background-color:#1c2025}[theme=dark] .single .content .gist .highlight{background:#141414}[theme=dark] .single .content .gist .blob-num,[theme=dark] .single .content .gist .blob-code-inner,[theme=dark] .single .content .gist .highlight,[theme=dark] .single .content .gist .pl-enm,[theme=dark] .single .content .gist .pl-ko,[theme=dark] .single .content .gist .pl-mo,[theme=dark] .single .content .gist .pl-mp1 .pl-sf,[theme=dark] .single .content .gist .pl-ms,[theme=dark] .single .content .gist .pl-pdc1,[theme=dark] .single .content .gist .pl-scp,[theme=dark] .single .content .gist .pl-smc,[theme=dark] .single .content .gist .pl-som,[theme=dark] .single .content .gist .pl-va,[theme=dark] .single .content .gist .pl-vpf,[theme=dark] .single .content .gist .pl-vpu,[theme=dark] .single .content .gist .pl-mdr{color:#aab1bf}[theme=dark] .single .content .gist .pl-mb,[theme=dark] .single .content .gist .pl-pdb{font-weight:700}[theme=dark] .single .content .gist .pl-c,[theme=dark] .single .content .gist .pl-c span,[theme=dark] .single .content .gist .pl-pdc{color:#5b6270;font-style:italic}[theme=dark] .single .content .gist .pl-sr .pl-cce{color:#56b5c2;font-weight:400}[theme=dark] .single .content .gist .pl-ef,[theme=dark] .single .content .gist .pl-en,[theme=dark] .single .content .gist .pl-enf,[theme=dark] .single .content .gist .pl-eoai,[theme=dark] .single .content .gist .pl-kos,[theme=dark] .single .content .gist .pl-mh .pl-pdh,[theme=dark] .single .content .gist .pl-mr{color:#61afef}[theme=dark] .single .content .gist .pl-ens,[theme=dark] .single .content .gist .pl-vi{color:#be5046}[theme=dark] .single .content .gist .pl-enti,[theme=dark] .single .content .gist .pl-mai .pl-sf,[theme=dark] .single .content .gist .pl-ml,[theme=dark] .single .content .gist .pl-sf,[theme=dark] .single .content .gist .pl-sr,[theme=dark] .single .content .gist .pl-sr .pl-sra,[theme=dark] .single .content .gist .pl-src,[theme=dark] .single .content .gist .pl-st,[theme=dark] .single .content .gist .pl-vo{color:#56b5c2}[theme=dark] .single .content .gist .pl-eoi,[theme=dark] .single .content .gist .pl-mri,[theme=dark] .single .content .gist .pl-pds,[theme=dark] .single .content .gist .pl-pse .pl-s1,[theme=dark] .single .content .gist .pl-s,[theme=dark] .single .content .gist .pl-s1{color:#97c279}[theme=dark] .single .content .gist .pl-k,[theme=dark] .single .content .gist .pl-kolp,[theme=dark] .single .content .gist .pl-mc,[theme=dark] .single .content .gist .pl-pde{color:#c578dd}[theme=dark] .single .content .gist .pl-mi,[theme=dark] .single .content .gist .pl-pdi{color:#c578dd;font-style:italic}[theme=dark] .single .content .gist .pl-mp,[theme=dark] .single .content .gist .pl-stp{color:#818896}[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi,[theme=dark] .single .content .gist .pl-mdr{font-weight:400}[theme=dark] .single .content .gist .pl-mdht,[theme=dark] .single .content .gist .pl-mi1{color:#97c279;background:#020}[theme=dark] .single .content .gist .pl-md,[theme=dark] .single .content .gist .pl-mdhf{color:#df6b75;background:#200}[theme=dark] .single .content .gist .pl-corl{color:#df6b75;text-decoration:underline}[theme=dark] .single .content .gist .pl-ib{background:#df6b75}[theme=dark] .single .content .gist .pl-ii{background:#e0c184;color:#fff}[theme=dark] .single .content .gist .pl-iu{background:#e05151}[theme=dark] .single .content .gist .pl-ms1{color:#aab1bf;background:#373b41}[theme=dark] .single .content .gist .pl-c1,[theme=dark] .single .content .gist .pl-cn,[theme=dark] .single .content .gist .pl-e,[theme=dark] .single .content .gist .pl-eoa,[theme=dark] .single .content .gist .pl-eoac,[theme=dark] .single .content .gist .pl-eoac .pl-pde,[theme=dark] .single .content .gist .pl-kou,[theme=dark] .single .content .gist .pl-mm,[theme=dark] .single .content .gist .pl-mp .pl-s3,[theme=dark] .single .content .gist .pl-mq,[theme=dark] .single .content .gist .pl-s3,[theme=dark] .single .content .gist .pl-sok,[theme=dark] .single .content .gist .pl-sv,[theme=dark] .single .content .gist .pl-mb{color:#d19965}[theme=dark] .single .content .gist .pl-enc,[theme=dark] .single .content .gist .pl-entc,[theme=dark] .single .content .gist .pl-pse .pl-s2,[theme=dark] .single .content .gist .pl-s2,[theme=dark] .single .content .gist .pl-sc,[theme=dark] .single .content .gist .pl-smp,[theme=dark] .single .content .gist .pl-sr .pl-sre,[theme=dark] .single .content .gist .pl-stj,[theme=dark] .single .content .gist .pl-v,[theme=dark] .single .content .gist .pl-pdb{color:#e4bf7a}[theme=dark] .single .content .gist .pl-ent,[theme=dark] .single .content .gist .pl-entl,[theme=dark] .single .content .gist .pl-entm,[theme=dark] .single .content .gist .pl-mh,[theme=dark] .single .content .gist .pl-pdv,[theme=dark] .single .content .gist .pl-smi,[theme=dark] .single .content .gist .pl-sol,[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi{color:#df6b75}[theme=dark] .single .content iframe.instagram-media{border:none !important}.single .content .admonition{position:relative;margin:1rem 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{font-weight:bold;margin:0 -0.75rem;padding:.25rem 1.8rem;border-bottom:1px solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition .admonition-content{padding:.5rem 0}.single .content .admonition i.icon{font-size:0.85rem;color:#448aff;position:absolute;top:.6rem;left:.4rem}.single .content .admonition i.details-icon{position:absolute;top:.6rem;right:.3rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.note.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.25)}.single .content .admonition.abstract.open .admonition-title{background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.25)}.single .content .admonition.info.open .admonition-title{background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.25)}.single .content .admonition.tip.open .admonition-title{background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.25)}.single .content .admonition.success.open .admonition-title{background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.25)}.single .content .admonition.question.open .admonition-title{background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.25)}.single .content .admonition.warning.open .admonition-title{background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.25)}.single .content .admonition.failure.open .admonition-title{background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.25)}.single .content .admonition.danger.open .admonition-title{background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.25)}.single .content .admonition.bug.open .admonition-title{background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.25)}.single .content .admonition.example.open .admonition-title{background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(159,159,159,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(159,159,159,0.1);background-color:rgba(159,159,159,0.25)}.single .content .admonition.quote.open .admonition-title{background-color:rgba(159,159,159,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content .echarts{margin:.5rem 0;text-align:center}.single .content .mapbox{margin:.5rem 0;padding:.5rem 0}.single .content meting-js{margin:.5rem 0}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #f0f0f0;border-bottom:none}[theme=dark] .single .content hr{border-top:1px dashed #363636}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #f0f0f0;border-bottom-color:#f0f0f0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #f0f0f0;box-shadow:inset 0 -1px 0 #f0f0f0;font-size:.8rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content kbd{background-color:#292a2d;border:1px solid #363636;border-bottom-color:#363636;-webkit-box-shadow:inset 0 -1px 0 #363636;box-shadow:inset 0 -1px 0 #363636;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;word-break:break-all}.single .content .version{height:1.25em;vertical-align:text-bottom}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #f0f0f0;padding:1rem 0 0.3rem}[theme=dark] .single .post-footer .post-info{border-bottom:1px solid #363636}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-mod a,.single .post-footer .post-info .post-info-line .post-info-mod a::before,.single .post-footer .post-info .post-info-line .post-info-mod a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-mod a:active,.single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-md{font-size:0.8rem;width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a,.single .post-footer .post-info .post-info-line .post-info-md a::before,.single .post-footer .post-info .post-info-line .post-info-md a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-md a:active,.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-share a *{vertical-align:text-bottom}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-tags{max-width:65%}.single .post-footer .post-tags *{display:inline}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{-webkit-transform:translateX(-4px);-moz-transform:translateX(-4px);-ms-transform:translateX(-4px);-o-transform:translateX(-4px);transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{-webkit-transform:translateX(4px);-moz-transform:translateX(4px);-ms-transform:translateX(4px);-o-transform:translateX(4px);transform:translateX(4px)}.single #comments{padding:4rem 0}.special .single-title,.special .single-subtitle{text-align:right}.archive .single-title{text-align:right}.archive .group-title{margin-top:1.5rem;margin-bottom:1rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block;margin-top:1rem;margin-bottom:.75rem}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;margin:.25rem 0 .25rem 1.5rem}.archive .archive-item-link{min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}[theme=dark] .archive .archive-item-link{color:#a9a9b3}[theme=dark] .archive .archive-item-link:hover{color:#fff}.archive .archive-item-date{width:4em;text-align:right;color:#a9a9b3}[theme=dark] .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a,.archive .tag-cloud-tags a::before,.archive .tag-cloud-tags a::after{text-decoration:none;color:#161209}[theme=dark] .archive .tag-cloud-tags a,[theme=dark] .archive .tag-cloud-tags a::before,[theme=dark] .archive .tag-cloud-tags a::after{color:#a9a9b3}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:hover{color:#2d96bd}[theme=dark] .archive .tag-cloud-tags a:active,[theme=dark] .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;overflow-wrap:break-word;-webkit-transition:all ease-out 0.3s;-moz-transition:all ease-out 0.3s;-o-transition:all ease-out 0.3s;transition:all ease-out 0.3s}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.archive .tag-cloud-tags a sup{color:#a9a9b3}[theme=dark] .archive .tag-cloud-tags a sup{color:#5d5d5f}.home .home-profile{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0);padding:2rem 0 0.5rem;text-align:center}.home .home-profile .home-avatar{padding:0.6rem}.home .home-profile .home-avatar img{display:inline-block;width:6rem;height:auto;margin:0 auto;-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);-webkit-transition:all 0.4s ease;-moz-transition:all 0.4s ease;-o-transition:all 0.4s ease;transition:all 0.4s ease}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem)}.home .home-profile .home-title{font-size:1.2rem;font-weight:bold;margin:0;padding:.4rem}.home .home-profile .home-subtitle{font-size:1rem;font-weight:normal;margin:0;padding:.4rem}.home .home-profile .social-links{padding:.4rem .2rem;font-size:1.6rem}.home .home-profile .social-links a *{vertical-align:text-bottom}.home .home-profile .social-links img{height:1.4rem;padding:0 .25rem}.home .home-profile .home-disclaimer{font-size:1rem;line-height:1.4rem;font-weight:normal;margin:0;padding:.4rem;color:#a9a9b3}[theme=dark] .home .home-profile .home-disclaimer{color:#5d5d5f}.home .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #f0f0f0}[theme=dark] .home .summary{color:#a9a9b3;border-bottom:1px dashed #363636}.home .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto;-webkit-transition:transform 0.4s ease;-moz-transition:transform 0.4s ease;-o-transition:transform 0.4s ease;transition:transform 0.4s ease}.home .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.home .summary .featured-image-preview:hover{-webkit-transform:scale(1.01);-moz-transform:scale(1.01);-ms-transform:scale(1.01);-o-transform:scale(1.01);transform:scale(1.01)}.home .summary .single-title{font-size:1.25rem;line-height:140%;margin:0.4rem 0}.home .summary .content{display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .home .summary .content{color:#5d5d5f}.home .summary .content h2,.home .summary .content h3,.home .summary .content h4,.home .summary .content h5,.home .summary .content h6,.home .summary .content p{font-size:1rem;line-height:1.5;display:inline}.home .summary .content h2::after,.home .summary .content h3::after,.home .summary .content h4::after,.home .summary .content h5::after,.home .summary .content h6::after,.home .summary .content p::after{content:"\A";white-space:pre}.home .summary .content h2{font-size:1.125rem}.home .summary .content a,.home .summary .content a::before,.home .summary .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home .summary .content a,[theme=dark] .home .summary .content a::before,[theme=dark] .home .summary .content a::after{color:#a9a9b3}.home .summary .content a:active,.home .summary .content a:hover{color:#ef3982}[theme=dark] .home .summary .content a:active,[theme=dark] .home .summary .content a:hover{color:#fff}.home .summary .content b,.home .summary .content strong{color:#a9a9b3}[theme=dark] .home .summary .content b,[theme=dark] .home .summary .content strong{color:#5d5d5f}.home .summary .post-footer{margin-top:.4rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.home .summary .post-footer a,.home .summary .post-footer a::before,.home .summary .post-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home .summary .post-footer a,[theme=dark] .home .summary .post-footer a::before,[theme=dark] .home .summary .post-footer a::after{color:#55bde2}.home .summary .post-footer a:active,.home .summary .post-footer a:hover{color:#ef3982}[theme=dark] .home .summary .post-footer a:active,[theme=dark] .home .summary .post-footer a:hover{color:#bdebfc}.home .summary .post-footer .post-tags{padding:0}.home .summary .post-footer .post-tags a,.home .summary .post-footer .post-tags a::before,.home .summary .post-footer .post-tags a::after{text-decoration:none;color:#161209}[theme=dark] .home .summary .post-footer .post-tags a,[theme=dark] .home .summary .post-footer .post-tags a::before,[theme=dark] .home .summary .post-footer .post-tags a::after{color:#a9a9b3}.home .summary .post-footer .post-tags a:active,.home .summary .post-footer .post-tags a:hover{color:#2d96bd}[theme=dark] .home .summary .post-footer .post-tags a:active,[theme=dark] .home .summary .post-footer .post-tags a:hover{color:#fff}#content-404{font-size:1.8rem;line-height:3rem;-webkit-transform:translateY(30vh);-moz-transform:translateY(30vh);-ms-transform:translateY(30vh);-o-transform:translateY(30vh);transform:translateY(30vh);text-align:center}header{width:100%;z-index:150;background-color:#f8f8f8}[theme=dark] header{background-color:#252627}header .logo{min-height:1.5em;height:1.5em;vertical-align:text-bottom}header .logo,header .header-title-pre{padding-right:.25rem}header .header-title-post{padding-left:.25rem}.header-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%}.header-title{font-family:Nunito,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;margin-right:.5rem;min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-flex:10;flex:10}.menu .menu-item{position:relative}.language-select{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%}.language-select:hover{cursor:pointer}.search{position:relative}.search input{color:transparent;box-sizing:border-box;height:2.5rem;width:2.5rem;-webkit-border-radius:.5rem;-moz-border-radius:.5rem;border-radius:.5rem;border:none;outline:none;background-color:#f8f8f8;vertical-align:baseline !important;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}[theme=dark] .search input{background-color:#252627}.search input::-webkit-input-placeholder{color:rgba(0,0,0,0)}.search input:-moz-placeholder{color:rgba(0,0,0,0)}.search input::-moz-placeholder{color:rgba(0,0,0,0)}.search input:-ms-input-placeholder{color:rgba(0,0,0,0)}.search input::placeholder{color:rgba(0,0,0,0)}.search .search-button{margin:0;position:absolute;left:auto;right:1rem}.search .search-toggle{left:.5rem;right:auto}.search .search-loading{display:none}.search .search-clear{display:none}.open .search input,.search.mobile input{color:#161209;background-color:#e9e9e9;padding:0 2rem 0 2rem}[theme=dark] .open .search input,[theme=dark] .search.mobile input{color:#a9a9b3;background-color:#363636}[theme=dark] .open .search input::-webkit-input-placeholder,[theme=dark] .search.mobile input::-webkit-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-moz-placeholder,[theme=dark] .search.mobile input:-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input::-moz-placeholder,[theme=dark] .search.mobile input::-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-ms-input-placeholder,[theme=dark] .search.mobile input:-ms-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input::placeholder,[theme=dark] .search.mobile input::placeholder{color:#5d5d5f}.open .search input::-webkit-input-placeholder,.search.mobile input::-webkit-input-placeholder{color:#a9a9b3}.open .search input:-moz-placeholder,.search.mobile input:-moz-placeholder{color:#a9a9b3}.open .search input::-moz-placeholder,.search.mobile input::-moz-placeholder{color:#a9a9b3}.open .search input:-ms-input-placeholder,.search.mobile input:-ms-input-placeholder{color:#a9a9b3}.open .search input::placeholder,.search.mobile input::placeholder{color:#a9a9b3}.open .search .search-button,.search.mobile .search-button{color:#a9a9b3}[theme=dark] .open .search .search-button,[theme=dark] .search.mobile .search-button{color:#5d5d5f}.open .search .search-clear:hover,.search.mobile .search-clear:hover{color:#ff6b6b}.open .search .search-toggle:hover,.search.mobile .search-toggle:hover{cursor:default}.theme-switch i{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}#header-desktop{display:block;position:fixed;height:3.5rem;line-height:3.5rem}#header-desktop .header-wrapper{padding:0 2rem 0 10vh}#header-desktop .header-wrapper .header-title{font-size:1.5rem}#header-desktop .header-wrapper .menu{overflow:hidden;white-space:nowrap}#header-desktop .header-wrapper .menu .menu-inner{float:right}#header-desktop .header-wrapper .menu .menu-item{margin:0 .5rem}#header-desktop .header-wrapper .menu .menu-item.delimiter{border-left:1.5px solid #161209}[theme=dark] #header-desktop .header-wrapper .menu .menu-item.delimiter{border-left-color:#363636}#header-desktop .header-wrapper .menu .menu-item.language{margin-right:0}#header-desktop .header-wrapper .menu .menu-item.search{margin:0 -.5rem 0 0}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}[theme=dark] #header-desktop .header-wrapper .menu a.active{color:#fff}#header-desktop.open .header-wrapper .menu .menu-item.search{margin:0 .25rem 0 .5rem}#header-desktop.open .header-wrapper .menu .menu-item.search input{width:24rem}#header-mobile{display:none;position:fixed;height:3.5rem;line-height:3.5rem}#header-mobile .header-container{padding:0;margin:0}#header-mobile .header-container .header-wrapper{padding:0 1rem;font-size:1.125rem;-webkit-transition:margin-top 0.3s ease;-moz-transition:margin-top 0.3s ease;-o-transition:margin-top 0.3s ease;transition:margin-top 0.3s ease}#header-mobile .header-container .header-wrapper .header-title{font-size:1.5rem;max-width:80%}#header-mobile .header-container .header-wrapper .menu-toggle{line-height:4rem;cursor:pointer;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}#header-mobile .header-container .header-wrapper .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}[theme=dark] #header-mobile .header-container .header-wrapper .menu-toggle span{background:#a9a9b3}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(1){-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-o-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(3){-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-o-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-container .menu{text-align:center;background:#f8f8f8;border-top:2px solid #f0f0f0;display:none;padding-top:.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}#header-mobile .header-container .menu .search-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;padding:.5rem 1rem;line-height:2.5rem}#header-mobile .header-container .menu .search{flex-grow:10}#header-mobile .header-container .menu .search .algolia-autocomplete,#header-mobile .header-container .menu .search input{width:100%}#header-mobile .header-container .menu .search-button{top:0}#header-mobile .header-container .menu .search-cancel{display:none;margin-left:.75rem}#header-mobile .header-container .menu .menu-item{display:block;line-height:2.5rem}#header-mobile .header-container .menu.active{display:block}[theme=dark] #header-mobile .header-container .menu{background:#252627;border-top-color:#363636}#header-mobile.open .header-wrapper{margin-top:-3.5rem}#header-mobile.open .menu{padding-top:0;border-top:none}#header-mobile.open .menu .menu-item{display:none}#header-mobile.open .menu .search-cancel{display:inline}.search-dropdown{position:fixed;z-index:200;top:3.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}.search-dropdown.desktop{right:2rem;width:30rem}.search-dropdown.mobile{right:0;width:100%}.search-dropdown .dropdown-menu{right:0 !important;background-color:#fff}[theme=dark] .search-dropdown .dropdown-menu{background-color:#292a2d}.search-dropdown .dropdown-menu .suggestions{overflow-y:auto;max-height:calc(100vh - 3.5rem)}.search-dropdown .dropdown-menu .suggestions .suggestion{padding:.75rem 1rem}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:bold;max-width:75%}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{font-size:.875rem;float:right;text-align:right;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{line-height:1.25rem;display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion em{font-style:normal;background-color:rgba(53,166,247,0.25)}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion em{background-color:rgba(50,112,194,0.4)}.search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#e8e8e8}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#323843}.search-dropdown .dropdown-menu .suggestions .suggestion:hover{cursor:pointer}.search-dropdown .dropdown-menu .search-empty{padding:1rem;text-align:center}.search-dropdown .dropdown-menu .search-empty .search-query{font-weight:bold}[theme=dark] .search-dropdown .dropdown-menu .search-empty .search-query{color:#ddd}.search-dropdown .dropdown-menu .search-footer{padding:.5rem 1rem;float:right;font-size:.8rem;color:#a9a9b3}.search-dropdown .dropdown-menu .search-footer [theme=dark]{color:#5d5d5f}.search-dropdown .dropdown-menu .search-footer a,.search-dropdown .dropdown-menu .search-footer a::before,.search-dropdown .dropdown-menu .search-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .search-dropdown .dropdown-menu .search-footer a,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::before,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::after{color:#55bde2}.search-dropdown .dropdown-menu .search-footer a:active,.search-dropdown .dropdown-menu .search-footer a:hover{color:#ef3982}[theme=dark] .search-dropdown .dropdown-menu .search-footer a:active,[theme=dark] .search-dropdown .dropdown-menu .search-footer a:hover{color:#bdebfc}.search-dropdown .dropdown-menu .search-footer a{font-size:1rem}footer{height:2rem;width:100%;text-align:center;line-height:1.25rem;padding:1rem 0}footer .footer-container{font-size:.875rem}footer .footer-container .footer-line{width:100%}footer .footer-container .footer-line .icp-br{display:none}.blur footer{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}[theme=dark] .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s;bottom:0px}[theme=dark] .pagination li:before,[theme=dark] .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}[theme=dark] .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1440px){.page{width:56%}}@media only screen and (max-width: 1200px){.page{width:52%}#header-desktop .header-wrapper{padding-right:1rem}.search-dropdown.desktop{right:1rem}}@media only screen and (max-width: 960px){#toc-auto{display:none}#toc-static{display:block}.page{width:80%}#header-desktop .header-wrapper{padding-left:1rem}}@media only screen and (max-width: 680px){#header-desktop{display:none}#header-mobile{display:block}body.blur{overflow:hidden}.page{width:100%;padding-top:3.5rem}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}}
-
-/*# sourceMappingURL=style.en.min.css.map */ \ No newline at end of file
diff --git a/resources/_gen/assets/scss/css/style.template.scss_84a735b886b24531b6e80c5fb2060510.json b/resources/_gen/assets/scss/css/style.template.scss_84a735b886b24531b6e80c5fb2060510.json
deleted file mode 100644
index c0f1c55f..00000000
--- a/resources/_gen/assets/scss/css/style.template.scss_84a735b886b24531b6e80c5fb2060510.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Target":"css/style.en.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file
diff --git a/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.content b/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.content
new file mode 100644
index 00000000..afaa768c
--- /dev/null
+++ b/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.content
@@ -0,0 +1,3 @@
+@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@800&display=swap");html{font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-display:swap;font-size:16px;line-height:1.5rem;width:100%}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background-color:rgba(53,166,247,0.25)}[theme=dark] ::selection{background-color:rgba(50,112,194,0.4)}body{background-color:#fff;color:#161209;word-wrap:break-word;overflow-wrap:break-word;scrollbar-color:auto}body[theme=dark]{color:#a9a9b3;background-color:#292a2d}input::-ms-clear{display:none}a,a::before,a::after{text-decoration:none;color:#161209}[theme=dark] a,[theme=dark] a::before,[theme=dark] a::after{color:#a9a9b3}a:active,a:hover{color:#2d96bd}[theme=dark] a:active,[theme=dark] a:hover{color:#fff}#mask{background-repeat:no-repeat;background-position:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background-color:rgba(0,0,0,0)}.blur #mask{z-index:100;background-color:rgba(0,0,0,0.25)}svg.icon{display:inline-block;width:1.25em;height:1em;text-align:center}svg.icon path{fill:currentColor}img.emoji{height:1em;width:1em;margin:0 .05em 0 .1em;vertical-align:-.1em}.details .details-summary:hover{cursor:pointer}.details i.details-icon{color:#a9a9b3;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}[theme=dark] .details i.details-icon{color:#5d5d5f}.details .details-content{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.details.open i.details-icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.details.open .details-content{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}#fixed-buttons{display:none}.fixed-button{display:none;z-index:100;position:fixed;right:1.5rem;font-size:1rem;line-height:1.3rem;padding:.6rem .6rem;color:#a9a9b3;background:#f8f8f8;-webkit-border-radius:2rem;-moz-border-radius:2rem;border-radius:2rem;-webkit-transition:color 0.4s ease;-moz-transition:color 0.4s ease;-o-transition:color 0.4s ease;transition:color 0.4s ease}.blur .fixed-button{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.fixed-button:hover,.fixed-button:active{color:#161209;cursor:pointer}.fixed-button:active,.fixed-button:focus,.fixed-button:hover{outline:none}[theme=dark] .fixed-button{color:#5d5d5f;background:#252627}[theme=dark] .fixed-button:hover,[theme=dark] .fixed-button:active{color:#a9a9b3}#back-to-top{display:block;bottom:1.5rem}#view-comments{bottom:4.5rem}.cc-window.cc-banner .cc-btn{color:#161209}.cc-window.cc-banner .cc-btn:hover,.cc-window.cc-banner .cc-btn:focus{background-color:#ccc}[theme=dark] .cc-window.cc-banner .cc-btn{color:#161209}[theme=dark] .cc-window.cc-banner .cc-btn:hover,[theme=dark] .cc-window.cc-banner .cc-btn:focus{background-color:#fff}img{-o-object-fit:contain;object-fit:contain;font-family:"object-fit: contain;"}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding:0 1rem}.page{position:relative;max-width:800px;width:60%;margin:0 auto}[header-desktop] .page{padding-top:3.5rem}[header-desktop=normal] .page{padding-top:0}.blur .page{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.toc .toc-title{font-size:1.2rem;font-weight:bold;text-transform:uppercase}.toc .toc-content{font-size:1rem}.toc .toc-content ul{text-indent:-0.85rem;padding-left:.8rem;list-style:none}.toc .toc-content ul a:first-child::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}[theme=dark] .toc .toc-content ul a:first-child::before{color:#55bde2}.toc .toc-content ul ul{padding-left:1.5rem}.toc ruby{background:#f5f5f5}.toc ruby rt{color:#a9a9b3}[theme=dark] .toc ruby{background:#272C34}[theme=dark] .toc ruby rt{color:#5d5d5f}#toc-auto{display:block;position:absolute;width:12000px;padding:0 .8rem;border-left:4px solid #f0f0f0;word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box;top:10rem;left:0;visibility:hidden}[header-desktop=normal] #toc-auto{top:5rem}.blur #toc-auto{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}[theme=dark] #toc-auto{border-left-color:#363636}#toc-auto .toc-title{margin:.8rem 0}#toc-auto .toc-content.always-active ul{display:block}#toc-auto .toc-content>nav>ul{margin:.625rem 0}#toc-auto .toc-content ul ul{display:none}#toc-auto .toc-content ul .has-active>ul{display:block}#toc-auto .toc-content a.active{font-weight:bold;color:#2d96bd}[theme=dark] #toc-auto .toc-content a.active{color:#55bde2}#toc-auto .toc-content a.active::before{color:#ef3982}[theme=dark] #toc-auto .toc-content a.active::before{color:#bdebfc}#toc-static{display:none;margin:.8rem 0}#toc-static .toc-title{display:flex;justify-content:space-between;line-height:2em;padding:0 .75rem;background:#e6e6e6}[theme=dark] #toc-static .toc-title{background:#1a1d23}#toc-static .toc-content{background-color:#f5f5f5}#toc-static .toc-content>nav>ul{margin:0;padding:.4rem 1rem .4rem 1.8rem}[theme=dark] #toc-static .toc-content{background-color:#272C34}#toc-static.open .toc-title{background:#ededed}[theme=dark] #toc-static.open .toc-title{background:#20252b}.single .single-title{margin:1rem 0 .5rem;font-size:1.6rem;font-weight:bold;line-height:140%}.single .single-subtitle{margin:.4rem 0;font-size:1.2rem;font-weight:normal;font-style:italic;line-height:100%}.single .post-meta{font-size:.875rem;color:#a9a9b3}.single .post-meta span{display:inline-block}[theme=dark] .single .post-meta{color:#5d5d5f}.single .post-meta a,.single .post-meta a::before,.single .post-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-meta a,[theme=dark] .single .post-meta a::before,[theme=dark] .single .post-meta a::after{color:#a9a9b3}.single .post-meta a:active,.single .post-meta a:hover{color:#ef3982}[theme=dark] .single .post-meta a:active,[theme=dark] .single .post-meta a:hover{color:#fff}.single .post-meta .author{font-size:1.05rem}.single .featured-image{margin:.5rem 0 1rem 0}.single .featured-image img{display:block;width:100%;height:auto;margin:0 auto;overflow:hidden}.single .content>h2{font-size:1.5rem}.single .content>h2 code{font-size:1.25rem}.single .content>h3{font-size:1.375rem}.single .content>h3 code{font-size:1.125rem}.single .content>h4{font-size:1.25rem}.single .content>h4 code{font-size:1rem}.single .content>h5{font-size:1.125rem}.single .content>h6{font-size:1rem}.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}[theme=dark] .single .content h2,[theme=dark] .single .content h3,[theme=dark] .single .content h4,[theme=dark] .single .content h5,[theme=dark] .single .content h6{font-weight:bolder}.single .content>h2>.header-mark::before,.single .content>h3>.header-mark::before,.single .content>h4>.header-mark::before,.single .content>h5>.header-mark::before,.single .content>h6>.header-mark::before{content:"|";margin-right:.3125rem;color:#2d96bd}[theme=dark] .single .content>h2>.header-mark::before,[theme=dark] .single .content>h3>.header-mark::before,[theme=dark] .single .content>h4>.header-mark::before,[theme=dark] .single .content>h5>.header-mark::before,[theme=dark] .single .content>h6>.header-mark::before{color:#55bde2}.single .content>h2>.header-mark::before{content:"#"}.single .content p{margin:.5rem 0}.single .content b,.single .content strong{font-weight:bold}[theme=dark] .single .content b,[theme=dark] .single .content strong{color:#ddd}.single .content a,.single .content a::before,.single .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content a,[theme=dark] .single .content a::before,[theme=dark] .single .content a::after{color:#55bde2}.single .content a:active,.single .content a:hover{color:#ef3982}[theme=dark] .single .content a:active,[theme=dark] .single .content a:hover{color:#bdebfc}.single .content a{word-wrap:break-word;overflow-wrap:break-word}[theme=dark] .single .content a b,[theme=dark] .single .content a strong{color:#55bde2}.single .content [theme=dark] a:hover b,.single .content [theme=dark] a:hover strong{color:#bdebfc}.single .content ul,.single .content ol{margin:.5rem 0;padding-left:2.5rem}.single .content ul{list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}[theme=dark] .single .content ruby{background:#272C34}[theme=dark] .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}[theme=dark] .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff;border-collapse:collapse}[theme=dark] .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}[theme=dark] .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px solid #e8e8e8}[theme=dark] .single .content .table-wrapper>table th,[theme=dark] .single .content .table-wrapper>table td{border-color:#1c2025}.single .content img{max-width:100%;min-height:1em}.single .content figure{margin:.5rem;text-align:center}.single .content figure .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.5rem;margin:0 auto;font-size:.875rem;color:#969696}.single .content figure img{display:block;height:auto;margin:0 auto;overflow:hidden}.single .content .lazyloading{-o-object-fit:none;object-fit:none;font-family:"object-fit: none;"}.single .content blockquote{display:block;border-left:0.5rem solid #6bd6fd;background-color:rgba(107,214,253,0.2);padding:.25rem .75rem;margin:1rem 0}[theme=dark] .single .content blockquote{border-left-color:#59c5ec;background-color:rgba(89,197,236,0.2)}.single .content .footnotes{color:#a9a9b3}[theme=dark] .single .content .footnotes{color:#5d5d5f}.single .content .footnotes p{margin:.25rem 0}.single .content code{display:inline-block;max-width:100%;padding:0 .4rem;word-wrap:break-word;overflow-wrap:break-word;-webkit-line-break:anywhere;-ms-line-break:anywhere;line-break:anywhere;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content code{color:#E5BF78}.single .content pre{margin:0;padding:.25rem 0 .25rem .5rem;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.single .content pre code{padding:0}.single .content pre img{min-height:1em;max-height:1.2em;vertical-align:text-bottom}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}[theme=dark] .single .content code,[theme=dark] .single .content pre,[theme=dark] .single .content .highlight table,[theme=dark] .single .content .highlight tr,[theme=dark] .single .content .highlight td{background:#272C34}.single .content .highlight,.single .content .gist{font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem}.single .content .highlight .table-wrapper>table,.single .content .highlight .table-wrapper>table thead,.single .content .highlight .table-wrapper>table tr,.single .content .highlight .table-wrapper>table td,.single .content .gist .table-wrapper>table,.single .content .gist .table-wrapper>table thead,.single .content .gist .table-wrapper>table tr,.single .content .gist .table-wrapper>table td{margin:0;padding:0;border:none !important;white-space:nowrap}.single .content .highlight{line-height:1.4em;margin:.5rem 0}.single .content .highlight>.chroma{position:relative}.single .content .highlight>.chroma .code-header{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;color:#9c9c9c;background:#e1e1e1}[theme=dark] .single .content .highlight>.chroma .code-header{color:#b1b0b0;background:#1a1d23}.single .content .highlight>.chroma .code-header:hover{cursor:pointer}.single .content .highlight>.chroma .code-header .code-title{width:100%;padding:.4rem}.single .content .highlight>.chroma .code-header .code-title::after{padding-left:.2rem;content:'Code'}.single .content .highlight>.chroma .code-header.language-bash .code-title::after{content:"Bash"}.single .content .highlight>.chroma .code-header.language-c .code-title::after{content:"C"}.single .content .highlight>.chroma .code-header.language-cs .code-title::after{content:"C#"}.single .content .highlight>.chroma .code-header.language-cpp .code-title::after{content:"C++"}.single .content .highlight>.chroma .code-header.language-clojure .code-title::after{content:"Clojure"}.single .content .highlight>.chroma .code-header.language-coffeescript .code-title::after{content:"CoffeeScript"}.single .content .highlight>.chroma .code-header.language-css .code-title::after{content:"CSS"}.single .content .highlight>.chroma .code-header.language-dart .code-title::after{content:"Dart"}.single .content .highlight>.chroma .code-header.language-diff .code-title::after{content:"Diff"}.single .content .highlight>.chroma .code-header.language-erlang .code-title::after{content:"Erlang"}.single .content .highlight>.chroma .code-header.language-go .code-title::after{content:"Go"}.single .content .highlight>.chroma .code-header.language-go-html-template .code-title::after{content:"Go HTML Template"}.single .content .highlight>.chroma .code-header.language-groovy .code-title::after{content:"Groovy"}.single .content .highlight>.chroma .code-header.language-haskell .code-title::after{content:"Haskell"}.single .content .highlight>.chroma .code-header.language-html .code-title::after{content:"HTML"}.single .content .highlight>.chroma .code-header.language-http .code-title::after{content:"HTTP"}.single .content .highlight>.chroma .code-header.language-xml .code-title::after{content:"XML"}.single .content .highlight>.chroma .code-header.language-java .code-title::after{content:"Java"}.single .content .highlight>.chroma .code-header.language-js .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-javascript .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-json .code-title::after{content:"JSON"}.single .content .highlight>.chroma .code-header.language-kotlin .code-title::after{content:"Kotlin"}.single .content .highlight>.chroma .code-header.language-latex .code-title::after{content:"LaTeX"}.single .content .highlight>.chroma .code-header.language-less .code-title::after{content:"Less"}.single .content .highlight>.chroma .code-header.language-lisp .code-title::after{content:"Lisp"}.single .content .highlight>.chroma .code-header.language-lua .code-title::after{content:"Lua"}.single .content .highlight>.chroma .code-header.language-makefile .code-title::after{content:"Makefile"}.single .content .highlight>.chroma .code-header.language-markdown .code-title::after{content:"Markdown"}.single .content .highlight>.chroma .code-header.language-matlab .code-title::after{content:"Matlab"}.single .content .highlight>.chroma .code-header.language-objectivec .code-title::after{content:"Objective-C"}.single .content .highlight>.chroma .code-header.language-php .code-title::after{content:"PHP"}.single .content .highlight>.chroma .code-header.language-perl .code-title::after{content:"Perl"}.single .content .highlight>.chroma .code-header.language-python .code-title::after{content:"Python"}.single .content .highlight>.chroma .code-header.language-r .code-title::after{content:"R"}.single .content .highlight>.chroma .code-header.language-ruby .code-title::after{content:"Ruby"}.single .content .highlight>.chroma .code-header.language-rust .code-title::after{content:"Rust"}.single .content .highlight>.chroma .code-header.language-scala .code-title::after{content:"Scala"}.single .content .highlight>.chroma .code-header.language-scss .code-title::after{content:"Scss"}.single .content .highlight>.chroma .code-header.language-shell .code-title::after{content:"Shell"}.single .content .highlight>.chroma .code-header.language-sql .code-title::after{content:"SQL"}.single .content .highlight>.chroma .code-header.language-swift .code-title::after{content:"Swift"}.single .content .highlight>.chroma .code-header.language-tex .code-title::after{content:"TeX"}.single .content .highlight>.chroma .code-header.language-toml .code-title::after{content:"TOML"}.single .content .highlight>.chroma .code-header.language-ts .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-typescript .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-vue .code-title::after{content:"Vue"}.single .content .highlight>.chroma .code-header.language-yml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .code-header.language-yaml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .lntd:first-child{min-width:1.6rem;text-align:right}.single .content .highlight>.chroma .lntd:last-child{width:100%}.single .content .highlight>.chroma .lntd:last-child pre{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:intrinsic;min-width:max-content}.single .content .highlight>.chroma .ln{padding-right:.75rem}.single .content .highlight>.chroma .hl{display:block;background-color:#dcdcdc}[theme=dark] .single .content .highlight>.chroma .hl{background-color:#1c2025}.single .content .highlight>.chroma .ln,.single .content .highlight>.chroma .lnt{color:#a9a9b3}[theme=dark] .single .content .highlight>.chroma .ln,[theme=dark] .single .content .highlight>.chroma .lnt{color:#5d5d5f}.single .content .highlight>.chroma .arrow{padding:0 .2rem;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}.single .content .highlight>.chroma .ellipses{padding:.4rem}.single .content .highlight>.chroma .copy{display:none;padding:.4rem}.single .content .highlight>.chroma .copy:hover{cursor:pointer;color:#2d96bd}[theme=dark] .single .content .highlight>.chroma .copy:hover{color:#fff}.single .content .highlight>.chroma .table-wrapper{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.single .content .highlight>.chroma.open .code-header{background:#ededed}[theme=dark] .single .content .highlight>.chroma.open .code-header{background:#20252b}.single .content .highlight>.chroma.open .table-wrapper{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}.single .content .highlight>.chroma.open .arrow{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.single .content .highlight>.chroma.open .ellipses{display:none}.single .content .highlight>.chroma.open .copy{display:inline}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}[theme=dark] .single .content .highlight .p{color:#a9a9b3}[theme=dark] .single .content .highlight .k{color:#d371e3}[theme=dark] .single .content .highlight .kc{color:#d371e3}[theme=dark] .single .content .highlight .kd{color:#d371e3}[theme=dark] .single .content .highlight .kn{color:#d371e3}[theme=dark] .single .content .highlight .kp{color:#d371e3}[theme=dark] .single .content .highlight .kr{color:#d371e3}[theme=dark] .single .content .highlight .kt{color:#d371e3}[theme=dark] .single .content .highlight .n{color:#a9b2c0}[theme=dark] .single .content .highlight .na{color:#41b0f5}[theme=dark] .single .content .highlight .nb{color:#19b9c4}[theme=dark] .single .content .highlight .bp{color:#ecbf6f}[theme=dark] .single .content .highlight .nc{color:#ecbf6f}[theme=dark] .single .content .highlight .no{color:#41b0f5}[theme=dark] .single .content .highlight .nd{color:#ecbf6f}[theme=dark] .single .content .highlight .ni{color:#41b0f5}[theme=dark] .single .content .highlight .ne{color:#41b0f5}[theme=dark] .single .content .highlight .nf{color:#41b0f5}[theme=dark] .single .content .highlight .fm{color:#19b9c4}[theme=dark] .single .content .highlight .nl{color:#41b0f5}[theme=dark] .single .content .highlight .nn{color:#41b0f5}[theme=dark] .single .content .highlight .nx{color:#a9a9b3}[theme=dark] .single .content .highlight .py{color:#41b0f5}[theme=dark] .single .content .highlight .nt{color:#41b0f5}[theme=dark] .single .content .highlight .nv{color:#41b0f5}[theme=dark] .single .content .highlight .vc{color:#41b0f5}[theme=dark] .single .content .highlight .vg{color:#41b0f5}[theme=dark] .single .content .highlight .vi{color:#41b0f5}[theme=dark] .single .content .highlight .vm{color:#41b0f5}[theme=dark] .single .content .highlight .l{color:#2aa198}[theme=dark] .single .content .highlight .ld{color:#2aa198}[theme=dark] .single .content .highlight .s{color:#8cc570}[theme=dark] .single .content .highlight .sa{color:#8cc570}[theme=dark] .single .content .highlight .sb{color:#8cc570}[theme=dark] .single .content .highlight .sc{color:#8cc570}[theme=dark] .single .content .highlight .dl{color:#8cc570}[theme=dark] .single .content .highlight .sd{color:#8cc570}[theme=dark] .single .content .highlight .s2{color:#8cc570}[theme=dark] .single .content .highlight .se{color:#8cc570}[theme=dark] .single .content .highlight .sh{color:#8cc570}[theme=dark] .single .content .highlight .si{color:#8cc570}[theme=dark] .single .content .highlight .sx{color:#8cc570}[theme=dark] .single .content .highlight .sr{color:#8cc570}[theme=dark] .single .content .highlight .s1{color:#8cc570}[theme=dark] .single .content .highlight .ss{color:#8cc570}[theme=dark] .single .content .highlight .m{color:#db985c}[theme=dark] .single .content .highlight .mb{color:#db985c}[theme=dark] .single .content .highlight .mf{color:#db985c}[theme=dark] .single .content .highlight .mh{color:#db985c}[theme=dark] .single .content .highlight .mi{color:#db985c}[theme=dark] .single .content .highlight .il{color:#db985c}[theme=dark] .single .content .highlight .mo{color:#db985c}[theme=dark] .single .content .highlight .o{color:#ecbf6f}[theme=dark] .single .content .highlight .ow{color:#d371e3}[theme=dark] .single .content .highlight .c{color:#7e848f}[theme=dark] .single .content .highlight .ch{color:#7e848f}[theme=dark] .single .content .highlight .cm{color:#7e848f}[theme=dark] .single .content .highlight .c1{color:#7e848f}[theme=dark] .single .content .highlight .cs{color:#7e848f}[theme=dark] .single .content .highlight .cp{color:#7e848f}[theme=dark] .single .content .highlight .cpf{color:#7e848f}[theme=dark] .single .content .highlight .g{color:#f16372}[theme=dark] .single .content .highlight .gd{color:#f16372}[theme=dark] .single .content .highlight .ge{color:#f16372}[theme=dark] .single .content .highlight .gr{color:#f16372}[theme=dark] .single .content .highlight .gh{color:#f16372}[theme=dark] .single .content .highlight .gi{color:#f16372}[theme=dark] .single .content .highlight .go{color:#f16372}[theme=dark] .single .content .highlight .gp{color:#f16372}[theme=dark] .single .content .highlight .gs{color:#f16372}[theme=dark] .single .content .highlight .gu{color:#f16372}[theme=dark] .single .content .highlight .gt{color:#f16372}[theme=dark] .single .content .highlight .w{color:#bbb}.single .content .gist .gist-file,.single .content .gist .gist-data,.single .content .gist .gist-meta{border:none}.single .content .gist .gist-meta{padding:.4rem .8rem;background-color:#e8e8e8}.single .content .gist .gist-meta a,.single .content .gist .gist-meta a::before,.single .content .gist .gist-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content .gist .gist-meta a,[theme=dark] .single .content .gist .gist-meta a::before,[theme=dark] .single .content .gist .gist-meta a::after{color:#55bde2}.single .content .gist .gist-meta a:active,.single .content .gist .gist-meta a:hover{color:#ef3982}[theme=dark] .single .content .gist .gist-meta a:active,[theme=dark] .single .content .gist .gist-meta a:hover{color:#bdebfc}[theme=dark] .single .content .gist .gist-meta{background-color:#1c2025}[theme=dark] .single .content .gist .highlight{background:#141414}[theme=dark] .single .content .gist .blob-num,[theme=dark] .single .content .gist .blob-code-inner,[theme=dark] .single .content .gist .highlight,[theme=dark] .single .content .gist .pl-enm,[theme=dark] .single .content .gist .pl-ko,[theme=dark] .single .content .gist .pl-mo,[theme=dark] .single .content .gist .pl-mp1 .pl-sf,[theme=dark] .single .content .gist .pl-ms,[theme=dark] .single .content .gist .pl-pdc1,[theme=dark] .single .content .gist .pl-scp,[theme=dark] .single .content .gist .pl-smc,[theme=dark] .single .content .gist .pl-som,[theme=dark] .single .content .gist .pl-va,[theme=dark] .single .content .gist .pl-vpf,[theme=dark] .single .content .gist .pl-vpu,[theme=dark] .single .content .gist .pl-mdr{color:#aab1bf}[theme=dark] .single .content .gist .pl-mb,[theme=dark] .single .content .gist .pl-pdb{font-weight:700}[theme=dark] .single .content .gist .pl-c,[theme=dark] .single .content .gist .pl-c span,[theme=dark] .single .content .gist .pl-pdc{color:#5b6270;font-style:italic}[theme=dark] .single .content .gist .pl-sr .pl-cce{color:#56b5c2;font-weight:400}[theme=dark] .single .content .gist .pl-ef,[theme=dark] .single .content .gist .pl-en,[theme=dark] .single .content .gist .pl-enf,[theme=dark] .single .content .gist .pl-eoai,[theme=dark] .single .content .gist .pl-kos,[theme=dark] .single .content .gist .pl-mh .pl-pdh,[theme=dark] .single .content .gist .pl-mr{color:#61afef}[theme=dark] .single .content .gist .pl-ens,[theme=dark] .single .content .gist .pl-vi{color:#be5046}[theme=dark] .single .content .gist .pl-enti,[theme=dark] .single .content .gist .pl-mai .pl-sf,[theme=dark] .single .content .gist .pl-ml,[theme=dark] .single .content .gist .pl-sf,[theme=dark] .single .content .gist .pl-sr,[theme=dark] .single .content .gist .pl-sr .pl-sra,[theme=dark] .single .content .gist .pl-src,[theme=dark] .single .content .gist .pl-st,[theme=dark] .single .content .gist .pl-vo{color:#56b5c2}[theme=dark] .single .content .gist .pl-eoi,[theme=dark] .single .content .gist .pl-mri,[theme=dark] .single .content .gist .pl-pds,[theme=dark] .single .content .gist .pl-pse .pl-s1,[theme=dark] .single .content .gist .pl-s,[theme=dark] .single .content .gist .pl-s1{color:#97c279}[theme=dark] .single .content .gist .pl-k,[theme=dark] .single .content .gist .pl-kolp,[theme=dark] .single .content .gist .pl-mc,[theme=dark] .single .content .gist .pl-pde{color:#c578dd}[theme=dark] .single .content .gist .pl-mi,[theme=dark] .single .content .gist .pl-pdi{color:#c578dd;font-style:italic}[theme=dark] .single .content .gist .pl-mp,[theme=dark] .single .content .gist .pl-stp{color:#818896}[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi,[theme=dark] .single .content .gist .pl-mdr{font-weight:400}[theme=dark] .single .content .gist .pl-mdht,[theme=dark] .single .content .gist .pl-mi1{color:#97c279;background:#020}[theme=dark] .single .content .gist .pl-md,[theme=dark] .single .content .gist .pl-mdhf{color:#df6b75;background:#200}[theme=dark] .single .content .gist .pl-corl{color:#df6b75;text-decoration:underline}[theme=dark] .single .content .gist .pl-ib{background:#df6b75}[theme=dark] .single .content .gist .pl-ii{background:#e0c184;color:#fff}[theme=dark] .single .content .gist .pl-iu{background:#e05151}[theme=dark] .single .content .gist .pl-ms1{color:#aab1bf;background:#373b41}[theme=dark] .single .content .gist .pl-c1,[theme=dark] .single .content .gist .pl-cn,[theme=dark] .single .content .gist .pl-e,[theme=dark] .single .content .gist .pl-eoa,[theme=dark] .single .content .gist .pl-eoac,[theme=dark] .single .content .gist .pl-eoac .pl-pde,[theme=dark] .single .content .gist .pl-kou,[theme=dark] .single .content .gist .pl-mm,[theme=dark] .single .content .gist .pl-mp .pl-s3,[theme=dark] .single .content .gist .pl-mq,[theme=dark] .single .content .gist .pl-s3,[theme=dark] .single .content .gist .pl-sok,[theme=dark] .single .content .gist .pl-sv,[theme=dark] .single .content .gist .pl-mb{color:#d19965}[theme=dark] .single .content .gist .pl-enc,[theme=dark] .single .content .gist .pl-entc,[theme=dark] .single .content .gist .pl-pse .pl-s2,[theme=dark] .single .content .gist .pl-s2,[theme=dark] .single .content .gist .pl-sc,[theme=dark] .single .content .gist .pl-smp,[theme=dark] .single .content .gist .pl-sr .pl-sre,[theme=dark] .single .content .gist .pl-stj,[theme=dark] .single .content .gist .pl-v,[theme=dark] .single .content .gist .pl-pdb{color:#e4bf7a}[theme=dark] .single .content .gist .pl-ent,[theme=dark] .single .content .gist .pl-entl,[theme=dark] .single .content .gist .pl-entm,[theme=dark] .single .content .gist .pl-mh,[theme=dark] .single .content .gist .pl-pdv,[theme=dark] .single .content .gist .pl-smi,[theme=dark] .single .content .gist .pl-sol,[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi{color:#df6b75}[theme=dark] .single .content iframe.instagram-media{border:none !important}.single .content .admonition{position:relative;margin:1rem 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{font-weight:bold;margin:0 -0.75rem;padding:.25rem 1.8rem;border-bottom:1px solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition .admonition-content{padding:.5rem 0}.single .content .admonition i.icon{font-size:0.85rem;color:#448aff;position:absolute;top:.6rem;left:.4rem}.single .content .admonition i.details-icon{position:absolute;top:.6rem;right:.3rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.note.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.25)}.single .content .admonition.abstract.open .admonition-title{background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.25)}.single .content .admonition.info.open .admonition-title{background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.25)}.single .content .admonition.tip.open .admonition-title{background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.25)}.single .content .admonition.success.open .admonition-title{background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.25)}.single .content .admonition.question.open .admonition-title{background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.25)}.single .content .admonition.warning.open .admonition-title{background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.25)}.single .content .admonition.failure.open .admonition-title{background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.25)}.single .content .admonition.danger.open .admonition-title{background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.25)}.single .content .admonition.bug.open .admonition-title{background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.25)}.single .content .admonition.example.open .admonition-title{background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(159,159,159,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(159,159,159,0.1);background-color:rgba(159,159,159,0.25)}.single .content .admonition.quote.open .admonition-title{background-color:rgba(159,159,159,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content .echarts{margin:.5rem 0;text-align:center}.single .content .mapbox{margin:.5rem 0;padding:.5rem 0}.single .content meting-js{margin:.5rem 0}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #f0f0f0;border-bottom:none}[theme=dark] .single .content hr{border-top:1px dashed #363636}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #f0f0f0;border-bottom-color:#f0f0f0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #f0f0f0;box-shadow:inset 0 -1px 0 #f0f0f0;font-size:.8rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content kbd{background-color:#292a2d;border:1px solid #363636;border-bottom-color:#363636;-webkit-box-shadow:inset 0 -1px 0 #363636;box-shadow:inset 0 -1px 0 #363636;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;word-break:break-all}.single .content .version{height:1.25em;vertical-align:text-bottom}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #f0f0f0;padding:1rem 0 0.3rem}[theme=dark] .single .post-footer .post-info{border-bottom:1px solid #363636}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-mod a,.single .post-footer .post-info .post-info-line .post-info-mod a::before,.single .post-footer .post-info .post-info-line .post-info-mod a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-mod a:active,.single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-md{font-size:0.8rem;width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a,.single .post-footer .post-info .post-info-line .post-info-md a::before,.single .post-footer .post-info .post-info-line .post-info-md a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-md a:active,.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-share a *{vertical-align:text-bottom}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-tags{max-width:65%}.single .post-footer .post-tags *{display:inline}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{-webkit-transform:translateX(-4px);-moz-transform:translateX(-4px);-ms-transform:translateX(-4px);-o-transform:translateX(-4px);transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{-webkit-transform:translateX(4px);-moz-transform:translateX(4px);-ms-transform:translateX(4px);-o-transform:translateX(4px);transform:translateX(4px)}.single #comments{padding:4rem 0}.special .single-title,.special .single-subtitle{text-align:right}.archive .single-title{text-align:right}.archive .group-title{margin-top:1.5rem;margin-bottom:1rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block;margin-top:1rem;margin-bottom:.75rem}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;margin:.25rem 0 .25rem 1.5rem}.archive .archive-item-link{min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}[theme=dark] .archive .archive-item-link{color:#a9a9b3}[theme=dark] .archive .archive-item-link:hover{color:#fff}.archive .archive-item-date{width:4em;text-align:right;color:#a9a9b3}[theme=dark] .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a,.archive .tag-cloud-tags a::before,.archive .tag-cloud-tags a::after{text-decoration:none;color:#161209}[theme=dark] .archive .tag-cloud-tags a,[theme=dark] .archive .tag-cloud-tags a::before,[theme=dark] .archive .tag-cloud-tags a::after{color:#a9a9b3}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:hover{color:#2d96bd}[theme=dark] .archive .tag-cloud-tags a:active,[theme=dark] .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;overflow-wrap:break-word;-webkit-transition:all ease-out 0.3s;-moz-transition:all ease-out 0.3s;-o-transition:all ease-out 0.3s;transition:all ease-out 0.3s}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.archive .tag-cloud-tags a sup{color:#a9a9b3}[theme=dark] .archive .tag-cloud-tags a sup{color:#5d5d5f}.home .home-profile{-webkit-transform:translateY(16vh);-moz-transform:translateY(16vh);-ms-transform:translateY(16vh);-o-transform:translateY(16vh);transform:translateY(16vh);padding:0 0 .5rem;text-align:center}.home .home-profile .home-avatar{padding:.5rem}.home .home-profile .home-avatar img{display:inline-block;width:8rem;height:auto;margin:0 auto;-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);-webkit-transition:all 0.4s ease;-moz-transition:all 0.4s ease;-o-transition:all 0.4s ease;transition:all 0.4s ease}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem)}.home .home-profile .home-title{font-size:1.25rem;font-weight:bold;margin:0;padding:.5rem}.home .home-profile .home-subtitle{font-size:1rem;font-weight:normal;margin:0;padding:.5rem}.home .home-profile .links{padding:.5rem;font-size:1.5rem}.home .home-profile .links a *{vertical-align:text-bottom}.home .home-profile .links img{height:1.5rem;padding:0 .25rem}.home .home-profile .home-disclaimer{font-size:1rem;line-height:1.5rem;font-weight:normal;margin:0;padding:.5rem;color:#a9a9b3}[theme=dark] .home .home-profile .home-disclaimer{color:#5d5d5f}.home[posts] .home-profile{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0);padding-top:2rem}.home[posts] .home-avatar img{width:6rem}.home[posts] .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #f0f0f0}[theme=dark] .home[posts] .summary{color:#a9a9b3;border-bottom:1px dashed #363636}.home[posts] .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto;-webkit-transition:transform 0.4s ease;-moz-transition:transform 0.4s ease;-o-transition:transform 0.4s ease;transition:transform 0.4s ease}.home[posts] .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.home[posts] .summary .featured-image-preview:hover{-webkit-transform:scale(1.01);-moz-transform:scale(1.01);-ms-transform:scale(1.01);-o-transform:scale(1.01);transform:scale(1.01)}.home[posts] .summary .single-title{font-size:1.25rem;line-height:140%;margin:0.4rem 0}.home[posts] .summary .content{display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .home[posts] .summary .content{color:#5d5d5f}.home[posts] .summary .content h2,.home[posts] .summary .content h3,.home[posts] .summary .content h4,.home[posts] .summary .content h5,.home[posts] .summary .content h6,.home[posts] .summary .content p{font-size:1rem;line-height:1.5;display:inline}.home[posts] .summary .content h2::after,.home[posts] .summary .content h3::after,.home[posts] .summary .content h4::after,.home[posts] .summary .content h5::after,.home[posts] .summary .content h6::after,.home[posts] .summary .content p::after{content:"\A";white-space:pre}.home[posts] .summary .content h2{font-size:1.125rem}.home[posts] .summary .content a,.home[posts] .summary .content a::before,.home[posts] .summary .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home[posts] .summary .content a,[theme=dark] .home[posts] .summary .content a::before,[theme=dark] .home[posts] .summary .content a::after{color:#a9a9b3}.home[posts] .summary .content a:active,.home[posts] .summary .content a:hover{color:#ef3982}[theme=dark] .home[posts] .summary .content a:active,[theme=dark] .home[posts] .summary .content a:hover{color:#fff}.home[posts] .summary .content b,.home[posts] .summary .content strong{color:#a9a9b3}[theme=dark] .home[posts] .summary .content b,[theme=dark] .home[posts] .summary .content strong{color:#5d5d5f}.home[posts] .summary .post-footer{margin-top:.4rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.home[posts] .summary .post-footer a,.home[posts] .summary .post-footer a::before,.home[posts] .summary .post-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home[posts] .summary .post-footer a,[theme=dark] .home[posts] .summary .post-footer a::before,[theme=dark] .home[posts] .summary .post-footer a::after{color:#55bde2}.home[posts] .summary .post-footer a:active,.home[posts] .summary .post-footer a:hover{color:#ef3982}[theme=dark] .home[posts] .summary .post-footer a:active,[theme=dark] .home[posts] .summary .post-footer a:hover{color:#bdebfc}.home[posts] .summary .post-footer .post-tags{padding:0}.home[posts] .summary .post-footer .post-tags a,.home[posts] .summary .post-footer .post-tags a::before,.home[posts] .summary .post-footer .post-tags a::after{text-decoration:none;color:#161209}[theme=dark] .home[posts] .summary .post-footer .post-tags a,[theme=dark] .home[posts] .summary .post-footer .post-tags a::before,[theme=dark] .home[posts] .summary .post-footer .post-tags a::after{color:#a9a9b3}.home[posts] .summary .post-footer .post-tags a:active,.home[posts] .summary .post-footer .post-tags a:hover{color:#2d96bd}[theme=dark] .home[posts] .summary .post-footer .post-tags a:active,[theme=dark] .home[posts] .summary .post-footer .post-tags a:hover{color:#fff}#content-404{font-size:1.8rem;line-height:3rem;-webkit-transform:translateY(30vh);-moz-transform:translateY(30vh);-ms-transform:translateY(30vh);-o-transform:translateY(30vh);transform:translateY(30vh);text-align:center}header{width:100%;z-index:150;background-color:#f8f8f8;-webkit-transition:box-shadow 0.3s ease;-moz-transition:box-shadow 0.3s ease;-o-transition:box-shadow 0.3s ease;transition:box-shadow 0.3s ease}[theme=dark] header{background-color:#252627}header .logo{min-height:1.5em;height:1.5em;vertical-align:text-bottom}header .logo,header .header-title-pre{padding-right:.25rem}header .header-title-post{padding-left:.25rem}header:hover{-webkit-box-shadow:0 0 1.5rem 0 rgba(0,0,0,0.1);box-shadow:0 0 1.5rem 0 rgba(0,0,0,0.1)}.header-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%}.header-title{font-family:Nunito,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;margin-right:.5rem;min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-flex:10;flex:10}.menu .menu-item{position:relative}.language-select{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%}.language-select:hover{cursor:pointer}.search{position:relative}.search input{color:transparent;box-sizing:border-box;height:2.5rem;width:2.5rem;-webkit-border-radius:.5rem;-moz-border-radius:.5rem;border-radius:.5rem;border:none;outline:none;background-color:#f8f8f8;vertical-align:baseline !important;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}[theme=dark] .search input{background-color:#252627}.search input::-webkit-input-placeholder{color:rgba(0,0,0,0)}.search input:-moz-placeholder{color:rgba(0,0,0,0)}.search input::-moz-placeholder{color:rgba(0,0,0,0)}.search input:-ms-input-placeholder{color:rgba(0,0,0,0)}.search input::placeholder{color:rgba(0,0,0,0)}.search .search-button{margin:0;position:absolute;left:auto;right:1rem}.search .search-toggle{left:.5rem;right:auto}.search .search-loading{display:none}.search .search-clear{display:none}.open .search input,.search.mobile input{color:#161209;background-color:#e9e9e9;padding:0 2rem 0 2rem}[theme=dark] .open .search input,[theme=dark] .search.mobile input{color:#a9a9b3;background-color:#363636}[theme=dark] .open .search input::-webkit-input-placeholder,[theme=dark] .search.mobile input::-webkit-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-moz-placeholder,[theme=dark] .search.mobile input:-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input::-moz-placeholder,[theme=dark] .search.mobile input::-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-ms-input-placeholder,[theme=dark] .search.mobile input:-ms-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input::placeholder,[theme=dark] .search.mobile input::placeholder{color:#5d5d5f}.open .search input::-webkit-input-placeholder,.search.mobile input::-webkit-input-placeholder{color:#a9a9b3}.open .search input:-moz-placeholder,.search.mobile input:-moz-placeholder{color:#a9a9b3}.open .search input::-moz-placeholder,.search.mobile input::-moz-placeholder{color:#a9a9b3}.open .search input:-ms-input-placeholder,.search.mobile input:-ms-input-placeholder{color:#a9a9b3}.open .search input::placeholder,.search.mobile input::placeholder{color:#a9a9b3}.open .search .search-button,.search.mobile .search-button{color:#a9a9b3}[theme=dark] .open .search .search-button,[theme=dark] .search.mobile .search-button{color:#5d5d5f}.open .search .search-clear:hover,.search.mobile .search-clear:hover{color:#ff6b6b}.open .search .search-toggle:hover,.search.mobile .search-toggle:hover{cursor:default}.theme-switch i{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}#header-desktop{display:block;position:fixed;height:3.5rem;line-height:3.5rem}[header-desktop=normal] #header-desktop{position:static}#header-desktop .header-wrapper{padding:0 2rem 0 10vh}#header-desktop .header-wrapper .header-title{font-size:1.5rem}#header-desktop .header-wrapper .menu{overflow:hidden;white-space:nowrap}#header-desktop .header-wrapper .menu .menu-inner{float:right}#header-desktop .header-wrapper .menu .menu-item{margin:0 .5rem}#header-desktop .header-wrapper .menu .menu-item.delimiter{border-left:1.5px solid #161209}[theme=dark] #header-desktop .header-wrapper .menu .menu-item.delimiter{border-left-color:#363636}#header-desktop .header-wrapper .menu .menu-item.language{margin-right:0}#header-desktop .header-wrapper .menu .menu-item.search{margin:0 -.5rem 0 0}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}[theme=dark] #header-desktop .header-wrapper .menu a.active{color:#fff}#header-desktop.open .header-wrapper .menu .menu-item.search{margin:0 .25rem 0 .5rem}#header-desktop.open .header-wrapper .menu .menu-item.search input{width:24rem}#header-mobile{display:none;position:fixed;height:3.5rem;line-height:3.5rem}[header-mobile=normal] #header-mobile{position:static}#header-mobile .header-container{padding:0;margin:0}#header-mobile .header-container .header-wrapper{padding:0 1rem;font-size:1.125rem;-webkit-transition:margin-top 0.3s ease;-moz-transition:margin-top 0.3s ease;-o-transition:margin-top 0.3s ease;transition:margin-top 0.3s ease}#header-mobile .header-container .header-wrapper .header-title{font-size:1.5rem;max-width:80%}#header-mobile .header-container .header-wrapper .menu-toggle{line-height:4rem;cursor:pointer;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}#header-mobile .header-container .header-wrapper .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}[theme=dark] #header-mobile .header-container .header-wrapper .menu-toggle span{background:#a9a9b3}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(1){-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-o-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(3){-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-o-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-container .menu{text-align:center;background:#f8f8f8;border-top:2px solid #f0f0f0;display:none;padding-top:.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}#header-mobile .header-container .menu .search-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;padding:.5rem 1rem;line-height:2.5rem}#header-mobile .header-container .menu .search{flex-grow:10}#header-mobile .header-container .menu .search .algolia-autocomplete,#header-mobile .header-container .menu .search input{width:100%}#header-mobile .header-container .menu .search-button{top:0}#header-mobile .header-container .menu .search-cancel{display:none;margin-left:.75rem}#header-mobile .header-container .menu .menu-item{display:block;line-height:2.5rem}#header-mobile .header-container .menu.active{display:block}[theme=dark] #header-mobile .header-container .menu{background:#252627;border-top-color:#363636}#header-mobile.open .header-wrapper{margin-top:-3.5rem}#header-mobile.open .menu{padding-top:0;border-top:none}#header-mobile.open .menu .menu-item{display:none}#header-mobile.open .menu .search-cancel{display:inline}.search-dropdown{position:fixed;z-index:200;top:3.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}.search-dropdown.desktop{right:2rem;width:30rem}.search-dropdown.mobile{right:0;width:100%}.search-dropdown .dropdown-menu{right:0 !important;background-color:#fff}[theme=dark] .search-dropdown .dropdown-menu{background-color:#292a2d}.search-dropdown .dropdown-menu .suggestions{overflow-y:auto;max-height:calc(100vh - 3.5rem)}.search-dropdown .dropdown-menu .suggestions .suggestion{padding:.75rem 1rem}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:bold;max-width:75%}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{font-size:.875rem;float:right;text-align:right;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{line-height:1.25rem;display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion em{font-style:normal;background-color:rgba(53,166,247,0.25)}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion em{background-color:rgba(50,112,194,0.4)}.search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#e8e8e8}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#323843}.search-dropdown .dropdown-menu .suggestions .suggestion:hover{cursor:pointer}.search-dropdown .dropdown-menu .search-empty{padding:1rem;text-align:center}.search-dropdown .dropdown-menu .search-empty .search-query{font-weight:bold}[theme=dark] .search-dropdown .dropdown-menu .search-empty .search-query{color:#ddd}.search-dropdown .dropdown-menu .search-footer{padding:.5rem 1rem;float:right;font-size:.8rem;color:#a9a9b3}.search-dropdown .dropdown-menu .search-footer [theme=dark]{color:#5d5d5f}.search-dropdown .dropdown-menu .search-footer a,.search-dropdown .dropdown-menu .search-footer a::before,.search-dropdown .dropdown-menu .search-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .search-dropdown .dropdown-menu .search-footer a,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::before,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::after{color:#55bde2}.search-dropdown .dropdown-menu .search-footer a:active,.search-dropdown .dropdown-menu .search-footer a:hover{color:#ef3982}[theme=dark] .search-dropdown .dropdown-menu .search-footer a:active,[theme=dark] .search-dropdown .dropdown-menu .search-footer a:hover{color:#bdebfc}.search-dropdown .dropdown-menu .search-footer a{font-size:1rem}footer{height:2rem;width:100%;text-align:center;line-height:1.25rem;padding:1rem 0}footer .footer-container{font-size:.875rem}footer .footer-container .footer-line{width:100%}footer .footer-container .footer-line .icp-br{display:none}.blur footer{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}[theme=dark] .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s;bottom:0px}[theme=dark] .pagination li:before,[theme=dark] .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}[theme=dark] .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1440px){.page{width:56%}}@media only screen and (max-width: 1200px){.page{width:52%}#header-desktop .header-wrapper{padding-right:1rem}.search-dropdown.desktop{right:1rem}}@media only screen and (max-width: 960px){#toc-auto{display:none}#toc-static{display:block}.page{width:80%}#header-desktop .header-wrapper{padding-left:1rem}}@media only screen and (max-width: 680px){#header-desktop{display:none}#header-mobile{display:block}body.blur{overflow:hidden}.page{width:100%}[header-mobile] .page{padding-top:3.5rem}[header-mobile=normal] .page{padding-top:0}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}}
+
+/*# sourceMappingURL=style.min.css.map */ \ No newline at end of file
diff --git a/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.json b/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.json
new file mode 100644
index 00000000..0095485d
--- /dev/null
+++ b/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.json
@@ -0,0 +1 @@
+{"Target":"css/style.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file
diff --git a/resources/_gen/assets/scss/css/style.template.scss_d40178ffcb058d725849178b0a7a43cc.content b/resources/_gen/assets/scss/css/style.template.scss_d40178ffcb058d725849178b0a7a43cc.content
deleted file mode 100644
index 7b8063a0..00000000
--- a/resources/_gen/assets/scss/css/style.template.scss_d40178ffcb058d725849178b0a7a43cc.content
+++ /dev/null
@@ -1,3 +0,0 @@
-@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@800&display=swap");html{font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-display:swap;font-size:16px;line-height:1.5rem;width:100%}::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background-color:rgba(53,166,247,0.25)}[theme=dark] ::selection{background-color:rgba(50,112,194,0.4)}body{background-color:#fff;color:#161209;word-wrap:break-word;overflow-wrap:break-word;scrollbar-color:auto}body[theme=dark]{color:#a9a9b3;background-color:#292a2d}input::-ms-clear{display:none}a,a::before,a::after{text-decoration:none;color:#161209}[theme=dark] a,[theme=dark] a::before,[theme=dark] a::after{color:#a9a9b3}a:active,a:hover{color:#2d96bd}[theme=dark] a:active,[theme=dark] a:hover{color:#fff}#mask{background-repeat:no-repeat;background-position:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background-color:rgba(0,0,0,0)}.blur #mask{z-index:100;background-color:rgba(0,0,0,0.25)}svg.icon{display:inline-block;width:1.25em;height:1em;text-align:center}svg.icon path{fill:currentColor}img.emoji{height:1em;width:1em;margin:0 .05em 0 .1em;vertical-align:-.1em}.details .details-summary:hover{cursor:pointer}.details i.details-icon{color:#a9a9b3;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}[theme=dark] .details i.details-icon{color:#5d5d5f}.details .details-content{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.details.open i.details-icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.details.open .details-content{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}#fixed-buttons{display:none}.fixed-button{display:none;z-index:100;position:fixed;right:1.5rem;font-size:1rem;line-height:1.3rem;padding:.6rem .6rem;color:#a9a9b3;background:#f8f8f8;-webkit-border-radius:2rem;-moz-border-radius:2rem;border-radius:2rem}.blur .fixed-button{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.fixed-button:hover,.fixed-button:active{color:#161209;cursor:pointer}.fixed-button:active,.fixed-button:focus,.fixed-button:hover{outline:none}[theme=dark] .fixed-button{color:#5d5d5f;background:#252627}[theme=dark] .fixed-button:hover,[theme=dark] .fixed-button:active{color:#a9a9b3}#back-to-top{display:block;bottom:1.5rem}#view-comments{bottom:4.5rem}img{-o-object-fit:contain;object-fit:contain;font-family:"object-fit: contain;"}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding:0 1rem}.page{position:relative;max-width:800px;width:60%;margin:0 auto;padding-top:3.5rem}.blur .page{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.toc .toc-title{font-size:1.2rem;font-weight:bold;text-transform:uppercase}.toc .toc-content{font-size:1rem}.toc .toc-content ul{text-indent:-0.85rem;padding-left:.8rem;list-style:none}.toc .toc-content ul a:first-child::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}[theme=dark] .toc .toc-content ul a:first-child::before{color:#55bde2}.toc .toc-content ul ul{padding-left:1.5rem}.toc ruby{background:#f5f5f5}.toc ruby rt{color:#a9a9b3}[theme=dark] .toc ruby{background:#272C34}[theme=dark] .toc ruby rt{color:#5d5d5f}#toc-auto{display:block;position:absolute;width:12000px;padding:0 .8rem;border-left:4px solid #f0f0f0;word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box;top:10rem;left:0;visibility:hidden}.blur #toc-auto{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}[theme=dark] #toc-auto{border-left-color:#363636}#toc-auto .toc-title{margin:.8rem 0}#toc-auto .toc-content.always-active ul{display:block}#toc-auto .toc-content>nav>ul{margin:.625rem 0}#toc-auto .toc-content ul ul{display:none}#toc-auto .toc-content ul .has-active>ul{display:block}#toc-auto .toc-content a.active{font-weight:bold;color:#2d96bd}[theme=dark] #toc-auto .toc-content a.active{color:#55bde2}#toc-auto .toc-content a.active::before{color:#ef3982}[theme=dark] #toc-auto .toc-content a.active::before{color:#bdebfc}#toc-static{display:none;margin:.8rem 0}#toc-static .toc-title{display:flex;justify-content:space-between;line-height:2em;padding:0 .75rem;background:#e6e6e6}[theme=dark] #toc-static .toc-title{background:#1a1d23}#toc-static .toc-content{background-color:#f5f5f5}#toc-static .toc-content>nav>ul{margin:0;padding:.4rem 1rem .4rem 1.8rem}[theme=dark] #toc-static .toc-content{background-color:#272C34}#toc-static.open .toc-title{background:#ededed}[theme=dark] #toc-static.open .toc-title{background:#20252b}.single .single-title{margin:1rem 0 .5rem;font-size:1.6rem;font-weight:bold;line-height:140%}.single .single-subtitle{margin:.4rem 0;font-size:1.2rem;font-weight:normal;font-style:italic;line-height:100%}.single .post-meta{font-size:.875rem;color:#a9a9b3}.single .post-meta span{display:inline-block}[theme=dark] .single .post-meta{color:#5d5d5f}.single .post-meta a,.single .post-meta a::before,.single .post-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-meta a,[theme=dark] .single .post-meta a::before,[theme=dark] .single .post-meta a::after{color:#a9a9b3}.single .post-meta a:active,.single .post-meta a:hover{color:#ef3982}[theme=dark] .single .post-meta a:active,[theme=dark] .single .post-meta a:hover{color:#fff}.single .post-meta .author{font-size:1.05rem}.single .featured-image{margin:.5rem 0 1rem 0}.single .featured-image img{display:block;width:100%;height:auto;margin:0 auto;overflow:hidden}.single .content>h2{font-size:1.5rem}.single .content>h2 code{font-size:1.25rem}.single .content>h3{font-size:1.375rem}.single .content>h3 code{font-size:1.125rem}.single .content>h4{font-size:1.25rem}.single .content>h4 code{font-size:1rem}.single .content>h5{font-size:1.125rem}.single .content>h6{font-size:1rem}.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}[theme=dark] .single .content h2,[theme=dark] .single .content h3,[theme=dark] .single .content h4,[theme=dark] .single .content h5,[theme=dark] .single .content h6{font-weight:bolder}.single .content>h2>.header-mark::before,.single .content>h3>.header-mark::before,.single .content>h4>.header-mark::before,.single .content>h5>.header-mark::before,.single .content>h6>.header-mark::before{content:"|";margin-right:.3125rem;color:#2d96bd}[theme=dark] .single .content>h2>.header-mark::before,[theme=dark] .single .content>h3>.header-mark::before,[theme=dark] .single .content>h4>.header-mark::before,[theme=dark] .single .content>h5>.header-mark::before,[theme=dark] .single .content>h6>.header-mark::before{color:#55bde2}.single .content>h2>.header-mark::before{content:"#"}.single .content p{margin:.5rem 0}.single .content b,.single .content strong{font-weight:bold}[theme=dark] .single .content b,[theme=dark] .single .content strong{color:#ddd}.single .content a,.single .content a::before,.single .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content a,[theme=dark] .single .content a::before,[theme=dark] .single .content a::after{color:#55bde2}.single .content a:active,.single .content a:hover{color:#ef3982}[theme=dark] .single .content a:active,[theme=dark] .single .content a:hover{color:#bdebfc}.single .content a{word-wrap:break-word;overflow-wrap:break-word}[theme=dark] .single .content a b,[theme=dark] .single .content a strong{color:#55bde2}.single .content [theme=dark] a:hover b,.single .content [theme=dark] a:hover strong{color:#bdebfc}.single .content ul,.single .content ol{margin:.5rem 0;padding-left:2.5rem}.single .content ul{list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}[theme=dark] .single .content ruby{background:#272C34}[theme=dark] .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}[theme=dark] .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff;border-collapse:collapse}[theme=dark] .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}[theme=dark] .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px solid #e8e8e8}[theme=dark] .single .content .table-wrapper>table th,[theme=dark] .single .content .table-wrapper>table td{border-color:#1c2025}.single .content img{max-width:100%;min-height:1em}.single .content figure{margin:.5rem;text-align:center}.single .content figure .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.5rem;margin:0 auto;font-size:.875rem;color:#969696}.single .content figure img{display:block;height:auto;margin:0 auto;overflow:hidden}.single .content .lazyloading{-o-object-fit:none;object-fit:none;font-family:"object-fit: none;"}.single .content blockquote{display:block;border-left:0.5rem solid #6bd6fd;background-color:rgba(107,214,253,0.2);padding:.25rem .75rem;margin:1rem 0}[theme=dark] .single .content blockquote{border-left-color:#59c5ec;background-color:rgba(89,197,236,0.2)}.single .content .footnotes{color:#a9a9b3}[theme=dark] .single .content .footnotes{color:#5d5d5f}.single .content .footnotes p{margin:.25rem 0}.single .content code{display:inline-block;max-width:100%;padding:0 .4rem;word-wrap:break-word;overflow-wrap:break-word;-webkit-line-break:anywhere;-ms-line-break:anywhere;line-break:anywhere;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content code{color:#E5BF78}.single .content pre{margin:0;padding:.25rem 0 .25rem .5rem;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.single .content pre code{padding:0}.single .content pre img{min-height:1em;max-height:1.2em;vertical-align:text-bottom}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}[theme=dark] .single .content code,[theme=dark] .single .content pre,[theme=dark] .single .content .highlight table,[theme=dark] .single .content .highlight tr,[theme=dark] .single .content .highlight td{background:#272C34}.single .content .highlight,.single .content .gist{font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.875rem}.single .content .highlight .table-wrapper>table,.single .content .highlight .table-wrapper>table thead,.single .content .highlight .table-wrapper>table tr,.single .content .highlight .table-wrapper>table td,.single .content .gist .table-wrapper>table,.single .content .gist .table-wrapper>table thead,.single .content .gist .table-wrapper>table tr,.single .content .gist .table-wrapper>table td{margin:0;padding:0;border:none !important;white-space:nowrap}.single .content .highlight{line-height:1.4em;margin:.5rem 0}.single .content .highlight>.chroma{position:relative}.single .content .highlight>.chroma .code-header{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;color:#9c9c9c;background:#e1e1e1}[theme=dark] .single .content .highlight>.chroma .code-header{color:#b1b0b0;background:#1a1d23}.single .content .highlight>.chroma .code-header:hover{cursor:pointer}.single .content .highlight>.chroma .code-header .code-title{width:100%;padding:.4rem}.single .content .highlight>.chroma .code-header .code-title::after{padding-left:.2rem;content:'Code'}.single .content .highlight>.chroma .code-header.language-bash .code-title::after{content:"Bash"}.single .content .highlight>.chroma .code-header.language-c .code-title::after{content:"C"}.single .content .highlight>.chroma .code-header.language-cs .code-title::after{content:"C#"}.single .content .highlight>.chroma .code-header.language-cpp .code-title::after{content:"C++"}.single .content .highlight>.chroma .code-header.language-clojure .code-title::after{content:"Clojure"}.single .content .highlight>.chroma .code-header.language-coffeescript .code-title::after{content:"CoffeeScript"}.single .content .highlight>.chroma .code-header.language-css .code-title::after{content:"CSS"}.single .content .highlight>.chroma .code-header.language-dart .code-title::after{content:"Dart"}.single .content .highlight>.chroma .code-header.language-diff .code-title::after{content:"Diff"}.single .content .highlight>.chroma .code-header.language-erlang .code-title::after{content:"Erlang"}.single .content .highlight>.chroma .code-header.language-go .code-title::after{content:"Go"}.single .content .highlight>.chroma .code-header.language-go-html-template .code-title::after{content:"Go HTML Template"}.single .content .highlight>.chroma .code-header.language-groovy .code-title::after{content:"Groovy"}.single .content .highlight>.chroma .code-header.language-haskell .code-title::after{content:"Haskell"}.single .content .highlight>.chroma .code-header.language-html .code-title::after{content:"HTML"}.single .content .highlight>.chroma .code-header.language-http .code-title::after{content:"HTTP"}.single .content .highlight>.chroma .code-header.language-xml .code-title::after{content:"XML"}.single .content .highlight>.chroma .code-header.language-java .code-title::after{content:"Java"}.single .content .highlight>.chroma .code-header.language-js .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-javascript .code-title::after{content:"JavaScript"}.single .content .highlight>.chroma .code-header.language-json .code-title::after{content:"JSON"}.single .content .highlight>.chroma .code-header.language-kotlin .code-title::after{content:"Kotlin"}.single .content .highlight>.chroma .code-header.language-latex .code-title::after{content:"LaTeX"}.single .content .highlight>.chroma .code-header.language-less .code-title::after{content:"Less"}.single .content .highlight>.chroma .code-header.language-lisp .code-title::after{content:"Lisp"}.single .content .highlight>.chroma .code-header.language-lua .code-title::after{content:"Lua"}.single .content .highlight>.chroma .code-header.language-makefile .code-title::after{content:"Makefile"}.single .content .highlight>.chroma .code-header.language-markdown .code-title::after{content:"Markdown"}.single .content .highlight>.chroma .code-header.language-matlab .code-title::after{content:"Matlab"}.single .content .highlight>.chroma .code-header.language-objectivec .code-title::after{content:"Objective-C"}.single .content .highlight>.chroma .code-header.language-php .code-title::after{content:"PHP"}.single .content .highlight>.chroma .code-header.language-perl .code-title::after{content:"Perl"}.single .content .highlight>.chroma .code-header.language-python .code-title::after{content:"Python"}.single .content .highlight>.chroma .code-header.language-r .code-title::after{content:"R"}.single .content .highlight>.chroma .code-header.language-ruby .code-title::after{content:"Ruby"}.single .content .highlight>.chroma .code-header.language-rust .code-title::after{content:"Rust"}.single .content .highlight>.chroma .code-header.language-scala .code-title::after{content:"Scala"}.single .content .highlight>.chroma .code-header.language-scss .code-title::after{content:"Scss"}.single .content .highlight>.chroma .code-header.language-shell .code-title::after{content:"Shell"}.single .content .highlight>.chroma .code-header.language-sql .code-title::after{content:"SQL"}.single .content .highlight>.chroma .code-header.language-swift .code-title::after{content:"Swift"}.single .content .highlight>.chroma .code-header.language-tex .code-title::after{content:"TeX"}.single .content .highlight>.chroma .code-header.language-toml .code-title::after{content:"TOML"}.single .content .highlight>.chroma .code-header.language-ts .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-typescript .code-title::after{content:"TypeScript"}.single .content .highlight>.chroma .code-header.language-vue .code-title::after{content:"Vue"}.single .content .highlight>.chroma .code-header.language-yml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .code-header.language-yaml .code-title::after{content:"YAML"}.single .content .highlight>.chroma .lntd:first-child{min-width:1.6rem;text-align:right}.single .content .highlight>.chroma .lntd:last-child{width:100%}.single .content .highlight>.chroma .lntd:last-child pre{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:intrinsic;min-width:max-content}.single .content .highlight>.chroma .ln{padding-right:.75rem}.single .content .highlight>.chroma .hl{display:block;background-color:#dcdcdc}[theme=dark] .single .content .highlight>.chroma .hl{background-color:#1c2025}.single .content .highlight>.chroma .ln,.single .content .highlight>.chroma .lnt{color:#a9a9b3}[theme=dark] .single .content .highlight>.chroma .ln,[theme=dark] .single .content .highlight>.chroma .lnt{color:#5d5d5f}.single .content .highlight>.chroma .arrow{padding:0 .2rem;-webkit-transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-o-transition:transform 0.2s ease;transition:transform 0.2s ease}.single .content .highlight>.chroma .ellipses{padding:.4rem}.single .content .highlight>.chroma .copy{display:none;padding:.4rem}.single .content .highlight>.chroma .copy:hover{cursor:pointer;color:#2d96bd}[theme=dark] .single .content .highlight>.chroma .copy:hover{color:#fff}.single .content .highlight>.chroma .table-wrapper{max-height:0;overflow-y:hidden;-webkit-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-moz-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;-o-transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s;transition:max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s}.single .content .highlight>.chroma.open .code-header{background:#ededed}[theme=dark] .single .content .highlight>.chroma.open .code-header{background:#20252b}.single .content .highlight>.chroma.open .table-wrapper{max-height:12000px;-webkit-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-moz-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;-o-transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s;transition:max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s}.single .content .highlight>.chroma.open .arrow{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.single .content .highlight>.chroma.open .ellipses{display:none}.single .content .highlight>.chroma.open .copy{display:inline}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}[theme=dark] .single .content .highlight .p{color:#a9a9b3}[theme=dark] .single .content .highlight .k{color:#d371e3}[theme=dark] .single .content .highlight .kc{color:#d371e3}[theme=dark] .single .content .highlight .kd{color:#d371e3}[theme=dark] .single .content .highlight .kn{color:#d371e3}[theme=dark] .single .content .highlight .kp{color:#d371e3}[theme=dark] .single .content .highlight .kr{color:#d371e3}[theme=dark] .single .content .highlight .kt{color:#d371e3}[theme=dark] .single .content .highlight .n{color:#a9b2c0}[theme=dark] .single .content .highlight .na{color:#41b0f5}[theme=dark] .single .content .highlight .nb{color:#19b9c4}[theme=dark] .single .content .highlight .bp{color:#ecbf6f}[theme=dark] .single .content .highlight .nc{color:#ecbf6f}[theme=dark] .single .content .highlight .no{color:#41b0f5}[theme=dark] .single .content .highlight .nd{color:#ecbf6f}[theme=dark] .single .content .highlight .ni{color:#41b0f5}[theme=dark] .single .content .highlight .ne{color:#41b0f5}[theme=dark] .single .content .highlight .nf{color:#41b0f5}[theme=dark] .single .content .highlight .fm{color:#19b9c4}[theme=dark] .single .content .highlight .nl{color:#41b0f5}[theme=dark] .single .content .highlight .nn{color:#41b0f5}[theme=dark] .single .content .highlight .nx{color:#a9a9b3}[theme=dark] .single .content .highlight .py{color:#41b0f5}[theme=dark] .single .content .highlight .nt{color:#41b0f5}[theme=dark] .single .content .highlight .nv{color:#41b0f5}[theme=dark] .single .content .highlight .vc{color:#41b0f5}[theme=dark] .single .content .highlight .vg{color:#41b0f5}[theme=dark] .single .content .highlight .vi{color:#41b0f5}[theme=dark] .single .content .highlight .vm{color:#41b0f5}[theme=dark] .single .content .highlight .l{color:#2aa198}[theme=dark] .single .content .highlight .ld{color:#2aa198}[theme=dark] .single .content .highlight .s{color:#8cc570}[theme=dark] .single .content .highlight .sa{color:#8cc570}[theme=dark] .single .content .highlight .sb{color:#8cc570}[theme=dark] .single .content .highlight .sc{color:#8cc570}[theme=dark] .single .content .highlight .dl{color:#8cc570}[theme=dark] .single .content .highlight .sd{color:#8cc570}[theme=dark] .single .content .highlight .s2{color:#8cc570}[theme=dark] .single .content .highlight .se{color:#8cc570}[theme=dark] .single .content .highlight .sh{color:#8cc570}[theme=dark] .single .content .highlight .si{color:#8cc570}[theme=dark] .single .content .highlight .sx{color:#8cc570}[theme=dark] .single .content .highlight .sr{color:#8cc570}[theme=dark] .single .content .highlight .s1{color:#8cc570}[theme=dark] .single .content .highlight .ss{color:#8cc570}[theme=dark] .single .content .highlight .m{color:#db985c}[theme=dark] .single .content .highlight .mb{color:#db985c}[theme=dark] .single .content .highlight .mf{color:#db985c}[theme=dark] .single .content .highlight .mh{color:#db985c}[theme=dark] .single .content .highlight .mi{color:#db985c}[theme=dark] .single .content .highlight .il{color:#db985c}[theme=dark] .single .content .highlight .mo{color:#db985c}[theme=dark] .single .content .highlight .o{color:#ecbf6f}[theme=dark] .single .content .highlight .ow{color:#d371e3}[theme=dark] .single .content .highlight .c{color:#7e848f}[theme=dark] .single .content .highlight .ch{color:#7e848f}[theme=dark] .single .content .highlight .cm{color:#7e848f}[theme=dark] .single .content .highlight .c1{color:#7e848f}[theme=dark] .single .content .highlight .cs{color:#7e848f}[theme=dark] .single .content .highlight .cp{color:#7e848f}[theme=dark] .single .content .highlight .cpf{color:#7e848f}[theme=dark] .single .content .highlight .g{color:#f16372}[theme=dark] .single .content .highlight .gd{color:#f16372}[theme=dark] .single .content .highlight .ge{color:#f16372}[theme=dark] .single .content .highlight .gr{color:#f16372}[theme=dark] .single .content .highlight .gh{color:#f16372}[theme=dark] .single .content .highlight .gi{color:#f16372}[theme=dark] .single .content .highlight .go{color:#f16372}[theme=dark] .single .content .highlight .gp{color:#f16372}[theme=dark] .single .content .highlight .gs{color:#f16372}[theme=dark] .single .content .highlight .gu{color:#f16372}[theme=dark] .single .content .highlight .gt{color:#f16372}[theme=dark] .single .content .highlight .w{color:#bbb}.single .content .gist .gist-file,.single .content .gist .gist-data,.single .content .gist .gist-meta{border:none}.single .content .gist .gist-meta{padding:.4rem .8rem;background-color:#e8e8e8}.single .content .gist .gist-meta a,.single .content .gist .gist-meta a::before,.single .content .gist .gist-meta a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .content .gist .gist-meta a,[theme=dark] .single .content .gist .gist-meta a::before,[theme=dark] .single .content .gist .gist-meta a::after{color:#55bde2}.single .content .gist .gist-meta a:active,.single .content .gist .gist-meta a:hover{color:#ef3982}[theme=dark] .single .content .gist .gist-meta a:active,[theme=dark] .single .content .gist .gist-meta a:hover{color:#bdebfc}[theme=dark] .single .content .gist .gist-meta{background-color:#1c2025}[theme=dark] .single .content .gist .highlight{background:#141414}[theme=dark] .single .content .gist .blob-num,[theme=dark] .single .content .gist .blob-code-inner,[theme=dark] .single .content .gist .highlight,[theme=dark] .single .content .gist .pl-enm,[theme=dark] .single .content .gist .pl-ko,[theme=dark] .single .content .gist .pl-mo,[theme=dark] .single .content .gist .pl-mp1 .pl-sf,[theme=dark] .single .content .gist .pl-ms,[theme=dark] .single .content .gist .pl-pdc1,[theme=dark] .single .content .gist .pl-scp,[theme=dark] .single .content .gist .pl-smc,[theme=dark] .single .content .gist .pl-som,[theme=dark] .single .content .gist .pl-va,[theme=dark] .single .content .gist .pl-vpf,[theme=dark] .single .content .gist .pl-vpu,[theme=dark] .single .content .gist .pl-mdr{color:#aab1bf}[theme=dark] .single .content .gist .pl-mb,[theme=dark] .single .content .gist .pl-pdb{font-weight:700}[theme=dark] .single .content .gist .pl-c,[theme=dark] .single .content .gist .pl-c span,[theme=dark] .single .content .gist .pl-pdc{color:#5b6270;font-style:italic}[theme=dark] .single .content .gist .pl-sr .pl-cce{color:#56b5c2;font-weight:400}[theme=dark] .single .content .gist .pl-ef,[theme=dark] .single .content .gist .pl-en,[theme=dark] .single .content .gist .pl-enf,[theme=dark] .single .content .gist .pl-eoai,[theme=dark] .single .content .gist .pl-kos,[theme=dark] .single .content .gist .pl-mh .pl-pdh,[theme=dark] .single .content .gist .pl-mr{color:#61afef}[theme=dark] .single .content .gist .pl-ens,[theme=dark] .single .content .gist .pl-vi{color:#be5046}[theme=dark] .single .content .gist .pl-enti,[theme=dark] .single .content .gist .pl-mai .pl-sf,[theme=dark] .single .content .gist .pl-ml,[theme=dark] .single .content .gist .pl-sf,[theme=dark] .single .content .gist .pl-sr,[theme=dark] .single .content .gist .pl-sr .pl-sra,[theme=dark] .single .content .gist .pl-src,[theme=dark] .single .content .gist .pl-st,[theme=dark] .single .content .gist .pl-vo{color:#56b5c2}[theme=dark] .single .content .gist .pl-eoi,[theme=dark] .single .content .gist .pl-mri,[theme=dark] .single .content .gist .pl-pds,[theme=dark] .single .content .gist .pl-pse .pl-s1,[theme=dark] .single .content .gist .pl-s,[theme=dark] .single .content .gist .pl-s1{color:#97c279}[theme=dark] .single .content .gist .pl-k,[theme=dark] .single .content .gist .pl-kolp,[theme=dark] .single .content .gist .pl-mc,[theme=dark] .single .content .gist .pl-pde{color:#c578dd}[theme=dark] .single .content .gist .pl-mi,[theme=dark] .single .content .gist .pl-pdi{color:#c578dd;font-style:italic}[theme=dark] .single .content .gist .pl-mp,[theme=dark] .single .content .gist .pl-stp{color:#818896}[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi,[theme=dark] .single .content .gist .pl-mdr{font-weight:400}[theme=dark] .single .content .gist .pl-mdht,[theme=dark] .single .content .gist .pl-mi1{color:#97c279;background:#020}[theme=dark] .single .content .gist .pl-md,[theme=dark] .single .content .gist .pl-mdhf{color:#df6b75;background:#200}[theme=dark] .single .content .gist .pl-corl{color:#df6b75;text-decoration:underline}[theme=dark] .single .content .gist .pl-ib{background:#df6b75}[theme=dark] .single .content .gist .pl-ii{background:#e0c184;color:#fff}[theme=dark] .single .content .gist .pl-iu{background:#e05151}[theme=dark] .single .content .gist .pl-ms1{color:#aab1bf;background:#373b41}[theme=dark] .single .content .gist .pl-c1,[theme=dark] .single .content .gist .pl-cn,[theme=dark] .single .content .gist .pl-e,[theme=dark] .single .content .gist .pl-eoa,[theme=dark] .single .content .gist .pl-eoac,[theme=dark] .single .content .gist .pl-eoac .pl-pde,[theme=dark] .single .content .gist .pl-kou,[theme=dark] .single .content .gist .pl-mm,[theme=dark] .single .content .gist .pl-mp .pl-s3,[theme=dark] .single .content .gist .pl-mq,[theme=dark] .single .content .gist .pl-s3,[theme=dark] .single .content .gist .pl-sok,[theme=dark] .single .content .gist .pl-sv,[theme=dark] .single .content .gist .pl-mb{color:#d19965}[theme=dark] .single .content .gist .pl-enc,[theme=dark] .single .content .gist .pl-entc,[theme=dark] .single .content .gist .pl-pse .pl-s2,[theme=dark] .single .content .gist .pl-s2,[theme=dark] .single .content .gist .pl-sc,[theme=dark] .single .content .gist .pl-smp,[theme=dark] .single .content .gist .pl-sr .pl-sre,[theme=dark] .single .content .gist .pl-stj,[theme=dark] .single .content .gist .pl-v,[theme=dark] .single .content .gist .pl-pdb{color:#e4bf7a}[theme=dark] .single .content .gist .pl-ent,[theme=dark] .single .content .gist .pl-entl,[theme=dark] .single .content .gist .pl-entm,[theme=dark] .single .content .gist .pl-mh,[theme=dark] .single .content .gist .pl-pdv,[theme=dark] .single .content .gist .pl-smi,[theme=dark] .single .content .gist .pl-sol,[theme=dark] .single .content .gist .pl-mdh,[theme=dark] .single .content .gist .pl-mdi{color:#df6b75}[theme=dark] .single .content iframe.instagram-media{border:none !important}.single .content .admonition{position:relative;margin:1rem 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{font-weight:bold;margin:0 -0.75rem;padding:.25rem 1.8rem;border-bottom:1px solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition .admonition-content{padding:.5rem 0}.single .content .admonition i.icon{font-size:0.85rem;color:#448aff;position:absolute;top:.6rem;left:.4rem}.single .content .admonition i.details-icon{position:absolute;top:.6rem;right:.3rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.25)}.single .content .admonition.note.open .admonition-title{background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.25)}.single .content .admonition.abstract.open .admonition-title{background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.25)}.single .content .admonition.info.open .admonition-title{background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.25)}.single .content .admonition.tip.open .admonition-title{background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.25)}.single .content .admonition.success.open .admonition-title{background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.25)}.single .content .admonition.question.open .admonition-title{background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.25)}.single .content .admonition.warning.open .admonition-title{background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.25)}.single .content .admonition.failure.open .admonition-title{background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.25)}.single .content .admonition.danger.open .admonition-title{background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.25)}.single .content .admonition.bug.open .admonition-title{background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.25)}.single .content .admonition.example.open .admonition-title{background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(159,159,159,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(159,159,159,0.1);background-color:rgba(159,159,159,0.25)}.single .content .admonition.quote.open .admonition-title{background-color:rgba(159,159,159,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content .echarts{margin:.5rem 0;text-align:center}.single .content .mapbox{margin:.5rem 0;padding:.5rem 0}.single .content meting-js{margin:.5rem 0}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #f0f0f0;border-bottom:none}[theme=dark] .single .content hr{border-top:1px dashed #363636}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #f0f0f0;border-bottom-color:#f0f0f0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #f0f0f0;box-shadow:inset 0 -1px 0 #f0f0f0;font-size:.8rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#E74C3C}[theme=dark] .single .content kbd{background-color:#292a2d;border:1px solid #363636;border-bottom-color:#363636;-webkit-box-shadow:inset 0 -1px 0 #363636;box-shadow:inset 0 -1px 0 #363636;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;word-break:break-all}.single .content .version{height:1.25em;vertical-align:text-bottom}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #f0f0f0;padding:1rem 0 0.3rem}[theme=dark] .single .post-footer .post-info{border-bottom:1px solid #363636}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-mod a,.single .post-footer .post-info .post-info-line .post-info-mod a::before,.single .post-footer .post-info .post-info-line .post-info-mod a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-mod a:active,.single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-md{font-size:0.8rem;width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a,.single .post-footer .post-info .post-info-line .post-info-md a::before,.single .post-footer .post-info .post-info-line .post-info-md a::after{text-decoration:none;color:#2d96bd}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::before,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a::after{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-md a:active,.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:active,[theme=dark] .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-share a *{vertical-align:text-bottom}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-tags{max-width:65%}.single .post-footer .post-tags *{display:inline}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;-o-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{-webkit-transform:translateX(-4px);-moz-transform:translateX(-4px);-ms-transform:translateX(-4px);-o-transform:translateX(-4px);transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{-webkit-transform:translateX(4px);-moz-transform:translateX(4px);-ms-transform:translateX(4px);-o-transform:translateX(4px);transform:translateX(4px)}.single #comments{padding:4rem 0}.special .single-title,.special .single-subtitle{text-align:right}.archive .single-title{text-align:right}.archive .group-title{margin-top:1.5rem;margin-bottom:1rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block;margin-top:1rem;margin-bottom:.75rem}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;margin:.25rem 0 .25rem 1.5rem}.archive .archive-item-link{min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}[theme=dark] .archive .archive-item-link{color:#a9a9b3}[theme=dark] .archive .archive-item-link:hover{color:#fff}.archive .archive-item-date{width:4em;text-align:right;color:#a9a9b3}[theme=dark] .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a,.archive .tag-cloud-tags a::before,.archive .tag-cloud-tags a::after{text-decoration:none;color:#161209}[theme=dark] .archive .tag-cloud-tags a,[theme=dark] .archive .tag-cloud-tags a::before,[theme=dark] .archive .tag-cloud-tags a::after{color:#a9a9b3}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:hover{color:#2d96bd}[theme=dark] .archive .tag-cloud-tags a:active,[theme=dark] .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;overflow-wrap:break-word;-webkit-transition:all ease-out 0.3s;-moz-transition:all ease-out 0.3s;-o-transition:all ease-out 0.3s;transition:all ease-out 0.3s}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.archive .tag-cloud-tags a sup{color:#a9a9b3}[theme=dark] .archive .tag-cloud-tags a sup{color:#5d5d5f}.home .home-profile{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0);padding:2rem 0 0.5rem;text-align:center}.home .home-profile .home-avatar{padding:0.6rem}.home .home-profile .home-avatar img{display:inline-block;width:6rem;height:auto;margin:0 auto;-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);-webkit-transition:all 0.4s ease;-moz-transition:all 0.4s ease;-o-transition:all 0.4s ease;transition:all 0.4s ease}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem)}.home .home-profile .home-title{font-size:1.2rem;font-weight:bold;margin:0;padding:.4rem}.home .home-profile .home-subtitle{font-size:1rem;font-weight:normal;margin:0;padding:.4rem}.home .home-profile .social-links{padding:.4rem .2rem;font-size:1.6rem}.home .home-profile .social-links a *{vertical-align:text-bottom}.home .home-profile .social-links img{height:1.4rem;padding:0 .25rem}.home .home-profile .home-disclaimer{font-size:1rem;line-height:1.4rem;font-weight:normal;margin:0;padding:.4rem;color:#a9a9b3}[theme=dark] .home .home-profile .home-disclaimer{color:#5d5d5f}.home .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #f0f0f0}[theme=dark] .home .summary{color:#a9a9b3;border-bottom:1px dashed #363636}.home .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto;-webkit-transition:transform 0.4s ease;-moz-transition:transform 0.4s ease;-o-transition:transform 0.4s ease;transition:transform 0.4s ease}.home .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;-o-object-fit:cover;object-fit:cover;font-family:"object-fit: cover;"}.home .summary .featured-image-preview:hover{-webkit-transform:scale(1.01);-moz-transform:scale(1.01);-ms-transform:scale(1.01);-o-transform:scale(1.01);transform:scale(1.01)}.home .summary .single-title{font-size:1.25rem;line-height:140%;margin:0.4rem 0}.home .summary .content{display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .home .summary .content{color:#5d5d5f}.home .summary .content h2,.home .summary .content h3,.home .summary .content h4,.home .summary .content h5,.home .summary .content h6,.home .summary .content p{font-size:1rem;line-height:1.5;display:inline}.home .summary .content h2::after,.home .summary .content h3::after,.home .summary .content h4::after,.home .summary .content h5::after,.home .summary .content h6::after,.home .summary .content p::after{content:"\A";white-space:pre}.home .summary .content h2{font-size:1.125rem}.home .summary .content a,.home .summary .content a::before,.home .summary .content a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home .summary .content a,[theme=dark] .home .summary .content a::before,[theme=dark] .home .summary .content a::after{color:#a9a9b3}.home .summary .content a:active,.home .summary .content a:hover{color:#ef3982}[theme=dark] .home .summary .content a:active,[theme=dark] .home .summary .content a:hover{color:#fff}.home .summary .content b,.home .summary .content strong{color:#a9a9b3}[theme=dark] .home .summary .content b,[theme=dark] .home .summary .content strong{color:#5d5d5f}.home .summary .post-footer{margin-top:.4rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.home .summary .post-footer a,.home .summary .post-footer a::before,.home .summary .post-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .home .summary .post-footer a,[theme=dark] .home .summary .post-footer a::before,[theme=dark] .home .summary .post-footer a::after{color:#55bde2}.home .summary .post-footer a:active,.home .summary .post-footer a:hover{color:#ef3982}[theme=dark] .home .summary .post-footer a:active,[theme=dark] .home .summary .post-footer a:hover{color:#bdebfc}.home .summary .post-footer .post-tags{padding:0}.home .summary .post-footer .post-tags a,.home .summary .post-footer .post-tags a::before,.home .summary .post-footer .post-tags a::after{text-decoration:none;color:#161209}[theme=dark] .home .summary .post-footer .post-tags a,[theme=dark] .home .summary .post-footer .post-tags a::before,[theme=dark] .home .summary .post-footer .post-tags a::after{color:#a9a9b3}.home .summary .post-footer .post-tags a:active,.home .summary .post-footer .post-tags a:hover{color:#2d96bd}[theme=dark] .home .summary .post-footer .post-tags a:active,[theme=dark] .home .summary .post-footer .post-tags a:hover{color:#fff}#content-404{font-size:1.8rem;line-height:3rem;-webkit-transform:translateY(30vh);-moz-transform:translateY(30vh);-ms-transform:translateY(30vh);-o-transform:translateY(30vh);transform:translateY(30vh);text-align:center}header{width:100%;z-index:150;background-color:#f8f8f8}[theme=dark] header{background-color:#252627}header .logo{min-height:1.5em;height:1.5em;vertical-align:text-bottom}header .logo,header .header-title-pre{padding-right:.25rem}header .header-title-post{padding-left:.25rem}.header-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;width:100%}.header-title{font-family:Nunito,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei UI,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:bold;margin-right:.5rem;min-width:10%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-flex:10;flex:10}.menu .menu-item{position:relative}.language-select{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%}.language-select:hover{cursor:pointer}.search{position:relative}.search input{color:transparent;box-sizing:border-box;height:2.5rem;width:2.5rem;-webkit-border-radius:.5rem;-moz-border-radius:.5rem;border-radius:.5rem;border:none;outline:none;background-color:#f8f8f8;vertical-align:baseline !important;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}[theme=dark] .search input{background-color:#252627}.search input::-webkit-input-placeholder{color:rgba(0,0,0,0)}.search input:-moz-placeholder{color:rgba(0,0,0,0)}.search input::-moz-placeholder{color:rgba(0,0,0,0)}.search input:-ms-input-placeholder{color:rgba(0,0,0,0)}.search input::placeholder{color:rgba(0,0,0,0)}.search .search-button{margin:0;position:absolute;left:auto;right:1rem}.search .search-toggle{left:.5rem;right:auto}.search .search-loading{display:none}.search .search-clear{display:none}.open .search input,.search.mobile input{color:#161209;background-color:#e9e9e9;padding:0 2rem 0 2rem}[theme=dark] .open .search input,[theme=dark] .search.mobile input{color:#a9a9b3;background-color:#363636}[theme=dark] .open .search input::-webkit-input-placeholder,[theme=dark] .search.mobile input::-webkit-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-moz-placeholder,[theme=dark] .search.mobile input:-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input::-moz-placeholder,[theme=dark] .search.mobile input::-moz-placeholder{color:#5d5d5f}[theme=dark] .open .search input:-ms-input-placeholder,[theme=dark] .search.mobile input:-ms-input-placeholder{color:#5d5d5f}[theme=dark] .open .search input::placeholder,[theme=dark] .search.mobile input::placeholder{color:#5d5d5f}.open .search input::-webkit-input-placeholder,.search.mobile input::-webkit-input-placeholder{color:#a9a9b3}.open .search input:-moz-placeholder,.search.mobile input:-moz-placeholder{color:#a9a9b3}.open .search input::-moz-placeholder,.search.mobile input::-moz-placeholder{color:#a9a9b3}.open .search input:-ms-input-placeholder,.search.mobile input:-ms-input-placeholder{color:#a9a9b3}.open .search input::placeholder,.search.mobile input::placeholder{color:#a9a9b3}.open .search .search-button,.search.mobile .search-button{color:#a9a9b3}[theme=dark] .open .search .search-button,[theme=dark] .search.mobile .search-button{color:#5d5d5f}.open .search .search-clear:hover,.search.mobile .search-clear:hover{color:#ff6b6b}.open .search .search-toggle:hover,.search.mobile .search-toggle:hover{cursor:default}.theme-switch i{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}#header-desktop{display:block;position:fixed;height:3.5rem;line-height:3.5rem}#header-desktop .header-wrapper{padding:0 2rem 0 10vh}#header-desktop .header-wrapper .header-title{font-size:1.5rem}#header-desktop .header-wrapper .menu{overflow:hidden;white-space:nowrap}#header-desktop .header-wrapper .menu .menu-inner{float:right}#header-desktop .header-wrapper .menu .menu-item{margin:0 .5rem}#header-desktop .header-wrapper .menu .menu-item.delimiter{border-left:1.5px solid #161209}[theme=dark] #header-desktop .header-wrapper .menu .menu-item.delimiter{border-left-color:#363636}#header-desktop .header-wrapper .menu .menu-item.language{margin-right:0}#header-desktop .header-wrapper .menu .menu-item.search{margin:0 -.5rem 0 0}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}[theme=dark] #header-desktop .header-wrapper .menu a.active{color:#fff}#header-desktop.open .header-wrapper .menu .menu-item.search{margin:0 .25rem 0 .5rem}#header-desktop.open .header-wrapper .menu .menu-item.search input{width:24rem}#header-mobile{display:none;position:fixed;height:3.5rem;line-height:3.5rem}#header-mobile .header-container{padding:0;margin:0}#header-mobile .header-container .header-wrapper{padding:0 1rem;font-size:1.125rem;-webkit-transition:margin-top 0.3s ease;-moz-transition:margin-top 0.3s ease;-o-transition:margin-top 0.3s ease;transition:margin-top 0.3s ease}#header-mobile .header-container .header-wrapper .header-title{font-size:1.5rem;max-width:80%}#header-mobile .header-container .header-wrapper .menu-toggle{line-height:4rem;cursor:pointer;-webkit-transition:width 0.3s ease;-moz-transition:width 0.3s ease;-o-transition:width 0.3s ease;transition:width 0.3s ease}#header-mobile .header-container .header-wrapper .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;-o-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}[theme=dark] #header-mobile .header-container .header-wrapper .menu-toggle span{background:#a9a9b3}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(1){-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-o-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-container .header-wrapper .menu-toggle.active span:nth-child(3){-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-o-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-container .menu{text-align:center;background:#f8f8f8;border-top:2px solid #f0f0f0;display:none;padding-top:.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}#header-mobile .header-container .menu .search-wrapper{display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;padding:.5rem 1rem;line-height:2.5rem}#header-mobile .header-container .menu .search{flex-grow:10}#header-mobile .header-container .menu .search .algolia-autocomplete,#header-mobile .header-container .menu .search input{width:100%}#header-mobile .header-container .menu .search-button{top:0}#header-mobile .header-container .menu .search-cancel{display:none;margin-left:.75rem}#header-mobile .header-container .menu .menu-item{display:block;line-height:2.5rem}#header-mobile .header-container .menu.active{display:block}[theme=dark] #header-mobile .header-container .menu{background:#252627;border-top-color:#363636}#header-mobile.open .header-wrapper{margin-top:-3.5rem}#header-mobile.open .menu{padding-top:0;border-top:none}#header-mobile.open .menu .menu-item{display:none}#header-mobile.open .menu .search-cancel{display:inline}.search-dropdown{position:fixed;z-index:200;top:3.5rem;-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.1)}.search-dropdown.desktop{right:2rem;width:30rem}.search-dropdown.mobile{right:0;width:100%}.search-dropdown .dropdown-menu{right:0 !important;background-color:#fff}[theme=dark] .search-dropdown .dropdown-menu{background-color:#292a2d}.search-dropdown .dropdown-menu .suggestions{overflow-y:auto;max-height:calc(100vh - 3.5rem)}.search-dropdown .dropdown-menu .suggestions .suggestion{padding:.75rem 1rem}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:bold;max-width:75%}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{font-size:.875rem;float:right;text-align:right;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-date{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{line-height:1.25rem;display:-moz-box;display:-webkit-box;display:box;-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;overflow-wrap:break-word;color:#a9a9b3}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion .suggestion-context{color:#5d5d5f}.search-dropdown .dropdown-menu .suggestions .suggestion em{font-style:normal;background-color:rgba(53,166,247,0.25)}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion em{background-color:rgba(50,112,194,0.4)}.search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#e8e8e8}[theme=dark] .search-dropdown .dropdown-menu .suggestions .suggestion.cursor{background:#323843}.search-dropdown .dropdown-menu .suggestions .suggestion:hover{cursor:pointer}.search-dropdown .dropdown-menu .search-empty{padding:1rem;text-align:center}.search-dropdown .dropdown-menu .search-empty .search-query{font-weight:bold}[theme=dark] .search-dropdown .dropdown-menu .search-empty .search-query{color:#ddd}.search-dropdown .dropdown-menu .search-footer{padding:.5rem 1rem;float:right;font-size:.8rem;color:#a9a9b3}.search-dropdown .dropdown-menu .search-footer [theme=dark]{color:#5d5d5f}.search-dropdown .dropdown-menu .search-footer a,.search-dropdown .dropdown-menu .search-footer a::before,.search-dropdown .dropdown-menu .search-footer a::after{text-decoration:none;color:#2d96bd}[theme=dark] .search-dropdown .dropdown-menu .search-footer a,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::before,[theme=dark] .search-dropdown .dropdown-menu .search-footer a::after{color:#55bde2}.search-dropdown .dropdown-menu .search-footer a:active,.search-dropdown .dropdown-menu .search-footer a:hover{color:#ef3982}[theme=dark] .search-dropdown .dropdown-menu .search-footer a:active,[theme=dark] .search-dropdown .dropdown-menu .search-footer a:hover{color:#bdebfc}.search-dropdown .dropdown-menu .search-footer a{font-size:1rem}footer{height:2rem;width:100%;text-align:center;line-height:1.25rem;padding:1rem 0}footer .footer-container{font-size:.875rem}footer .footer-container .footer-line{width:100%}footer .footer-container .footer-line .icp-br{display:none}.blur footer{-webkit-filter:blur(1.5px);-moz-filter:blur(1.5px);-ms-filter:blur(1.5px);filter:blur(1.5px)}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}[theme=dark] .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;transition:0.3s;bottom:0px}[theme=dark] .pagination li:before,[theme=dark] .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}[theme=dark] .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1440px){.page{width:56%}}@media only screen and (max-width: 1200px){.page{width:52%}#header-desktop .header-wrapper{padding-right:1rem}.search-dropdown.desktop{right:1rem}}@media only screen and (max-width: 960px){#toc-auto{display:none}#toc-static{display:block}.page{width:80%}#header-desktop .header-wrapper{padding-left:1rem}}@media only screen and (max-width: 680px){#header-desktop{display:none}#header-mobile{display:block}body.blur{overflow:hidden}.page{width:100%;padding-top:3.5rem}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}}
-
-/*# sourceMappingURL=style.zh-cn.min.css.map */ \ No newline at end of file
diff --git a/resources/_gen/assets/scss/css/style.template.scss_d40178ffcb058d725849178b0a7a43cc.json b/resources/_gen/assets/scss/css/style.template.scss_d40178ffcb058d725849178b0a7a43cc.json
deleted file mode 100644
index e7bcf582..00000000
--- a/resources/_gen/assets/scss/css/style.template.scss_d40178ffcb058d725849178b0a7a43cc.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Target":"css/style.zh-cn.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file
diff --git a/src/js/theme.js b/src/js/theme.js
index 4bf9c48a..2c0b5439 100644
--- a/src/js/theme.js
+++ b/src/js/theme.js
@@ -419,7 +419,7 @@ class Theme {
const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');
const $tocLiElements = $tocCore.getElementsByTagName('li');
const $headerLinkElements = document.getElementsByClassName('headerLink');
- const headerIsFixed = this.config.headerMode.desktop !== 'normal';
+ const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';
const headerHeight = document.getElementById('header-desktop').offsetHeight;
const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);
const minTocTop = $toc.offsetTop;
@@ -626,10 +626,14 @@ class Theme {
if (SmoothScroll) new SmoothScroll('[href^="#"]', { speed: 300, speedAsDuration: true, header: '#header-desktop' });
}
+ initCookieconsent() {
+ if (this.config.cookieconsent) cookieconsent.initialise(this.config.cookieconsent);
+ }
+
onScroll() {
const $headers = [];
- if (this.config.headerMode.desktop === 'auto') $headers.push(document.getElementById('header-desktop'));
- if (this.config.headerMode.mobile === 'auto') $headers.push(document.getElementById('header-mobile'));
+ if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'));
+ if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'));
if (document.getElementById('comments')) {
const $viewComments = document.getElementById('view-comments');
$viewComments.href = `#comments`;
@@ -706,6 +710,7 @@ class Theme {
this.initEcharts();
this.initTypeit();
this.initMapbox();
+ this.initCookieconsent();
this.onScroll();
this.onResize();