diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000000..193efd8a585 Binary files /dev/null and b/.DS_Store differ diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml new file mode 100644 index 00000000000..68520b5aebd --- /dev/null +++ b/.github/workflows/jekyll.yml @@ -0,0 +1,64 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Ruby + uses: ruby/setup-ruby@8575951200e472d5f2d95c625da0c7bec8217c42 # v1.161.0 + with: + ruby-version: '3.1' # Not needed with a .ruby-version file + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + cache-version: 0 # Increment this number if you need to re-download cached gems + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Build with Jekyll + # Outputs to the './_site' directory by default + run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: production + - name: Upload artifact + # Automatically uploads an artifact from the './_site' directory by default + uses: actions/upload-pages-artifact@v3 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 0082d90041b..3f40417bac7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,26 +2,63 @@ .bundle vendor Gemfile.lock - + # Jekyll cache .jekyll-cache -.jekyll-metadata _site - + # RubyGems *.gem - + # NPM dependencies node_modules package-lock.json - + # IDE configurations .idea -.vscode/* -!.vscode/settings.json -!.vscode/extensions.json -!.vscode/tasks.json - +.vscode + # Misc -_sass/dist -assets/js/dist +# assets/js/dist + +# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig +# Created by https://www.toptal.com/developers/gitignore/api/macos +# Edit at https://www.toptal.com/developers/gitignore?templates=macos + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +# End of https://www.toptal.com/developers/gitignore/api/macos + +# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) + diff --git a/_config.yml b/_config.yml index 7a9b11a37d7..1030660986e 100644 --- a/_config.yml +++ b/_config.yml @@ -150,7 +150,7 @@ pwa: paginate: 10 # The base URL of your site -baseurl: "" +baseurl: "/" # ------------ The following options are not recommended to be modified ------------------ diff --git a/_data/contact.yml b/_data/contact.yml index ed40acb7e97..54721a92900 100644 --- a/_data/contact.yml +++ b/_data/contact.yml @@ -10,9 +10,9 @@ icon: "fas fa-envelope" noblank: true # open link in current tab -- type: rss - icon: "fas fa-rss" - noblank: true +# - type: rss +# icon: "fas fa-rss" +# noblank: true # Uncomment and complete the url below to enable more contact options # # - type: mastodon diff --git a/_data/share.yml b/_data/share.yml index 6f9756804f5..fcf7dbe394f 100644 --- a/_data/share.yml +++ b/_data/share.yml @@ -2,17 +2,17 @@ # Icons from platforms: - - type: Twitter - icon: "fa-brands fa-square-x-twitter" - link: "https://twitter.com/intent/tweet?text=TITLE&url=URL" + # - type: Twitter + # icon: "fa-brands fa-square-x-twitter" + # link: "https://twitter.com/intent/tweet?text=TITLE&url=URL" - - type: Facebook - icon: "fab fa-facebook-square" - link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL" + # - type: Facebook + # icon: "fab fa-facebook-square" + # link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL" - - type: Telegram - icon: "fab fa-telegram" - link: "https://t.me/share/url?url=URL&text=TITLE" + # - type: Telegram + # icon: "fab fa-telegram" + # link: "https://t.me/share/url?url=URL&text=TITLE" # Uncomment below if you need to. # diff --git a/_posts/2019-08-08-text-and-typography.md b/_posts/2019-08-08-text-and-typography.md index a8db26a00ff..face6512557 100644 --- a/_posts/2019-08-08-text-and-typography.md +++ b/_posts/2019-08-08-text-and-typography.md @@ -12,6 +12,7 @@ image: path: /commons/devices-mockup.png lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA alt: Responsive rendering of Chirpy theme on multiple devices. +published: False # 공개/비공개 --- ## Headings diff --git a/_posts/2019-08-08-write-a-new-post.md b/_posts/2019-08-08-write-a-new-post.md index 69eaf34acbe..0f1c6f2351a 100644 --- a/_posts/2019-08-08-write-a-new-post.md +++ b/_posts/2019-08-08-write-a-new-post.md @@ -5,6 +5,7 @@ date: 2019-08-08 14:10:00 +0800 categories: [Blogging, Tutorial] tags: [writing] render_with_liquid: false +published: False # 공개/비공개 --- This tutorial will guide you how to write a post in the _Chirpy_ template, and it's worth reading even if you've used Jekyll before, as many features require specific variables to be set. diff --git a/_posts/2019-08-09-getting-started.md b/_posts/2019-08-09-getting-started.md index 3b41a3cabe4..414ebc5bb8b 100644 --- a/_posts/2019-08-09-getting-started.md +++ b/_posts/2019-08-09-getting-started.md @@ -9,6 +9,7 @@ categories: [Blogging, Tutorial] tags: [getting started] pin: true media_subpath: '/posts/20180809' +published: False # 공개/비공개 --- ## Creating a Site Repository diff --git a/_posts/2019-08-11-customize-the-favicon.md b/_posts/2019-08-11-customize-the-favicon.md index a3278fa90eb..97aba9ebc85 100644 --- a/_posts/2019-08-11-customize-the-favicon.md +++ b/_posts/2019-08-11-customize-the-favicon.md @@ -4,6 +4,7 @@ author: cotes date: 2019-08-11 00:34:00 +0800 categories: [Blogging, Tutorial] tags: [favicon] +published: False # 공개/비공개 --- The [favicons](https://www.favicon-generator.org/about/) of [**Chirpy**](https://github.com/cotes2020/jekyll-theme-chirpy/) are placed in the directory `assets/img/favicons/`{: .filepath}. You may want to replace them with your own. The following sections will guide you to create and replace the default favicons. diff --git "a/_posts/2024-10-13-jeykyll-github-pages-\355\231\234\354\232\251\355\225\234-\353\270\224\353\241\234\352\267\270-\352\260\234\354\204\244.md" "b/_posts/2024-10-13-jeykyll-github-pages-\355\231\234\354\232\251\355\225\234-\353\270\224\353\241\234\352\267\270-\352\260\234\354\204\244.md" new file mode 100644 index 00000000000..005ab713e55 --- /dev/null +++ "b/_posts/2024-10-13-jeykyll-github-pages-\355\231\234\354\232\251\355\225\234-\353\270\224\353\241\234\352\267\270-\352\260\234\354\204\244.md" @@ -0,0 +1,63 @@ +--- +layout: post +title: "Github Pages 활용한 블로그 도입" +date: 2024-10-13 +author: "horoong" +categories: [blog, Github Pages] +tags: [blog, jekyll] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: false # 댓글 가능 유무 +published: true # 공개/비공개 +--- + +# 블로그 선택 + +부트캠프를 진행하면서 블로그 포스팅을 하면 도움이 된다는 이야기를 아주 많이 들었다. + +필자도 당연하게 정보를 찾으면 여러 블로그에서 정보를 얻는 것은 마찬가지 였으나 노션에 따로 정리해서 내가 필요할 때 내가 정리해 둔 글을 보면되지 왜 남에게 공개하면서 정보를 저장해야하는가? 라는 의문이 있었다. 그러나 다른 참가자분들과 얘기를 나눠보면서 느꼇던 점이 있어 시작하게 되었으니, 다들 많이들 을어본 이야기이지만 유명한 말이 있다. + + `본인만 아는 지식은 지식이 아니며 다른 사람들에게 설명 가능해야 온전한 지식이 된다.` + +역시 괜히 있는 말이 아니다. 최대한 올바르게 진행하며, 남들과 공유하여 나에게 부족한 부분을 얻는 것을 목표로 진행하려한다. + + +그렇게 노션에만 정리를 진행해오다가 어떤 블로그를 고를지 고민을 하던 중에 Github Pages로 블로그를 적는 글을 몇 번 본 적이 있어 3가지 정도를 추리고 비교해보았다. + +--- + +- Tistory + + * 티스토리 역시 많이 사용하는데 현재 카카오에서 운영하며 개발쪽으로만 치우쳐진 기능도 아니고 일반적인 사용자도 많이 사용한다. 블로그를 쉽게 운영할 수 있는 좋은 선택지라 생각한다. + +- velog + * velog는 구글링을 통해서 개발 지식들을 찾을 때에 가장 많은 개발에 관련된 블로그를 찾을 수 있었다. 미니멀한 디자인도 가지고 있고 시리즈 기능을 가지고 있어서 어느 주제를 정해서 길게 여러 글로 정리하기에 좋은 선택지라 생각한다. + +- Github Pages + * 다른 블로그들과 다른 점이 많다. Github에서 무료로 제공하는 ***정적 웹 호스팅 서비스***이다. + + * Jekyll과 같은 정적 사이트 생성기를 활용한 사이트들을 만들고, 다만 웹에서 글쓰기는 어렵다. 대신에 ***markdown editor***를 활용해서 포스트를 작성한다. + + * 마크다운을 잘 활용한다는 것과 에디터에서 작성한다는 점. + vscode에서 작성해서 preview로 확인하고 호스팅하면 된다니 아주 맘에 들었다.(필자는 브라우저로 이동해서 글을 쓰는 블로그보다는 이 점이 아주 맘에 들었다. 여러 과정이 더 필요하지만 추가로 후술 할 것이다.) + + +3가지 블로그들을 찾아보고 도입에서 고민된 점들은 +* Tistory는 범용적으로는 활용이 가능하나 마크다운 글쓰기가 크게 맘에 들지 않았다. +* velog는 개발 관련 지식들이 너무 많은데 맞는 지식도 있고 아닌 지식도 있다.(사실 이 부분은 개인적인 견해다. 좋은 정보를 찾는 것도 개발자의 능력이니까) +* ***가장 중요했던 Github pages를 선택한 점*** + * 벡엔드 개발자를 목표로 하고 있는데 프로젝트를 하면서 프론트 포지션을 고른 분들과 얘기를 해보면 모르는 부분이 많다. 이 부분을 채우기 위해서 간단한 프론트 지식(HTML, CSS)을 보완하고자 Github Pages를 선택했다. + +현재까지론 이미지 삽입 기능이 다른 블로그와 확실히 달라 어렵긴하지만 도입하는데에 어렵진 않을 것 같다. + +다음 글은 Github Pages와 Jekyll을 어떻게 도입 했는지 정리하려 한다. + +**이미지 첨부와 함께** + + + + + + + diff --git "a/_posts/2024-10-13-\353\247\210\355\201\254\353\213\244\354\232\264-\353\254\270\353\262\225-\354\240\225\353\246\254.md" "b/_posts/2024-10-13-\353\247\210\355\201\254\353\213\244\354\232\264-\353\254\270\353\262\225-\354\240\225\353\246\254.md" new file mode 100644 index 00000000000..2a57fe0f0eb --- /dev/null +++ "b/_posts/2024-10-13-\353\247\210\355\201\254\353\213\244\354\232\264-\353\254\270\353\262\225-\354\240\225\353\246\254.md" @@ -0,0 +1,427 @@ +--- +layout: post +title: "마크다운 문법 정리" +date: 2024-10-13 +author: "horoong" +categories: [blog, Github Pages] +tags: [blog, jekyll] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: false # 댓글 가능 유무 +published: true # 공개/비공개 +--- + +[공통] 마크다운 markdown 작성법 +====================== + +> 영어지만, 조금 더 상세하게 마크다운 사용법을 안내하고 있는 +> "Markdown Guide (https://www.markdownguide.org/)" 를 보시는 것을 추천합니다. ^^ + +> 아, 그리고 마크다운만으로 표현이 부족하다고 느끼신다면, HTML 태그를 활용하시는 것도 좋습니다. + + +# 1. 마크다운에 관하여 +## 1.1. 마크다운이란? +[**Markdown**](https://www.markdownguide.org/getting-started/)은 텍스트 기반의 마크업언어로 2004년 존그루버에 의해 만들어졌으며 쉽게 쓰고 읽을 수 있으며 HTML로 변환이 가능하다. 특수기호와 문자를 이용한 매우 간단한 구조의 문법을 사용하여 웹에서도 보다 빠르게 컨텐츠를 작성하고 보다 직관적으로 인식할 수 있다. +마크다운이 최근 각광받기 시작한 이유는 깃헙([https://github.com](https://github.com)) 덕분이다. 깃헙의 저장소Repository에 관한 정보를 기록하는 README.md는 깃헙을 사용하는 사람이라면 누구나 가장 먼저 접하게 되는 마크다운 문서였다. 마크다운을 통해서 설치방법, 소스코드 설명, 이슈 등을 간단하게 기록하고 가독성을 높일 수 있다는 강점이 부각되면서 점점 여러 곳으로 퍼져가게 된다. + +## 1.2. 마크다운의 장-단점 +### 1.2.1. 장점 + 1. 간결하다. + 2. 별도의 도구없이 작성가능하다. + 3. 다양한 형태로 변환이 가능하다. + 4. 텍스트(Text)로 저장되기 때문에 용량이 적어 보관이 용이하다. + 5. 텍스트파일이기 때문에 버전관리시스템을 이용하여 변경이력을 관리할 수 있다. + 6. 지원하는 프로그램과 플랫폼이 다양하다. + +### 1.2.2. 단점 + 1. 표준이 없다. + 2. 표준이 없기 때문에 도구에 따라서 변환방식이나 생성물이 다르다. + 3. 모든 HTML 마크업을 대신하지 못한다. + +**** +# 2. 마크다운 사용법(문법) +## 2.1. 헤더Headers +* 큰제목: 문서 제목 + ``` + This is an H1 + ============= + ``` + This is an H1 + ============= + +* 작은제목: 문서 부제목 + ``` + This is an H2 + ------------- + ``` + This is an H2 + ------------- + +* 글머리: 1~6까지만 지원 +``` +# This is a H1 +## This is a H2 +### This is a H3 +#### This is a H4 +##### This is a H5 +###### This is a H6 +``` +# This is a H1 +## This is a H2 +### This is a H3 +#### This is a H4 +##### This is a H5 +###### This is a H6 +####### This is a H7(지원하지 않음) + +## 2.2. BlockQuote +이메일에서 사용하는 ```>``` 블럭인용문자를 이용한다. +``` +> This is a first blockqute. +> > This is a second blockqute. +> > > This is a third blockqute. +``` +> This is a first blockqute. +> > This is a second blockqute. +> > > This is a third blockqute. + +이 안에서는 다른 마크다운 요소를 포함할 수 있다. +> ### This is a H3 +> * List +> ``` +> code +> ``` + +## 2.3. 목록 +### ● 순서있는 목록(번호) +순서있는 목록은 숫자와 점을 사용한다. +``` +1. 첫번째 +2. 두번째 +3. 세번째 +``` +1. 첫번째 +2. 두번째 +3. 세번째 + +**현재까지는 어떤 번호를 입력해도 순서는 내림차순으로 정의된다.** +``` +1. 첫번째 +3. 세번째 +2. 두번째 +``` +1. 첫번째 +3. 세번째 +2. 두번째 + +딱히 개선될 것 같지는 않다. 존 그루버가 신경안쓰고 있다고... + +### ● 순서없는 목록(글머리 기호: `*`, `+`, `-` 지원) +``` +* 빨강 + * 녹색 + * 파랑 + ++ 빨강 + + 녹색 + + 파랑 + +- 빨강 + - 녹색 + - 파랑 +``` +* 빨강 + * 녹색 + * 파랑 + ++ 빨강 + + 녹색 + + 파랑 + +- 빨강 + - 녹색 + - 파랑 + +혼합해서 사용하는 것도 가능하다(내가 선호하는 방식) + +``` +* 1단계 + - 2단계 + + 3단계 + + 4단계 +``` + +* 1단계 + - 2단계 + + 3단계 + + 4단계 + +## 2.4. 코드 +4개의 공백 또는 하나의 탭으로 들여쓰기를 만나면 변환되기 시작하여 들여쓰지 않은 행을 만날때까지 변환이 계속된다. + +### 2.4.1. 들여쓰기 +``` +This is a normal paragraph: + + This is a code block. + +end code block. +``` + +실제로 적용해보면, + +적용예: + +***** +This is a normal paragraph: + + This is a code block. + +end code block. +***** + +> 한줄 띄어쓰지 않으면 인식이 제대로 안되는 문제가 발생합니다. + +``` +This is a normal paragraph: + This is a code block. +end code block. +``` + +적용예: + +***** +This is a normal paragraph: + This is a code block. +end code block. +***** + +### 2.4.1. 코드블럭 +코드블럭은 다음과 같이 2가지 방식을 사용할 수 있습니다: + +* `
{code}
` 이용방식 + +``` +
+
+public class BootSpringBootApplication {
+  public static void main(String[] args) {
+    System.out.println("Hello, Honeymon");
+  }
+
+}
+
+
+``` + +
+
+public class BootSpringBootApplication {
+  public static void main(String[] args) {
+    System.out.println("Hello, Honeymon");
+  }
+}
+
+
+ +* 코드블럭코드("\```") 을 이용하는 방법 + +
+
+```
+public class BootSpringBootApplication {
+  public static void main(String[] args) {
+    System.out.println("Hello, Honeymon");
+  }
+}
+```
+
+
+ +``` +public class BootSpringBootApplication { + public static void main(String[] args) { + System.out.println("Hello, Honeymon"); + } +} +``` + +**깃헙**에서는 코드블럭코드("\```") 시작점에 사용하는 언어를 선언하여 [문법강조(Syntax highlighting)](https://docs.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting)이 가능하다. + +
+
+```java
+public class BootSpringBootApplication {
+  public static void main(String[] args) {
+    System.out.println("Hello, Honeymon");
+  }
+}
+```
+
+
+ +```java +public class BootSpringBootApplication { + public static void main(String[] args) { + System.out.println("Hello, Honeymon"); + } +} +``` + + +## 2.5. 수평선 ```
``` +아래 줄은 모두 수평선을 만든다. 마크다운 문서를 미리보기로 출력할 때 *페이지 나누기* 용도로 많이 사용한다. + +``` +* * * + +*** + +***** + +- - - + +--------------------------------------- +``` + +* 적용예 +* * * + +*** + +***** + +- - - + +--------------------------------------- + + +## 2.6. 링크 +* 참조링크 + +``` +[link keyword][id] + +[id]: URL "Optional Title here" + +// code +Link: [Google][googlelink] + +[googlelink]: https://google.com "Go google" +``` + +Link: [Google][googlelink] + +[googlelink]: https://google.com "Go google" + +* 외부링크 +``` +사용문법: [Title](link) +적용예: [Google](https://google.com, "google link") +``` +Link: [Google](https://google.com, "google link") + +* 자동연결 +``` +일반적인 URL 혹은 이메일주소인 경우 적절한 형식으로 링크를 형성한다. + +* 외부링크: +* 이메일링크: +``` + +* 외부링크: +* 이메일링크: + +## 2.7. 강조 +``` +*single asterisks* +_single underscores_ +**double asterisks** +__double underscores__ +~~cancelline~~ +``` + +* *single asterisks* +* _single underscores_ +* **double asterisks** +* __double underscores__ +* ~~cancelline~~ + +> ```문장 중간에 사용할 경우에는 **띄어쓰기** 를 사용하는 것이 좋다.``` +> 문장 중간에 사용할 경우에는 띄어쓰기를 사용하는 것이 좋다. + + +## 2.8. 이미지 +``` +![Alt text](/path/to/img.jpg) +![Alt text](/path/to/img.jpg "Optional title") +``` +![석촌호수 러버덕](http://cfile6.uf.tistory.com/image/2426E646543C9B4532C7B0) +![석촌호수 러버덕](http://cfile6.uf.tistory.com/image/2426E646543C9B4532C7B0 "RubberDuck") + +사이즈 조절 기능은 없기 때문에 ``````를 이용한다. + +예 +``` +RubberDuck
+RubberDuck +``` + +RubberDuck
+RubberDuck + +## 2.9. 줄바꿈 +3칸 이상 띄어쓰기(` `)를 하면 줄이 바뀐다. + +``` +* 줄 바꿈을 하기 위해서는 문장 마지막에서 3칸이상을 띄어쓰기해야 한다. +이렇게 + +* 줄 바꿈을 하기 위해서는 문장 마지막에서 3칸이상을 띄어쓰기해야 한다.___\\ 띄어쓰기 +이렇게 +``` + +* 줄 바꿈을 하기 위해서는 문장 마지막에서 3칸이상을 띄어쓰기해야 한다. 이렇게 + +* 줄 바꿈을 하기 위해서는 문장 마지막에서 3칸이상을 띄어쓰기해야 한다. \ +이렇게 + + +**** +# 3. 마크다운 사용기 +## 3.1. 위지윅(WSYWIG) 에디터 +우리가 흔하게 접하는 웹에서 사용되는 에디터(네이버, 다음, 구글 등)이 대부분 위지윅 에디터에 속하며 기본적으로 HTML을 이용하여 스타일을 적용하여 문장을 꾸미는 형태를 취하게 된다. 그래서 하루패드와 같은 마크다운 에디터의 View 영역의 내용을 복사하여 붙여넣기를 하면 대체적으로 View영역에서 보이는 그대로 복사되는 편이다. 다만, 붙여넣기 이후에 문장들을 수정하려고 할 때 문제가 되는데, 이는 스타일이 포함된 태그가 수정과정에서 변형되면서 전체적인 영향을 끼치는 탓이다. 티스토리 블로그에서는 쉽지 않고... 워드프레스의 경우에는 마크다운으로 작성된 포스트를 HTML로 변환해주는 기능을 활용하는 것이 좋다. +결론은, **복사해서 붙여넣기하면 가급적이면 본문은 수정하지 않는 것이 좋다.** + +## 3.2. 깃헙Github, 비트버킷Bitbucket과 요비Yobi 등 +최근 유행하는 협업개발플랫폼의 경우에는 마크다운을 변환하는 컨버터 기능을 기본탑재하고 있기 때문에 마크다운 문법으로 작성한 텍스트를 그대로 복사해서 붙여넣거나 업로드하는 것만으로 마크다운의 적용이 가능하다. + +## 3.3. MS워드 적용 +View 영역의 항목을 그대로 붙여넣거나 HTML 내보내기 등으로 생성한 파일을 불러오는 형태로 사용가능하다. 적용한 헤더를 워드가 읽어드리면서 목차에 적용하기 때문에 이를 활용하면 목차까지도 손쉽게 적용이 가능해진다. + +***** + +# 4. 정리 +마크다운은 기본문법만 알고있다면 일반 텍스트편집기에서도 손쉽게 작성이 가능한 마크업언어다. 현재 다양한 도구와 플랫폼에서 지원하고 있기 때문에 더욱 손쉽게 스타일적용된 문서를 작성할 수 있어 점점 널리 사용되고 있다. + +> 마크다운을 이해하고 사용하면서 쉽고 빠르게 스타일문서를 작성해보세요. + +저는 Dropbox 프로를 구매해서 집-랩탑-스마트폰이 각각 연동을 시켜서 사용하고 있습니다. 드랍박스에 저장된 마크다운 문서는 Dropbox 웹서비스 상에서 제공하기 때문에 웹상에서 바로 열람할 수도 있어 링크를 걸어서 다른 사람과 공유하는 형식으로 사용하고 있다. +* 링크 예: [Markdown 설명](https://www.dropbox.com/s/mzp9tq4qtfjdlif/20141021_markdown_use_tip.md?dl=0) + +***** + +# P.S. +최근에는 여러 기능이 포함되며 무거워지는[Notion](https://www.notion.so/product) 을 대신해서 [옵시디언(Obsidian)](https://obsidian.md/) 조금씩 사용중이다. Notion 에서 작성한 문서는 Atom(), Visual Studio Code(), Notepad++()텍스트 편집기에 복붙(복사하고 붙여넣기)하면 마크다운문법으로 작성된 문장이 기입되고 이지윅 에디터를 제공하는 웹에디터에 붙여넣기 하면 거의 완벽한 형태로 복사된다. 그래서 애용중이다. + +## ○ 참고문서 +* [78 Tools for writing and previewing Markdown](http://mashable.com/2013/06/24/markdown-tools/) +* [John gruber 마크다운 번역](http://nolboo.github.io/blog/2013/09/07/john-gruber-markdown/) +* [깃허브 취향의 마크다운 번역](http://nolboo.github.io/blog/2014/03/25/github-flavored-markdown/) +* [허니몬의 마크다운 작성법](http://www.slideshare.net/ihoneymon/ss-40575068) +* Notion.so() +* Atom() +* Visual Studio Code() +* Notepad++() \ No newline at end of file diff --git a/_posts/2024-10-14-test-post.md b/_posts/2024-10-14-test-post.md new file mode 100644 index 00000000000..a0925d8636b --- /dev/null +++ b/_posts/2024-10-14-test-post.md @@ -0,0 +1,52 @@ +--- +layout: post +title: "test post" +date: 2024-10-14 +author: "horoong" +categories: [blog, node] +tags: [backend, development, 웹개발] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: true # 댓글 가능 유무 +published: false # 공개/비공개 +--- + +## 포스트 테스트 및 마크다운 문법 정리 + +* ``블록`` + +* 테스트 + +* **bold** + +* *italic* + +* ***bold + italic*** + +- (-, *, + 순서 없음) + +1. 순서 목록 1 + +2. 순서 목록 2 + +* link는 [네이버](https://www.naver.com/) 텍스트(링크) 순 + +* 이미지 첨부하기 ![alt text]({{ site.baseurl }}/postImg/post-test.png) + +* 이미지는 vscode의 Paste Image사용하는 법도 좋아 보인다. [Paste Image vscode](https://marketplace.visualstudio.com/items?itemName=mushan.vscode-paste-image) + + + +*** + +* 코드 하이라이트 + ```js + console.log('hello world!') + ``` + + +* HTML 사용하기 +
+

background-color: grey, padding: 30px 인 html 코드 사용하기

+
diff --git "a/_posts/2024-10-18-\355\203\200\354\236\205\354\212\244\355\201\254\353\246\275\355\212\270-\354\240\225\353\246\254.md" "b/_posts/2024-10-18-\355\203\200\354\236\205\354\212\244\355\201\254\353\246\275\355\212\270-\354\240\225\353\246\254.md" new file mode 100644 index 00000000000..7e48485bcc3 --- /dev/null +++ "b/_posts/2024-10-18-\355\203\200\354\236\205\354\212\244\355\201\254\353\246\275\355\212\270-\354\240\225\353\246\254.md" @@ -0,0 +1,91 @@ +--- +layout: post +title: "TypeScript 도입" +date: 2024-10-19 +author: "horoong" +categories: [blog, TypeScript] +tags: [backend, development, 웹개발] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: false # 댓글 가능 유무 +published: false # 공개/비공개 +--- + +# Typescript 정리 + + +### 모든 언어에는 이미 타입이 존재한다 +--- + +파이썬에도 타입이 있고 javascript에도 타입이 있다, 물론 이전에 배웠던 c언어에도 존재하니 당연히 존재한다. + +두가지로 나눈다면 + +* 정적 타입(C, Java) +* 동적 타입(Python, JavaScript) + +이렇게 존재하니 확인해보자 + +간단한 예로 JavaScript의 `let`을 확인해보자 +```js +let a = "hello" +let b = 1234 +``` + + +***string***, ***number*** 등등.. 담기는 값에 따라 변경이 될 것이다. + +타입에 대한 문제는 간단한 함수인 JavaScript의 ``toUpperCase()``로 확인 할 수 있다. + +* a의 변수에서 `a.toUpperCase();` 이렇게 실행한다면 올바르게 동작할 것이다. +* b의 변수에서 `b.toUpperCase();` 이렇게 실행한다면 오류가 발생할 것이다. + +여기서의 문제를 확인해보자 +TypeError에러가 발생하지만, 문제는 실행은 되고 에러가 난다는 점인데 애초에 실행이 되지않게 Type을 정해놓는 방식으로 적용하면 실행도 막고 오류도 방지하는 좋은 방식이니 도입하지 않을 수가 없다. + +적용하는데 학습이라는 언덕을 넘어야하지만 말이다. + +타입스크립트를 도입해서 위의 let에 대한 코드를 변경해보자. +```ts +let a: string = "hello"; +let b: number = 1234; + +a.toUpperCase(); // 이 경우엔 당연하게 올바르게 동작할 것이고 +b.toUpperCase(); // 이 경우에는 동작은 하지 않겠지만, 미리 오류를 띄워 확인 가능 할 것이다. +``` +타입스크립트는 코드가 컴파일 되기 전에 타입 검사(Type Checking)를 수행 후 타입 검사가 성공한다면 자바스크립트로 변환하여 컴파일을 진행한다. + +#### 실행 순서 +1. TypeScript + +2. 추상 문법 트리 + +3. 타입 검사(성공 or 실패) + + 3.1 성공 시 JavaScript(타입 검사를 통과한 타입 오류 발생이 적은 코드) + + 3.2 실패 시 컴파일 종료 + +4. 추상 문법 트리 + +5. 바이트 코드 + +6. 실행 + +이러한 순서로 타입스크립트는 동작한다. + +마치면서, 타입 별로 정리를 한 시스템과 TypeScript까지 정리한다면 +* 정적 타입 시스템 + +* 동적 타입 시스템 + +* 점진적 타입 시스템 + +이렇게 정리할 수 있겟다. + +역시 단점으로는 코드를 작성하면서 타입을 명시해야 검사할 수 있으니 자연스러운 습관으로 들이는 노력을 하자. + + +--- +## diff --git "a/_posts/2024-11-07-AWS-EC2-RDS-\355\224\204\353\246\254\355\213\260\354\226\264-\354\204\244\354\240\225-\352\260\200\354\235\264\353\223\234.md" "b/_posts/2024-11-07-AWS-EC2-RDS-\355\224\204\353\246\254\355\213\260\354\226\264-\354\204\244\354\240\225-\352\260\200\354\235\264\353\223\234.md" new file mode 100644 index 00000000000..e88b3b85e50 --- /dev/null +++ "b/_posts/2024-11-07-AWS-EC2-RDS-\355\224\204\353\246\254\355\213\260\354\226\264-\354\204\244\354\240\225-\352\260\200\354\235\264\353\223\234.md" @@ -0,0 +1,170 @@ +--- +layout: post +title: "AWS EC2와 RDS 프리티어로 설정하기" +date: 2024-11-07 +author: "horoong" +categories: [blog, AWS] +tags: [RDS, development, 웹개발] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: false # 댓글 가능 유무 +published: true # 공개/비공개 +--- + +# AWS EC2-RDS 프리티어 설정 가이드 + +이번 포스트는 AWS 프리티어를 활용해서 EC2와 RDS를 연결해서 사용하는 법을 정리해보려고한다. + +이전까지는 GCP에서 무료크레딧을 이용해서 진행했었는데 가지고있는 가용할 수 있는 자원을 다 소진해버려서 AWS환경을 사용해볼겸 진행해봤다. + +과금으로 유명한 AWS니 만큼 과금요소를 최대한 줄이고 조심해서 프리티어를 활용해보자. + +필자는 참고로 맥유저인데 예전부터 사용하던 FIG(현 Amazon Q, 큰 기업으로 가다니 뭔가 뿌듯하다?)를 사용하면서 AWS 계정을 만들어 둔 상태에서 진행했다. + +계정만 만들어 두고 VPC나 EC2등 서비스를 사용하지 않았으니 빈 계정과 마찬가지니 만약 참고한다면 이미 진행한 내용들은 넘기고 진행해도 좋을 것 같다. + + +## 목차 +1. [VPC 생성](#1-vpc-생성) +2. [보안 그룹 생성](#2-보안-그룹-생성) +3. [EC2 인스턴스 생성](#3-ec2-인스턴스-생성) +4. [RDS 데이터베이스 생성](#4-rds-데이터베이스-생성) +5. [데이터베이스 접속 테스트](#5-데이터베이스-접속-테스트) + +## 1. VPC 생성 +1. AWS 콘솔 → VPC 서비스 이동 +2. "VPC 생성" 클릭 +3. 설정: + - "VPC 등" 옵션 선택 (중요!) + - 이름 태그 자동 생성: my-vpc + - IPv4 CIDR 블록: 10.0.0.0/16 + - IPv6 CIDR 블록: 없음 + - 테넌시: 기본값 + - 가용 영역(AZ) 수: 1 + - 퍼블릭 서브넷 수: 1 + - 프라이빗 서브넷 수: 1 + - NAT 게이트웨이: 없음 + - VPC 엔드포인트: 없음 + +## 2. 보안 그룹 생성 +### EC2 보안 그룹 (ec2-sg) +1. EC2 서비스 → 보안 그룹 +2. "보안 그룹 생성" 클릭 +3. 설정: + - 보안 그룹 이름: ec2-sg(이름은 자유다) + - 설명: Security group for EC2 + - VPC: 방금 생성한 VPC 선택 +4. 인바운드 규칙: + - 유형: SSH + - 포트: 22 + - 소스: Anywhere (0.0.0.0/0) +5. 아웃바운드 규칙: 기본값 유지 + +### RDS 보안 그룹 (rds-sg) +1. "보안 그룹 생성" 클릭 +2. 설정: + - 보안 그룹 이름: rds-sg(여기도 이름은 자유다) + - 설명: Security group for RDS + - VPC: 방금 생성한 VPC 선택 +3. 인바운드 규칙: + - 유형: MySQL/Aurora + - 포트: 3306 + - 소스: ec2-sg 보안 그룹 ID 선택 +4. 아웃바운드 규칙: 기본값 유지 + +## 3. EC2 인스턴스 생성 +1. EC2 서비스에서 "인스턴스 시작" +2. 설정: + - 이름: my-ec2 + - AMI: Ubuntu Server + - 인스턴스 유형: t2.micro (프리티어) +3. 키 페어: + - 새 키 페어 생성 + - 이름: my-key + - 형식: .pem +4. 네트워크 설정: + - VPC: 생성한 VPC + - 서브넷: 퍼블릭 서브넷 + - 퍼블릭 IP 자동 할당: 활성화 + - 보안 그룹: ec2-sg +5. 스토리지: + - 크기: 30GB (프리티어 한도에 맞춰서 진행, 넘어가면 과금이니 주의하자) + - 유형: gp2 + +## 4. RDS 데이터베이스 생성 +1. RDS 서비스에서 "데이터베이스 생성" +2. 설정: + - 표준 생성 + - MySQL 8.0.28 + - 프리티어 템플릿 +3. 설정: + - DB 인스턴스 식별자: 이름은 마음대로 작성 + - 마스터 사용자 이름: admin + - 마스터 암호 설정 +4. 인스턴스 구성: + - db.t3.micro +5. 스토리지: + - 20GB (프리티어 한도) + - gp2 +6. 연결: + - VPC: 생성한 VPC + - 서브넷 그룹: Private 서브넷 + - 퍼블릭 액세스: 아니요 + - 보안 그룹: rds-sg +7. 추가 구성: + - 백업: 비활성화 + - 유지 관리: 기본값 + - 삭제 방지: 비활성화 + +## 5. 데이터베이스 접속 테스트 +1. EC2 접속: + ```zsh + chmod 400 my-key.pem + ssh -i .pem(파일) ubuntu@[EC2-퍼블릭-IP] + ``` + 필자는 이 부분에서 ec2-user로 알고있었는데 ubuntu로 AMI를 만들어서 ec2-user -> ubuntu가 되어버렸다. + + `ssh -i my-key.pem ec2-user@[EC2-퍼블릭-IP]`이 명령문이 디폴트인것 같다. + +2. MySQL 클라이언트 설치: + ```bash + sudo apt update + sudo apt install mysql-client -y + ``` + +3. RDS 접속: + ```bash + mysql -h [RDS-엔드포인트] -u admin -p + ``` + RDS 엔드포인트는 RDS 페이지에서 상세내용으로 확인가능하다. + + +4. 데이터베이스 생성 및 테스트: + ```sql + CREATE DATABASE mydb; + USE mydb; + CREATE TABLE test (id INT, name VARCHAR(50)); + INSERT INTO test VALUES (1, 'test'); + SELECT * FROM test; + ``` + +## 프리티어 주의사항 +### 이거 어기면 바로 과금이니 주의하자(페이지에서 주의사항으로 알려준다.) +1. EC2: + - t2.micro 인스턴스만 무료 + - 스토리지 30GB까지 무료 + - 750시간/월 무료 + +2. RDS: + - db.t3.micro 인스턴스만 무료 + - 스토리지 20GB까지 무료 + - 750시간/월 무료 + +3. VPC 관련: + - VPC, 서브넷, 보안 그룹은 무료 + - NAT Gateway는 유료이므로 사용하지 않음 + + +#### 추가) 여기까지는 AWS 설정이고 로컬환경에 연결은 하지 않은 상태이다. +로컬에서 연결하려면 추가적인 작업이 필요하니 다음 글로 정리해두겠다. diff --git "a/_posts/cs/2024-11-28-\355\230\274\354\236\220\352\263\265\353\266\200\355\225\230\353\212\224-cs-\354\232\264\354\230\201\354\262\264\354\240\234-1.md" "b/_posts/cs/2024-11-28-\355\230\274\354\236\220\352\263\265\353\266\200\355\225\230\353\212\224-cs-\354\232\264\354\230\201\354\262\264\354\240\234-1.md" new file mode 100644 index 00000000000..b8cd5067f39 --- /dev/null +++ "b/_posts/cs/2024-11-28-\355\230\274\354\236\220\352\263\265\353\266\200\355\225\230\353\212\224-cs-\354\232\264\354\230\201\354\262\264\354\240\234-1.md" @@ -0,0 +1,15 @@ +--- +layout: post +title: "혼자공부하는 cs와 운영체제 1" +date: 2024-11-28 +author: "horoong" +categories: [blog, cs] +tags: [cs, os] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: false # 댓글 가능 유무 +published: false # 공개/비공개 +--- + +# 혼자 공부하는 시 \ No newline at end of file diff --git "a/_posts/project/2024-10-22-EMP-\354\240\225\353\246\254.md" "b/_posts/project/2024-10-22-EMP-\354\240\225\353\246\254.md" new file mode 100644 index 00000000000..6705b17beb2 --- /dev/null +++ "b/_posts/project/2024-10-22-EMP-\354\240\225\353\246\254.md" @@ -0,0 +1,221 @@ +--- +layout: post +title: "EMP 프로젝트 소개" +date: 2024-10-22 +author: "horoong" +categories: [blog, project] +tags: [project, development, 웹개발] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: false # 댓글 가능 유무 +published: true # 공개/비공개 +--- + +### 🎵 Emotional Mood Player (EMP) + +> 감정과 가사 기반의 맞춤형 음악 추천 서비스 + + +### 📌 프로젝트 소개 + +> Emotional Mood Player는 사용자의 감정 상태와 선호하는 가사를 기반으로 개인화된 플레이리스트를 생성해주는 음악 추천 서비스입니다. 자연어 처리 기술을 활용하여 가사의 의미를 분석하고, 사용자의 감정 상태에 맞는 최적의 음악을 추천합니다. + +### 주요 기능 + +1. 감정 기반 음악 추천: 현재 감정 상태에 따른 맞춤형 플레이리스트 생성 +2. 가사 기반 음악 추천: 선호하는 가사 스타일과 유사한 곡들을 추천 +3. 플레이리스트 관리: 생성된 플레이리스트 저장, 수정, 삭제 기능 +4. 음악 재생: Spotify API를 통한 음악 스트리밍 서비스 제공 +5. 소셜 공유: 생성된 플레이리스트 공유 기능(개발 예정) + +### 🛠 기술 스택 +#### Frontend + + - React 18.3.1 + - Recoil (상태 관리) + - Axios (HTTP 클라이언트) + - React Router DOM + - CSS Modules + +#### Backend + + Node.js + Express.js + Prisma (ORM) + MySQL + Passport.js (인증) + Winston (로깅) + +### DevOps & Tools + + ESLint + Prettier + Nodemon + Cross-env + +### 프로젝트 구조 + ├── frontend/ # 리액트 기반 프론트엔드 + ├── model_server/ # ML 모델 서버 + └── server/ # Express 기반 백엔드 + +### 🔑 주요 기술적 특징 + +#### 백엔드 아키텍처 + + 3-Tier Architecture 적용 + + Presentation Layer (Controllers) + Business Logic Layer (Services) + Data Access Layer (Models) + + +보안 + + Passport.js를 활용한 OAuth2.0 인증 + Session 기반 사용자 인증 + CORS 설정을 통한 보안 강화 + +데이터베이스 + + Prisma ORM을 활용한 타입 안전성 보장 + 마이그레이션 기반 데이터베이스 버전 관리 + +에러 처리 + + 전역 에러 핸들러를 통한 일관된 에러 응답 + Winston 로거를 활용한 체계적인 로그 관리 + +### 🚀 시작하기 +#### 요구사항 + + Node.js 18 이상 + MySQL 8.0 이상 + Spotify Premium 계정 (음악 재생 기능) + Spotify Preminum 계정이 아닐 경우 Playlist 생성만 가능 + +--- +--- +추가 고도화 진행 사항 + +1. TypeScript 도입 + 3차 프로젝트는 프레임워크로 NEST.JS를 도입해서 사용하고싶었으나 벡엔드 포지션 팀원이 많기도하고 구현 능력이 달라 포기했던 부분이 있었다. + + 진행은 Express로 만들고 JS까지만 사용해서 TS로의 전환까지 해보려고한다. + +2. 프레임워크 + 현재 프로젝트 구조는 관심사 분리/레이어 구분 이정도 원칙만을 사용해서 구현했었다. 1번의 타입스크립트로는 OOP 구현이 어렵기도 하고 의존성 주입(Dependency Injection, DI)이 쉬운 NestJS가 있기 때문에 OOP 구현은 NestJS 프로젝트를 할때 구현해보자는 생각이 있어 고도화는 `TypeScript + Express`로 진행하려한다. + +3. 디렉토리 구조 + EMP 프로젝트는 기능별 구조(Feature-based)르 벡엔드 폴더 구조를 구성했는데, 이전부터 관심이 있었던 DDD(Domain-Driven Design)까지 구현을 해보고싶었다. 현재까지 구현된 기능들에서 커뮤니티(예로 자신이 만든 플레이리스트를 공유하는 게시판이라거나) 여러 기능들을 추가적으로 구현하기에 좋을 것 같다는 생각을 가지고 있었는데 DDD까지 구현하기에는 어려운 부분이 있어 약간의 원칙들만 가져와서 구현을 해보려고 한다. 여기에는 2번에서 언급한 Exrpess의 OOP의 구현 난이도도 한 몫했다. + + 아래는 비교를 위해서 약간의 예를 가져와봤다. + + **feature-based** + ``` + src/ + ├── controllers/ + │ ├── authController.ts + │ ├── playlistController.ts + │ └── userController.ts + ├── services/ + │ ├── authService.ts + │ ├── playlistService.ts + │ └── userService.ts + ├── routes/ + │ ├── authRoutes.ts + │ ├── playlistRoutes.ts + │ └── userRoutes.ts + ├── models/ + │ └── index.ts + └── utils/ + ├── errors.ts + └── logger.ts + ``` + feature-based 구조는 레이어 별 코드 분리로 모듈화를 하는 방식으로 현재 벡엔드 코드 상태다. + + 관심사 분리(controller와 service 분리), 단일 책임 원칙 등을 지키려고 노력했었으나, 팀원들과 협업을 하면서 비즈니스 코드 중복과 복잡성이 늘어날 확률이 눈에 보이기 시작했다. + + 역시 협업의 처음에는 컨벤션을 견고히 잡아두어야한다는 말이 이해가 간다. + + 문제를 해결할 겸 여러가지 방식과 기능 추가를 고려해두고 구조 방식을 찾아보았다. + + **DDD(Domain-Driven Design)** + ``` + src/ + ├── modules/ + │ ├── auth/ + │ │ ├── domain/ + │ │ │ ├── entities/ + │ │ │ └── value-objects/ + │ │ ├── application/ + │ │ │ ├── use-cases/ + │ │ │ └── services/ + │ │ ├── infrastructure/ + │ │ │ ├── repositories/ + │ │ │ └── providers/ + │ │ └── interfaces/ + │ │ ├── controllers/ + │ │ └── routes/ + │ │ + │ └── playlist/ + │ ├── domain/ + │ ├── application/ + │ ├── infrastructure/ + │ └── interfaces/ + │ + └── shared/ + ├── infrastructure/ + └── domain/ + ``` + + DDD구조는 비즈니스 도메인 별로 개발을 진행해야하는데, 명확한 코드계층을 통해서 도메인 별로 관련된 요소를 해당 모듈에 모아서 작성해야한다. 작년 우아콘에서 DDD 세션이 있었는데 아무래도 대규모 서비스들이 채택하는 이유가 있다. 각각의 서비스의 응집도와 확장성을 모두 챙길 수 있으니 이해가 간다. + + 여담이지만 OOP의 확장이라는 말이 있는데 아직까지는 잘 모르겟다. + + 정리하자면 + 1. 비즈니스 도메인 중심: 각 도메인의 로직이 하나의 모듈에 있다. + 2. 아키텍쳐: presentation layer, Application, Domain, Infrastructure 계층으로 구성 + 3. 도메인 모델이 명확함(역시 비즈니스 도메인에 맞춰서 개발하다보니, 구현도 쉽지 않을까 아니겠지만ㅎㅎ) + + 결론적으로는 아주 약간만 DDD에서 채용하기로 했다. DDD는 공부할게 많고 아직까지는 부족하다생각되어서 복잡한 로직을 생각해보고 구현할 일이 생긴다면 그때 구현해보겠다. + + feature-based로 진행을 하겠지만 약간의 도메인 정리 정도로 방향을 잡았다. + + 1. Domain별 분리 + 2. 공통코드(type, middleware, utils)들을 shared로 정리 + 3. Infra 관련 코드들(DB, config)들 별도로 분리 + + 3가지를 잘 맞춰서 진행해보자! + +### 추가) 진행상황 추가 +DDD를 채용하기로 했지만 우아콘2024에 가서 DDD에 대한 세션을 들었다. +역시나 생각하던 걸림돌이기도했고 프로젝트 구조만을 약간 채용하는 것만으로는 많이 부족하다고 생각해서 결국 기능별 구조로 변경했다. + +**현재 코드 구조는 아래와 같다.** +``` +├── front +│ ├── public +│ └── src +├── model_server # 파이썬 AI 모델 서버(FAST API) +└── server + ├── prisma + └── src + ├── @types + ├── auth # 인증 관련 기능 + ├── config # 설정 + ├── infrastructure # 인프라 기반 코드 + │ ├── auth # 인증 인프라 + │ ├── database # DB 연결 관리 + │ ├── session # 세션 관리 + │ ├── swagger # API 문서 스웨거 + │ └── types + ├── middlewares # 인증, 에러, 유효성 검사 미들웨어 + │ └── validators + ├── playlists # 플레이리스트 관련 기능 + ├── routes # 라우터 매니저 및 설정 + ├── shared # 공통 타입과 유틸리티 + │ ├── types + │ └── utils + └── users # 계정 관련 기능 +``` \ No newline at end of file diff --git "a/_posts/project/2024-10-23-EMP-\354\240\225\353\246\254.md" "b/_posts/project/2024-10-23-EMP-\354\240\225\353\246\254.md" new file mode 100644 index 00000000000..b5ab6a7cda5 --- /dev/null +++ "b/_posts/project/2024-10-23-EMP-\354\240\225\353\246\254.md" @@ -0,0 +1,125 @@ +--- +layout: post +title: "EMP 프로젝트 간단 정리와 벡엔드 타입스크립트 내용 추가" +date: 2024-10-23 +author: "horoong" +categories: [blog, project] +tags: [project, development, 웹개발] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: false # 댓글 가능 유무 +published: false # 공개/비공개 +--- + +# EMP 정리 + + +## 프론트엔드 + +### 1. 기술스택 +* 리엑트 +* 상태관리 - 리코일 +* 라우팅? +* 바닐라 css +* axios +* CRA 빌드? + +### 2. 주요 기능(대략) +* OAuthCallback.jsx -인증 +* 플레이리스트 관리(CRUD) +* **spotify sdk** + * 스포티파이에서 제공하는 sdk 사용 + * 스포티파이에서 제공하는 access token을 벡엔드에서 받아서 사용(아마 1시간 단위로 만료됨) + * 예전 기준 구글 로그인 및 프리미엄 유저가 아닐 경우 preview로 재생 계획(이었지만 구현하짐 않음) + * 프리미엄 유저일 경우 노래 재생 가능 + +나머지 등등… +--- + + +## 벡엔드 +### 1. 기술스택 +* **node.js** +* **express.js** +* **typescript** +* **prisma** +* **MySQL** +* **OAuth2.0** + * google + * spotify +### 2. 인프라 +* session store: mysql session store +* winston 로깅 +* swagger +* dotenv + +### 3. 아키텍쳐 패턴 및 원칙 +* 싱글톤 - getInstance() 사용 싱글톤 +* shared 파일 및 미들웨어 +* 단일책임원칙 사용하기 + +### 4. 기능 정리 +#### 4.1. 인증 서비스 +* OAuth2.0 - 구글, 스포티파이 +* 세션 인증 +* 토큰 갱신 +* httpOnly + +#### 4.2 플레이리스트 서비스 관련 정리 +* api server <- -> model server <- -> client +* **감정(emotion) 기반** - 선택지로 플레이리스트 생성 +* **가사(lyrics) 기반**- 가사 텍스트 입력하면 가사 기반 생성 + +#### 4.3 에러 핸들링 +* 전역 에러 핸들러 +* 커스텀 에러 클래스 +* http 코드 + +#### 4.4 validation +* DTO 사용 입력데이터 검증 +* 커스텀 validator +* 미들웨어를 사용해서 요청 데이터 검증 + +### 5. 보안? +* cors +* 세션 기반 인증 인가 +* http only + +### 6. 로깅 및 문서화 +* winston(레벨별) +* log lotation 일자별 정리 +* swagger 사용 + +### 7. api -> swagger + + +총 서비스 2개입니당 +--- + +## ai 모델 + +### 1. 기술스택 +* FastAPI +* 사이킷런, TF-IDF(요건 텍스트 분석에 쓴건데 정확히 모르겟네요, cosine 유사도 검색시 사용) +* LSTM/W2V(word to vector) + +### 2. 각 모델 정리 +* *데이터 벡터화* +* 추천 시스템 +* *API 엔드포인트 5001 - 요거는 제가 맥이라 5001로 했는데 실제로 배포할때 코드는 5000으로 되어있을겁니다* +* +#### 2.1 가사 기반 추천 +1. 클라이언트가 가사, 최신곡 선호, 플레이리스트 제목을 입력함 +2. api server가 검색어, 선호도, user id, 제목을 받아서 model server로넘김(request 검증) +3. 모델 서버 url/myplaylist 에다가 요청 보내기 +4. request 기준으로 가사 기반 검색 후에 노래 db에서 추천곡 골라서 response 만들어서 넘김 + +#### 2.2 감정 기반 추천 +1. 클라이언트에서 장르, 감정 유형, 최신곡 선호, 제목 입력 +2. api server가 입력 받은거 + userid 해서 model server로 넘김(request 검증) +3. 모델 서버 url/myplaylist 에다가 요청 보내기 +4. 모델 서버에서 장르와 감정 벡터와 +5. 코사인 유사도 계산 및 추천 -> reponse 생성 후 넘김 + + diff --git "a/_posts/project/2024-11-07-TS-\354\240\204\355\231\230-\353\260\217-\355\233\204\352\270\260.md" "b/_posts/project/2024-11-07-TS-\354\240\204\355\231\230-\353\260\217-\355\233\204\352\270\260.md" new file mode 100644 index 00000000000..5ac453ba95c --- /dev/null +++ "b/_posts/project/2024-11-07-TS-\354\240\204\355\231\230-\353\260\217-\355\233\204\352\270\260.md" @@ -0,0 +1,410 @@ +--- +layout: post +title: "EMP 프로젝트 타입스크립트 마이그레이션 회고" +date: 2024-11-07 +author: "horoong" +categories: [blog, project] +tags: [project, development, 웹개발] +# description: "설명 추가하기" +# image: 대표이지미지 경로(/assets/imgages/000. +# permaling: /custom-url-for-post/ +comments: false # 댓글 가능 유무 +published: true # 공개/비공개 +--- + +# 리펙토링 한걸음 내딛기 +--- + +이전에 글로 소개했었던 EMP 프로젝트를 리펙토링 하기로 결정했다. + +두번째 팀프로젝트를 타입스크립트를 진행하고, 세번째 팀프로젝트를 진행했을때 기술 스택이 JS로 정해져서 굉장히 아쉬웠다. 그러나 어쩌겠는가 혼자하는게 아니라 팀프로젝트이고 완성은 혼자 할 수 없다. + +그렇게 진행해서 벡엔드 단에서 정해진건 Express와 JavaScript를 사용해서 만들었다. 이러쿵 저러쿵 다사다난하지만 완성을 했다. 프로젝트를 많이 해본건 아니지만 완성의 기분은 좋다(뒤에 찜찜한 느낌이 있었지만) + +리펙토링을 항상 염두해서 작성했지만 프로젝트가 끝나고 나서 막상 타입스크립트로 전환 시작해야지 했는데 일단 벡엔드 소스코드를 보는데 답답하게 느껴져서 프로젝트 구조부터 다르게 진행해보기로 했다. + +# 아키텍쳐 재구성 +--- +몇가지를 필수적으로 생각하고 기능에 대한 로직만 이사하고 새로만들기로 했다. + +1. **당연히 프로젝트 구성** + ``` + client <-> Express server(API server) <-> MySQL DB + + + ML server + ``` + 이 아키텍쳐는 내가 건들수 없는 부분이 아니었으니 ***pass*** + +2. **3-tier 아키텍쳐** + + 프레젠테이션 레이어(컨트롤러), 비즈니스 레이어(서비스), 데이터 엑세스 레이어(프리즈마) + +3. **아직 무료 크레딧 남은 GCP DB(이제는 끝낫다.. 잘가라..)** + + 말이 필요한가? 무료다 + + 테스트 계정들과 테스트 플레이리스트들도 있으니 그대로 쓰면된다 + +4. **에러처리 전략** + + AppError를 확장해서 cause로 체이닝하는 개념을 적용한 에러처리는 맘에들어서 이삿짐에 넣었다 + +5. **winston 로깅** + + + +# 도입기 +--- +1차적으로 도입하고 싶던 tool이 있었다. + +eslint인데 프로젝트에 이미 존재는 했다. 팀원 모두 lint에 익숙하지 않아 lint오류가 있는 상태에서 커밋해서 올리는 경우가 많아서 `lint staged + husky`를 도입했다. + +```json +{ + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.{ts,tsx}": ["eslint --fix", "prettier --write"] + } +} +``` + + +### 1. **eslint(lint staged + husky)** +간단하게 정리하면 git staged에 올라가있는 파일들에 대해 커밋완료 이전에 lint 설정에 어긋나지 않았는지 확인하는 역할을 한다. +```zsh +> git add 0000 +# add 된 파일들에 대해 정의한 lint설정 및 체크 +> git commit +# commit이 완료되었다면 정의한 lint 설정들을 통과한 파일들 +# 추가로 prettier도 설정해두었다면 prettier까지 적용되어서 파일 내용이 재작성된다 +``` +**후기**: + +처음에 도입했을땐 tsconfig와 eslint설정으로 인해서 commit조차 시도를 못했다. 필자는 작동 확인 후에 커밋을 해서 잘 작동되는지 test commit만 시도 한 후에 tsconfig와 lint 규칙이 작동하는지 확인을 안하고 진행했었다. 이 부분에서 문제였는데 lint을 warn으로 두는게 아니라 error로 규칙을 잡아두어서 해결하기 전까지는remote repository에 올릴 수 조차 없었다. + +아주 멘붕인 상황 + 이전에도 lint 잘 지킬걸 공부좀 할걸 하는 후회가 엄습했다. 결국 작성한 코드가 타입체크와 lint 규칙을 통과하게 아주 만족스러운 리펙토링 과정을 거쳐서 remote repository에 올릴 수 있었다 ㅋㅋ... + +### 2. **타입정의** +`애초부터 잘 만들어야했다.` + +이번에 마이그레이션하면서 뼈아프게 느꼇다. + +프로젝트에 대해서 대부분 알고 있다고 생각했는데 그게 아니었다. + +처음부터 타입들을 생각하고 진행한게 아닌 기능 완성 및 시간에 쫓기다시피 작성을 하다보니 코드에 대한 허점도 많고, 여기에 뭐가 들어가는지만 알지 세세하게 알지 못했다. + +당당하게 any 안쓰는게 당연하지 하고 tsconfig에 `noImplicitAny`를 설정하고 `'@typescript-eslint/no-explicit-any': 'error'`로 설정했다가 피봤다. + +any를 지양하는 것은 좋지만, 외부 라이브러리에서 가져올때는 any가 필요하다는걸 크게 배웠다. + +*Prisma Client로 데이터베이스에서 정의한 타입을 사용해서 동적 쿼리 처리할때 any로 반환되는 경우를 생각조차 못하고 있었다* + +prisma에서 지정한 타입을 타입스크립트에서 자동으로 변환해주지 않아서 왜 오류가 뜨는지 모르는 상태로 몇시간 삽질을 했다. + +역시 인터넷은 지식 저장소가 아니라 삽질의 저장소다. 남이 삽질한거 보면 내 문제도 해결, 아주 집단 지성이 좋지만 남의 삽질과 내 삽질을 비교해야하니 힘들다. + +삽질은 크게 + +1. 타입스크립트에서만 지정 -> prisma 클라이언트와 다름 오류 +2. DTO 정의하면서 타입 지정 -> prisma 와 불일치 +3. 프리즈마 import로만 사용 + 타입스크립트에서 지정 -> 역시 오류 + +해결은 prisma와 prisma client import로 `import { Provider } from '@prisma/client';` 이런식으로 확실하게 불러줘야한다. + +또 한가지 문제가 있었는데 **prisma 이벤트 핸들링 할때 any문제** 였다. +프리즈마 이벤트들도 로깅하려고 프리즈마 이벤트 핸들링을 정의했어야했는데 + +```ts +private static setupLogging(): void { +if (!PrismaService.instance) return; + +const prisma = PrismaService.instance; + +// Prisma의 타입 시스템 제한으로 인해 any 타입 사용 +(prisma as any).$on('query', (event: PrismaEventType['query']) => { +logger.debug('Prisma Query:', { + query: event.query, + params: event.params, + duration: event.duration, + timestamp: event.timestamp, +}); +}); + +(prisma as any).$on('error', (event: PrismaEventType['error']) => { +logger.error('Prisma Error:', { + message: event.message, + timestamp: event.timestamp, + target: event.target, +}); +}); + +(prisma as any).$on('info', (event: PrismaEventType['info']) => { +logger.info('Prisma Info:', { + message: event.message, + timestamp: event.timestamp, +}); +}); + +(prisma as any).$on('warn', (event: PrismaEventType['warn']) => { +logger.warn('Prisma Warning:', { + message: event.message, + timestamp: event.timestamp, +}); +}); +} +``` + +이 부분은 gpt가 답을 찾았다. 현재 prisma의 이벤트 타입(query, error, info, warn)들은 Prisma.QeuryEvent와 Prisma.LogEvent 타입으로 정의되어서 $on으로 핸들링 했을때 핸들링이 안된다. + +필자는 결국 as any를 채택해서 any를 사용했지만 여러 방안이 있다. + +* **타입 가드 활용:** 특정 타입 가드 함수를 만들어서 query/error/info 등... 상황에 맞는 이벤트를 검사해서 각 타입에 맞게 캐스팅해서 쓰는 경우 + +* **any 대신에 unknown 활용:** 타입스크립트에서는 unknown이 any보다 안전하니까(any는 다 통과시키고, unknown은 타입 추론 이전까지는 제한이다) unknown을 사용하는 것도 방법이다 + +* **prisma에서 이 부분은 빠르게 지원해줬으면 좋겠다.** + + +### 3. **gracefulShutdown** + +이 기능은 JS로 프로젝트 설계했을때에도 만들었어야 하는 기능인데 시간에 쫓겨서 못 넣은 기능이었다. + +* 서버가 갑작스럽게 종료되는걸 방지(어떤 요인에 의해서 강제종료되더라도) + +* 실행중인 작업을 안전하게 종료(작업이 끝난 후에 종료) + +* 서버 종료 시에 db 연결을 적절하게 정리 + +* 로그를 남겨서 어떻게 종료되었는지 확인 + +이정도로 구성했다. + +코드는 이런식으로 구성했다 + +```ts +private setupGracefulShutdown(): void { + const gracefulShutdown = async (signal: string) => { + logger.info(`${signal} signal received: closing HTTP server`); + try { + await PrismaService.disconnect(); + logger.info('Server closed'); + process.exit(0); + } catch (error) { + logger.error('Error during graceful shutdown:', error); + process.exit(1); + } + }; + + process.on('SIGTERM', () => gracefulShutdown('SIGTERM')); + process.on('SIGINT', () => gracefulShutdown('SIGINT')); + + process.on('unhandledRejection', (reason: unknown) => { + logger.error('Unhandled Promise rejection:', reason); + }); + + process.on('uncaughtException', (error: Error) => { + logger.error('Uncaught Exception:', error); + process.exit(1); + }); + } +``` + +보통 시그널을 받아서 종료하는데 +* `SIGTERM`: 프로세스 종료 시그널로 일반적인 종료시에 요청하는 시그널 + +* `SIGINT`: 이건 keyboard interrupt 시그널로 많이하는 ctrl+c로 종료할때 받는 시그널이다. + +프로세스를 단계별로 정리하자면 + +1. 시그널 수신 + 로깅 + +2. DB 연결 종료 + +3. 성공 실패에 따라서 종료코드로 종료하기 + + 3.1 종료 코드 `process.exit(0)` 은 정상 종료이고 + 3.2 종료 코드 `process.exit(1)` 은 비정상 종료이다 + + +이런식으로 정리할 수 있을 것 같다. + +현재는 DB연결에 대한 부분에 사용하고 있는데 서비스가 복잡해지는 경우에는 도커같은 서비스 사용할때 정상적으로 task를 마무리하고 종료하는데 좋게 쓰이지 않을까 싶다. + +### 4. Validation +JS-EMP 플젝에서에서 만들다가 유저 정보는 validation까지 필요없을것 같아 진행 도중에 폐기한 기능이다. +타입스크립트의 타입체크는 물론이고 플레이리스트관련은 validation이 있었으면 해서 생각하던 중, AI model server에서만 아주 약하게 validation하고 넘어갓는데 API서버에서 요청을 넘기는 부분에서 막으면 좋을 것 같아서 기능을 추가했다. + +AI model server에서 걸러진다는건 결국 API 서버를 거쳐서 리소스를 사용해서 응답을 받는 것이기 때문에 API 서버 자체에서 blocking을 하는 것이 성능적으로 더 이득일것이라고 생각했다. + +단계별로 코드를 작성했다. + +1. 기본 validation type 정의하기(shared/types/validation.types.ts) + ```ts + // 검증 시의 오류들 어디에서 발생했는지와 message + export interface ValidationError { + field: string; + message: string; + } + + // 전체 검증경과 불리언과 에러들 파악 + export interface ValidationResult { + isValid: boolean; + errors: ValidationError[]; + } + + // 검증 규칙 정의 + export type ValidationRule = { + validate: (value: T) => boolean; // 여기에서 값을 검증하는 함수로 + message: string; // 여기에서 검증 실패하면 message + }; + + // 각 필드마다 적용할 규칙 정의 + export type Validator = { + [K in keyof T]?: ValidationRule[]; + }; + ``` + + +2. validationUtils (shared/utils/validatort.ts) + + `검증용 유틸리티 함수들정의(재사용 가능하게)` + + ```ts + // 문자열, 빈 문자열 확인, 숫자인지, 불리언인지 등 미리 정의 + export class ValidationUtils { + static isString(value: unknown): value is string { + return typeof value === 'string'; + } + + static isNumber(value: unknown): value is number { + return typeof value === 'number' && !isNaN(value); + } + + static isBoolean(value: unknown): value is boolean { + return typeof value === 'boolean'; + } + + static isEmail(value: string): boolean { + const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/; + return emailRegex.test(value); + } + + static isNotEmpty(value: string): boolean { + return value.trim().length > 0; + } + + static isLength(value: string, min: number, max: number): boolean { + const length = value.trim().length; + return length >= min && length <= max; + } + + static isArray(value: unknown): value is unknown[] { + return Array.isArray(value); + } + + static isValidURL(value: string): boolean { + try { + new URL(value); + return true; + } catch { + return false; + } + } + } + ``` + +3. DTO 검증 (DTOValidator.ts) + + ```typescript + // dto.validator.ts + export class DTOValidator { + static validate(validator: Validator) { + return async (req: Request, _res: Response, next: NextFunction) => { + try { + const validationResult = this.validateObject(req.body, validator); + + if (!validationResult.isValid) { + throw new AppError( + COMMON_ERROR.VALIDATION_ERROR.name, + '입력값 검증 실패', + { + statusCode: COMMON_ERROR.VALIDATION_ERROR.statusCode, + cause: new Error(JSON.stringify(validationResult.errors)) + } + ); + } + + next(); + } catch (error) { + next(error); + } + }; + } + + private static validateObject( + data: T, + validator: Validator + ): ValidationResult { + const errors: ValidationError[] = []; + + Object.entries(validator).forEach(([field, rules]) => { + const value = data[field as keyof T]; + + if (rules && Array.isArray(rules)) { + for (const rule of rules) { + if (!rule.validate(value)) { + errors.push({ + field, + message: rule.message + }); + break; + } + } + } + }); + + return { + isValid: errors.length === 0, + errors + }; + } + } + ``` + +### 5. 싱글톤 패턴 + +서비스 클래스에 싱글톤을 도입했다. +싱글톤의 특징은 특정 클래스가 `하나의 인스턴스` 만을 가지게 보장하여, 이 인스턴스에 전역적으로 접근 가능하게 하는 것이다. + +```ts +export class UserService { + private static instance: UserService; + private readonly logger = createLogger(config); + + private constructor() {} // 여기서 다른 곳에서 생성자를 못만들게 막고 + + // 여기서 싱글톤 인스턴스에 접근할 수 있다. + public static getInstance(): UserService { + if (!UserService.instance) { + UserService.instance = new UserService(); + } + return UserService.instance; + } +} +``` +알기 쉬운 예로, 설정을 불러 올때 사용했다. + +현재는 Express를 사용해서 Typescript만으로는 의존성 주입(Dependency Injection)을 구현하기 어려울 것 같고, Nest.js를 사용했을때 구현해보려고 한다. + +--- + +# 마치며 +프로젝트 기간 동안 정말 기능 구현에만 급급해서 코드 퀄리티는 거의 없다시피 만든걸 확인한 리팩토링이었다. + +지금도 보완할 점들이 많이 보이는데 다음 플젝의 프레임워크를 nest.js를 사용해서 조금더 높은 수준을 구현해보려고한다. + +(~~아이디어는 참 좋아서 더 좋게 기능도 넣어서 발전시켜보고싶다.~~) diff --git a/_sass/dist/bootstrap.css b/_sass/dist/bootstrap.css new file mode 100644 index 00000000000..6ffbb377083 --- /dev/null +++ b/_sass/dist/bootstrap.css @@ -0,0 +1,5 @@ +@charset "UTF-8";/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-success:#198754;--bs-danger:#dc3545;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-bg:#e9ecef;--bs-tertiary-bg:#f8f9fa;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}.small,small{font-size:.875em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button{text-transform:none}[role=button]{cursor:pointer}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}iframe{border:0}summary{display:list-item;cursor:pointer}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.figure{display:inline-block}.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}@media (min-width:1400px){.container{max-width:1320px}}:root{}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-1>*{flex:0 0 auto;width:100%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.g-0{--bs-gutter-x:0}.g-0{--bs-gutter-y:0}.g-4{--bs-gutter-x:1.5rem}.g-4{--bs-gutter-y:1.5rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}}@media (min-width:992px){.col-lg{flex:1 0 0%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-tooltip,.was-validated :valid~.valid-tooltip{display:block}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-tooltip{display:block}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-text:last-child{margin-bottom:0}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast:not(.show){display:none}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-middle{vertical-align:middle!important}.overflow-hidden{overflow:hidden!important}.d-block{display:block!important}.d-flex{display:flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-100{height:100%!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-grow-1{flex-grow:1!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.pt-0{padding-top:0!important}.pt-2{padding-top:.5rem!important}.pe-1{padding-right:.25rem!important}.pe-4{padding-right:1.5rem!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-4{padding-bottom:1.5rem!important}.ps-0{padding-left:0!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-nowrap{white-space:nowrap!important}.text-muted{color:var(--bs-secondary-color)!important}.pe-none{pointer-events:none!important}.rounded-circle{border-radius:50%!important}.invisible{visibility:hidden!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.me-sm-4{margin-right:1.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media (min-width:768px){.flex-md-row-reverse{flex-direction:row-reverse!important}.mt-md-0{margin-top:0!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.justify-content-lg-between{justify-content:space-between!important}.align-items-lg-center{align-items:center!important}.ms-lg-0{margin-left:0!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.ps-lg-2{padding-left:.5rem!important}}@media (min-width:1200px){.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media (min-width:1400px){.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}} \ No newline at end of file diff --git a/assets/js/dist/app.min.js b/assets/js/dist/app.min.js new file mode 100644 index 00000000000..9cb120230de --- /dev/null +++ b/assets/js/dist/app.min.js @@ -0,0 +1,7 @@ +--- +permalink: /:basename +--- +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const e=new Map;var t={set(t,n,r){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,r):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const r=e.get(t);r.delete(n),0===r.size&&e.delete(t)}};const n="transitionend",r=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),i=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(r(e)):null,s=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),a=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],c=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},u=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void c(e);const r=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const r=Number.parseFloat(t),o=Number.parseFloat(n);return r||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const i=r=>{let{target:s}=r;s===t&&(o=!0,t.removeEventListener(n,i),c(e))};t.addEventListener(n,i),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),r)},d=/[^.]*(?=\..*)\.|.*/,f=/\..*/,h=/::\d+$/,g={};let m=1;const p={mouseenter:"mouseover",mouseleave:"mouseout"},b=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function v(e,t){return t&&`${t}::${m++}`||e.uidEvent||m++}function _(e){const t=v(e);return e.uidEvent=t,g[t]=g[t]||{},g[t]}function y(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function E(e,t,n){const r="string"==typeof t,o=r?n:t||n;let i=C(e);return b.has(i)||(i=e),[r,o,i]}function w(e,t,n,r,o){if("string"!=typeof t||!e)return;let[i,s,a]=E(t,n,r);if(t in p){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=_(e),c=l[a]||(l[a]={}),u=y(c,s,i?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=v(s,t.replace(d,"")),h=i?function(e,t,n){return function r(o){const i=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of i)if(a===s)return T(o,{delegateTarget:s}),r.oneOff&&O.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(r){return T(r,{delegateTarget:e}),n.oneOff&&O.off(e,r.type,t),t.apply(e,[r])}}(e,s);h.delegationSelector=i?n:null,h.callable=s,h.oneOff=o,h.uidEvent=f,c[f]=h,e.addEventListener(a,h,i)}function A(e,t,n,r,o){const i=y(t[n],r,o);i&&(e.removeEventListener(n,i,Boolean(o)),delete t[n][i.uidEvent])}function S(e,t,n,r){const o=t[n]||{};for(const[i,s]of Object.entries(o))i.includes(r)&&A(e,t,n,s.callable,s.delegationSelector)}function C(e){return e=e.replace(f,""),p[e]||e}const O={on(e,t,n,r){w(e,t,n,r,!1)},one(e,t,n,r){w(e,t,n,r,!0)},off(e,t,n,r){if("string"!=typeof t||!e)return;const[o,i,s]=E(t,n,r),a=s!==t,l=_(e),c=l[s]||{},u=t.startsWith(".");if(void 0===i){if(u)for(const n of Object.keys(l))S(e,l,n,t.slice(1));for(const[n,r]of Object.entries(c)){const o=n.replace(h,"");a&&!t.includes(o)||A(e,l,s,r.callable,r.delegationSelector)}}else{if(!Object.keys(c).length)return;A(e,l,s,i,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const r=a();let o=null,i=!0,s=!0,l=!1;t!==C(t)&&r&&(o=r.Event(t,n),r(e).trigger(o),i=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),l=o.isDefaultPrevented());const c=T(new Event(t,{bubbles:i,cancelable:!0}),n);return l&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function T(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,r]of Object.entries(t))try{e[n]=r}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>r})}return e}function $(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function N(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const j={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${N(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${N(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const r of n){let n=r.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=$(e.dataset[r])}return t},getDataAttribute:(e,t)=>$(e.getAttribute(`data-bs-${N(t)}`))};class L{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?j.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?j.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[r,i]of Object.entries(t)){const t=e[r],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${r}" provided type "${s}" but expected type "${i}".`)}var n}}class D extends L{constructor(e,n){super(),(e=i(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),O.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){u(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(i(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const I=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>r(e))).join(","):null},k={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let r=e.parentNode.closest(t);for(;r;)n.push(r),r=r.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!s(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=I(e);return t&&k.findOne(t)?t:null},getElementFromSelector(e){const t=I(e);return t?k.findOne(t):null},getMultipleElementsFromSelector(e){const t=I(e);return t?k.find(t):[]}},M=".bs.toast",K=`mouseover${M}`,P=`mouseout${M}`,q=`focusin${M}`,x=`focusout${M}`,W=`hide${M}`,Y=`hidden${M}`,F=`show${M}`,R=`shown${M}`,V="hide",Q="show",z="showing",B={animation:"boolean",autohide:"boolean",delay:"number"},H={animation:!0,autohide:!0,delay:5e3};class U extends D{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return H}static get DefaultType(){return B}static get NAME(){return"toast"}show(){if(O.trigger(this._element,F).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(V),this._element.offsetHeight,this._element.classList.add(Q,z),this._queueCallback((()=>{this._element.classList.remove(z),O.trigger(this._element,R),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this.isShown())return;if(O.trigger(this._element,W).defaultPrevented)return;this._element.classList.add(z),this._queueCallback((()=>{this._element.classList.add(V),this._element.classList.remove(z,Q),O.trigger(this._element,Y)}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Q),super.dispose()}isShown(){return this._element.classList.contains(Q)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){O.on(this._element,K,(e=>this._onInteraction(e,!0))),O.on(this._element,P,(e=>this._onInteraction(e,!1))),O.on(this._element,q,(e=>this._onInteraction(e,!0))),O.on(this._element,x,(e=>this._onInteraction(e,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){const t=U.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}var G,J;if(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"hide";const n=`click.dismiss${e.EVENT_KEY}`,r=e.NAME;O.on(document,n,`[data-bs-dismiss="${r}"]`,(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),s(this))return;const o=k.getElementFromSelector(this)||this.closest(`.${r}`);e.getOrCreateInstance(o)[t]()}))}(U),G=U,J=()=>{const e=a();if(e){const t=G.NAME,n=e.fn[t];e.fn[t]=G.jQueryInterface,e.fn[t].Constructor=G,e.fn[t].noConflict=()=>(e.fn[t]=n,G.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of l)e()})),l.push(J)):J(),"serviceWorker"in navigator){const e=new URL(document.currentScript.src),t=e.searchParams.get("register"),n=e.searchParams.get("baseurl");if(t){const e=`${n}/sw.min.js`,t=document.getElementById("notification"),r=t.querySelector(".toast-body>button"),o=U.getOrCreateInstance(t);navigator.serviceWorker.register(e).then((e=>{e.waiting&&o.show(),e.addEventListener("updatefound",(()=>{e.installing.addEventListener("statechange",(()=>{e.waiting&&navigator.serviceWorker.controller&&o.show()}))})),r.addEventListener("click",(()=>{e.waiting&&e.waiting.postMessage("SKIP_WAITING"),o.hide()}))}));let i=!1;navigator.serviceWorker.addEventListener("controllerchange",(()=>{i||(window.location.reload(),i=!0)}))}else navigator.serviceWorker.getRegistrations().then((function(e){for(let t of e)t.unregister()}))}}(); diff --git a/assets/js/dist/categories.min.js b/assets/js/dist/categories.min.js new file mode 100644 index 00000000000..bc294dfa289 --- /dev/null +++ b/assets/js/dist/categories.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";var e="top",t="bottom",n="right",i="left",o="auto",r=[e,t,n,i],s="start",a="end",l="clippingParents",c="viewport",u="popper",f="reference",d=r.reduce((function(e,t){return e.concat([t+"-"+s,t+"-"+a])}),[]),p=[].concat(r,[o]).reduce((function(e,t){return e.concat([t,t+"-"+s,t+"-"+a])}),[]),h="beforeRead",g="read",m="afterRead",v="beforeMain",b="main",y="afterMain",_="beforeWrite",w="write",E="afterWrite",x=[h,g,m,v,b,y,_,w,E];function O(e){return e?(e.nodeName||"").toLowerCase():null}function A(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function C(e){return e instanceof A(e).Element||e instanceof Element}function L(e){return e instanceof A(e).HTMLElement||e instanceof HTMLElement}function T(e){return"undefined"!=typeof ShadowRoot&&(e instanceof A(e).ShadowRoot||e instanceof ShadowRoot)}var S={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];L(o)&&O(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});L(i)&&O(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function j(e){return e.split("-")[0]}var k=Math.max,D=Math.min,P=Math.round;function N(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function M(){return!/^((?!chrome|android).)*safari/i.test(N())}function B(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&L(e)&&(o=e.offsetWidth>0&&P(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&P(i.height)/e.offsetHeight||1);var s=(C(e)?A(e):window).visualViewport,a=!M()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function I(e){var t=B(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function F(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&T(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function H(e){return A(e).getComputedStyle(e)}function $(e){return["table","td","th"].indexOf(O(e))>=0}function W(e){return((C(e)?e.ownerDocument:e.document)||window.document).documentElement}function q(e){return"html"===O(e)?e:e.assignedSlot||e.parentNode||(T(e)?e.host:null)||W(e)}function z(e){return L(e)&&"fixed"!==H(e).position?e.offsetParent:null}function R(e){for(var t=A(e),n=z(e);n&&$(n)&&"static"===H(n).position;)n=z(n);return n&&("html"===O(n)||"body"===O(n)&&"static"===H(n).position)?t:n||function(e){var t=/firefox/i.test(N());if(/Trident/i.test(N())&&L(e)&&"fixed"===H(e).position)return null;var n=q(e);for(T(n)&&(n=n.host);L(n)&&["html","body"].indexOf(O(n))<0;){var i=H(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function V(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Y(e,t,n){return k(e,D(t,n))}function U(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function K(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Q={name:"arrow",enabled:!0,phase:"main",fn:function(o){var s,a=o.state,l=o.name,c=o.options,u=a.elements.arrow,f=a.modifiersData.popperOffsets,d=j(a.placement),p=V(d),h=[i,n].indexOf(d)>=0?"height":"width";if(u&&f){var g=function(e,t){return U("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:K(e,r))}(c.padding,a),m=I(u),v="y"===p?e:i,b="y"===p?t:n,y=a.rects.reference[h]+a.rects.reference[p]-f[p]-a.rects.popper[h],_=f[p]-a.rects.reference[p],w=R(u),E=w?"y"===p?w.clientHeight||0:w.clientWidth||0:0,x=y/2-_/2,O=g[v],A=E-m[h]-g[b],C=E/2-m[h]/2+x,L=Y(O,C,A),T=p;a.modifiersData[l]=((s={})[T]=L,s.centerOffset=L-C,s)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&F(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function X(e){return e.split("-")[1]}var G={top:"auto",right:"auto",bottom:"auto",left:"auto"};function J(o){var r,s=o.popper,l=o.popperRect,c=o.placement,u=o.variation,f=o.offsets,d=o.position,p=o.gpuAcceleration,h=o.adaptive,g=o.roundOffsets,m=o.isFixed,v=f.x,b=void 0===v?0:v,y=f.y,_=void 0===y?0:y,w="function"==typeof g?g({x:b,y:_}):{x:b,y:_};b=w.x,_=w.y;var E=f.hasOwnProperty("x"),x=f.hasOwnProperty("y"),O=i,C=e,L=window;if(h){var T=R(s),S="clientHeight",j="clientWidth";if(T===A(s)&&"static"!==H(T=W(s)).position&&"absolute"===d&&(S="scrollHeight",j="scrollWidth"),c===e||(c===i||c===n)&&u===a)C=t,_-=(m&&T===L&&L.visualViewport?L.visualViewport.height:T[S])-l.height,_*=p?1:-1;if(c===i||(c===e||c===t)&&u===a)O=n,b-=(m&&T===L&&L.visualViewport?L.visualViewport.width:T[j])-l.width,b*=p?1:-1}var k,D=Object.assign({position:d},h&&G),N=!0===g?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:P(n*o)/o||0,y:P(i*o)/o||0}}({x:b,y:_},A(s)):{x:b,y:_};return b=N.x,_=N.y,p?Object.assign({},D,((k={})[C]=x?"0":"",k[O]=E?"0":"",k.transform=(L.devicePixelRatio||1)<=1?"translate("+b+"px, "+_+"px)":"translate3d("+b+"px, "+_+"px, 0)",k)):Object.assign({},D,((r={})[C]=x?_+"px":"",r[O]=E?b+"px":"",r.transform="",r))}var Z={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:j(t.placement),variation:X(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,J(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,J(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},ee={passive:!0};var te={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=A(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,ee)})),a&&l.addEventListener("resize",n.update,ee),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,ee)})),a&&l.removeEventListener("resize",n.update,ee)}},data:{}},ne={left:"right",right:"left",bottom:"top",top:"bottom"};function ie(e){return e.replace(/left|right|bottom|top/g,(function(e){return ne[e]}))}var oe={start:"end",end:"start"};function re(e){return e.replace(/start|end/g,(function(e){return oe[e]}))}function se(e){var t=A(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function ae(e){return B(W(e)).left+se(e).scrollLeft}function le(e){var t=H(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ce(e){return["html","body","#document"].indexOf(O(e))>=0?e.ownerDocument.body:L(e)&&le(e)?e:ce(q(e))}function ue(e,t){var n;void 0===t&&(t=[]);var i=ce(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=A(i),s=o?[r].concat(r.visualViewport||[],le(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ue(q(s)))}function fe(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function de(e,t,n){return t===c?fe(function(e,t){var n=A(e),i=W(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=M();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+ae(e),y:l}}(e,n)):C(t)?function(e,t){var n=B(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):fe(function(e){var t,n=W(e),i=se(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=k(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=k(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ae(e),l=-i.scrollTop;return"rtl"===H(o||n).direction&&(a+=k(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(W(e)))}function pe(e,t,n,i){var o="clippingParents"===t?function(e){var t=ue(q(e)),n=["absolute","fixed"].indexOf(H(e).position)>=0&&L(e)?R(e):e;return C(n)?t.filter((function(e){return C(e)&&F(e,n)&&"body"!==O(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=de(e,n,i);return t.top=k(o.top,t.top),t.right=D(o.right,t.right),t.bottom=D(o.bottom,t.bottom),t.left=k(o.left,t.left),t}),de(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function he(o){var r,l=o.reference,c=o.element,u=o.placement,f=u?j(u):null,d=u?X(u):null,p=l.x+l.width/2-c.width/2,h=l.y+l.height/2-c.height/2;switch(f){case e:r={x:p,y:l.y-c.height};break;case t:r={x:p,y:l.y+l.height};break;case n:r={x:l.x+l.width,y:h};break;case i:r={x:l.x-c.width,y:h};break;default:r={x:l.x,y:l.y}}var g=f?V(f):null;if(null!=g){var m="y"===g?"height":"width";switch(d){case s:r[g]=r[g]-(l[m]/2-c[m]/2);break;case a:r[g]=r[g]+(l[m]/2-c[m]/2)}}return r}function ge(i,o){void 0===o&&(o={});var s=o,a=s.placement,d=void 0===a?i.placement:a,p=s.strategy,h=void 0===p?i.strategy:p,g=s.boundary,m=void 0===g?l:g,v=s.rootBoundary,b=void 0===v?c:v,y=s.elementContext,_=void 0===y?u:y,w=s.altBoundary,E=void 0!==w&&w,x=s.padding,O=void 0===x?0:x,A=U("number"!=typeof O?O:K(O,r)),L=_===u?f:u,T=i.rects.popper,S=i.elements[E?L:_],j=pe(C(S)?S:S.contextElement||W(i.elements.popper),m,b,h),k=B(i.elements.reference),D=he({reference:k,element:T,strategy:"absolute",placement:d}),P=fe(Object.assign({},T,D)),N=_===u?P:k,M={top:j.top-N.top+A.top,bottom:N.bottom-j.bottom+A.bottom,left:j.left-N.left+A.left,right:N.right-j.right+A.right},I=i.modifiersData.offset;if(_===u&&I){var F=I[d];Object.keys(M).forEach((function(i){var o=[n,t].indexOf(i)>=0?1:-1,r=[e,t].indexOf(i)>=0?"y":"x";M[i]+=F[r]*o}))}return M}function me(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,l=n.flipVariations,c=n.allowedAutoPlacements,u=void 0===c?p:c,f=X(i),h=f?l?d:d.filter((function(e){return X(e)===f})):r,g=h.filter((function(e){return u.indexOf(e)>=0}));0===g.length&&(g=h);var m=g.reduce((function(t,n){return t[n]=ge(e,{placement:n,boundary:o,rootBoundary:s,padding:a})[j(n)],t}),{});return Object.keys(m).sort((function(e,t){return m[e]-m[t]}))}var ve={name:"flip",enabled:!0,phase:"main",fn:function(r){var a=r.state,l=r.options,c=r.name;if(!a.modifiersData[c]._skip){for(var u=l.mainAxis,f=void 0===u||u,d=l.altAxis,p=void 0===d||d,h=l.fallbackPlacements,g=l.padding,m=l.boundary,v=l.rootBoundary,b=l.altBoundary,y=l.flipVariations,_=void 0===y||y,w=l.allowedAutoPlacements,E=a.options.placement,x=j(E),O=h||(x===E||!_?[ie(E)]:function(e){if(j(e)===o)return[];var t=ie(e);return[re(e),t,re(t)]}(E)),A=[E].concat(O).reduce((function(e,t){return e.concat(j(t)===o?me(a,{placement:t,boundary:m,rootBoundary:v,padding:g,flipVariations:_,allowedAutoPlacements:w}):t)}),[]),C=a.rects.reference,L=a.rects.popper,T=new Map,S=!0,k=A[0],D=0;D=0,I=B?"width":"height",F=ge(a,{placement:P,boundary:m,rootBoundary:v,altBoundary:b,padding:g}),H=B?M?n:i:M?t:e;C[I]>L[I]&&(H=ie(H));var $=ie(H),W=[];if(f&&W.push(F[N]<=0),p&&W.push(F[H]<=0,F[$]<=0),W.every((function(e){return e}))){k=P,S=!1;break}T.set(P,W)}if(S)for(var q=function(e){var t=A.find((function(t){var n=T.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},z=_?3:1;z>0;z--){if("break"===q(z))break}a.placement!==k&&(a.modifiersData[c]._skip=!0,a.placement=k,a.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function be(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(o){return[e,n,t,i].some((function(e){return o[e]>=0}))}var _e={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=ge(t,{elementContext:"reference"}),a=ge(t,{altBoundary:!0}),l=be(s,i),c=be(a,o,r),u=ye(l),f=ye(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var we={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var o=t.state,r=t.options,s=t.name,a=r.offset,l=void 0===a?[0,0]:a,c=p.reduce((function(t,r){return t[r]=function(t,o,r){var s=j(t),a=[i,e].indexOf(s)>=0?-1:1,l="function"==typeof r?r(Object.assign({},o,{placement:t})):r,c=l[0],u=l[1];return c=c||0,u=(u||0)*a,[i,n].indexOf(s)>=0?{x:u,y:c}:{x:c,y:u}}(r,o.rects,l),t}),{}),u=c[o.placement],f=u.x,d=u.y;null!=o.modifiersData.popperOffsets&&(o.modifiersData.popperOffsets.x+=f,o.modifiersData.popperOffsets.y+=d),o.modifiersData[s]=c}};var Ee={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=he({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var xe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(o){var r=o.state,a=o.options,l=o.name,c=a.mainAxis,u=void 0===c||c,f=a.altAxis,d=void 0!==f&&f,p=a.boundary,h=a.rootBoundary,g=a.altBoundary,m=a.padding,v=a.tether,b=void 0===v||v,y=a.tetherOffset,_=void 0===y?0:y,w=ge(r,{boundary:p,rootBoundary:h,padding:m,altBoundary:g}),E=j(r.placement),x=X(r.placement),O=!x,A=V(E),C="x"===A?"y":"x",L=r.modifiersData.popperOffsets,T=r.rects.reference,S=r.rects.popper,P="function"==typeof _?_(Object.assign({},r.rects,{placement:r.placement})):_,N="number"==typeof P?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),M=r.modifiersData.offset?r.modifiersData.offset[r.placement]:null,B={x:0,y:0};if(L){if(u){var F,H="y"===A?e:i,$="y"===A?t:n,W="y"===A?"height":"width",q=L[A],z=q+w[H],U=q-w[$],K=b?-S[W]/2:0,Q=x===s?T[W]:S[W],G=x===s?-S[W]:-T[W],J=r.elements.arrow,Z=b&&J?I(J):{width:0,height:0},ee=r.modifiersData["arrow#persistent"]?r.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[H],ne=ee[$],ie=Y(0,T[W],Z[W]),oe=O?T[W]/2-K-ie-te-N.mainAxis:Q-ie-te-N.mainAxis,re=O?-T[W]/2+K+ie+ne+N.mainAxis:G+ie+ne+N.mainAxis,se=r.elements.arrow&&R(r.elements.arrow),ae=se?"y"===A?se.clientTop||0:se.clientLeft||0:0,le=null!=(F=null==M?void 0:M[A])?F:0,ce=q+re-le,ue=Y(b?D(z,q+oe-le-ae):z,q,b?k(U,ce):U);L[A]=ue,B[A]=ue-q}if(d){var fe,de="x"===A?e:i,pe="x"===A?t:n,he=L[C],me="y"===C?"height":"width",ve=he+w[de],be=he-w[pe],ye=-1!==[e,i].indexOf(E),_e=null!=(fe=null==M?void 0:M[C])?fe:0,we=ye?ve:he-T[me]-S[me]-_e+N.altAxis,Ee=ye?he+T[me]+S[me]-_e-N.altAxis:be,xe=b&&ye?function(e,t,n){var i=Y(e,t,n);return i>n?n:i}(we,he,Ee):Y(b?we:ve,he,b?Ee:be);L[C]=xe,B[C]=xe-he}r.modifiersData[l]=B}},requiresIfExists:["offset"]};function Oe(e,t,n){void 0===n&&(n=!1);var i,o,r=L(t),s=L(t)&&function(e){var t=e.getBoundingClientRect(),n=P(t.width)/e.offsetWidth||1,i=P(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=W(t),l=B(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==O(t)||le(a))&&(c=(i=t)!==A(i)&&L(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:se(i)),L(t)?((u=B(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=ae(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Ae(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var Ce={placement:"bottom",modifiers:[],strategy:"absolute"};function Le(){for(var e=arguments.length,t=new Array(e),n=0;nPe.has(e)&&Pe.get(e).get(t)||null,remove(e,t){if(!Pe.has(e))return;const n=Pe.get(e);n.delete(t),0===n.size&&Pe.delete(e)}};const Me="transitionend",Be=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),Ie=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),Fe=e=>Ie(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(Be(e)):null,He=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?He(e.parentNode):null},$e=()=>{},We=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,qe=[],ze=()=>"rtl"===document.documentElement.dir,Re=e=>{var t;t=()=>{const t=We();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(qe.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of qe)e()})),qe.push(t)):t()},Ve=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},Ye=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void Ve(e);const n=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let i=!1;const o=n=>{let{target:r}=n;r===t&&(i=!0,t.removeEventListener(Me,o),Ve(e))};t.addEventListener(Me,o),setTimeout((()=>{i||t.dispatchEvent(new Event(Me))}),n)},Ue=/[^.]*(?=\..*)\.|.*/,Ke=/\..*/,Qe=/::\d+$/,Xe={};let Ge=1;const Je={mouseenter:"mouseover",mouseleave:"mouseout"},Ze=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function et(e,t){return t&&`${t}::${Ge++}`||e.uidEvent||Ge++}function tt(e){const t=et(e);return e.uidEvent=t,Xe[t]=Xe[t]||{},Xe[t]}function nt(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function it(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=at(e);return Ze.has(r)||(r=e),[i,o,r]}function ot(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=it(t,n,i);if(t in Je){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=tt(e),c=l[a]||(l[a]={}),u=nt(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=et(s,t.replace(Ue,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return ct(o,{delegateTarget:s}),i.oneOff&<.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return ct(i,{delegateTarget:e}),n.oneOff&<.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,e.addEventListener(a,d,r)}function rt(e,t,n,i,o){const r=nt(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function st(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&rt(e,t,n,s.callable,s.delegationSelector)}function at(e){return e=e.replace(Ke,""),Je[e]||e}const lt={on(e,t,n,i){ot(e,t,n,i,!1)},one(e,t,n,i){ot(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=it(t,n,i),a=s!==t,l=tt(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))st(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(Qe,"");a&&!t.includes(o)||rt(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;rt(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=We();let o=null,r=!0,s=!0,a=!1;t!==at(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=ct(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function ct(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function ut(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function ft(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const dt={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${ft(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${ft(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=ut(e.dataset[i])}return t},getDataAttribute:(e,t)=>ut(e.getAttribute(`data-bs-${ft(t)}`))};class pt{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=Ie(t)?dt.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...Ie(t)?dt.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,o]of Object.entries(t)){const t=e[i],r=Ie(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${o}".`)}var n}}class ht extends pt{constructor(e,t){super(),(e=Fe(e))&&(this._element=e,this._config=this._getConfig(t),Ne.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Ne.remove(this._element,this.constructor.DATA_KEY),lt.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){Ye(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Ne.get(Fe(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const gt={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},mt=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),vt=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,bt=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!mt.has(n)||Boolean(vt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const yt=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>Be(e))).join(","):null},_t={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!Ie(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=yt(e);return t&&_t.findOne(t)?t:null},getElementFromSelector(e){const t=yt(e);return t?_t.findOne(t):null},getMultipleElementsFromSelector(e){const t=yt(e);return t?_t.find(t):[]}},wt={allowList:gt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Et={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},xt={entry:"(string|element|function|null)",selector:"(string|element)"};class Ot extends pt{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return wt}static get DefaultType(){return Et}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},xt)}_setContent(e,t,n){const i=_t.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?Ie(t)?this._putElementInTemplate(Fe(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)bt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return Ve(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const At=new Set(["sanitize","allowList","sanitizeFn"]),Ct="fade",Lt="show",Tt=".tooltip-inner",St=".modal",jt="hide.bs.modal",kt="hover",Dt="focus",Pt={AUTO:"auto",TOP:"top",RIGHT:ze()?"left":"right",BOTTOM:"bottom",LEFT:ze()?"right":"left"},Nt={allowList:gt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Mt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Bt extends ht{constructor(e,t){if(void 0===De)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Nt}static get DefaultType(){return Mt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),lt.off(this._element.closest(St),jt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=lt.trigger(this._element,this.constructor.eventName("show")),t=(He(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),lt.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Lt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))lt.on(e,"mouseover",$e);this._queueCallback((()=>{lt.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(lt.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Lt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))lt.off(e,"mouseover",$e);this._activeTrigger.click=!1,this._activeTrigger[Dt]=!1,this._activeTrigger[kt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),lt.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(Ct,Lt),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(Ct),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ot({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Tt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ct)}_isShown(){return this.tip&&this.tip.classList.contains(Lt)}_createPopper(e){const t=Ve(this._config.placement,[this,e,this._element]),n=Pt[t.toUpperCase()];return ke(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return Ve(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...Ve(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)lt.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===kt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===kt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");lt.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Dt:kt]=!0,t._enter()})),lt.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Dt:kt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},lt.on(this._element.closest(St),jt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=dt.getDataAttributes(this._element);for(const e of Object.keys(t))At.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:Fe(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Bt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}Re(Bt);const It=document.getElementById("mode-toggle");function Ft(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ht="sidebar-display";class $t{static toggle(){!1===$t.isExpanded?document.body.setAttribute(Ht,""):document.body.removeAttribute(Ht),$t.isExpanded=!$t.isExpanded}}Ft($t,"isExpanded",!1);const Wt=document.getElementById("sidebar-trigger"),qt=document.getElementById("search-trigger"),zt=document.getElementById("search-cancel"),Rt=document.querySelectorAll("#main-wrapper>.container>.row"),Vt=document.getElementById("topbar-title"),Yt=document.getElementById("search"),Ut=document.getElementById("search-result-wrapper"),Kt=document.getElementById("search-results"),Qt=document.getElementById("search-input"),Xt=document.getElementById("search-hints"),Gt="d-block",Jt="d-none",Zt="input-focus",en="d-flex";class tn{static on(){Wt.classList.add(Jt),Vt.classList.add(Jt),qt.classList.add(Jt),Yt.classList.add(en),zt.classList.add(Gt)}static off(){zt.classList.remove(Gt),Yt.classList.remove(en),Wt.classList.remove(Jt),Vt.classList.remove(Jt),qt.classList.remove(Jt)}}class nn{static on(){this.resultVisible||(Ut.classList.remove(Jt),Rt.forEach((e=>{e.classList.add(Jt)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Kt.innerHTML="",Xt.classList.contains(Jt)&&Xt.classList.remove(Jt),Ut.classList.add(Jt),Rt.forEach((e=>{e.classList.remove(Jt)})),Qt.textContent="",this.resultVisible=!1)}}function on(){return zt.classList.contains(Gt)}Ft(nn,"resultVisible",!1);const rn=".bs.collapse",sn=`show${rn}`,an=`shown${rn}`,ln=`hide${rn}`,cn=`hidden${rn}`,un=`click${rn}.data-api`,fn="show",dn="collapse",pn="collapsing",hn=`:scope .${dn} .${dn}`,gn='[data-bs-toggle="collapse"]',mn={parent:null,toggle:!0},vn={parent:"(null|element)",toggle:"boolean"};class bn extends ht{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=_t.find(gn);for(const e of n){const t=_t.getSelectorFromElement(e),n=_t.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return mn}static get DefaultType(){return vn}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>bn.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(lt.trigger(this._element,sn).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(dn),this._element.classList.add(pn),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn,fn),this._element.style[t]="",lt.trigger(this._element,an)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(lt.trigger(this._element,ln).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(pn),this._element.classList.remove(dn,fn);for(const e of this._triggerArray){const t=_t.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn),lt.trigger(this._element,cn)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(fn)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=Fe(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(gn);for(const t of e){const e=_t.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=_t.find(hn,this._config.parent);return _t.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=bn.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}lt.on(document,un,gn,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of _t.getMultipleElementsFromSelector(this))bn.getOrCreateInstance(e,{toggle:!1}).toggle()})),Re(bn);const yn=document.getElementsByClassName("collapse");var _n;const wn=document.getElementById("toc-bar"),En=document.getElementById("toc-solo-trigger"),xn=document.getElementsByClassName("toc-trigger"),On=document.getElementById("toc-popup"),An=document.getElementById("toc-popup-close"),Cn="overflow-hidden",Ln="closing";class Tn{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{wn.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${this.barHeight}px 0px 0px 0px`}).observe(En),this.invisible=!1}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=this.hidePopup}))}static refresh(){this.invisible&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static showPopup(){Tn.lockScroll(!0),On.showModal();On.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(e){"cancel"===e?.type&&e.preventDefault(),On.open&&(On.toggleAttribute(Ln),On.addEventListener("animationend",(()=>{On.toggleAttribute(Ln),On.close()}),{once:!0}),Tn.lockScroll(!1))}static lockScroll(e){document.documentElement.classList.toggle(Cn,e),document.body.classList.toggle(Cn,e)}static clickBackdrop(e){const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&Tn.hidePopup()}static initComponents(){this.initBar(),[...xn].forEach((e=>{e.onclick=this.showPopup})),On.onclick=this.clickBackdrop,An.onclick=On.oncancel=this.hidePopup}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}_n=Tn,Ft(Tn,"invisible",!0),Ft(Tn,"barHeight",48),Ft(Tn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:_n.barHeight});Ft(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Bt(e))),It&&It.addEventListener("click",(()=>{modeToggle.flipMode()})),document.getElementById("sidebar-trigger").addEventListener("click",$t.toggle),document.getElementById("mask").addEventListener("click",$t.toggle),qt.addEventListener("click",(()=>{tn.on(),nn.on(),Qt.focus()})),zt.addEventListener("click",(()=>{tn.off(),nn.off()})),Qt.addEventListener("focus",(()=>{Yt.classList.add(Zt)})),Qt.addEventListener("focusout",(()=>{Yt.classList.remove(Zt)})),Qt.addEventListener("input",(()=>{""===Qt.value?on()?Xt.classList.remove(Jt):nn.off():(nn.on(),on()&&Xt.classList.add(Jt))})),[...yn].forEach((e=>{const t="h_"+e.id.substring(2),n=document.getElementById(t);e.addEventListener("hide.bs.collapse",(()=>{n&&(n.querySelector(".far.fa-folder-open").className="far fa-folder fa-fw",n.querySelector(".fas.fa-angle-down").classList.add("rotate"),n.classList.remove("hide-border-bottom"))})),e.addEventListener("show.bs.collapse",(()=>{n&&(n.querySelector(".far.fa-folder").className="far fa-folder-open fa-fw",n.querySelector(".fas.fa-angle-down").classList.remove("rotate"),n.classList.add("hide-border-bottom"))}))}))}(); diff --git a/assets/js/dist/commons.min.js b/assets/js/dist/commons.min.js new file mode 100644 index 00000000000..b68715ccc7d --- /dev/null +++ b/assets/js/dist/commons.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";var e="top",t="bottom",n="right",i="left",o="auto",r=[e,t,n,i],s="start",a="end",c="clippingParents",l="viewport",u="popper",f="reference",d=r.reduce((function(e,t){return e.concat([t+"-"+s,t+"-"+a])}),[]),p=[].concat(r,[o]).reduce((function(e,t){return e.concat([t,t+"-"+s,t+"-"+a])}),[]),h="beforeRead",m="read",g="afterRead",v="beforeMain",b="main",y="afterMain",_="beforeWrite",w="write",E="afterWrite",O=[h,m,g,v,b,y,_,w,E];function x(e){return e?(e.nodeName||"").toLowerCase():null}function A(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function T(e){return e instanceof A(e).Element||e instanceof Element}function C(e){return e instanceof A(e).HTMLElement||e instanceof HTMLElement}function L(e){return"undefined"!=typeof ShadowRoot&&(e instanceof A(e).ShadowRoot||e instanceof ShadowRoot)}var j={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];C(o)&&x(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});C(i)&&x(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function D(e){return e.split("-")[0]}var S=Math.max,k=Math.min,P=Math.round;function M(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function N(){return!/^((?!chrome|android).)*safari/i.test(M())}function B(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&C(e)&&(o=e.offsetWidth>0&&P(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&P(i.height)/e.offsetHeight||1);var s=(T(e)?A(e):window).visualViewport,a=!N()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function H(e){var t=B(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function F(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&L(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function I(e){return A(e).getComputedStyle(e)}function W(e){return["table","td","th"].indexOf(x(e))>=0}function z(e){return((T(e)?e.ownerDocument:e.document)||window.document).documentElement}function R(e){return"html"===x(e)?e:e.assignedSlot||e.parentNode||(L(e)?e.host:null)||z(e)}function $(e){return C(e)&&"fixed"!==I(e).position?e.offsetParent:null}function q(e){for(var t=A(e),n=$(e);n&&W(n)&&"static"===I(n).position;)n=$(n);return n&&("html"===x(n)||"body"===x(n)&&"static"===I(n).position)?t:n||function(e){var t=/firefox/i.test(M());if(/Trident/i.test(M())&&C(e)&&"fixed"===I(e).position)return null;var n=R(e);for(L(n)&&(n=n.host);C(n)&&["html","body"].indexOf(x(n))<0;){var i=I(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function V(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Y(e,t,n){return S(e,k(t,n))}function K(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function U(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Q={name:"arrow",enabled:!0,phase:"main",fn:function(o){var s,a=o.state,c=o.name,l=o.options,u=a.elements.arrow,f=a.modifiersData.popperOffsets,d=D(a.placement),p=V(d),h=[i,n].indexOf(d)>=0?"height":"width";if(u&&f){var m=function(e,t){return K("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:U(e,r))}(l.padding,a),g=H(u),v="y"===p?e:i,b="y"===p?t:n,y=a.rects.reference[h]+a.rects.reference[p]-f[p]-a.rects.popper[h],_=f[p]-a.rects.reference[p],w=q(u),E=w?"y"===p?w.clientHeight||0:w.clientWidth||0:0,O=y/2-_/2,x=m[v],A=E-g[h]-m[b],T=E/2-g[h]/2+O,C=Y(x,T,A),L=p;a.modifiersData[c]=((s={})[L]=C,s.centerOffset=C-T,s)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&F(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function G(e){return e.split("-")[1]}var X={top:"auto",right:"auto",bottom:"auto",left:"auto"};function J(o){var r,s=o.popper,c=o.popperRect,l=o.placement,u=o.variation,f=o.offsets,d=o.position,p=o.gpuAcceleration,h=o.adaptive,m=o.roundOffsets,g=o.isFixed,v=f.x,b=void 0===v?0:v,y=f.y,_=void 0===y?0:y,w="function"==typeof m?m({x:b,y:_}):{x:b,y:_};b=w.x,_=w.y;var E=f.hasOwnProperty("x"),O=f.hasOwnProperty("y"),x=i,T=e,C=window;if(h){var L=q(s),j="clientHeight",D="clientWidth";if(L===A(s)&&"static"!==I(L=z(s)).position&&"absolute"===d&&(j="scrollHeight",D="scrollWidth"),l===e||(l===i||l===n)&&u===a)T=t,_-=(g&&L===C&&C.visualViewport?C.visualViewport.height:L[j])-c.height,_*=p?1:-1;if(l===i||(l===e||l===t)&&u===a)x=n,b-=(g&&L===C&&C.visualViewport?C.visualViewport.width:L[D])-c.width,b*=p?1:-1}var S,k=Object.assign({position:d},h&&X),M=!0===m?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:P(n*o)/o||0,y:P(i*o)/o||0}}({x:b,y:_},A(s)):{x:b,y:_};return b=M.x,_=M.y,p?Object.assign({},k,((S={})[T]=O?"0":"",S[x]=E?"0":"",S.transform=(C.devicePixelRatio||1)<=1?"translate("+b+"px, "+_+"px)":"translate3d("+b+"px, "+_+"px, 0)",S)):Object.assign({},k,((r={})[T]=O?_+"px":"",r[x]=E?b+"px":"",r.transform="",r))}var Z={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:D(t.placement),variation:G(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,J(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:c})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,J(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},ee={passive:!0};var te={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=A(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&l.forEach((function(e){e.addEventListener("scroll",n.update,ee)})),a&&c.addEventListener("resize",n.update,ee),function(){r&&l.forEach((function(e){e.removeEventListener("scroll",n.update,ee)})),a&&c.removeEventListener("resize",n.update,ee)}},data:{}},ne={left:"right",right:"left",bottom:"top",top:"bottom"};function ie(e){return e.replace(/left|right|bottom|top/g,(function(e){return ne[e]}))}var oe={start:"end",end:"start"};function re(e){return e.replace(/start|end/g,(function(e){return oe[e]}))}function se(e){var t=A(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function ae(e){return B(z(e)).left+se(e).scrollLeft}function ce(e){var t=I(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function le(e){return["html","body","#document"].indexOf(x(e))>=0?e.ownerDocument.body:C(e)&&ce(e)?e:le(R(e))}function ue(e,t){var n;void 0===t&&(t=[]);var i=le(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=A(i),s=o?[r].concat(r.visualViewport||[],ce(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ue(R(s)))}function fe(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function de(e,t,n){return t===l?fe(function(e,t){var n=A(e),i=z(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=N();(l||!l&&"fixed"===t)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+ae(e),y:c}}(e,n)):T(t)?function(e,t){var n=B(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):fe(function(e){var t,n=z(e),i=se(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=S(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=S(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ae(e),c=-i.scrollTop;return"rtl"===I(o||n).direction&&(a+=S(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(z(e)))}function pe(e,t,n,i){var o="clippingParents"===t?function(e){var t=ue(R(e)),n=["absolute","fixed"].indexOf(I(e).position)>=0&&C(e)?q(e):e;return T(n)?t.filter((function(e){return T(e)&&F(e,n)&&"body"!==x(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=de(e,n,i);return t.top=S(o.top,t.top),t.right=k(o.right,t.right),t.bottom=k(o.bottom,t.bottom),t.left=S(o.left,t.left),t}),de(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function he(o){var r,c=o.reference,l=o.element,u=o.placement,f=u?D(u):null,d=u?G(u):null,p=c.x+c.width/2-l.width/2,h=c.y+c.height/2-l.height/2;switch(f){case e:r={x:p,y:c.y-l.height};break;case t:r={x:p,y:c.y+c.height};break;case n:r={x:c.x+c.width,y:h};break;case i:r={x:c.x-l.width,y:h};break;default:r={x:c.x,y:c.y}}var m=f?V(f):null;if(null!=m){var g="y"===m?"height":"width";switch(d){case s:r[m]=r[m]-(c[g]/2-l[g]/2);break;case a:r[m]=r[m]+(c[g]/2-l[g]/2)}}return r}function me(i,o){void 0===o&&(o={});var s=o,a=s.placement,d=void 0===a?i.placement:a,p=s.strategy,h=void 0===p?i.strategy:p,m=s.boundary,g=void 0===m?c:m,v=s.rootBoundary,b=void 0===v?l:v,y=s.elementContext,_=void 0===y?u:y,w=s.altBoundary,E=void 0!==w&&w,O=s.padding,x=void 0===O?0:O,A=K("number"!=typeof x?x:U(x,r)),C=_===u?f:u,L=i.rects.popper,j=i.elements[E?C:_],D=pe(T(j)?j:j.contextElement||z(i.elements.popper),g,b,h),S=B(i.elements.reference),k=he({reference:S,element:L,strategy:"absolute",placement:d}),P=fe(Object.assign({},L,k)),M=_===u?P:S,N={top:D.top-M.top+A.top,bottom:M.bottom-D.bottom+A.bottom,left:D.left-M.left+A.left,right:M.right-D.right+A.right},H=i.modifiersData.offset;if(_===u&&H){var F=H[d];Object.keys(N).forEach((function(i){var o=[n,t].indexOf(i)>=0?1:-1,r=[e,t].indexOf(i)>=0?"y":"x";N[i]+=F[r]*o}))}return N}function ge(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,c=n.flipVariations,l=n.allowedAutoPlacements,u=void 0===l?p:l,f=G(i),h=f?c?d:d.filter((function(e){return G(e)===f})):r,m=h.filter((function(e){return u.indexOf(e)>=0}));0===m.length&&(m=h);var g=m.reduce((function(t,n){return t[n]=me(e,{placement:n,boundary:o,rootBoundary:s,padding:a})[D(n)],t}),{});return Object.keys(g).sort((function(e,t){return g[e]-g[t]}))}var ve={name:"flip",enabled:!0,phase:"main",fn:function(r){var a=r.state,c=r.options,l=r.name;if(!a.modifiersData[l]._skip){for(var u=c.mainAxis,f=void 0===u||u,d=c.altAxis,p=void 0===d||d,h=c.fallbackPlacements,m=c.padding,g=c.boundary,v=c.rootBoundary,b=c.altBoundary,y=c.flipVariations,_=void 0===y||y,w=c.allowedAutoPlacements,E=a.options.placement,O=D(E),x=h||(O===E||!_?[ie(E)]:function(e){if(D(e)===o)return[];var t=ie(e);return[re(e),t,re(t)]}(E)),A=[E].concat(x).reduce((function(e,t){return e.concat(D(t)===o?ge(a,{placement:t,boundary:g,rootBoundary:v,padding:m,flipVariations:_,allowedAutoPlacements:w}):t)}),[]),T=a.rects.reference,C=a.rects.popper,L=new Map,j=!0,S=A[0],k=0;k=0,H=B?"width":"height",F=me(a,{placement:P,boundary:g,rootBoundary:v,altBoundary:b,padding:m}),I=B?N?n:i:N?t:e;T[H]>C[H]&&(I=ie(I));var W=ie(I),z=[];if(f&&z.push(F[M]<=0),p&&z.push(F[I]<=0,F[W]<=0),z.every((function(e){return e}))){S=P,j=!1;break}L.set(P,z)}if(j)for(var R=function(e){var t=A.find((function(t){var n=L.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return S=t,"break"},$=_?3:1;$>0;$--){if("break"===R($))break}a.placement!==S&&(a.modifiersData[l]._skip=!0,a.placement=S,a.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function be(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(o){return[e,n,t,i].some((function(e){return o[e]>=0}))}var _e={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=me(t,{elementContext:"reference"}),a=me(t,{altBoundary:!0}),c=be(s,i),l=be(a,o,r),u=ye(c),f=ye(l);t.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var we={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var o=t.state,r=t.options,s=t.name,a=r.offset,c=void 0===a?[0,0]:a,l=p.reduce((function(t,r){return t[r]=function(t,o,r){var s=D(t),a=[i,e].indexOf(s)>=0?-1:1,c="function"==typeof r?r(Object.assign({},o,{placement:t})):r,l=c[0],u=c[1];return l=l||0,u=(u||0)*a,[i,n].indexOf(s)>=0?{x:u,y:l}:{x:l,y:u}}(r,o.rects,c),t}),{}),u=l[o.placement],f=u.x,d=u.y;null!=o.modifiersData.popperOffsets&&(o.modifiersData.popperOffsets.x+=f,o.modifiersData.popperOffsets.y+=d),o.modifiersData[s]=l}};var Ee={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=he({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var Oe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(o){var r=o.state,a=o.options,c=o.name,l=a.mainAxis,u=void 0===l||l,f=a.altAxis,d=void 0!==f&&f,p=a.boundary,h=a.rootBoundary,m=a.altBoundary,g=a.padding,v=a.tether,b=void 0===v||v,y=a.tetherOffset,_=void 0===y?0:y,w=me(r,{boundary:p,rootBoundary:h,padding:g,altBoundary:m}),E=D(r.placement),O=G(r.placement),x=!O,A=V(E),T="x"===A?"y":"x",C=r.modifiersData.popperOffsets,L=r.rects.reference,j=r.rects.popper,P="function"==typeof _?_(Object.assign({},r.rects,{placement:r.placement})):_,M="number"==typeof P?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),N=r.modifiersData.offset?r.modifiersData.offset[r.placement]:null,B={x:0,y:0};if(C){if(u){var F,I="y"===A?e:i,W="y"===A?t:n,z="y"===A?"height":"width",R=C[A],$=R+w[I],K=R-w[W],U=b?-j[z]/2:0,Q=O===s?L[z]:j[z],X=O===s?-j[z]:-L[z],J=r.elements.arrow,Z=b&&J?H(J):{width:0,height:0},ee=r.modifiersData["arrow#persistent"]?r.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[I],ne=ee[W],ie=Y(0,L[z],Z[z]),oe=x?L[z]/2-U-ie-te-M.mainAxis:Q-ie-te-M.mainAxis,re=x?-L[z]/2+U+ie+ne+M.mainAxis:X+ie+ne+M.mainAxis,se=r.elements.arrow&&q(r.elements.arrow),ae=se?"y"===A?se.clientTop||0:se.clientLeft||0:0,ce=null!=(F=null==N?void 0:N[A])?F:0,le=R+re-ce,ue=Y(b?k($,R+oe-ce-ae):$,R,b?S(K,le):K);C[A]=ue,B[A]=ue-R}if(d){var fe,de="x"===A?e:i,pe="x"===A?t:n,he=C[T],ge="y"===T?"height":"width",ve=he+w[de],be=he-w[pe],ye=-1!==[e,i].indexOf(E),_e=null!=(fe=null==N?void 0:N[T])?fe:0,we=ye?ve:he-L[ge]-j[ge]-_e+M.altAxis,Ee=ye?he+L[ge]+j[ge]-_e-M.altAxis:be,Oe=b&&ye?function(e,t,n){var i=Y(e,t,n);return i>n?n:i}(we,he,Ee):Y(b?we:ve,he,b?Ee:be);C[T]=Oe,B[T]=Oe-he}r.modifiersData[c]=B}},requiresIfExists:["offset"]};function xe(e,t,n){void 0===n&&(n=!1);var i,o,r=C(t),s=C(t)&&function(e){var t=e.getBoundingClientRect(),n=P(t.width)/e.offsetWidth||1,i=P(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=z(t),c=B(e,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==x(t)||ce(a))&&(l=(i=t)!==A(i)&&C(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:se(i)),C(t)?((u=B(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=ae(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Ae(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var Te={placement:"bottom",modifiers:[],strategy:"absolute"};function Ce(){for(var e=arguments.length,t=new Array(e),n=0;nPe.has(e)&&Pe.get(e).get(t)||null,remove(e,t){if(!Pe.has(e))return;const n=Pe.get(e);n.delete(t),0===n.size&&Pe.delete(e)}};const Ne="transitionend",Be=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),He=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),Fe=e=>He(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(Be(e)):null,Ie=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?Ie(e.parentNode):null},We=()=>{},ze=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Re=[],$e=()=>"rtl"===document.documentElement.dir,qe=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},Ve=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void qe(e);const n=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let i=!1;const o=n=>{let{target:r}=n;r===t&&(i=!0,t.removeEventListener(Ne,o),qe(e))};t.addEventListener(Ne,o),setTimeout((()=>{i||t.dispatchEvent(new Event(Ne))}),n)},Ye=/[^.]*(?=\..*)\.|.*/,Ke=/\..*/,Ue=/::\d+$/,Qe={};let Ge=1;const Xe={mouseenter:"mouseover",mouseleave:"mouseout"},Je=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Ze(e,t){return t&&`${t}::${Ge++}`||e.uidEvent||Ge++}function et(e){const t=Ze(e);return e.uidEvent=t,Qe[t]=Qe[t]||{},Qe[t]}function tt(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function nt(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=st(e);return Je.has(r)||(r=e),[i,o,r]}function it(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=nt(t,n,i);if(t in Xe){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const c=et(e),l=c[a]||(c[a]={}),u=tt(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=Ze(s,t.replace(Ye,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return ct(o,{delegateTarget:s}),i.oneOff&&at.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return ct(i,{delegateTarget:e}),n.oneOff&&at.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,e.addEventListener(a,d,r)}function ot(e,t,n,i,o){const r=tt(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function rt(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&ot(e,t,n,s.callable,s.delegationSelector)}function st(e){return e=e.replace(Ke,""),Xe[e]||e}const at={on(e,t,n,i){it(e,t,n,i,!1)},one(e,t,n,i){it(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=nt(t,n,i),a=s!==t,c=et(e),l=c[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))rt(e,c,n,t.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(Ue,"");a&&!t.includes(o)||ot(e,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;ot(e,c,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=ze();let o=null,r=!0,s=!0,a=!1;t!==st(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=ct(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function ct(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function lt(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function ut(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const ft={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${ut(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${ut(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=lt(e.dataset[i])}return t},getDataAttribute:(e,t)=>lt(e.getAttribute(`data-bs-${ut(t)}`))};class dt{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=He(t)?ft.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...He(t)?ft.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,o]of Object.entries(t)){const t=e[i],r=He(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${o}".`)}var n}}class pt extends dt{constructor(e,t){super(),(e=Fe(e))&&(this._element=e,this._config=this._getConfig(t),Me.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Me.remove(this._element,this.constructor.DATA_KEY),at.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){Ve(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Me.get(Fe(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const ht={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},mt=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),gt=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,vt=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!mt.has(n)||Boolean(gt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const bt=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>Be(e))).join(","):null},yt={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!He(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=bt(e);return t&&yt.findOne(t)?t:null},getElementFromSelector(e){const t=bt(e);return t?yt.findOne(t):null},getMultipleElementsFromSelector(e){const t=bt(e);return t?yt.find(t):[]}},_t={allowList:ht,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},wt={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Et={entry:"(string|element|function|null)",selector:"(string|element)"};class Ot extends dt{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return _t}static get DefaultType(){return wt}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},Et)}_setContent(e,t,n){const i=yt.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?He(t)?this._putElementInTemplate(Fe(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)vt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return qe(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const xt=new Set(["sanitize","allowList","sanitizeFn"]),At="fade",Tt="show",Ct=".tooltip-inner",Lt=".modal",jt="hide.bs.modal",Dt="hover",St="focus",kt={AUTO:"auto",TOP:"top",RIGHT:$e()?"left":"right",BOTTOM:"bottom",LEFT:$e()?"right":"left"},Pt={allowList:ht,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Mt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Nt extends pt{constructor(e,t){if(void 0===ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Pt}static get DefaultType(){return Mt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),at.off(this._element.closest(Lt),jt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=at.trigger(this._element,this.constructor.eventName("show")),t=(Ie(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),at.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Tt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))at.on(e,"mouseover",We);this._queueCallback((()=>{at.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(at.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Tt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))at.off(e,"mouseover",We);this._activeTrigger.click=!1,this._activeTrigger[St]=!1,this._activeTrigger[Dt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),at.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(At,Tt),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(At),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ot({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Ct]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(At)}_isShown(){return this.tip&&this.tip.classList.contains(Tt)}_createPopper(e){const t=qe(this._config.placement,[this,e,this._element]),n=kt[t.toUpperCase()];return Se(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return qe(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...qe(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)at.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Dt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Dt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");at.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?St:Dt]=!0,t._enter()})),at.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?St:Dt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},at.on(this._element.closest(Lt),jt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=ft.getDataAttributes(this._element);for(const e of Object.keys(t))xt.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:Fe(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Nt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}var Bt,Ht;Bt=Nt,Ht=()=>{const e=ze();if(e){const t=Bt.NAME,n=e.fn[t];e.fn[t]=Bt.jQueryInterface,e.fn[t].Constructor=Bt,e.fn[t].noConflict=()=>(e.fn[t]=n,Bt.jQueryInterface)}},"loading"===document.readyState?(Re.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of Re)e()})),Re.push(Ht)):Ht();const Ft=document.getElementById("mode-toggle");function It(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Wt="sidebar-display";class zt{static toggle(){!1===zt.isExpanded?document.body.setAttribute(Wt,""):document.body.removeAttribute(Wt),zt.isExpanded=!zt.isExpanded}}It(zt,"isExpanded",!1);const Rt=document.getElementById("sidebar-trigger"),$t=document.getElementById("search-trigger"),qt=document.getElementById("search-cancel"),Vt=document.querySelectorAll("#main-wrapper>.container>.row"),Yt=document.getElementById("topbar-title"),Kt=document.getElementById("search"),Ut=document.getElementById("search-result-wrapper"),Qt=document.getElementById("search-results"),Gt=document.getElementById("search-input"),Xt=document.getElementById("search-hints"),Jt="d-block",Zt="d-none",en="input-focus",tn="d-flex";class nn{static on(){Rt.classList.add(Zt),Yt.classList.add(Zt),$t.classList.add(Zt),Kt.classList.add(tn),qt.classList.add(Jt)}static off(){qt.classList.remove(Jt),Kt.classList.remove(tn),Rt.classList.remove(Zt),Yt.classList.remove(Zt),$t.classList.remove(Zt)}}class on{static on(){this.resultVisible||(Ut.classList.remove(Zt),Vt.forEach((e=>{e.classList.add(Zt)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Qt.innerHTML="",Xt.classList.contains(Zt)&&Xt.classList.remove(Zt),Ut.classList.add(Zt),Vt.forEach((e=>{e.classList.remove(Zt)})),Gt.textContent="",this.resultVisible=!1)}}function rn(){return qt.classList.contains(Jt)}It(on,"resultVisible",!1),Ft&&Ft.addEventListener("click",(()=>{modeToggle.flipMode()})),document.getElementById("sidebar-trigger").addEventListener("click",zt.toggle),document.getElementById("mask").addEventListener("click",zt.toggle),$t.addEventListener("click",(()=>{nn.on(),on.on(),Gt.focus()})),qt.addEventListener("click",(()=>{nn.off(),on.off()})),Gt.addEventListener("focus",(()=>{Kt.classList.add(en)})),Gt.addEventListener("focusout",(()=>{Kt.classList.remove(en)})),Gt.addEventListener("input",(()=>{""===Gt.value?rn()?Xt.classList.remove(Zt):on.off():(on.on(),rn()&&Xt.classList.add(Zt))})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Nt(e)))}(); diff --git a/assets/js/dist/home.min.js b/assets/js/dist/home.min.js new file mode 100644 index 00000000000..e4713f258de --- /dev/null +++ b/assets/js/dist/home.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";var t="top",e="bottom",n="right",i="left",o="auto",r=[t,e,n,i],s="start",a="end",l="clippingParents",c="viewport",u="popper",f="reference",d=r.reduce((function(t,e){return t.concat([e+"-"+s,e+"-"+a])}),[]),p=[].concat(r,[o]).reduce((function(t,e){return t.concat([e,e+"-"+s,e+"-"+a])}),[]),h="beforeRead",m="read",g="afterRead",v="beforeMain",b="main",y="afterMain",_="beforeWrite",w="write",E="afterWrite",x=[h,m,g,v,b,y,_,w,E];function O(t){return t?(t.nodeName||"").toLowerCase():null}function A(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function C(t){return t instanceof A(t).Element||t instanceof Element}function T(t){return t instanceof A(t).HTMLElement||t instanceof HTMLElement}function L(t){return"undefined"!=typeof ShadowRoot&&(t instanceof A(t).ShadowRoot||t instanceof ShadowRoot)}var S={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];T(o)&&O(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});T(i)&&O(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function j(t){return t.split("-")[0]}var k=Math.max,D=Math.min,P=Math.round;function M(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function N(){return!/^((?!chrome|android).)*safari/i.test(M())}function B(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&T(t)&&(o=t.offsetWidth>0&&P(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&P(i.height)/t.offsetHeight||1);var s=(C(t)?A(t):window).visualViewport,a=!N()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function F(t){var e=B(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function I(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&L(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function H(t){return A(t).getComputedStyle(t)}function $(t){return["table","td","th"].indexOf(O(t))>=0}function z(t){return((C(t)?t.ownerDocument:t.document)||window.document).documentElement}function q(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(L(t)?t.host:null)||z(t)}function W(t){return T(t)&&"fixed"!==H(t).position?t.offsetParent:null}function R(t){for(var e=A(t),n=W(t);n&&$(n)&&"static"===H(n).position;)n=W(n);return n&&("html"===O(n)||"body"===O(n)&&"static"===H(n).position)?e:n||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&T(t)&&"fixed"===H(t).position)return null;var n=q(t);for(L(n)&&(n=n.host);T(n)&&["html","body"].indexOf(O(n))<0;){var i=H(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function V(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Y(t,e,n){return k(t,D(e,n))}function U(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function K(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Q={name:"arrow",enabled:!0,phase:"main",fn:function(o){var s,a=o.state,l=o.name,c=o.options,u=a.elements.arrow,f=a.modifiersData.popperOffsets,d=j(a.placement),p=V(d),h=[i,n].indexOf(d)>=0?"height":"width";if(u&&f){var m=function(t,e){return U("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:K(t,r))}(c.padding,a),g=F(u),v="y"===p?t:i,b="y"===p?e:n,y=a.rects.reference[h]+a.rects.reference[p]-f[p]-a.rects.popper[h],_=f[p]-a.rects.reference[p],w=R(u),E=w?"y"===p?w.clientHeight||0:w.clientWidth||0:0,x=y/2-_/2,O=m[v],A=E-g[h]-m[b],C=E/2-g[h]/2+x,T=Y(O,C,A),L=p;a.modifiersData[l]=((s={})[L]=T,s.centerOffset=T-C,s)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&I(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function X(t){return t.split("-")[1]}var G={top:"auto",right:"auto",bottom:"auto",left:"auto"};function J(o){var r,s=o.popper,l=o.popperRect,c=o.placement,u=o.variation,f=o.offsets,d=o.position,p=o.gpuAcceleration,h=o.adaptive,m=o.roundOffsets,g=o.isFixed,v=f.x,b=void 0===v?0:v,y=f.y,_=void 0===y?0:y,w="function"==typeof m?m({x:b,y:_}):{x:b,y:_};b=w.x,_=w.y;var E=f.hasOwnProperty("x"),x=f.hasOwnProperty("y"),O=i,C=t,T=window;if(h){var L=R(s),S="clientHeight",j="clientWidth";if(L===A(s)&&"static"!==H(L=z(s)).position&&"absolute"===d&&(S="scrollHeight",j="scrollWidth"),c===t||(c===i||c===n)&&u===a)C=e,_-=(g&&L===T&&T.visualViewport?T.visualViewport.height:L[S])-l.height,_*=p?1:-1;if(c===i||(c===t||c===e)&&u===a)O=n,b-=(g&&L===T&&T.visualViewport?T.visualViewport.width:L[j])-l.width,b*=p?1:-1}var k,D=Object.assign({position:d},h&&G),M=!0===m?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:P(n*o)/o||0,y:P(i*o)/o||0}}({x:b,y:_},A(s)):{x:b,y:_};return b=M.x,_=M.y,p?Object.assign({},D,((k={})[C]=x?"0":"",k[O]=E?"0":"",k.transform=(T.devicePixelRatio||1)<=1?"translate("+b+"px, "+_+"px)":"translate3d("+b+"px, "+_+"px, 0)",k)):Object.assign({},D,((r={})[C]=x?_+"px":"",r[O]=E?b+"px":"",r.transform="",r))}var Z={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:j(e.placement),variation:X(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,J(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,J(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},tt={passive:!0};var et={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=A(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,tt)})),a&&l.addEventListener("resize",n.update,tt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,tt)})),a&&l.removeEventListener("resize",n.update,tt)}},data:{}},nt={left:"right",right:"left",bottom:"top",top:"bottom"};function it(t){return t.replace(/left|right|bottom|top/g,(function(t){return nt[t]}))}var ot={start:"end",end:"start"};function rt(t){return t.replace(/start|end/g,(function(t){return ot[t]}))}function st(t){var e=A(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function at(t){return B(z(t)).left+st(t).scrollLeft}function lt(t){var e=H(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ct(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:T(t)&<(t)?t:ct(q(t))}function ut(t,e){var n;void 0===e&&(e=[]);var i=ct(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=A(i),s=o?[r].concat(r.visualViewport||[],lt(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(ut(q(s)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function dt(t,e,n){return e===c?ft(function(t,e){var n=A(t),i=z(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=N();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+at(t),y:l}}(t,n)):C(e)?function(t,e){var n=B(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ft(function(t){var e,n=z(t),i=st(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=k(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=k(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+at(t),l=-i.scrollTop;return"rtl"===H(o||n).direction&&(a+=k(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(z(t)))}function pt(t,e,n,i){var o="clippingParents"===e?function(t){var e=ut(q(t)),n=["absolute","fixed"].indexOf(H(t).position)>=0&&T(t)?R(t):t;return C(n)?e.filter((function(t){return C(t)&&I(t,n)&&"body"!==O(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=dt(t,n,i);return e.top=k(o.top,e.top),e.right=D(o.right,e.right),e.bottom=D(o.bottom,e.bottom),e.left=k(o.left,e.left),e}),dt(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ht(o){var r,l=o.reference,c=o.element,u=o.placement,f=u?j(u):null,d=u?X(u):null,p=l.x+l.width/2-c.width/2,h=l.y+l.height/2-c.height/2;switch(f){case t:r={x:p,y:l.y-c.height};break;case e:r={x:p,y:l.y+l.height};break;case n:r={x:l.x+l.width,y:h};break;case i:r={x:l.x-c.width,y:h};break;default:r={x:l.x,y:l.y}}var m=f?V(f):null;if(null!=m){var g="y"===m?"height":"width";switch(d){case s:r[m]=r[m]-(l[g]/2-c[g]/2);break;case a:r[m]=r[m]+(l[g]/2-c[g]/2)}}return r}function mt(i,o){void 0===o&&(o={});var s=o,a=s.placement,d=void 0===a?i.placement:a,p=s.strategy,h=void 0===p?i.strategy:p,m=s.boundary,g=void 0===m?l:m,v=s.rootBoundary,b=void 0===v?c:v,y=s.elementContext,_=void 0===y?u:y,w=s.altBoundary,E=void 0!==w&&w,x=s.padding,O=void 0===x?0:x,A=U("number"!=typeof O?O:K(O,r)),T=_===u?f:u,L=i.rects.popper,S=i.elements[E?T:_],j=pt(C(S)?S:S.contextElement||z(i.elements.popper),g,b,h),k=B(i.elements.reference),D=ht({reference:k,element:L,strategy:"absolute",placement:d}),P=ft(Object.assign({},L,D)),M=_===u?P:k,N={top:j.top-M.top+A.top,bottom:M.bottom-j.bottom+A.bottom,left:j.left-M.left+A.left,right:M.right-j.right+A.right},F=i.modifiersData.offset;if(_===u&&F){var I=F[d];Object.keys(N).forEach((function(i){var o=[n,e].indexOf(i)>=0?1:-1,r=[t,e].indexOf(i)>=0?"y":"x";N[i]+=I[r]*o}))}return N}function gt(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,l=n.flipVariations,c=n.allowedAutoPlacements,u=void 0===c?p:c,f=X(i),h=f?l?d:d.filter((function(t){return X(t)===f})):r,m=h.filter((function(t){return u.indexOf(t)>=0}));0===m.length&&(m=h);var g=m.reduce((function(e,n){return e[n]=mt(t,{placement:n,boundary:o,rootBoundary:s,padding:a})[j(n)],e}),{});return Object.keys(g).sort((function(t,e){return g[t]-g[e]}))}var vt={name:"flip",enabled:!0,phase:"main",fn:function(r){var a=r.state,l=r.options,c=r.name;if(!a.modifiersData[c]._skip){for(var u=l.mainAxis,f=void 0===u||u,d=l.altAxis,p=void 0===d||d,h=l.fallbackPlacements,m=l.padding,g=l.boundary,v=l.rootBoundary,b=l.altBoundary,y=l.flipVariations,_=void 0===y||y,w=l.allowedAutoPlacements,E=a.options.placement,x=j(E),O=h||(x===E||!_?[it(E)]:function(t){if(j(t)===o)return[];var e=it(t);return[rt(t),e,rt(e)]}(E)),A=[E].concat(O).reduce((function(t,e){return t.concat(j(e)===o?gt(a,{placement:e,boundary:g,rootBoundary:v,padding:m,flipVariations:_,allowedAutoPlacements:w}):e)}),[]),C=a.rects.reference,T=a.rects.popper,L=new Map,S=!0,k=A[0],D=0;D=0,F=B?"width":"height",I=mt(a,{placement:P,boundary:g,rootBoundary:v,altBoundary:b,padding:m}),H=B?N?n:i:N?e:t;C[F]>T[F]&&(H=it(H));var $=it(H),z=[];if(f&&z.push(I[M]<=0),p&&z.push(I[H]<=0,I[$]<=0),z.every((function(t){return t}))){k=P,S=!1;break}L.set(P,z)}if(S)for(var q=function(t){var e=A.find((function(e){var n=L.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return k=e,"break"},W=_?3:1;W>0;W--){if("break"===q(W))break}a.placement!==k&&(a.modifiersData[c]._skip=!0,a.placement=k,a.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function yt(o){return[t,n,e,i].some((function(t){return o[t]>=0}))}var _t={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=mt(e,{elementContext:"reference"}),a=mt(e,{altBoundary:!0}),l=bt(s,i),c=bt(a,o,r),u=yt(l),f=yt(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var o=e.state,r=e.options,s=e.name,a=r.offset,l=void 0===a?[0,0]:a,c=p.reduce((function(e,r){return e[r]=function(e,o,r){var s=j(e),a=[i,t].indexOf(s)>=0?-1:1,l="function"==typeof r?r(Object.assign({},o,{placement:e})):r,c=l[0],u=l[1];return c=c||0,u=(u||0)*a,[i,n].indexOf(s)>=0?{x:u,y:c}:{x:c,y:u}}(r,o.rects,l),e}),{}),u=c[o.placement],f=u.x,d=u.y;null!=o.modifiersData.popperOffsets&&(o.modifiersData.popperOffsets.x+=f,o.modifiersData.popperOffsets.y+=d),o.modifiersData[s]=c}};var Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ht({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var xt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(o){var r=o.state,a=o.options,l=o.name,c=a.mainAxis,u=void 0===c||c,f=a.altAxis,d=void 0!==f&&f,p=a.boundary,h=a.rootBoundary,m=a.altBoundary,g=a.padding,v=a.tether,b=void 0===v||v,y=a.tetherOffset,_=void 0===y?0:y,w=mt(r,{boundary:p,rootBoundary:h,padding:g,altBoundary:m}),E=j(r.placement),x=X(r.placement),O=!x,A=V(E),C="x"===A?"y":"x",T=r.modifiersData.popperOffsets,L=r.rects.reference,S=r.rects.popper,P="function"==typeof _?_(Object.assign({},r.rects,{placement:r.placement})):_,M="number"==typeof P?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),N=r.modifiersData.offset?r.modifiersData.offset[r.placement]:null,B={x:0,y:0};if(T){if(u){var I,H="y"===A?t:i,$="y"===A?e:n,z="y"===A?"height":"width",q=T[A],W=q+w[H],U=q-w[$],K=b?-S[z]/2:0,Q=x===s?L[z]:S[z],G=x===s?-S[z]:-L[z],J=r.elements.arrow,Z=b&&J?F(J):{width:0,height:0},tt=r.modifiersData["arrow#persistent"]?r.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[H],nt=tt[$],it=Y(0,L[z],Z[z]),ot=O?L[z]/2-K-it-et-M.mainAxis:Q-it-et-M.mainAxis,rt=O?-L[z]/2+K+it+nt+M.mainAxis:G+it+nt+M.mainAxis,st=r.elements.arrow&&R(r.elements.arrow),at=st?"y"===A?st.clientTop||0:st.clientLeft||0:0,lt=null!=(I=null==N?void 0:N[A])?I:0,ct=q+rt-lt,ut=Y(b?D(W,q+ot-lt-at):W,q,b?k(U,ct):U);T[A]=ut,B[A]=ut-q}if(d){var ft,dt="x"===A?t:i,pt="x"===A?e:n,ht=T[C],gt="y"===C?"height":"width",vt=ht+w[dt],bt=ht-w[pt],yt=-1!==[t,i].indexOf(E),_t=null!=(ft=null==N?void 0:N[C])?ft:0,wt=yt?vt:ht-L[gt]-S[gt]-_t+M.altAxis,Et=yt?ht+L[gt]+S[gt]-_t-M.altAxis:bt,xt=b&&yt?function(t,e,n){var i=Y(t,e,n);return i>n?n:i}(wt,ht,Et):Y(b?wt:vt,ht,b?Et:bt);T[C]=xt,B[C]=xt-ht}r.modifiersData[l]=B}},requiresIfExists:["offset"]};function Ot(t,e,n){void 0===n&&(n=!1);var i,o,r=T(e),s=T(e)&&function(t){var e=t.getBoundingClientRect(),n=P(e.width)/t.offsetWidth||1,i=P(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=z(e),l=B(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==O(e)||lt(a))&&(c=(i=e)!==A(i)&&T(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:st(i)),T(e)?((u=B(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=at(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function At(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Ct={placement:"bottom",modifiers:[],strategy:"absolute"};function Tt(){for(var t=arguments.length,e=new Array(t),n=0;nPt.has(t)&&Pt.get(t).get(e)||null,remove(t,e){if(!Pt.has(t))return;const n=Pt.get(t);n.delete(e),0===n.size&&Pt.delete(t)}};const Nt="transitionend",Bt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Ft=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),It=t=>Ft(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Bt(t)):null,Ht=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Ht(t.parentNode):null},$t=()=>{},zt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,qt=[],Wt=()=>"rtl"===document.documentElement.dir,Rt=t=>{var e;e=()=>{const e=zt();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(qt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of qt)t()})),qt.push(e)):e()},Vt=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},Yt=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void Vt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let i=!1;const o=n=>{let{target:r}=n;r===e&&(i=!0,e.removeEventListener(Nt,o),Vt(t))};e.addEventListener(Nt,o),setTimeout((()=>{i||e.dispatchEvent(new Event(Nt))}),n)},Ut=/[^.]*(?=\..*)\.|.*/,Kt=/\..*/,Qt=/::\d+$/,Xt={};let Gt=1;const Jt={mouseenter:"mouseover",mouseleave:"mouseout"},Zt=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function te(t,e){return e&&`${e}::${Gt++}`||t.uidEvent||Gt++}function ee(t){const e=te(t);return t.uidEvent=e,Xt[e]=Xt[e]||{},Xt[e]}function ne(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function ie(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=ae(t);return Zt.has(r)||(r=t),[i,o,r]}function oe(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=ie(e,n,i);if(e in Jt){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=ee(t),c=l[a]||(l[a]={}),u=ne(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=te(s,e.replace(Ut,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return ce(o,{delegateTarget:s}),i.oneOff&&le.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return ce(i,{delegateTarget:t}),n.oneOff&&le.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function re(t,e,n,i,o){const r=ne(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function se(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&re(t,e,n,s.callable,s.delegationSelector)}function ae(t){return t=t.replace(Kt,""),Jt[t]||t}const le={on(t,e,n,i){oe(t,e,n,i,!1)},one(t,e,n,i){oe(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=ie(e,n,i),a=s!==e,l=ee(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))se(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(Qt,"");a&&!e.includes(o)||re(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;re(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=zt();let o=null,r=!0,s=!0,a=!1;e!==ae(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=ce(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function ce(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function ue(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function fe(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const de={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${fe(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${fe(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=ue(t.dataset[i])}return e},getDataAttribute:(t,e)=>ue(t.getAttribute(`data-bs-${fe(e)}`))};class pe{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=Ft(e)?de.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...Ft(e)?de.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,o]of Object.entries(e)){const e=t[i],r=Ft(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${o}".`)}var n}}class he extends pe{constructor(t,e){super(),(t=It(t))&&(this._element=t,this._config=this._getConfig(e),Mt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Mt.remove(this._element,this.constructor.DATA_KEY),le.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){Yt(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Mt.get(It(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const me={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},ge=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),ve=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,be=(t,e)=>{const n=t.nodeName.toLowerCase();return e.includes(n)?!ge.has(n)||Boolean(ve.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const ye=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>Bt(t))).join(","):null},_e={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!Ft(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=ye(t);return e&&_e.findOne(e)?e:null},getElementFromSelector(t){const e=ye(t);return e?_e.findOne(e):null},getMultipleElementsFromSelector(t){const e=ye(t);return e?_e.find(e):[]}},we={allowList:me,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Ee={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},xe={entry:"(string|element|function|null)",selector:"(string|element)"};class Oe extends pe{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return we}static get DefaultType(){return Ee}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},xe)}_setContent(t,e,n){const i=_e.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?Ft(e)?this._putElementInTemplate(It(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)be(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Vt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ae=new Set(["sanitize","allowList","sanitizeFn"]),Ce="fade",Te="show",Le=".tooltip-inner",Se=".modal",je="hide.bs.modal",ke="hover",De="focus",Pe={AUTO:"auto",TOP:"top",RIGHT:Wt()?"left":"right",BOTTOM:"bottom",LEFT:Wt()?"right":"left"},Me={allowList:me,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ne={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Be extends he{constructor(t,e){if(void 0===Dt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Me}static get DefaultType(){return Ne}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),le.off(this._element.closest(Se),je,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=le.trigger(this._element,this.constructor.eventName("show")),e=(Ht(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),le.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Te),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))le.on(t,"mouseover",$t);this._queueCallback((()=>{le.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(le.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Te),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))le.off(t,"mouseover",$t);this._activeTrigger.click=!1,this._activeTrigger[De]=!1,this._activeTrigger[ke]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),le.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ce,Te),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ce),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Oe({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Le]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ce)}_isShown(){return this.tip&&this.tip.classList.contains(Te)}_createPopper(t){const e=Vt(this._config.placement,[this,t,this._element]),n=Pe[e.toUpperCase()];return kt(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Vt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Vt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)le.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ke?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===ke?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");le.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?De:ke]=!0,e._enter()})),le.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?De:ke]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},le.on(this._element.closest(Se),je,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=de.getDataAttributes(this._element);for(const t of Object.keys(e))Ae.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:It(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Be.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Rt(Be);const Fe=document.getElementById("mode-toggle");function Ie(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const He="sidebar-display";class $e{static toggle(){!1===$e.isExpanded?document.body.setAttribute(He,""):document.body.removeAttribute(He),$e.isExpanded=!$e.isExpanded}}Ie($e,"isExpanded",!1);const ze=document.getElementById("sidebar-trigger"),qe=document.getElementById("search-trigger"),We=document.getElementById("search-cancel"),Re=document.querySelectorAll("#main-wrapper>.container>.row"),Ve=document.getElementById("topbar-title"),Ye=document.getElementById("search"),Ue=document.getElementById("search-result-wrapper"),Ke=document.getElementById("search-results"),Qe=document.getElementById("search-input"),Xe=document.getElementById("search-hints"),Ge="d-block",Je="d-none",Ze="input-focus",tn="d-flex";class en{static on(){ze.classList.add(Je),Ve.classList.add(Je),qe.classList.add(Je),Ye.classList.add(tn),We.classList.add(Ge)}static off(){We.classList.remove(Ge),Ye.classList.remove(tn),ze.classList.remove(Je),Ve.classList.remove(Je),qe.classList.remove(Je)}}class nn{static on(){this.resultVisible||(Ue.classList.remove(Je),Re.forEach((t=>{t.classList.add(Je)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Ke.innerHTML="",Xe.classList.contains(Je)&&Xe.classList.remove(Je),Ue.classList.add(Je),Re.forEach((t=>{t.classList.remove(Je)})),Qe.textContent="",this.resultVisible=!1)}}function on(){return We.classList.contains(Ge)}Ie(nn,"resultVisible",!1);const rn=".bs.collapse",sn=`show${rn}`,an=`shown${rn}`,ln=`hide${rn}`,cn=`hidden${rn}`,un=`click${rn}.data-api`,fn="show",dn="collapse",pn="collapsing",hn=`:scope .${dn} .${dn}`,mn='[data-bs-toggle="collapse"]',gn={parent:null,toggle:!0},vn={parent:"(null|element)",toggle:"boolean"};class bn extends he{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=_e.find(mn);for(const t of n){const e=_e.getSelectorFromElement(t),n=_e.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return gn}static get DefaultType(){return vn}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>bn.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(le.trigger(this._element,sn).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(dn),this._element.classList.add(pn),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn,fn),this._element.style[e]="",le.trigger(this._element,an)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(le.trigger(this._element,ln).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(pn),this._element.classList.remove(dn,fn);for(const t of this._triggerArray){const e=_e.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn),le.trigger(this._element,cn)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(fn)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=It(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(mn);for(const e of t){const t=_e.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=_e.find(hn,this._config.parent);return _e.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=bn.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}le.on(document,un,mn,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of _e.getMultipleElementsFromSelector(this))bn.getOrCreateInstance(t,{toggle:!1}).toggle()})),Rt(bn),document.getElementsByClassName("collapse");const yn="data-src",_n="data-lqip",wn="shimmer",En="blur";function xn(t){this.parentElement.classList.remove(t)}function On(){this.complete&&(this.hasAttribute(_n)?xn.call(this,En):xn.call(this,wn))}function An(){const t=this.getAttribute(yn);this.setAttribute("src",encodeURI(t)),this.removeAttribute(yn)}class Cn{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var Tn;const Ln=document.getElementById("toc-bar"),Sn=document.getElementById("toc-solo-trigger"),jn=document.getElementsByClassName("toc-trigger"),kn=document.getElementById("toc-popup"),Dn=document.getElementById("toc-popup-close"),Pn="overflow-hidden",Mn="closing";class Nn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{Ln.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${this.barHeight}px 0px 0px 0px`}).observe(Sn),this.invisible=!1}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=this.hidePopup}))}static refresh(){this.invisible&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static showPopup(){Nn.lockScroll(!0),kn.showModal();kn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(t){"cancel"===t?.type&&t.preventDefault(),kn.open&&(kn.toggleAttribute(Mn),kn.addEventListener("animationend",(()=>{kn.toggleAttribute(Mn),kn.close()}),{once:!0}),Nn.lockScroll(!1))}static lockScroll(t){document.documentElement.classList.toggle(Pn,t),document.body.classList.toggle(Pn,t)}static clickBackdrop(t){const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&Nn.hidePopup()}static initComponents(){this.initBar(),[...jn].forEach((t=>{t.onclick=this.showPopup})),kn.onclick=this.clickBackdrop,Dn.onclick=kn.oncancel=this.hidePopup}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}Tn=Nn,Ie(Nn,"invisible",!0),Ie(Nn,"barHeight",48),Ie(Nn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Tn.barHeight});Ie(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach((t=>{t.addEventListener("load",On)})),document.querySelectorAll('article img[loading="lazy"]').forEach((t=>{t.complete&&xn.call(t,wn)}));const e=document.querySelectorAll(`article img[${_n}="true"]`);e.length&&e.forEach((t=>{An.call(t)}))}(),dayjs.locale(Cn.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${Cn.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(Cn.getTimestamp(t)),n=e.format(Cn.getDateFormat(t));if(t.textContent=n,t.removeAttribute(Cn.attrTimestamp),t.removeAttribute(Cn.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),Fe&&Fe.addEventListener("click",(()=>{modeToggle.flipMode()})),document.getElementById("sidebar-trigger").addEventListener("click",$e.toggle),document.getElementById("mask").addEventListener("click",$e.toggle),qe.addEventListener("click",(()=>{en.on(),nn.on(),Qe.focus()})),We.addEventListener("click",(()=>{en.off(),nn.off()})),Qe.addEventListener("focus",(()=>{Ye.classList.add(Ze)})),Qe.addEventListener("focusout",(()=>{Ye.classList.remove(Ze)})),Qe.addEventListener("input",(()=>{""===Qe.value?on()?Xe.classList.remove(Je):nn.off():(nn.on(),on()&&Xe.classList.add(Je))})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Be(t)))}(); diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js new file mode 100644 index 00000000000..84fa4a03b7e --- /dev/null +++ b/assets/js/dist/misc.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";var t="top",e="bottom",n="right",i="left",o="auto",r=[t,e,n,i],s="start",a="end",l="clippingParents",c="viewport",u="popper",f="reference",d=r.reduce((function(t,e){return t.concat([e+"-"+s,e+"-"+a])}),[]),p=[].concat(r,[o]).reduce((function(t,e){return t.concat([e,e+"-"+s,e+"-"+a])}),[]),h="beforeRead",m="read",g="afterRead",v="beforeMain",b="main",y="afterMain",_="beforeWrite",w="write",E="afterWrite",x=[h,m,g,v,b,y,_,w,E];function O(t){return t?(t.nodeName||"").toLowerCase():null}function A(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function C(t){return t instanceof A(t).Element||t instanceof Element}function T(t){return t instanceof A(t).HTMLElement||t instanceof HTMLElement}function L(t){return"undefined"!=typeof ShadowRoot&&(t instanceof A(t).ShadowRoot||t instanceof ShadowRoot)}var S={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];T(o)&&O(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});T(i)&&O(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function j(t){return t.split("-")[0]}var k=Math.max,D=Math.min,P=Math.round;function M(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function N(){return!/^((?!chrome|android).)*safari/i.test(M())}function B(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&T(t)&&(o=t.offsetWidth>0&&P(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&P(i.height)/t.offsetHeight||1);var s=(C(t)?A(t):window).visualViewport,a=!N()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function F(t){var e=B(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function I(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&L(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function H(t){return A(t).getComputedStyle(t)}function $(t){return["table","td","th"].indexOf(O(t))>=0}function z(t){return((C(t)?t.ownerDocument:t.document)||window.document).documentElement}function W(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(L(t)?t.host:null)||z(t)}function R(t){return T(t)&&"fixed"!==H(t).position?t.offsetParent:null}function q(t){for(var e=A(t),n=R(t);n&&$(n)&&"static"===H(n).position;)n=R(n);return n&&("html"===O(n)||"body"===O(n)&&"static"===H(n).position)?e:n||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&T(t)&&"fixed"===H(t).position)return null;var n=W(t);for(L(n)&&(n=n.host);T(n)&&["html","body"].indexOf(O(n))<0;){var i=H(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function V(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Y(t,e,n){return k(t,D(e,n))}function U(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function K(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Q={name:"arrow",enabled:!0,phase:"main",fn:function(o){var s,a=o.state,l=o.name,c=o.options,u=a.elements.arrow,f=a.modifiersData.popperOffsets,d=j(a.placement),p=V(d),h=[i,n].indexOf(d)>=0?"height":"width";if(u&&f){var m=function(t,e){return U("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:K(t,r))}(c.padding,a),g=F(u),v="y"===p?t:i,b="y"===p?e:n,y=a.rects.reference[h]+a.rects.reference[p]-f[p]-a.rects.popper[h],_=f[p]-a.rects.reference[p],w=q(u),E=w?"y"===p?w.clientHeight||0:w.clientWidth||0:0,x=y/2-_/2,O=m[v],A=E-g[h]-m[b],C=E/2-g[h]/2+x,T=Y(O,C,A),L=p;a.modifiersData[l]=((s={})[L]=T,s.centerOffset=T-C,s)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&I(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function X(t){return t.split("-")[1]}var G={top:"auto",right:"auto",bottom:"auto",left:"auto"};function J(o){var r,s=o.popper,l=o.popperRect,c=o.placement,u=o.variation,f=o.offsets,d=o.position,p=o.gpuAcceleration,h=o.adaptive,m=o.roundOffsets,g=o.isFixed,v=f.x,b=void 0===v?0:v,y=f.y,_=void 0===y?0:y,w="function"==typeof m?m({x:b,y:_}):{x:b,y:_};b=w.x,_=w.y;var E=f.hasOwnProperty("x"),x=f.hasOwnProperty("y"),O=i,C=t,T=window;if(h){var L=q(s),S="clientHeight",j="clientWidth";if(L===A(s)&&"static"!==H(L=z(s)).position&&"absolute"===d&&(S="scrollHeight",j="scrollWidth"),c===t||(c===i||c===n)&&u===a)C=e,_-=(g&&L===T&&T.visualViewport?T.visualViewport.height:L[S])-l.height,_*=p?1:-1;if(c===i||(c===t||c===e)&&u===a)O=n,b-=(g&&L===T&&T.visualViewport?T.visualViewport.width:L[j])-l.width,b*=p?1:-1}var k,D=Object.assign({position:d},h&&G),M=!0===m?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:P(n*o)/o||0,y:P(i*o)/o||0}}({x:b,y:_},A(s)):{x:b,y:_};return b=M.x,_=M.y,p?Object.assign({},D,((k={})[C]=x?"0":"",k[O]=E?"0":"",k.transform=(T.devicePixelRatio||1)<=1?"translate("+b+"px, "+_+"px)":"translate3d("+b+"px, "+_+"px, 0)",k)):Object.assign({},D,((r={})[C]=x?_+"px":"",r[O]=E?b+"px":"",r.transform="",r))}var Z={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:j(e.placement),variation:X(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,J(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,J(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},tt={passive:!0};var et={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=A(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,tt)})),a&&l.addEventListener("resize",n.update,tt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,tt)})),a&&l.removeEventListener("resize",n.update,tt)}},data:{}},nt={left:"right",right:"left",bottom:"top",top:"bottom"};function it(t){return t.replace(/left|right|bottom|top/g,(function(t){return nt[t]}))}var ot={start:"end",end:"start"};function rt(t){return t.replace(/start|end/g,(function(t){return ot[t]}))}function st(t){var e=A(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function at(t){return B(z(t)).left+st(t).scrollLeft}function lt(t){var e=H(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ct(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:T(t)&<(t)?t:ct(W(t))}function ut(t,e){var n;void 0===e&&(e=[]);var i=ct(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=A(i),s=o?[r].concat(r.visualViewport||[],lt(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(ut(W(s)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function dt(t,e,n){return e===c?ft(function(t,e){var n=A(t),i=z(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=N();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+at(t),y:l}}(t,n)):C(e)?function(t,e){var n=B(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ft(function(t){var e,n=z(t),i=st(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=k(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=k(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+at(t),l=-i.scrollTop;return"rtl"===H(o||n).direction&&(a+=k(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(z(t)))}function pt(t,e,n,i){var o="clippingParents"===e?function(t){var e=ut(W(t)),n=["absolute","fixed"].indexOf(H(t).position)>=0&&T(t)?q(t):t;return C(n)?e.filter((function(t){return C(t)&&I(t,n)&&"body"!==O(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=dt(t,n,i);return e.top=k(o.top,e.top),e.right=D(o.right,e.right),e.bottom=D(o.bottom,e.bottom),e.left=k(o.left,e.left),e}),dt(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ht(o){var r,l=o.reference,c=o.element,u=o.placement,f=u?j(u):null,d=u?X(u):null,p=l.x+l.width/2-c.width/2,h=l.y+l.height/2-c.height/2;switch(f){case t:r={x:p,y:l.y-c.height};break;case e:r={x:p,y:l.y+l.height};break;case n:r={x:l.x+l.width,y:h};break;case i:r={x:l.x-c.width,y:h};break;default:r={x:l.x,y:l.y}}var m=f?V(f):null;if(null!=m){var g="y"===m?"height":"width";switch(d){case s:r[m]=r[m]-(l[g]/2-c[g]/2);break;case a:r[m]=r[m]+(l[g]/2-c[g]/2)}}return r}function mt(i,o){void 0===o&&(o={});var s=o,a=s.placement,d=void 0===a?i.placement:a,p=s.strategy,h=void 0===p?i.strategy:p,m=s.boundary,g=void 0===m?l:m,v=s.rootBoundary,b=void 0===v?c:v,y=s.elementContext,_=void 0===y?u:y,w=s.altBoundary,E=void 0!==w&&w,x=s.padding,O=void 0===x?0:x,A=U("number"!=typeof O?O:K(O,r)),T=_===u?f:u,L=i.rects.popper,S=i.elements[E?T:_],j=pt(C(S)?S:S.contextElement||z(i.elements.popper),g,b,h),k=B(i.elements.reference),D=ht({reference:k,element:L,strategy:"absolute",placement:d}),P=ft(Object.assign({},L,D)),M=_===u?P:k,N={top:j.top-M.top+A.top,bottom:M.bottom-j.bottom+A.bottom,left:j.left-M.left+A.left,right:M.right-j.right+A.right},F=i.modifiersData.offset;if(_===u&&F){var I=F[d];Object.keys(N).forEach((function(i){var o=[n,e].indexOf(i)>=0?1:-1,r=[t,e].indexOf(i)>=0?"y":"x";N[i]+=I[r]*o}))}return N}function gt(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,l=n.flipVariations,c=n.allowedAutoPlacements,u=void 0===c?p:c,f=X(i),h=f?l?d:d.filter((function(t){return X(t)===f})):r,m=h.filter((function(t){return u.indexOf(t)>=0}));0===m.length&&(m=h);var g=m.reduce((function(e,n){return e[n]=mt(t,{placement:n,boundary:o,rootBoundary:s,padding:a})[j(n)],e}),{});return Object.keys(g).sort((function(t,e){return g[t]-g[e]}))}var vt={name:"flip",enabled:!0,phase:"main",fn:function(r){var a=r.state,l=r.options,c=r.name;if(!a.modifiersData[c]._skip){for(var u=l.mainAxis,f=void 0===u||u,d=l.altAxis,p=void 0===d||d,h=l.fallbackPlacements,m=l.padding,g=l.boundary,v=l.rootBoundary,b=l.altBoundary,y=l.flipVariations,_=void 0===y||y,w=l.allowedAutoPlacements,E=a.options.placement,x=j(E),O=h||(x===E||!_?[it(E)]:function(t){if(j(t)===o)return[];var e=it(t);return[rt(t),e,rt(e)]}(E)),A=[E].concat(O).reduce((function(t,e){return t.concat(j(e)===o?gt(a,{placement:e,boundary:g,rootBoundary:v,padding:m,flipVariations:_,allowedAutoPlacements:w}):e)}),[]),C=a.rects.reference,T=a.rects.popper,L=new Map,S=!0,k=A[0],D=0;D=0,F=B?"width":"height",I=mt(a,{placement:P,boundary:g,rootBoundary:v,altBoundary:b,padding:m}),H=B?N?n:i:N?e:t;C[F]>T[F]&&(H=it(H));var $=it(H),z=[];if(f&&z.push(I[M]<=0),p&&z.push(I[H]<=0,I[$]<=0),z.every((function(t){return t}))){k=P,S=!1;break}L.set(P,z)}if(S)for(var W=function(t){var e=A.find((function(e){var n=L.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return k=e,"break"},R=_?3:1;R>0;R--){if("break"===W(R))break}a.placement!==k&&(a.modifiersData[c]._skip=!0,a.placement=k,a.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function yt(o){return[t,n,e,i].some((function(t){return o[t]>=0}))}var _t={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=mt(e,{elementContext:"reference"}),a=mt(e,{altBoundary:!0}),l=bt(s,i),c=bt(a,o,r),u=yt(l),f=yt(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var o=e.state,r=e.options,s=e.name,a=r.offset,l=void 0===a?[0,0]:a,c=p.reduce((function(e,r){return e[r]=function(e,o,r){var s=j(e),a=[i,t].indexOf(s)>=0?-1:1,l="function"==typeof r?r(Object.assign({},o,{placement:e})):r,c=l[0],u=l[1];return c=c||0,u=(u||0)*a,[i,n].indexOf(s)>=0?{x:u,y:c}:{x:c,y:u}}(r,o.rects,l),e}),{}),u=c[o.placement],f=u.x,d=u.y;null!=o.modifiersData.popperOffsets&&(o.modifiersData.popperOffsets.x+=f,o.modifiersData.popperOffsets.y+=d),o.modifiersData[s]=c}};var Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ht({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var xt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(o){var r=o.state,a=o.options,l=o.name,c=a.mainAxis,u=void 0===c||c,f=a.altAxis,d=void 0!==f&&f,p=a.boundary,h=a.rootBoundary,m=a.altBoundary,g=a.padding,v=a.tether,b=void 0===v||v,y=a.tetherOffset,_=void 0===y?0:y,w=mt(r,{boundary:p,rootBoundary:h,padding:g,altBoundary:m}),E=j(r.placement),x=X(r.placement),O=!x,A=V(E),C="x"===A?"y":"x",T=r.modifiersData.popperOffsets,L=r.rects.reference,S=r.rects.popper,P="function"==typeof _?_(Object.assign({},r.rects,{placement:r.placement})):_,M="number"==typeof P?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),N=r.modifiersData.offset?r.modifiersData.offset[r.placement]:null,B={x:0,y:0};if(T){if(u){var I,H="y"===A?t:i,$="y"===A?e:n,z="y"===A?"height":"width",W=T[A],R=W+w[H],U=W-w[$],K=b?-S[z]/2:0,Q=x===s?L[z]:S[z],G=x===s?-S[z]:-L[z],J=r.elements.arrow,Z=b&&J?F(J):{width:0,height:0},tt=r.modifiersData["arrow#persistent"]?r.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[H],nt=tt[$],it=Y(0,L[z],Z[z]),ot=O?L[z]/2-K-it-et-M.mainAxis:Q-it-et-M.mainAxis,rt=O?-L[z]/2+K+it+nt+M.mainAxis:G+it+nt+M.mainAxis,st=r.elements.arrow&&q(r.elements.arrow),at=st?"y"===A?st.clientTop||0:st.clientLeft||0:0,lt=null!=(I=null==N?void 0:N[A])?I:0,ct=W+rt-lt,ut=Y(b?D(R,W+ot-lt-at):R,W,b?k(U,ct):U);T[A]=ut,B[A]=ut-W}if(d){var ft,dt="x"===A?t:i,pt="x"===A?e:n,ht=T[C],gt="y"===C?"height":"width",vt=ht+w[dt],bt=ht-w[pt],yt=-1!==[t,i].indexOf(E),_t=null!=(ft=null==N?void 0:N[C])?ft:0,wt=yt?vt:ht-L[gt]-S[gt]-_t+M.altAxis,Et=yt?ht+L[gt]+S[gt]-_t-M.altAxis:bt,xt=b&&yt?function(t,e,n){var i=Y(t,e,n);return i>n?n:i}(wt,ht,Et):Y(b?wt:vt,ht,b?Et:bt);T[C]=xt,B[C]=xt-ht}r.modifiersData[l]=B}},requiresIfExists:["offset"]};function Ot(t,e,n){void 0===n&&(n=!1);var i,o,r=T(e),s=T(e)&&function(t){var e=t.getBoundingClientRect(),n=P(e.width)/t.offsetWidth||1,i=P(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=z(e),l=B(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==O(e)||lt(a))&&(c=(i=e)!==A(i)&&T(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:st(i)),T(e)?((u=B(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=at(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function At(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Ct={placement:"bottom",modifiers:[],strategy:"absolute"};function Tt(){for(var t=arguments.length,e=new Array(t),n=0;nPt.has(t)&&Pt.get(t).get(e)||null,remove(t,e){if(!Pt.has(t))return;const n=Pt.get(t);n.delete(e),0===n.size&&Pt.delete(t)}};const Nt="transitionend",Bt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Ft=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),It=t=>Ft(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Bt(t)):null,Ht=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Ht(t.parentNode):null},$t=()=>{},zt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Wt=[],Rt=()=>"rtl"===document.documentElement.dir,qt=t=>{var e;e=()=>{const e=zt();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(Wt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Wt)t()})),Wt.push(e)):e()},Vt=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},Yt=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void Vt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let i=!1;const o=n=>{let{target:r}=n;r===e&&(i=!0,e.removeEventListener(Nt,o),Vt(t))};e.addEventListener(Nt,o),setTimeout((()=>{i||e.dispatchEvent(new Event(Nt))}),n)},Ut=/[^.]*(?=\..*)\.|.*/,Kt=/\..*/,Qt=/::\d+$/,Xt={};let Gt=1;const Jt={mouseenter:"mouseover",mouseleave:"mouseout"},Zt=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function te(t,e){return e&&`${e}::${Gt++}`||t.uidEvent||Gt++}function ee(t){const e=te(t);return t.uidEvent=e,Xt[e]=Xt[e]||{},Xt[e]}function ne(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function ie(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=ae(t);return Zt.has(r)||(r=t),[i,o,r]}function oe(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=ie(e,n,i);if(e in Jt){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=ee(t),c=l[a]||(l[a]={}),u=ne(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=te(s,e.replace(Ut,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return ce(o,{delegateTarget:s}),i.oneOff&&le.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return ce(i,{delegateTarget:t}),n.oneOff&&le.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function re(t,e,n,i,o){const r=ne(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function se(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&re(t,e,n,s.callable,s.delegationSelector)}function ae(t){return t=t.replace(Kt,""),Jt[t]||t}const le={on(t,e,n,i){oe(t,e,n,i,!1)},one(t,e,n,i){oe(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=ie(e,n,i),a=s!==e,l=ee(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))se(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(Qt,"");a&&!e.includes(o)||re(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;re(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=zt();let o=null,r=!0,s=!0,a=!1;e!==ae(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=ce(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function ce(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function ue(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function fe(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const de={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${fe(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${fe(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=ue(t.dataset[i])}return e},getDataAttribute:(t,e)=>ue(t.getAttribute(`data-bs-${fe(e)}`))};class pe{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=Ft(e)?de.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...Ft(e)?de.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,o]of Object.entries(e)){const e=t[i],r=Ft(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${o}".`)}var n}}class he extends pe{constructor(t,e){super(),(t=It(t))&&(this._element=t,this._config=this._getConfig(e),Mt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Mt.remove(this._element,this.constructor.DATA_KEY),le.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){Yt(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Mt.get(It(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const me={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},ge=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),ve=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,be=(t,e)=>{const n=t.nodeName.toLowerCase();return e.includes(n)?!ge.has(n)||Boolean(ve.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const ye=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>Bt(t))).join(","):null},_e={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!Ft(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=ye(t);return e&&_e.findOne(e)?e:null},getElementFromSelector(t){const e=ye(t);return e?_e.findOne(e):null},getMultipleElementsFromSelector(t){const e=ye(t);return e?_e.find(e):[]}},we={allowList:me,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Ee={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},xe={entry:"(string|element|function|null)",selector:"(string|element)"};class Oe extends pe{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return we}static get DefaultType(){return Ee}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},xe)}_setContent(t,e,n){const i=_e.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?Ft(e)?this._putElementInTemplate(It(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)be(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Vt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ae=new Set(["sanitize","allowList","sanitizeFn"]),Ce="fade",Te="show",Le=".tooltip-inner",Se=".modal",je="hide.bs.modal",ke="hover",De="focus",Pe={AUTO:"auto",TOP:"top",RIGHT:Rt()?"left":"right",BOTTOM:"bottom",LEFT:Rt()?"right":"left"},Me={allowList:me,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ne={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Be extends he{constructor(t,e){if(void 0===Dt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Me}static get DefaultType(){return Ne}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),le.off(this._element.closest(Se),je,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=le.trigger(this._element,this.constructor.eventName("show")),e=(Ht(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),le.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Te),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))le.on(t,"mouseover",$t);this._queueCallback((()=>{le.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(le.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Te),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))le.off(t,"mouseover",$t);this._activeTrigger.click=!1,this._activeTrigger[De]=!1,this._activeTrigger[ke]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),le.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ce,Te),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ce),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Oe({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Le]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ce)}_isShown(){return this.tip&&this.tip.classList.contains(Te)}_createPopper(t){const e=Vt(this._config.placement,[this,t,this._element]),n=Pe[e.toUpperCase()];return kt(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Vt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Vt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)le.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ke?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===ke?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");le.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?De:ke]=!0,e._enter()})),le.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?De:ke]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},le.on(this._element.closest(Se),je,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=de.getDataAttributes(this._element);for(const t of Object.keys(e))Ae.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:It(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Be.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}qt(Be);const Fe=document.getElementById("mode-toggle");function Ie(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const He="sidebar-display";class $e{static toggle(){!1===$e.isExpanded?document.body.setAttribute(He,""):document.body.removeAttribute(He),$e.isExpanded=!$e.isExpanded}}Ie($e,"isExpanded",!1);const ze=document.getElementById("sidebar-trigger"),We=document.getElementById("search-trigger"),Re=document.getElementById("search-cancel"),qe=document.querySelectorAll("#main-wrapper>.container>.row"),Ve=document.getElementById("topbar-title"),Ye=document.getElementById("search"),Ue=document.getElementById("search-result-wrapper"),Ke=document.getElementById("search-results"),Qe=document.getElementById("search-input"),Xe=document.getElementById("search-hints"),Ge="d-block",Je="d-none",Ze="input-focus",tn="d-flex";class en{static on(){ze.classList.add(Je),Ve.classList.add(Je),We.classList.add(Je),Ye.classList.add(tn),Re.classList.add(Ge)}static off(){Re.classList.remove(Ge),Ye.classList.remove(tn),ze.classList.remove(Je),Ve.classList.remove(Je),We.classList.remove(Je)}}class nn{static on(){this.resultVisible||(Ue.classList.remove(Je),qe.forEach((t=>{t.classList.add(Je)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Ke.innerHTML="",Xe.classList.contains(Je)&&Xe.classList.remove(Je),Ue.classList.add(Je),qe.forEach((t=>{t.classList.remove(Je)})),Qe.textContent="",this.resultVisible=!1)}}function on(){return Re.classList.contains(Ge)}Ie(nn,"resultVisible",!1);const rn=".bs.collapse",sn=`show${rn}`,an=`shown${rn}`,ln=`hide${rn}`,cn=`hidden${rn}`,un=`click${rn}.data-api`,fn="show",dn="collapse",pn="collapsing",hn=`:scope .${dn} .${dn}`,mn='[data-bs-toggle="collapse"]',gn={parent:null,toggle:!0},vn={parent:"(null|element)",toggle:"boolean"};class bn extends he{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=_e.find(mn);for(const t of n){const e=_e.getSelectorFromElement(t),n=_e.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return gn}static get DefaultType(){return vn}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>bn.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(le.trigger(this._element,sn).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(dn),this._element.classList.add(pn),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn,fn),this._element.style[e]="",le.trigger(this._element,an)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(le.trigger(this._element,ln).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(pn),this._element.classList.remove(dn,fn);for(const t of this._triggerArray){const e=_e.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn),le.trigger(this._element,cn)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(fn)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=It(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(mn);for(const e of t){const t=_e.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=_e.find(hn,this._config.parent);return _e.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=bn.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}le.on(document,un,mn,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of _e.getMultipleElementsFromSelector(this))bn.getOrCreateInstance(t,{toggle:!1}).toggle()})),qt(bn),document.getElementsByClassName("collapse");class yn{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var _n;const wn=document.getElementById("toc-bar"),En=document.getElementById("toc-solo-trigger"),xn=document.getElementsByClassName("toc-trigger"),On=document.getElementById("toc-popup"),An=document.getElementById("toc-popup-close"),Cn="overflow-hidden",Tn="closing";class Ln{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{wn.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${this.barHeight}px 0px 0px 0px`}).observe(En),this.invisible=!1}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=this.hidePopup}))}static refresh(){this.invisible&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static showPopup(){Ln.lockScroll(!0),On.showModal();On.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(t){"cancel"===t?.type&&t.preventDefault(),On.open&&(On.toggleAttribute(Tn),On.addEventListener("animationend",(()=>{On.toggleAttribute(Tn),On.close()}),{once:!0}),Ln.lockScroll(!1))}static lockScroll(t){document.documentElement.classList.toggle(Cn,t),document.body.classList.toggle(Cn,t)}static clickBackdrop(t){const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&Ln.hidePopup()}static initComponents(){this.initBar(),[...xn].forEach((t=>{t.onclick=this.showPopup})),On.onclick=this.clickBackdrop,An.onclick=On.oncancel=this.hidePopup}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}_n=Ln,Ie(Ln,"invisible",!0),Ie(Ln,"barHeight",48),Ie(Ln,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:_n.barHeight});Ie(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Fe&&Fe.addEventListener("click",(()=>{modeToggle.flipMode()})),document.getElementById("sidebar-trigger").addEventListener("click",$e.toggle),document.getElementById("mask").addEventListener("click",$e.toggle),We.addEventListener("click",(()=>{en.on(),nn.on(),Qe.focus()})),Re.addEventListener("click",(()=>{en.off(),nn.off()})),Qe.addEventListener("focus",(()=>{Ye.classList.add(Ze)})),Qe.addEventListener("focusout",(()=>{Ye.classList.remove(Ze)})),Qe.addEventListener("input",(()=>{""===Qe.value?on()?Xe.classList.remove(Je):nn.off():(nn.on(),on()&&Xe.classList.add(Je))})),dayjs.locale(yn.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${yn.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(yn.getTimestamp(t)),n=e.format(yn.getDateFormat(t));if(t.textContent=n,t.removeAttribute(yn.attrTimestamp),t.removeAttribute(yn.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Be(t)))}(); diff --git a/assets/js/dist/page.min.js b/assets/js/dist/page.min.js new file mode 100644 index 00000000000..4ffd2d95817 --- /dev/null +++ b/assets/js/dist/page.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";var e="top",t="bottom",n="right",i="left",o="auto",r=[e,t,n,i],s="start",a="end",l="clippingParents",c="viewport",u="popper",f="reference",d=r.reduce((function(e,t){return e.concat([t+"-"+s,t+"-"+a])}),[]),p=[].concat(r,[o]).reduce((function(e,t){return e.concat([t,t+"-"+s,t+"-"+a])}),[]),h="beforeRead",g="read",m="afterRead",b="beforeMain",v="main",y="afterMain",_="beforeWrite",w="write",E="afterWrite",A=[h,g,m,b,v,y,_,w,E];function x(e){return e?(e.nodeName||"").toLowerCase():null}function O(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function C(e){return e instanceof O(e).Element||e instanceof Element}function L(e){return e instanceof O(e).HTMLElement||e instanceof HTMLElement}function T(e){return"undefined"!=typeof ShadowRoot&&(e instanceof O(e).ShadowRoot||e instanceof ShadowRoot)}var S={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];L(o)&&x(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});L(i)&&x(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function k(e){return e.split("-")[0]}var j=Math.max,D=Math.min,P=Math.round;function M(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function N(){return!/^((?!chrome|android).)*safari/i.test(M())}function B(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&L(e)&&(o=e.offsetWidth>0&&P(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&P(i.height)/e.offsetHeight||1);var s=(C(e)?O(e):window).visualViewport,a=!N()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function I(e){var t=B(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function F(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&T(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function H(e){return O(e).getComputedStyle(e)}function $(e){return["table","td","th"].indexOf(x(e))>=0}function q(e){return((C(e)?e.ownerDocument:e.document)||window.document).documentElement}function z(e){return"html"===x(e)?e:e.assignedSlot||e.parentNode||(T(e)?e.host:null)||q(e)}function W(e){return L(e)&&"fixed"!==H(e).position?e.offsetParent:null}function R(e){for(var t=O(e),n=W(e);n&&$(n)&&"static"===H(n).position;)n=W(n);return n&&("html"===x(n)||"body"===x(n)&&"static"===H(n).position)?t:n||function(e){var t=/firefox/i.test(M());if(/Trident/i.test(M())&&L(e)&&"fixed"===H(e).position)return null;var n=z(e);for(T(n)&&(n=n.host);L(n)&&["html","body"].indexOf(x(n))<0;){var i=H(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function V(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Y(e,t,n){return j(e,D(t,n))}function U(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function K(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Q={name:"arrow",enabled:!0,phase:"main",fn:function(o){var s,a=o.state,l=o.name,c=o.options,u=a.elements.arrow,f=a.modifiersData.popperOffsets,d=k(a.placement),p=V(d),h=[i,n].indexOf(d)>=0?"height":"width";if(u&&f){var g=function(e,t){return U("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:K(e,r))}(c.padding,a),m=I(u),b="y"===p?e:i,v="y"===p?t:n,y=a.rects.reference[h]+a.rects.reference[p]-f[p]-a.rects.popper[h],_=f[p]-a.rects.reference[p],w=R(u),E=w?"y"===p?w.clientHeight||0:w.clientWidth||0:0,A=y/2-_/2,x=g[b],O=E-m[h]-g[v],C=E/2-m[h]/2+A,L=Y(x,C,O),T=p;a.modifiersData[l]=((s={})[T]=L,s.centerOffset=L-C,s)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&F(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function G(e){return e.split("-")[1]}var X={top:"auto",right:"auto",bottom:"auto",left:"auto"};function J(o){var r,s=o.popper,l=o.popperRect,c=o.placement,u=o.variation,f=o.offsets,d=o.position,p=o.gpuAcceleration,h=o.adaptive,g=o.roundOffsets,m=o.isFixed,b=f.x,v=void 0===b?0:b,y=f.y,_=void 0===y?0:y,w="function"==typeof g?g({x:v,y:_}):{x:v,y:_};v=w.x,_=w.y;var E=f.hasOwnProperty("x"),A=f.hasOwnProperty("y"),x=i,C=e,L=window;if(h){var T=R(s),S="clientHeight",k="clientWidth";if(T===O(s)&&"static"!==H(T=q(s)).position&&"absolute"===d&&(S="scrollHeight",k="scrollWidth"),c===e||(c===i||c===n)&&u===a)C=t,_-=(m&&T===L&&L.visualViewport?L.visualViewport.height:T[S])-l.height,_*=p?1:-1;if(c===i||(c===e||c===t)&&u===a)x=n,v-=(m&&T===L&&L.visualViewport?L.visualViewport.width:T[k])-l.width,v*=p?1:-1}var j,D=Object.assign({position:d},h&&X),M=!0===g?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:P(n*o)/o||0,y:P(i*o)/o||0}}({x:v,y:_},O(s)):{x:v,y:_};return v=M.x,_=M.y,p?Object.assign({},D,((j={})[C]=A?"0":"",j[x]=E?"0":"",j.transform=(L.devicePixelRatio||1)<=1?"translate("+v+"px, "+_+"px)":"translate3d("+v+"px, "+_+"px, 0)",j)):Object.assign({},D,((r={})[C]=A?_+"px":"",r[x]=E?v+"px":"",r.transform="",r))}var Z={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:k(t.placement),variation:G(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,J(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,J(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},ee={passive:!0};var te={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=O(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,ee)})),a&&l.addEventListener("resize",n.update,ee),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,ee)})),a&&l.removeEventListener("resize",n.update,ee)}},data:{}},ne={left:"right",right:"left",bottom:"top",top:"bottom"};function ie(e){return e.replace(/left|right|bottom|top/g,(function(e){return ne[e]}))}var oe={start:"end",end:"start"};function re(e){return e.replace(/start|end/g,(function(e){return oe[e]}))}function se(e){var t=O(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function ae(e){return B(q(e)).left+se(e).scrollLeft}function le(e){var t=H(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ce(e){return["html","body","#document"].indexOf(x(e))>=0?e.ownerDocument.body:L(e)&&le(e)?e:ce(z(e))}function ue(e,t){var n;void 0===t&&(t=[]);var i=ce(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=O(i),s=o?[r].concat(r.visualViewport||[],le(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ue(z(s)))}function fe(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function de(e,t,n){return t===c?fe(function(e,t){var n=O(e),i=q(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=N();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+ae(e),y:l}}(e,n)):C(t)?function(e,t){var n=B(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):fe(function(e){var t,n=q(e),i=se(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=j(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=j(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ae(e),l=-i.scrollTop;return"rtl"===H(o||n).direction&&(a+=j(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(q(e)))}function pe(e,t,n,i){var o="clippingParents"===t?function(e){var t=ue(z(e)),n=["absolute","fixed"].indexOf(H(e).position)>=0&&L(e)?R(e):e;return C(n)?t.filter((function(e){return C(e)&&F(e,n)&&"body"!==x(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=de(e,n,i);return t.top=j(o.top,t.top),t.right=D(o.right,t.right),t.bottom=D(o.bottom,t.bottom),t.left=j(o.left,t.left),t}),de(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function he(o){var r,l=o.reference,c=o.element,u=o.placement,f=u?k(u):null,d=u?G(u):null,p=l.x+l.width/2-c.width/2,h=l.y+l.height/2-c.height/2;switch(f){case e:r={x:p,y:l.y-c.height};break;case t:r={x:p,y:l.y+l.height};break;case n:r={x:l.x+l.width,y:h};break;case i:r={x:l.x-c.width,y:h};break;default:r={x:l.x,y:l.y}}var g=f?V(f):null;if(null!=g){var m="y"===g?"height":"width";switch(d){case s:r[g]=r[g]-(l[m]/2-c[m]/2);break;case a:r[g]=r[g]+(l[m]/2-c[m]/2)}}return r}function ge(i,o){void 0===o&&(o={});var s=o,a=s.placement,d=void 0===a?i.placement:a,p=s.strategy,h=void 0===p?i.strategy:p,g=s.boundary,m=void 0===g?l:g,b=s.rootBoundary,v=void 0===b?c:b,y=s.elementContext,_=void 0===y?u:y,w=s.altBoundary,E=void 0!==w&&w,A=s.padding,x=void 0===A?0:A,O=U("number"!=typeof x?x:K(x,r)),L=_===u?f:u,T=i.rects.popper,S=i.elements[E?L:_],k=pe(C(S)?S:S.contextElement||q(i.elements.popper),m,v,h),j=B(i.elements.reference),D=he({reference:j,element:T,strategy:"absolute",placement:d}),P=fe(Object.assign({},T,D)),M=_===u?P:j,N={top:k.top-M.top+O.top,bottom:M.bottom-k.bottom+O.bottom,left:k.left-M.left+O.left,right:M.right-k.right+O.right},I=i.modifiersData.offset;if(_===u&&I){var F=I[d];Object.keys(N).forEach((function(i){var o=[n,t].indexOf(i)>=0?1:-1,r=[e,t].indexOf(i)>=0?"y":"x";N[i]+=F[r]*o}))}return N}function me(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,l=n.flipVariations,c=n.allowedAutoPlacements,u=void 0===c?p:c,f=G(i),h=f?l?d:d.filter((function(e){return G(e)===f})):r,g=h.filter((function(e){return u.indexOf(e)>=0}));0===g.length&&(g=h);var m=g.reduce((function(t,n){return t[n]=ge(e,{placement:n,boundary:o,rootBoundary:s,padding:a})[k(n)],t}),{});return Object.keys(m).sort((function(e,t){return m[e]-m[t]}))}var be={name:"flip",enabled:!0,phase:"main",fn:function(r){var a=r.state,l=r.options,c=r.name;if(!a.modifiersData[c]._skip){for(var u=l.mainAxis,f=void 0===u||u,d=l.altAxis,p=void 0===d||d,h=l.fallbackPlacements,g=l.padding,m=l.boundary,b=l.rootBoundary,v=l.altBoundary,y=l.flipVariations,_=void 0===y||y,w=l.allowedAutoPlacements,E=a.options.placement,A=k(E),x=h||(A===E||!_?[ie(E)]:function(e){if(k(e)===o)return[];var t=ie(e);return[re(e),t,re(t)]}(E)),O=[E].concat(x).reduce((function(e,t){return e.concat(k(t)===o?me(a,{placement:t,boundary:m,rootBoundary:b,padding:g,flipVariations:_,allowedAutoPlacements:w}):t)}),[]),C=a.rects.reference,L=a.rects.popper,T=new Map,S=!0,j=O[0],D=0;D=0,I=B?"width":"height",F=ge(a,{placement:P,boundary:m,rootBoundary:b,altBoundary:v,padding:g}),H=B?N?n:i:N?t:e;C[I]>L[I]&&(H=ie(H));var $=ie(H),q=[];if(f&&q.push(F[M]<=0),p&&q.push(F[H]<=0,F[$]<=0),q.every((function(e){return e}))){j=P,S=!1;break}T.set(P,q)}if(S)for(var z=function(e){var t=O.find((function(t){var n=T.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return j=t,"break"},W=_?3:1;W>0;W--){if("break"===z(W))break}a.placement!==j&&(a.modifiersData[c]._skip=!0,a.placement=j,a.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(o){return[e,n,t,i].some((function(e){return o[e]>=0}))}var _e={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=ge(t,{elementContext:"reference"}),a=ge(t,{altBoundary:!0}),l=ve(s,i),c=ve(a,o,r),u=ye(l),f=ye(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var we={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var o=t.state,r=t.options,s=t.name,a=r.offset,l=void 0===a?[0,0]:a,c=p.reduce((function(t,r){return t[r]=function(t,o,r){var s=k(t),a=[i,e].indexOf(s)>=0?-1:1,l="function"==typeof r?r(Object.assign({},o,{placement:t})):r,c=l[0],u=l[1];return c=c||0,u=(u||0)*a,[i,n].indexOf(s)>=0?{x:u,y:c}:{x:c,y:u}}(r,o.rects,l),t}),{}),u=c[o.placement],f=u.x,d=u.y;null!=o.modifiersData.popperOffsets&&(o.modifiersData.popperOffsets.x+=f,o.modifiersData.popperOffsets.y+=d),o.modifiersData[s]=c}};var Ee={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=he({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var Ae={name:"preventOverflow",enabled:!0,phase:"main",fn:function(o){var r=o.state,a=o.options,l=o.name,c=a.mainAxis,u=void 0===c||c,f=a.altAxis,d=void 0!==f&&f,p=a.boundary,h=a.rootBoundary,g=a.altBoundary,m=a.padding,b=a.tether,v=void 0===b||b,y=a.tetherOffset,_=void 0===y?0:y,w=ge(r,{boundary:p,rootBoundary:h,padding:m,altBoundary:g}),E=k(r.placement),A=G(r.placement),x=!A,O=V(E),C="x"===O?"y":"x",L=r.modifiersData.popperOffsets,T=r.rects.reference,S=r.rects.popper,P="function"==typeof _?_(Object.assign({},r.rects,{placement:r.placement})):_,M="number"==typeof P?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),N=r.modifiersData.offset?r.modifiersData.offset[r.placement]:null,B={x:0,y:0};if(L){if(u){var F,H="y"===O?e:i,$="y"===O?t:n,q="y"===O?"height":"width",z=L[O],W=z+w[H],U=z-w[$],K=v?-S[q]/2:0,Q=A===s?T[q]:S[q],X=A===s?-S[q]:-T[q],J=r.elements.arrow,Z=v&&J?I(J):{width:0,height:0},ee=r.modifiersData["arrow#persistent"]?r.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[H],ne=ee[$],ie=Y(0,T[q],Z[q]),oe=x?T[q]/2-K-ie-te-M.mainAxis:Q-ie-te-M.mainAxis,re=x?-T[q]/2+K+ie+ne+M.mainAxis:X+ie+ne+M.mainAxis,se=r.elements.arrow&&R(r.elements.arrow),ae=se?"y"===O?se.clientTop||0:se.clientLeft||0:0,le=null!=(F=null==N?void 0:N[O])?F:0,ce=z+re-le,ue=Y(v?D(W,z+oe-le-ae):W,z,v?j(U,ce):U);L[O]=ue,B[O]=ue-z}if(d){var fe,de="x"===O?e:i,pe="x"===O?t:n,he=L[C],me="y"===C?"height":"width",be=he+w[de],ve=he-w[pe],ye=-1!==[e,i].indexOf(E),_e=null!=(fe=null==N?void 0:N[C])?fe:0,we=ye?be:he-T[me]-S[me]-_e+M.altAxis,Ee=ye?he+T[me]+S[me]-_e-M.altAxis:ve,Ae=v&&ye?function(e,t,n){var i=Y(e,t,n);return i>n?n:i}(we,he,Ee):Y(v?we:be,he,v?Ee:ve);L[C]=Ae,B[C]=Ae-he}r.modifiersData[l]=B}},requiresIfExists:["offset"]};function xe(e,t,n){void 0===n&&(n=!1);var i,o,r=L(t),s=L(t)&&function(e){var t=e.getBoundingClientRect(),n=P(t.width)/e.offsetWidth||1,i=P(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=q(t),l=B(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==x(t)||le(a))&&(c=(i=t)!==O(i)&&L(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:se(i)),L(t)?((u=B(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=ae(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Oe(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var Ce={placement:"bottom",modifiers:[],strategy:"absolute"};function Le(){for(var e=arguments.length,t=new Array(e),n=0;nPe.has(e)&&Pe.get(e).get(t)||null,remove(e,t){if(!Pe.has(e))return;const n=Pe.get(e);n.delete(t),0===n.size&&Pe.delete(e)}};const Ne="transitionend",Be=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),Ie=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),Fe=e=>Ie(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(Be(e)):null,He=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?He(e.parentNode):null},$e=()=>{},qe=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,ze=[],We=()=>"rtl"===document.documentElement.dir,Re=e=>{var t;t=()=>{const t=qe();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(ze.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of ze)e()})),ze.push(t)):t()},Ve=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},Ye=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void Ve(e);const n=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let i=!1;const o=n=>{let{target:r}=n;r===t&&(i=!0,t.removeEventListener(Ne,o),Ve(e))};t.addEventListener(Ne,o),setTimeout((()=>{i||t.dispatchEvent(new Event(Ne))}),n)},Ue=/[^.]*(?=\..*)\.|.*/,Ke=/\..*/,Qe=/::\d+$/,Ge={};let Xe=1;const Je={mouseenter:"mouseover",mouseleave:"mouseout"},Ze=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function et(e,t){return t&&`${t}::${Xe++}`||e.uidEvent||Xe++}function tt(e){const t=et(e);return e.uidEvent=t,Ge[t]=Ge[t]||{},Ge[t]}function nt(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function it(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=at(e);return Ze.has(r)||(r=e),[i,o,r]}function ot(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=it(t,n,i);if(t in Je){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=tt(e),c=l[a]||(l[a]={}),u=nt(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=et(s,t.replace(Ue,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return ct(o,{delegateTarget:s}),i.oneOff&<.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return ct(i,{delegateTarget:e}),n.oneOff&<.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,e.addEventListener(a,d,r)}function rt(e,t,n,i,o){const r=nt(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function st(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&rt(e,t,n,s.callable,s.delegationSelector)}function at(e){return e=e.replace(Ke,""),Je[e]||e}const lt={on(e,t,n,i){ot(e,t,n,i,!1)},one(e,t,n,i){ot(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=it(t,n,i),a=s!==t,l=tt(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))st(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(Qe,"");a&&!t.includes(o)||rt(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;rt(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=qe();let o=null,r=!0,s=!0,a=!1;t!==at(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=ct(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function ct(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function ut(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function ft(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const dt={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${ft(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${ft(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=ut(e.dataset[i])}return t},getDataAttribute:(e,t)=>ut(e.getAttribute(`data-bs-${ft(t)}`))};class pt{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=Ie(t)?dt.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...Ie(t)?dt.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,o]of Object.entries(t)){const t=e[i],r=Ie(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${o}".`)}var n}}class ht extends pt{constructor(e,t){super(),(e=Fe(e))&&(this._element=e,this._config=this._getConfig(t),Me.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Me.remove(this._element,this.constructor.DATA_KEY),lt.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){Ye(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Me.get(Fe(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const gt={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},mt=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),bt=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,vt=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!mt.has(n)||Boolean(bt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const yt=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>Be(e))).join(","):null},_t={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!Ie(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=yt(e);return t&&_t.findOne(t)?t:null},getElementFromSelector(e){const t=yt(e);return t?_t.findOne(t):null},getMultipleElementsFromSelector(e){const t=yt(e);return t?_t.find(t):[]}},wt={allowList:gt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Et={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},At={entry:"(string|element|function|null)",selector:"(string|element)"};class xt extends pt{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return wt}static get DefaultType(){return Et}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},At)}_setContent(e,t,n){const i=_t.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?Ie(t)?this._putElementInTemplate(Fe(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)vt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return Ve(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Ot=new Set(["sanitize","allowList","sanitizeFn"]),Ct="fade",Lt="show",Tt=".tooltip-inner",St=".modal",kt="hide.bs.modal",jt="hover",Dt="focus",Pt={AUTO:"auto",TOP:"top",RIGHT:We()?"left":"right",BOTTOM:"bottom",LEFT:We()?"right":"left"},Mt={allowList:gt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Nt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Bt extends ht{constructor(e,t){if(void 0===De)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Mt}static get DefaultType(){return Nt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),lt.off(this._element.closest(St),kt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=lt.trigger(this._element,this.constructor.eventName("show")),t=(He(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),lt.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Lt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))lt.on(e,"mouseover",$e);this._queueCallback((()=>{lt.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(lt.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Lt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))lt.off(e,"mouseover",$e);this._activeTrigger.click=!1,this._activeTrigger[Dt]=!1,this._activeTrigger[jt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),lt.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(Ct,Lt),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(Ct),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new xt({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Tt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ct)}_isShown(){return this.tip&&this.tip.classList.contains(Lt)}_createPopper(e){const t=Ve(this._config.placement,[this,e,this._element]),n=Pt[t.toUpperCase()];return je(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return Ve(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...Ve(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)lt.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===jt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===jt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");lt.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Dt:jt]=!0,t._enter()})),lt.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Dt:jt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},lt.on(this._element.closest(St),kt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=dt.getDataAttributes(this._element);for(const e of Object.keys(t))Ot.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:Fe(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Bt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}Re(Bt);const It=document.getElementById("mode-toggle");function Ft(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ht="sidebar-display";class $t{static toggle(){!1===$t.isExpanded?document.body.setAttribute(Ht,""):document.body.removeAttribute(Ht),$t.isExpanded=!$t.isExpanded}}Ft($t,"isExpanded",!1);const qt=document.getElementById("sidebar-trigger"),zt=document.getElementById("search-trigger"),Wt=document.getElementById("search-cancel"),Rt=document.querySelectorAll("#main-wrapper>.container>.row"),Vt=document.getElementById("topbar-title"),Yt=document.getElementById("search"),Ut=document.getElementById("search-result-wrapper"),Kt=document.getElementById("search-results"),Qt=document.getElementById("search-input"),Gt=document.getElementById("search-hints"),Xt="d-block",Jt="d-none",Zt="input-focus",en="d-flex";class tn{static on(){qt.classList.add(Jt),Vt.classList.add(Jt),zt.classList.add(Jt),Yt.classList.add(en),Wt.classList.add(Xt)}static off(){Wt.classList.remove(Xt),Yt.classList.remove(en),qt.classList.remove(Jt),Vt.classList.remove(Jt),zt.classList.remove(Jt)}}class nn{static on(){this.resultVisible||(Ut.classList.remove(Jt),Rt.forEach((e=>{e.classList.add(Jt)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Kt.innerHTML="",Gt.classList.contains(Jt)&&Gt.classList.remove(Jt),Ut.classList.add(Jt),Rt.forEach((e=>{e.classList.remove(Jt)})),Qt.textContent="",this.resultVisible=!1)}}function on(){return Wt.classList.contains(Xt)}Ft(nn,"resultVisible",!1);const rn=".bs.collapse",sn=`show${rn}`,an=`shown${rn}`,ln=`hide${rn}`,cn=`hidden${rn}`,un=`click${rn}.data-api`,fn="show",dn="collapse",pn="collapsing",hn=`:scope .${dn} .${dn}`,gn='[data-bs-toggle="collapse"]',mn={parent:null,toggle:!0},bn={parent:"(null|element)",toggle:"boolean"};class vn extends ht{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=_t.find(gn);for(const e of n){const t=_t.getSelectorFromElement(e),n=_t.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return mn}static get DefaultType(){return bn}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>vn.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(lt.trigger(this._element,sn).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(dn),this._element.classList.add(pn),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn,fn),this._element.style[t]="",lt.trigger(this._element,an)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(lt.trigger(this._element,ln).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(pn),this._element.classList.remove(dn,fn);for(const e of this._triggerArray){const t=_t.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn),lt.trigger(this._element,cn)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(fn)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=Fe(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(gn);for(const t of e){const e=_t.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=_t.find(hn,this._config.parent);return _t.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=vn.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}lt.on(document,un,gn,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of _t.getMultipleElementsFromSelector(this))vn.getOrCreateInstance(e,{toggle:!1}).toggle()})),Re(vn),document.getElementsByClassName("collapse");const yn=".code-header>button",_n="timeout",wn="data-title-succeed",En="data-bs-original-title",An=2e3;function xn(e){if(e.hasAttribute(_n)){let t=e.getAttribute(_n);if(Number(t)>Date.now())return!0}return!1}function On(e){e.setAttribute(_n,Date.now()+An)}function Cn(e){e.removeAttribute(_n)}function Ln(){const e=document.querySelectorAll(yn);if(0===e.length)return;const t=new ClipboardJS(yn,{target:e=>e.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...e].map((e=>new Bt(e,{placement:"left"}))),t.on("success",(e=>{const t=e.trigger;(e.clearSelection(),xn(t))||(t.children[0].setAttribute("class","fas fa-check"),function(e){const t=e.getAttribute(wn);e.setAttribute(En,t),Bt.getInstance(e).show()}(t),On(t),setTimeout((()=>{!function(e){Bt.getInstance(e).hide(),e.removeAttribute(En)}(t),function(e){e.children[0].setAttribute("class","far fa-clipboard")}(t),Cn(t)}),An))}))}const Tn="data-src",Sn="data-lqip",kn="shimmer",jn="blur";function Dn(e){this.parentElement.classList.remove(e)}function Pn(){this.complete&&(this.hasAttribute(Sn)?Dn.call(this,jn):Dn.call(this,kn))}function Mn(){const e=this.getAttribute(Tn);this.setAttribute("src",encodeURI(e)),this.removeAttribute(Tn)}const Nn=document.documentElement,Bn=".popup:not(.dark)",In=".popup:not(.light)";let Fn=Bn;var Hn;const $n=document.getElementById("toc-bar"),qn=document.getElementById("toc-solo-trigger"),zn=document.getElementsByClassName("toc-trigger"),Wn=document.getElementById("toc-popup"),Rn=document.getElementById("toc-popup-close"),Vn="overflow-hidden",Yn="closing";class Un{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{$n.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${this.barHeight}px 0px 0px 0px`}).observe(qn),this.invisible=!1}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=this.hidePopup}))}static refresh(){this.invisible&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static showPopup(){Un.lockScroll(!0),Wn.showModal();Wn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(e){"cancel"===e?.type&&e.preventDefault(),Wn.open&&(Wn.toggleAttribute(Yn),Wn.addEventListener("animationend",(()=>{Wn.toggleAttribute(Yn),Wn.close()}),{once:!0}),Un.lockScroll(!1))}static lockScroll(e){document.documentElement.classList.toggle(Vn,e),document.body.classList.toggle(Vn,e)}static clickBackdrop(e){const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&Un.hidePopup()}static initComponents(){this.initBar(),[...zn].forEach((e=>{e.onclick=this.showPopup})),Wn.onclick=this.clickBackdrop,Rn.onclick=Wn.oncancel=this.hidePopup}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}Hn=Un,Ft(Un,"invisible",!0),Ft(Un,"barHeight",48),Ft(Un,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Hn.barHeight});Ft(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),function(){const e=document.querySelectorAll("article img");if(0===e.length)return;e.forEach((e=>{e.addEventListener("load",Pn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((e=>{e.complete&&Dn.call(e,kn)}));const t=document.querySelectorAll(`article img[${Sn}="true"]`);t.length&&t.forEach((e=>{Mn.call(e)}))}(),function(){if(null===document.querySelector(".popup"))return;const e=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));(Nn.hasAttribute("data-mode")&&"dark"===Nn.getAttribute("data-mode")||!Nn.hasAttribute("data-mode")&&window.matchMedia("(prefers-color-scheme: dark)").matches)&&(Fn=In);let t=GLightbox({selector:`${Fn}`});if(e&&document.getElementById("mode-toggle")){let e=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.direction===ModeToggle.ID&&function(e,t){Fn=Fn===Bn?In:Bn,null===t&&(t=GLightbox({selector:`${Fn}`})),[e,t]=[t,e]}(t,e)}))}}(),It&&It.addEventListener("click",(()=>{modeToggle.flipMode()})),document.getElementById("sidebar-trigger").addEventListener("click",$t.toggle),document.getElementById("mask").addEventListener("click",$t.toggle),zt.addEventListener("click",(()=>{tn.on(),nn.on(),Qt.focus()})),Wt.addEventListener("click",(()=>{tn.off(),nn.off()})),Qt.addEventListener("focus",(()=>{Yt.classList.add(Zt)})),Qt.addEventListener("focusout",(()=>{Yt.classList.remove(Zt)})),Qt.addEventListener("input",(()=>{""===Qt.value?on()?Gt.classList.remove(Jt):nn.off():(nn.on(),on()&&Gt.classList.add(Jt))})),Ln(),function(){const e=document.getElementById("copy-link");null!==e&&(e.addEventListener("click",(e=>{const t=e.target;xn(t)||navigator.clipboard.writeText(window.location.href).then((()=>{const e=t.getAttribute(En),n=t.getAttribute(wn);t.setAttribute(En,n),Bt.getInstance(t).show(),On(t),setTimeout((()=>{t.setAttribute(En,e),Cn(t)}),An)}))})),e.addEventListener("mouseleave",(e=>{Bt.getInstance(e.target).hide()})))}(),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Bt(e)))}(); diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js new file mode 100644 index 00000000000..cd94337c77e --- /dev/null +++ b/assets/js/dist/post.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";var t="top",e="bottom",n="right",i="left",o="auto",r=[t,e,n,i],s="start",a="end",l="clippingParents",c="viewport",u="popper",f="reference",d=r.reduce((function(t,e){return t.concat([e+"-"+s,e+"-"+a])}),[]),p=[].concat(r,[o]).reduce((function(t,e){return t.concat([e,e+"-"+s,e+"-"+a])}),[]),h="beforeRead",m="read",g="afterRead",b="beforeMain",v="main",y="afterMain",_="beforeWrite",w="write",E="afterWrite",A=[h,m,g,b,v,y,_,w,E];function x(t){return t?(t.nodeName||"").toLowerCase():null}function O(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function C(t){return t instanceof O(t).Element||t instanceof Element}function L(t){return t instanceof O(t).HTMLElement||t instanceof HTMLElement}function T(t){return"undefined"!=typeof ShadowRoot&&(t instanceof O(t).ShadowRoot||t instanceof ShadowRoot)}var S={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];L(o)&&x(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});L(i)&&x(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function k(t){return t.split("-")[0]}var j=Math.max,D=Math.min,P=Math.round;function M(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function N(){return!/^((?!chrome|android).)*safari/i.test(M())}function B(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&L(t)&&(o=t.offsetWidth>0&&P(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&P(i.height)/t.offsetHeight||1);var s=(C(t)?O(t):window).visualViewport,a=!N()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function I(t){var e=B(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function F(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&T(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function H(t){return O(t).getComputedStyle(t)}function $(t){return["table","td","th"].indexOf(x(t))>=0}function q(t){return((C(t)?t.ownerDocument:t.document)||window.document).documentElement}function z(t){return"html"===x(t)?t:t.assignedSlot||t.parentNode||(T(t)?t.host:null)||q(t)}function W(t){return L(t)&&"fixed"!==H(t).position?t.offsetParent:null}function R(t){for(var e=O(t),n=W(t);n&&$(n)&&"static"===H(n).position;)n=W(n);return n&&("html"===x(n)||"body"===x(n)&&"static"===H(n).position)?e:n||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&L(t)&&"fixed"===H(t).position)return null;var n=z(t);for(T(n)&&(n=n.host);L(n)&&["html","body"].indexOf(x(n))<0;){var i=H(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function V(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Y(t,e,n){return j(t,D(e,n))}function U(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function K(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Q={name:"arrow",enabled:!0,phase:"main",fn:function(o){var s,a=o.state,l=o.name,c=o.options,u=a.elements.arrow,f=a.modifiersData.popperOffsets,d=k(a.placement),p=V(d),h=[i,n].indexOf(d)>=0?"height":"width";if(u&&f){var m=function(t,e){return U("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:K(t,r))}(c.padding,a),g=I(u),b="y"===p?t:i,v="y"===p?e:n,y=a.rects.reference[h]+a.rects.reference[p]-f[p]-a.rects.popper[h],_=f[p]-a.rects.reference[p],w=R(u),E=w?"y"===p?w.clientHeight||0:w.clientWidth||0:0,A=y/2-_/2,x=m[b],O=E-g[h]-m[v],C=E/2-g[h]/2+A,L=Y(x,C,O),T=p;a.modifiersData[l]=((s={})[T]=L,s.centerOffset=L-C,s)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&F(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function G(t){return t.split("-")[1]}var X={top:"auto",right:"auto",bottom:"auto",left:"auto"};function J(o){var r,s=o.popper,l=o.popperRect,c=o.placement,u=o.variation,f=o.offsets,d=o.position,p=o.gpuAcceleration,h=o.adaptive,m=o.roundOffsets,g=o.isFixed,b=f.x,v=void 0===b?0:b,y=f.y,_=void 0===y?0:y,w="function"==typeof m?m({x:v,y:_}):{x:v,y:_};v=w.x,_=w.y;var E=f.hasOwnProperty("x"),A=f.hasOwnProperty("y"),x=i,C=t,L=window;if(h){var T=R(s),S="clientHeight",k="clientWidth";if(T===O(s)&&"static"!==H(T=q(s)).position&&"absolute"===d&&(S="scrollHeight",k="scrollWidth"),c===t||(c===i||c===n)&&u===a)C=e,_-=(g&&T===L&&L.visualViewport?L.visualViewport.height:T[S])-l.height,_*=p?1:-1;if(c===i||(c===t||c===e)&&u===a)x=n,v-=(g&&T===L&&L.visualViewport?L.visualViewport.width:T[k])-l.width,v*=p?1:-1}var j,D=Object.assign({position:d},h&&X),M=!0===m?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:P(n*o)/o||0,y:P(i*o)/o||0}}({x:v,y:_},O(s)):{x:v,y:_};return v=M.x,_=M.y,p?Object.assign({},D,((j={})[C]=A?"0":"",j[x]=E?"0":"",j.transform=(L.devicePixelRatio||1)<=1?"translate("+v+"px, "+_+"px)":"translate3d("+v+"px, "+_+"px, 0)",j)):Object.assign({},D,((r={})[C]=A?_+"px":"",r[x]=E?v+"px":"",r.transform="",r))}var Z={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:k(e.placement),variation:G(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,J(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,J(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},tt={passive:!0};var et={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=O(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,tt)})),a&&l.addEventListener("resize",n.update,tt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,tt)})),a&&l.removeEventListener("resize",n.update,tt)}},data:{}},nt={left:"right",right:"left",bottom:"top",top:"bottom"};function it(t){return t.replace(/left|right|bottom|top/g,(function(t){return nt[t]}))}var ot={start:"end",end:"start"};function rt(t){return t.replace(/start|end/g,(function(t){return ot[t]}))}function st(t){var e=O(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function at(t){return B(q(t)).left+st(t).scrollLeft}function lt(t){var e=H(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ct(t){return["html","body","#document"].indexOf(x(t))>=0?t.ownerDocument.body:L(t)&<(t)?t:ct(z(t))}function ut(t,e){var n;void 0===e&&(e=[]);var i=ct(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=O(i),s=o?[r].concat(r.visualViewport||[],lt(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(ut(z(s)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function dt(t,e,n){return e===c?ft(function(t,e){var n=O(t),i=q(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=N();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+at(t),y:l}}(t,n)):C(e)?function(t,e){var n=B(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ft(function(t){var e,n=q(t),i=st(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=j(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=j(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+at(t),l=-i.scrollTop;return"rtl"===H(o||n).direction&&(a+=j(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(q(t)))}function pt(t,e,n,i){var o="clippingParents"===e?function(t){var e=ut(z(t)),n=["absolute","fixed"].indexOf(H(t).position)>=0&&L(t)?R(t):t;return C(n)?e.filter((function(t){return C(t)&&F(t,n)&&"body"!==x(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=dt(t,n,i);return e.top=j(o.top,e.top),e.right=D(o.right,e.right),e.bottom=D(o.bottom,e.bottom),e.left=j(o.left,e.left),e}),dt(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ht(o){var r,l=o.reference,c=o.element,u=o.placement,f=u?k(u):null,d=u?G(u):null,p=l.x+l.width/2-c.width/2,h=l.y+l.height/2-c.height/2;switch(f){case t:r={x:p,y:l.y-c.height};break;case e:r={x:p,y:l.y+l.height};break;case n:r={x:l.x+l.width,y:h};break;case i:r={x:l.x-c.width,y:h};break;default:r={x:l.x,y:l.y}}var m=f?V(f):null;if(null!=m){var g="y"===m?"height":"width";switch(d){case s:r[m]=r[m]-(l[g]/2-c[g]/2);break;case a:r[m]=r[m]+(l[g]/2-c[g]/2)}}return r}function mt(i,o){void 0===o&&(o={});var s=o,a=s.placement,d=void 0===a?i.placement:a,p=s.strategy,h=void 0===p?i.strategy:p,m=s.boundary,g=void 0===m?l:m,b=s.rootBoundary,v=void 0===b?c:b,y=s.elementContext,_=void 0===y?u:y,w=s.altBoundary,E=void 0!==w&&w,A=s.padding,x=void 0===A?0:A,O=U("number"!=typeof x?x:K(x,r)),L=_===u?f:u,T=i.rects.popper,S=i.elements[E?L:_],k=pt(C(S)?S:S.contextElement||q(i.elements.popper),g,v,h),j=B(i.elements.reference),D=ht({reference:j,element:T,strategy:"absolute",placement:d}),P=ft(Object.assign({},T,D)),M=_===u?P:j,N={top:k.top-M.top+O.top,bottom:M.bottom-k.bottom+O.bottom,left:k.left-M.left+O.left,right:M.right-k.right+O.right},I=i.modifiersData.offset;if(_===u&&I){var F=I[d];Object.keys(N).forEach((function(i){var o=[n,e].indexOf(i)>=0?1:-1,r=[t,e].indexOf(i)>=0?"y":"x";N[i]+=F[r]*o}))}return N}function gt(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,l=n.flipVariations,c=n.allowedAutoPlacements,u=void 0===c?p:c,f=G(i),h=f?l?d:d.filter((function(t){return G(t)===f})):r,m=h.filter((function(t){return u.indexOf(t)>=0}));0===m.length&&(m=h);var g=m.reduce((function(e,n){return e[n]=mt(t,{placement:n,boundary:o,rootBoundary:s,padding:a})[k(n)],e}),{});return Object.keys(g).sort((function(t,e){return g[t]-g[e]}))}var bt={name:"flip",enabled:!0,phase:"main",fn:function(r){var a=r.state,l=r.options,c=r.name;if(!a.modifiersData[c]._skip){for(var u=l.mainAxis,f=void 0===u||u,d=l.altAxis,p=void 0===d||d,h=l.fallbackPlacements,m=l.padding,g=l.boundary,b=l.rootBoundary,v=l.altBoundary,y=l.flipVariations,_=void 0===y||y,w=l.allowedAutoPlacements,E=a.options.placement,A=k(E),x=h||(A===E||!_?[it(E)]:function(t){if(k(t)===o)return[];var e=it(t);return[rt(t),e,rt(e)]}(E)),O=[E].concat(x).reduce((function(t,e){return t.concat(k(e)===o?gt(a,{placement:e,boundary:g,rootBoundary:b,padding:m,flipVariations:_,allowedAutoPlacements:w}):e)}),[]),C=a.rects.reference,L=a.rects.popper,T=new Map,S=!0,j=O[0],D=0;D=0,I=B?"width":"height",F=mt(a,{placement:P,boundary:g,rootBoundary:b,altBoundary:v,padding:m}),H=B?N?n:i:N?e:t;C[I]>L[I]&&(H=it(H));var $=it(H),q=[];if(f&&q.push(F[M]<=0),p&&q.push(F[H]<=0,F[$]<=0),q.every((function(t){return t}))){j=P,S=!1;break}T.set(P,q)}if(S)for(var z=function(t){var e=O.find((function(e){var n=T.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return j=e,"break"},W=_?3:1;W>0;W--){if("break"===z(W))break}a.placement!==j&&(a.modifiersData[c]._skip=!0,a.placement=j,a.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function yt(o){return[t,n,e,i].some((function(t){return o[t]>=0}))}var _t={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=mt(e,{elementContext:"reference"}),a=mt(e,{altBoundary:!0}),l=vt(s,i),c=vt(a,o,r),u=yt(l),f=yt(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var o=e.state,r=e.options,s=e.name,a=r.offset,l=void 0===a?[0,0]:a,c=p.reduce((function(e,r){return e[r]=function(e,o,r){var s=k(e),a=[i,t].indexOf(s)>=0?-1:1,l="function"==typeof r?r(Object.assign({},o,{placement:e})):r,c=l[0],u=l[1];return c=c||0,u=(u||0)*a,[i,n].indexOf(s)>=0?{x:u,y:c}:{x:c,y:u}}(r,o.rects,l),e}),{}),u=c[o.placement],f=u.x,d=u.y;null!=o.modifiersData.popperOffsets&&(o.modifiersData.popperOffsets.x+=f,o.modifiersData.popperOffsets.y+=d),o.modifiersData[s]=c}};var Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ht({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var At={name:"preventOverflow",enabled:!0,phase:"main",fn:function(o){var r=o.state,a=o.options,l=o.name,c=a.mainAxis,u=void 0===c||c,f=a.altAxis,d=void 0!==f&&f,p=a.boundary,h=a.rootBoundary,m=a.altBoundary,g=a.padding,b=a.tether,v=void 0===b||b,y=a.tetherOffset,_=void 0===y?0:y,w=mt(r,{boundary:p,rootBoundary:h,padding:g,altBoundary:m}),E=k(r.placement),A=G(r.placement),x=!A,O=V(E),C="x"===O?"y":"x",L=r.modifiersData.popperOffsets,T=r.rects.reference,S=r.rects.popper,P="function"==typeof _?_(Object.assign({},r.rects,{placement:r.placement})):_,M="number"==typeof P?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),N=r.modifiersData.offset?r.modifiersData.offset[r.placement]:null,B={x:0,y:0};if(L){if(u){var F,H="y"===O?t:i,$="y"===O?e:n,q="y"===O?"height":"width",z=L[O],W=z+w[H],U=z-w[$],K=v?-S[q]/2:0,Q=A===s?T[q]:S[q],X=A===s?-S[q]:-T[q],J=r.elements.arrow,Z=v&&J?I(J):{width:0,height:0},tt=r.modifiersData["arrow#persistent"]?r.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[H],nt=tt[$],it=Y(0,T[q],Z[q]),ot=x?T[q]/2-K-it-et-M.mainAxis:Q-it-et-M.mainAxis,rt=x?-T[q]/2+K+it+nt+M.mainAxis:X+it+nt+M.mainAxis,st=r.elements.arrow&&R(r.elements.arrow),at=st?"y"===O?st.clientTop||0:st.clientLeft||0:0,lt=null!=(F=null==N?void 0:N[O])?F:0,ct=z+rt-lt,ut=Y(v?D(W,z+ot-lt-at):W,z,v?j(U,ct):U);L[O]=ut,B[O]=ut-z}if(d){var ft,dt="x"===O?t:i,pt="x"===O?e:n,ht=L[C],gt="y"===C?"height":"width",bt=ht+w[dt],vt=ht-w[pt],yt=-1!==[t,i].indexOf(E),_t=null!=(ft=null==N?void 0:N[C])?ft:0,wt=yt?bt:ht-T[gt]-S[gt]-_t+M.altAxis,Et=yt?ht+T[gt]+S[gt]-_t-M.altAxis:vt,At=v&&yt?function(t,e,n){var i=Y(t,e,n);return i>n?n:i}(wt,ht,Et):Y(v?wt:bt,ht,v?Et:vt);L[C]=At,B[C]=At-ht}r.modifiersData[l]=B}},requiresIfExists:["offset"]};function xt(t,e,n){void 0===n&&(n=!1);var i,o,r=L(e),s=L(e)&&function(t){var e=t.getBoundingClientRect(),n=P(e.width)/t.offsetWidth||1,i=P(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=q(e),l=B(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==x(e)||lt(a))&&(c=(i=e)!==O(i)&&L(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:st(i)),L(e)?((u=B(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=at(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Ot(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Ct={placement:"bottom",modifiers:[],strategy:"absolute"};function Lt(){for(var t=arguments.length,e=new Array(t),n=0;nPt.has(t)&&Pt.get(t).get(e)||null,remove(t,e){if(!Pt.has(t))return;const n=Pt.get(t);n.delete(e),0===n.size&&Pt.delete(t)}};const Nt="transitionend",Bt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),It=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ft=t=>It(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Bt(t)):null,Ht=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Ht(t.parentNode):null},$t=()=>{},qt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,zt=[],Wt=()=>"rtl"===document.documentElement.dir,Rt=t=>{var e;e=()=>{const e=qt();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(zt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of zt)t()})),zt.push(e)):e()},Vt=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},Yt=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void Vt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let i=!1;const o=n=>{let{target:r}=n;r===e&&(i=!0,e.removeEventListener(Nt,o),Vt(t))};e.addEventListener(Nt,o),setTimeout((()=>{i||e.dispatchEvent(new Event(Nt))}),n)},Ut=/[^.]*(?=\..*)\.|.*/,Kt=/\..*/,Qt=/::\d+$/,Gt={};let Xt=1;const Jt={mouseenter:"mouseover",mouseleave:"mouseout"},Zt=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function te(t,e){return e&&`${e}::${Xt++}`||t.uidEvent||Xt++}function ee(t){const e=te(t);return t.uidEvent=e,Gt[e]=Gt[e]||{},Gt[e]}function ne(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function ie(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=ae(t);return Zt.has(r)||(r=t),[i,o,r]}function oe(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=ie(e,n,i);if(e in Jt){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=ee(t),c=l[a]||(l[a]={}),u=ne(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=te(s,e.replace(Ut,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return ce(o,{delegateTarget:s}),i.oneOff&&le.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return ce(i,{delegateTarget:t}),n.oneOff&&le.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function re(t,e,n,i,o){const r=ne(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function se(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&re(t,e,n,s.callable,s.delegationSelector)}function ae(t){return t=t.replace(Kt,""),Jt[t]||t}const le={on(t,e,n,i){oe(t,e,n,i,!1)},one(t,e,n,i){oe(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=ie(e,n,i),a=s!==e,l=ee(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))se(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(Qt,"");a&&!e.includes(o)||re(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;re(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=qt();let o=null,r=!0,s=!0,a=!1;e!==ae(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=ce(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function ce(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function ue(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function fe(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const de={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${fe(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${fe(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=ue(t.dataset[i])}return e},getDataAttribute:(t,e)=>ue(t.getAttribute(`data-bs-${fe(e)}`))};class pe{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=It(e)?de.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...It(e)?de.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,o]of Object.entries(e)){const e=t[i],r=It(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${o}".`)}var n}}class he extends pe{constructor(t,e){super(),(t=Ft(t))&&(this._element=t,this._config=this._getConfig(e),Mt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Mt.remove(this._element,this.constructor.DATA_KEY),le.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){Yt(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Mt.get(Ft(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const me={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},ge=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),be=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,ve=(t,e)=>{const n=t.nodeName.toLowerCase();return e.includes(n)?!ge.has(n)||Boolean(be.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const ye=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>Bt(t))).join(","):null},_e={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!It(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=ye(t);return e&&_e.findOne(e)?e:null},getElementFromSelector(t){const e=ye(t);return e?_e.findOne(e):null},getMultipleElementsFromSelector(t){const e=ye(t);return e?_e.find(e):[]}},we={allowList:me,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Ee={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ae={entry:"(string|element|function|null)",selector:"(string|element)"};class xe extends pe{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return we}static get DefaultType(){return Ee}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Ae)}_setContent(t,e,n){const i=_e.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?It(e)?this._putElementInTemplate(Ft(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)ve(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Vt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Oe=new Set(["sanitize","allowList","sanitizeFn"]),Ce="fade",Le="show",Te=".tooltip-inner",Se=".modal",ke="hide.bs.modal",je="hover",De="focus",Pe={AUTO:"auto",TOP:"top",RIGHT:Wt()?"left":"right",BOTTOM:"bottom",LEFT:Wt()?"right":"left"},Me={allowList:me,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ne={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Be extends he{constructor(t,e){if(void 0===Dt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Me}static get DefaultType(){return Ne}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),le.off(this._element.closest(Se),ke,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=le.trigger(this._element,this.constructor.eventName("show")),e=(Ht(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),le.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Le),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))le.on(t,"mouseover",$t);this._queueCallback((()=>{le.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(le.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Le),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))le.off(t,"mouseover",$t);this._activeTrigger.click=!1,this._activeTrigger[De]=!1,this._activeTrigger[je]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),le.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ce,Le),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ce),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new xe({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Te]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ce)}_isShown(){return this.tip&&this.tip.classList.contains(Le)}_createPopper(t){const e=Vt(this._config.placement,[this,t,this._element]),n=Pe[e.toUpperCase()];return jt(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Vt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Vt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)le.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===je?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===je?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");le.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?De:je]=!0,e._enter()})),le.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?De:je]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},le.on(this._element.closest(Se),ke,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=de.getDataAttributes(this._element);for(const t of Object.keys(e))Oe.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ft(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Be.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Rt(Be);const Ie=document.getElementById("mode-toggle");function Fe(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const He="sidebar-display";class $e{static toggle(){!1===$e.isExpanded?document.body.setAttribute(He,""):document.body.removeAttribute(He),$e.isExpanded=!$e.isExpanded}}Fe($e,"isExpanded",!1);const qe=document.getElementById("sidebar-trigger"),ze=document.getElementById("search-trigger"),We=document.getElementById("search-cancel"),Re=document.querySelectorAll("#main-wrapper>.container>.row"),Ve=document.getElementById("topbar-title"),Ye=document.getElementById("search"),Ue=document.getElementById("search-result-wrapper"),Ke=document.getElementById("search-results"),Qe=document.getElementById("search-input"),Ge=document.getElementById("search-hints"),Xe="d-block",Je="d-none",Ze="input-focus",tn="d-flex";class en{static on(){qe.classList.add(Je),Ve.classList.add(Je),ze.classList.add(Je),Ye.classList.add(tn),We.classList.add(Xe)}static off(){We.classList.remove(Xe),Ye.classList.remove(tn),qe.classList.remove(Je),Ve.classList.remove(Je),ze.classList.remove(Je)}}class nn{static on(){this.resultVisible||(Ue.classList.remove(Je),Re.forEach((t=>{t.classList.add(Je)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Ke.innerHTML="",Ge.classList.contains(Je)&&Ge.classList.remove(Je),Ue.classList.add(Je),Re.forEach((t=>{t.classList.remove(Je)})),Qe.textContent="",this.resultVisible=!1)}}function on(){return We.classList.contains(Xe)}Fe(nn,"resultVisible",!1);const rn=".bs.collapse",sn=`show${rn}`,an=`shown${rn}`,ln=`hide${rn}`,cn=`hidden${rn}`,un=`click${rn}.data-api`,fn="show",dn="collapse",pn="collapsing",hn=`:scope .${dn} .${dn}`,mn='[data-bs-toggle="collapse"]',gn={parent:null,toggle:!0},bn={parent:"(null|element)",toggle:"boolean"};class vn extends he{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=_e.find(mn);for(const t of n){const e=_e.getSelectorFromElement(t),n=_e.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return gn}static get DefaultType(){return bn}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>vn.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(le.trigger(this._element,sn).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(dn),this._element.classList.add(pn),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn,fn),this._element.style[e]="",le.trigger(this._element,an)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(le.trigger(this._element,ln).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(pn),this._element.classList.remove(dn,fn);for(const t of this._triggerArray){const e=_e.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pn),this._element.classList.add(dn),le.trigger(this._element,cn)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(fn)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ft(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(mn);for(const e of t){const t=_e.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=_e.find(hn,this._config.parent);return _e.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=vn.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}le.on(document,un,mn,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of _e.getMultipleElementsFromSelector(this))vn.getOrCreateInstance(t,{toggle:!1}).toggle()})),Rt(vn),document.getElementsByClassName("collapse");const yn=".code-header>button",_n="timeout",wn="data-title-succeed",En="data-bs-original-title",An=2e3;function xn(t){if(t.hasAttribute(_n)){let e=t.getAttribute(_n);if(Number(e)>Date.now())return!0}return!1}function On(t){t.setAttribute(_n,Date.now()+An)}function Cn(t){t.removeAttribute(_n)}function Ln(){const t=document.querySelectorAll(yn);if(0===t.length)return;const e=new ClipboardJS(yn,{target:t=>t.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...t].map((t=>new Be(t,{placement:"left"}))),e.on("success",(t=>{const e=t.trigger;(t.clearSelection(),xn(e))||(e.children[0].setAttribute("class","fas fa-check"),function(t){const e=t.getAttribute(wn);t.setAttribute(En,e),Be.getInstance(t).show()}(e),On(e),setTimeout((()=>{!function(t){Be.getInstance(t).hide(),t.removeAttribute(En)}(e),function(t){t.children[0].setAttribute("class","far fa-clipboard")}(e),Cn(e)}),An))}))}const Tn="data-src",Sn="data-lqip",kn="shimmer",jn="blur";function Dn(t){this.parentElement.classList.remove(t)}function Pn(){this.complete&&(this.hasAttribute(Sn)?Dn.call(this,jn):Dn.call(this,kn))}function Mn(){const t=this.getAttribute(Tn);this.setAttribute("src",encodeURI(t)),this.removeAttribute(Tn)}const Nn=document.documentElement,Bn=".popup:not(.dark)",In=".popup:not(.light)";let Fn=Bn;class Hn{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var $n;const qn=document.getElementById("toc-bar"),zn=document.getElementById("toc-solo-trigger"),Wn=document.getElementsByClassName("toc-trigger"),Rn=document.getElementById("toc-popup"),Vn=document.getElementById("toc-popup-close"),Yn="overflow-hidden",Un="closing";class Kn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{qn.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${this.barHeight}px 0px 0px 0px`}).observe(zn),this.invisible=!1}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=this.hidePopup}))}static refresh(){this.invisible&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static showPopup(){Kn.lockScroll(!0),Rn.showModal();Rn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(t){"cancel"===t?.type&&t.preventDefault(),Rn.open&&(Rn.toggleAttribute(Un),Rn.addEventListener("animationend",(()=>{Rn.toggleAttribute(Un),Rn.close()}),{once:!0}),Kn.lockScroll(!1))}static lockScroll(t){document.documentElement.classList.toggle(Yn,t),document.body.classList.toggle(Yn,t)}static clickBackdrop(t){const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&Kn.hidePopup()}static initComponents(){this.initBar(),[...Wn].forEach((t=>{t.onclick=this.showPopup})),Rn.onclick=this.clickBackdrop,Vn.onclick=Rn.oncancel=this.hidePopup}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}$n=Kn,Fe(Kn,"invisible",!0),Fe(Kn,"barHeight",48),Fe(Kn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:$n.barHeight});class Qn{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}}Fe(Qn,"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32});const Gn=matchMedia("(min-width: 1200px)");function Xn(t){t.matches?(Kn.hidePopup(),Qn.refresh()):Kn.refresh()}!function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach((t=>{t.addEventListener("load",Pn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((t=>{t.complete&&Dn.call(t,kn)}));const e=document.querySelectorAll(`article img[${Sn}="true"]`);e.length&&e.forEach((t=>{Mn.call(t)}))}(),null!==document.querySelector('main>article[data-toc="true"]')&&(Gn.matches?Qn.init():Kn.init(),Gn.onchange=Xn),function(){if(null===document.querySelector(".popup"))return;const t=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));(Nn.hasAttribute("data-mode")&&"dark"===Nn.getAttribute("data-mode")||!Nn.hasAttribute("data-mode")&&window.matchMedia("(prefers-color-scheme: dark)").matches)&&(Fn=In);let e=GLightbox({selector:`${Fn}`});if(t&&document.getElementById("mode-toggle")){let t=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.direction===ModeToggle.ID&&function(t,e){Fn=Fn===Bn?In:Bn,null===e&&(e=GLightbox({selector:`${Fn}`})),[t,e]=[e,t]}(e,t)}))}}(),Ie&&Ie.addEventListener("click",(()=>{modeToggle.flipMode()})),document.getElementById("sidebar-trigger").addEventListener("click",$e.toggle),document.getElementById("mask").addEventListener("click",$e.toggle),dayjs.locale(Hn.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${Hn.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(Hn.getTimestamp(t)),n=e.format(Hn.getDateFormat(t));if(t.textContent=n,t.removeAttribute(Hn.attrTimestamp),t.removeAttribute(Hn.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),Ln(),function(){const t=document.getElementById("copy-link");null!==t&&(t.addEventListener("click",(t=>{const e=t.target;xn(e)||navigator.clipboard.writeText(window.location.href).then((()=>{const t=e.getAttribute(En),n=e.getAttribute(wn);e.setAttribute(En,n),Be.getInstance(e).show(),On(e),setTimeout((()=>{e.setAttribute(En,t),Cn(e)}),An)}))})),t.addEventListener("mouseleave",(t=>{Be.getInstance(t.target).hide()})))}(),ze.addEventListener("click",(()=>{en.on(),nn.on(),Qe.focus()})),We.addEventListener("click",(()=>{en.off(),nn.off()})),Qe.addEventListener("focus",(()=>{Ye.classList.add(Ze)})),Qe.addEventListener("focusout",(()=>{Ye.classList.remove(Ze)})),Qe.addEventListener("input",(()=>{""===Qe.value?on()?Ge.classList.remove(Je):nn.off():(nn.on(),on()&&Ge.classList.add(Je))})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Be(t)))}(); diff --git a/assets/js/dist/sw.min.js b/assets/js/dist/sw.min.js new file mode 100644 index 00000000000..4a2983333cd --- /dev/null +++ b/assets/js/dist/sw.min.js @@ -0,0 +1,7 @@ +--- +permalink: /:basename +--- +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";importScripts("./assets/js/data/swconf.js");const e=swconf.purge,t=swconf.interceptor;self.addEventListener("install",(t=>{e||t.waitUntil(caches.open(swconf.cacheName).then((e=>e.addAll(swconf.resources))))})),self.addEventListener("activate",(t=>{t.waitUntil(caches.keys().then((t=>Promise.all(t.map((t=>e||t!==swconf.cacheName?caches.delete(t):void 0))))))})),self.addEventListener("message",(e=>{"SKIP_WAITING"===e.data&&self.skipWaiting()})),self.addEventListener("fetch",(s=>{s.request.headers.has("range")||s.respondWith(caches.match(s.request).then((n=>n||fetch(s.request).then((n=>{const r=s.request.url;if(e||"GET"!==s.request.method||!function(e){const s=new URL(e),n=s.pathname;if(!s.protocol.startsWith("http"))return!1;for(const e of t.urlPrefixes)if(s.href.startsWith(e))return!1;for(const e of t.paths)if(n.startsWith(e))return!1;return!0}(r))return n;let a=n.clone();return caches.open(swconf.cacheName).then((e=>{e.put(s.request,a)})),n})))))}))}(); diff --git a/postImg/post-test.png b/postImg/post-test.png new file mode 100644 index 00000000000..75c2f60dc20 Binary files /dev/null and b/postImg/post-test.png differ