diff --git a/.github/DISCUSSION_TEMPLATE/general.yml b/.github/DISCUSSION_TEMPLATE/general.yml deleted file mode 100644 index 18d0f8585fb..00000000000 --- a/.github/DISCUSSION_TEMPLATE/general.yml +++ /dev/null @@ -1,17 +0,0 @@ -body: - - type: checkboxes - attributes: - label: Checklist - description: Following the guidelines can make you more likely to get responses. - options: - - label: >- - I have read and accepted the - [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md). - required: true - - - type: textarea - attributes: - label: Description - description: Please describe in detail what you want to share. - validations: - required: true diff --git a/.github/DISCUSSION_TEMPLATE/ideas.yml b/.github/DISCUSSION_TEMPLATE/ideas.yml deleted file mode 100644 index e4c987d794e..00000000000 --- a/.github/DISCUSSION_TEMPLATE/ideas.yml +++ /dev/null @@ -1,7 +0,0 @@ -body: - - type: textarea - attributes: - label: Description - description: Please describe in detail what you want to share. - validations: - required: true diff --git a/.github/DISCUSSION_TEMPLATE/q-a.yml b/.github/DISCUSSION_TEMPLATE/q-a.yml deleted file mode 100644 index a2e2aa150c0..00000000000 --- a/.github/DISCUSSION_TEMPLATE/q-a.yml +++ /dev/null @@ -1,40 +0,0 @@ -body: - - type: checkboxes - attributes: - label: Checklist - description: Following the guidelines can make you more likely to get responses. - options: - - label: >- - I have read and accepted the - [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md). - required: true - - - type: dropdown - id: download - attributes: - label: How did you create the site? - options: - - Generated from `chirpy-starter` - - Built from `jekyll-theme-chirpy` - validations: - required: true - - - type: textarea - attributes: - label: Description - description: Please describe your need in detail. - validations: - required: true - - - type: textarea - attributes: - label: Operations you have already tried - description: Describe the effort you went through. - validations: - required: true - - - type: textarea - attributes: - label: Anything else? - description: | - Links? References? Or logs? Anything that will give us more context about the issue you are encountering! diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index f22921b7049..00000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -ko_fi: coteschung -custom: https://sponsor.cotes.page diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 7b513fb5841..00000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Bug Report -description: Create a report to help us improve -body: - - type: checkboxes - attributes: - label: Checklist - description: Following the guidelines can make you more likely to get responses. - options: - - label: >- - I have read and accepted the - [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md). - required: true - - - type: dropdown - id: download - attributes: - label: How did you create the site? - options: - - Generated from `chirpy-starter` - - Built from `jekyll-theme-chirpy` - validations: - required: true - - - type: textarea - attributes: - label: Describe the bug - description: A clear and concise description of what the bug is. - validations: - required: true - - - type: textarea - attributes: - label: Steps To Reproduce - description: Steps to reproduce the behavior. - placeholder: | - 1. In this environment... - 2. With this config... - 3. Run '...' - 4. See error... - validations: - required: true - - - type: textarea - attributes: - label: Expected Behavior - description: A concise description of what you expected to happen. - validations: - required: true - - - type: textarea - attributes: - label: Environment - value: | - - Ruby: - - Jekyll: - - Chirpy: - validations: - required: true - - - type: textarea - attributes: - label: Anything else? - description: | - Links? References? Or logs? Anything that will give us more context about the issue you are encountering! diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 1dfb2b26dd0..00000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask the community for help - url: https://github.com/cotes2020/jekyll-theme-chirpy/discussions - about: Please ask and answer questions here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index 79570359f17..00000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Feature Request -description: Suggest an idea for this project -labels: - - enhancement -body: - - type: checkboxes - attributes: - label: Checklist - description: Following the guidelines can make you more likely to get responses. - options: - - label: >- - I have read and accepted the - [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md). - required: true - - - type: textarea - attributes: - label: Is your feature request related to a problem? Please describe - description: A clear and concise description of what the problem is. - validations: - required: true - - - type: textarea - attributes: - label: Describe the solution you'd like - description: A clear and concise description of what you want to happen. - validations: - required: true - - - type: textarea - attributes: - label: Describe alternatives you've considered - description: A clear and concise description of any alternative solutions or features you've considered. - - - type: textarea - attributes: - label: Additional context - description: Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 0ff984a75d4..00000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,17 +0,0 @@ -## Type of change - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Improvement (refactoring and improving code) -- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) -- [ ] Documentation update - -## Description - - -## Additional context - diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml deleted file mode 100644 index 1439beb5c5e..00000000000 --- a/.github/codeql/codeql-config.yml +++ /dev/null @@ -1,2 +0,0 @@ -paths-ignore: - - "assets/js" diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index a51f37eb0eb..00000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,28 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "bundler" - directory: "/" - schedule: - interval: "weekly" - - package-ecosystem: "npm" - directory: "/" - versioning-strategy: increase - groups: - prod-deps: - dependency-type: production - dev-deps: - dependency-type: development - schedule: - interval: "weekly" - - package-ecosystem: "github-actions" - directory: "/" - groups: - gh-actions: - update-types: - - "major" - schedule: - interval: "weekly" - - package-ecosystem: "devcontainers" - directory: "/" - schedule: - interval: weekly diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml deleted file mode 100644 index c665f755e11..00000000000 --- a/.github/workflows/cd.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: CD - -on: - push: - branches: [production] - tags-ignore: ["**"] - -jobs: - release: - if: ${{ ! startsWith(github.event.head_commit.message, 'chore(release)') }} - permissions: - contents: write - issues: write - pull-requests: write - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.3 - bundler-cache: true - - - uses: actions/setup-node@v4 - with: - node-version: lts/* - - - run: npm install - - run: npx semantic-release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }} - - publish: - needs: release - uses: ./.github/workflows/publish.yml - secrets: - GH_PAT: ${{ secrets.GH_PAT }} - BUILDER: ${{ secrets.BUILDER }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 31b878632b1..00000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: CI - -on: - push: - branches: - - master - - "hotfix/*" - paths-ignore: - - ".github/**" - - "!.github/workflows/ci.yml" - - .gitignore - - "docs/**" - - README.md - - LICENSE - pull_request: - paths-ignore: - - ".github/**" - - "!.github/workflows/ci.yml" - - .gitignore - - "docs/**" - - README.md - - LICENSE - -jobs: - build: - runs-on: ubuntu-latest - - strategy: - matrix: - ruby: ["3.1", "3.2", "3.3"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 # for posts's lastmod - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby }} - bundler-cache: true - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: lts/* - - - name: Build Assets - run: npm i && npm run build - - - name: Test Site - run: bash tools/test.sh diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 06feb7fd69a..00000000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: ["master"] - paths: ["_javascript/**/*.js"] - pull_request: - paths: ["_javascript/**/*.js"] - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: ["javascript"] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: "${{ matrix.language }}" - config-file: .github/codeql/codeql-config.yml - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v3 - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - with: - category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml deleted file mode 100644 index 58f1a3ff3d1..00000000000 --- a/.github/workflows/commitlint.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Lint Commit Messages - -on: - push: - branches: - - master - - "hotfix/*" - pull_request: - -jobs: - commitlint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: wagoid/commitlint-github-action@v6 diff --git a/.github/workflows/starter/pages-deploy.yml b/.github/workflows/pages-deploy.yml similarity index 100% rename from .github/workflows/starter/pages-deploy.yml rename to .github/workflows/pages-deploy.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index b0f9713f2ef..00000000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Publish - -on: - push: - branches: - - docs - workflow_call: - secrets: - GH_PAT: - required: true - BUILDER: - required: true - workflow_dispatch: - -jobs: - launch: - runs-on: ubuntu-latest - steps: - - run: | - curl -X POST -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer ${{ secrets.GH_PAT }}" \ - https://api.github.com/repos/${{ secrets.BUILDER }}/dispatches \ - -d '{"event_type":"deploy", "client_payload":{"branch": "${{ github.ref_name }}"}}' diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 4f6e91cbf39..00000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: "Close stale issues and PRs" - -on: - schedule: - - cron: "0 0 * * *" # every day at 00:00 UTC - -permissions: - issues: write - pull-requests: write - -env: - STALE_LABEL: inactive - EXEMPT_LABELS: "pending,planning,in progress" - MESSAGE: > - This conversation has been automatically marked as stale because it has not had recent activity. - It will be closed if no further activity occurs. - Thank you for your contributions. - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v9 - with: - # 60 days before marking issues/PRs stale - days-before-close: -1 # does not close automatically - stale-issue-label: ${{ env.STALE_LABEL }} - exempt-issue-labels: ${{ env.EXEMPT_LABELS }} - stale-issue-message: ${{ env.MESSAGE }} - stale-pr-label: ${{ env.STALE_LABEL }} - exempt-pr-labels: ${{ env.EXEMPT_LABELS }} - stale-pr-message: ${{ env.MESSAGE }} diff --git a/.gitignore b/.gitignore index 7dd7cefd964..ad935b6533d 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,3 @@ package-lock.json !.vscode/tasks.json # Misc -_sass/vendors -assets/js/dist diff --git a/_config.yml b/_config.yml index 0a78679d26e..0cecb18eae2 100644 --- a/_config.yml +++ b/_config.yml @@ -6,27 +6,27 @@ theme: jekyll-theme-chirpy # The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm # If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed, # otherwise, the layout language will use the default value of 'en'. -lang: en +lang: ko-KR # Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker -timezone: Asia/Shanghai +timezone: Asia/Seoul # jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md # ↓ -------------------------- -title: Chirpy # the main title +title: LaohLog # the main title -tagline: A text-focused Jekyll theme # it will display as the subtitle +tagline: 개발 블로그 # it will display as the subtitle description: >- # used by seo meta and the atom feed - A minimal, responsive and feature-rich Jekyll theme for technical writing. + Laoh의 개발 블로그 # Fill in the protocol & hostname for your site. # E.g. 'https://username.github.io', note that it does not end with a '/'. -url: "" +url: "https://pyjhoop.github.io" github: - username: github_username # change to your GitHub username + username: pyjhoop # change to your GitHub username twitter: username: twitter_username # change to your Twitter username @@ -34,12 +34,11 @@ twitter: social: # Change to your full name. # It will be displayed as the default author of the posts and the copyright owner in the Footer - name: your_full_name - email: example@domain.com # change to your email address + name: pyjhoop + email: pyjhoop1@gmail.com # change to your email address links: # The first element serves as the copyright owner's link - - https://twitter.com/username # change to your Twitter homepage - - https://github.com/username # change to your GitHub homepage + - https://github.com/pyjhoop # change to your GitHub homepage # Uncomment below to add more social links # - https://www.facebook.com/username # - https://www.linkedin.com/in/username @@ -95,10 +94,10 @@ theme_mode: # [light | dark] # will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/' # # e.g. 'https://cdn.com' -cdn: "https://chirpy-img.netlify.app" +cdn: # the avatar on sidebar, support local or CORS resources -avatar: "/commons/avatar.jpg" +avatar: images/KakaoTalk_20250805_083557403.jpg # The URL of the site-wide social preview image used in SEO `og:image` meta tag. # It can be overridden by a customized `page.image` in front matter. @@ -109,7 +108,7 @@ toc: true comments: # Global switch for the post-comment system. Keeping it empty means disabled. - provider: # [disqus | utterances | giscus] + provider: giscus # [disqus | utterances | giscus] # The provider options are as follows: disqus: shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname @@ -119,10 +118,10 @@ comments: issue_term: # < url | pathname | title | ...> # Giscus options › https://giscus.app giscus: - repo: # / - repo_id: - category: - category_id: + repo: pyjhoop/pyjhoop.io # / + repo_id: R_kgDOPYWZEw + category: General + category_id: DIC_kwDOPYWZE84CtzOJ mapping: # optional, default to 'pathname' strict: # optional, default to '0' input_position: # optional, default to 'bottom' @@ -150,8 +149,7 @@ pwa: paginate: 10 # The base URL of your site -baseurl: "" - +baseurl: "/pyjhoop.io" # ------------ The following options are not recommended to be modified ------------------ kramdown: diff --git a/_includes/media-url.html b/_includes/media-url.html index ea410750268..0257119c032 100644 --- a/_includes/media-url.html +++ b/_includes/media-url.html @@ -25,11 +25,21 @@ {% assign url = url | replace: '///', '/' | replace: '//', '/' | replace: ':/', '://' %} {% unless url contains '://' %} - {% if include.absolute %} - {% assign url = site.url | append: site.baseurl | append: url %} - {% else %} - {% assign url = site.baseurl | append: url %} + {% comment %} Check if URL already contains baseurl to prevent duplication {% endcomment %} + {% assign url_starts_with_baseurl = false %} + {% if site.baseurl and site.baseurl != '' %} + {% if url contains site.baseurl %} + {% assign url_starts_with_baseurl = true %} + {% endif %} {% endif %} + + {% unless url_starts_with_baseurl %} + {% if include.absolute %} + {% assign url = site.url | append: site.baseurl | append: url %} + {% else %} + {% assign url = site.baseurl | append: url %} + {% endif %} + {% endunless %} {% endunless %} {% endunless %} {%- endif -%} diff --git a/_posts/2019-08-08-text-and-typography.md b/_posts/2019-08-08-text-and-typography.md deleted file mode 100644 index a8db26a00ff..00000000000 --- a/_posts/2019-08-08-text-and-typography.md +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Text and Typography -description: Examples of text, typography, math equations, diagrams, flowcharts, pictures, videos, and more. -author: cotes -date: 2019-08-08 11:33:00 +0800 -categories: [Blogging, Demo] -tags: [typography] -pin: true -math: true -mermaid: true -image: - path: /commons/devices-mockup.png - lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA - alt: Responsive rendering of Chirpy theme on multiple devices. ---- - -## Headings - - - -# H1 — heading -{: .mt-4 .mb-0 } - -## H2 — heading -{: data-toc-skip='' .mt-4 .mb-0 } - -### H3 — heading -{: data-toc-skip='' .mt-4 .mb-0 } - -#### H4 — heading -{: data-toc-skip='' .mt-4 } - - -## Paragraph - -Quisque egestas convallis ipsum, ut sollicitudin risus tincidunt a. Maecenas interdum malesuada egestas. Duis consectetur porta risus, sit amet vulputate urna facilisis ac. Phasellus semper dui non purus ultrices sodales. Aliquam ante lorem, ornare a feugiat ac, finibus nec mauris. Vivamus ut tristique nisi. Sed vel leo vulputate, efficitur risus non, posuere mi. Nullam tincidunt bibendum rutrum. Proin commodo ornare sapien. Vivamus interdum diam sed sapien blandit, sit amet aliquam risus mattis. Nullam arcu turpis, mollis quis laoreet at, placerat id nibh. Suspendisse venenatis eros eros. - -## Lists - -### Ordered list - -1. Firstly -2. Secondly -3. Thirdly - -### Unordered list - -- Chapter - - Section - - Paragraph - -### ToDo list - -- [ ] Job - - [x] Step 1 - - [x] Step 2 - - [ ] Step 3 - -### Description list - -Sun -: the star around which the earth orbits - -Moon -: the natural satellite of the earth, visible by reflected light from the sun - -## Block Quote - -> This line shows the _block quote_. - -## Prompts - - - -> An example showing the `tip` type prompt. -{: .prompt-tip } - -> An example showing the `info` type prompt. -{: .prompt-info } - -> An example showing the `warning` type prompt. -{: .prompt-warning } - -> An example showing the `danger` type prompt. -{: .prompt-danger } - - -## Tables - -| Company | Contact | Country | -| :--------------------------- | :--------------- | ------: | -| Alfreds Futterkiste | Maria Anders | Germany | -| Island Trading | Helen Bennett | UK | -| Magazzini Alimentari Riuniti | Giovanni Rovelli | Italy | - -## Links - - - -## Footnote - -Click the hook will locate the footnote[^footnote], and here is another footnote[^fn-nth-2]. - -## Inline code - -This is an example of `Inline Code`. - -## Filepath - -Here is the `/path/to/the/file.extend`{: .filepath}. - -## Code blocks - -### Common - -```text -This is a common code snippet, without syntax highlight and line number. -``` - -### Specific Language - -```bash -if [ $? -ne 0 ]; then - echo "The command was not successful."; - #do the needful / exit -fi; -``` - -### Specific filename - -```sass -@import - "colors/light-typography", - "colors/dark-typography"; -``` -{: file='_sass/jekyll-theme-chirpy.scss'} - -## Mathematics - -The mathematics powered by [**MathJax**](https://www.mathjax.org/): - -$$ -\begin{equation} - \sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6} - \label{eq:series} -\end{equation} -$$ - -We can reference the equation as \eqref{eq:series}. - -When $a \ne 0$, there are two solutions to $ax^2 + bx + c = 0$ and they are - -$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$ - -## Mermaid SVG - -```mermaid - gantt - title Adding GANTT diagram functionality to mermaid - apple :a, 2017-07-20, 1w - banana :crit, b, 2017-07-23, 1d - cherry :active, c, after b a, 1d -``` - -## Images - -### Default (with caption) - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" } -_Full screen width and center alignment_ - -### Left aligned - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-75 .normal} - -### Float to left - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-50 .left} -Praesent maximus aliquam sapien. Sed vel neque in dolor pulvinar auctor. Maecenas pharetra, sem sit amet interdum posuere, tellus lacus eleifend magna, ac lobortis felis ipsum id sapien. Proin ornare rutrum metus, ac convallis diam volutpat sit amet. Phasellus volutpat, elit sit amet tincidunt mollis, felis mi scelerisque mauris, ut facilisis leo magna accumsan sapien. In rutrum vehicula nisl eget tempor. Nullam maximus ullamcorper libero non maximus. Integer ultricies velit id convallis varius. Praesent eu nisl eu urna finibus ultrices id nec ex. Mauris ac mattis quam. Fusce aliquam est nec sapien bibendum, vitae malesuada ligula condimentum. - -### Float to right - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-50 .right} -Praesent maximus aliquam sapien. Sed vel neque in dolor pulvinar auctor. Maecenas pharetra, sem sit amet interdum posuere, tellus lacus eleifend magna, ac lobortis felis ipsum id sapien. Proin ornare rutrum metus, ac convallis diam volutpat sit amet. Phasellus volutpat, elit sit amet tincidunt mollis, felis mi scelerisque mauris, ut facilisis leo magna accumsan sapien. In rutrum vehicula nisl eget tempor. Nullam maximus ullamcorper libero non maximus. Integer ultricies velit id convallis varius. Praesent eu nisl eu urna finibus ultrices id nec ex. Mauris ac mattis quam. Fusce aliquam est nec sapien bibendum, vitae malesuada ligula condimentum. - -### Dark/Light mode & Shadow - -The image below will toggle dark/light mode based on theme preference, notice it has shadows. - -![light mode only](/posts/20190808/devtools-light.png){: .light .w-75 .shadow .rounded-10 w='1212' h='668' } -![dark mode only](/posts/20190808/devtools-dark.png){: .dark .w-75 .shadow .rounded-10 w='1212' h='668' } - -## Video - -{% include embed/youtube.html id='Balreaj8Yqs' %} - -## Reverse Footnote - -[^footnote]: The footnote source -[^fn-nth-2]: The 2nd footnote source diff --git a/_posts/2019-08-08-write-a-new-post.md b/_posts/2019-08-08-write-a-new-post.md deleted file mode 100644 index 10201655218..00000000000 --- a/_posts/2019-08-08-write-a-new-post.md +++ /dev/null @@ -1,505 +0,0 @@ ---- -title: Writing a New Post -author: cotes -date: 2019-08-08 14:10:00 +0800 -categories: [Blogging, Tutorial] -tags: [writing] -render_with_liquid: 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. - -## Naming and Path - -Create a new file named `YYYY-MM-DD-TITLE.EXTENSION`{: .filepath} and put it in the `_posts`{: .filepath} of the root directory. Please note that the `EXTENSION`{: .filepath} must be one of `md`{: .filepath} and `markdown`{: .filepath}. If you want to save time of creating files, please consider using the plugin [`Jekyll-Compose`](https://github.com/jekyll/jekyll-compose) to accomplish this. - -## Front Matter - -Basically, you need to fill the [Front Matter](https://jekyllrb.com/docs/front-matter/) as below at the top of the post: - -```yaml ---- -title: TITLE -date: YYYY-MM-DD HH:MM:SS +/-TTTT -categories: [TOP_CATEGORY, SUB_CATEGORY] -tags: [TAG] # TAG names should always be lowercase ---- -``` - -> The posts' _layout_ has been set to `post` by default, so there is no need to add the variable _layout_ in the Front Matter block. -{: .prompt-tip } - -### Timezone of Date - -To accurately record the release date of a post, you should not only set up the `timezone` of `_config.yml`{: .filepath} but also provide the post's timezone in variable `date` of its Front Matter block. Format: `+/-TTTT`, e.g. `+0800`. - -### Categories and Tags - -The `categories` of each post are designed to contain up to two elements, and the number of elements in `tags` can be zero to infinity. For instance: - -```yaml ---- -categories: [Animal, Insect] -tags: [bee] ---- -``` - -### Author Information - -The author information of the post usually does not need to be filled in the _Front Matter_ , they will be obtained from variables `social.name` and the first entry of `social.links` of the configuration file by default. But you can also override it as follows: - -Adding author information in `_data/authors.yml` (If your website doesn't have this file, don't hesitate to create one). - -```yaml -: - name: - twitter: - url: -``` -{: file="_data/authors.yml" } - -And then use `author` to specify a single entry or `authors` to specify multiple entries: - -```yaml ---- -author: # for single entry -# or -authors: [, ] # for multiple entries ---- -``` - -Having said that, the key `author` can also identify multiple entries. - -> The benefit of reading the author information from the file `_data/authors.yml`{: .filepath } is that the page will have the meta tag `twitter:creator`, which enriches the [Twitter Cards](https://developer.twitter.com/en/docs/twitter-for-websites/cards/guides/getting-started#card-and-content-attribution) and is good for SEO. -{: .prompt-info } - -### Post Description - -By default, the first words of the post are used to display on the home page for a list of posts, in the _Further Reading_ section, and in the XML of the RSS feed. If you don't want to display the auto-generated description for the post, you can customize it using the `description` field in the _Front Matter_ as follows: - -```yaml ---- -description: Short summary of the post. ---- -``` - -Additionally, the `description` text will also be displayed under the post title on the post's page. - -## Table of Contents - -By default, the **T**able **o**f **C**ontents (TOC) is displayed on the right panel of the post. If you want to turn it off globally, go to `_config.yml`{: .filepath} and set the value of variable `toc` to `false`. If you want to turn off TOC for a specific post, add the following to the post's [Front Matter](https://jekyllrb.com/docs/front-matter/): - -```yaml ---- -toc: false ---- -``` - -## Comments - -The global setting for comments is defined by the `comments.provider` option in the `_config.yml`{: .filepath} file. Once a comment system is selected for this variable, comments will be enabled for all posts. - -If you want to close the comment for a specific post, add the following to the **Front Matter** of the post: - -```yaml ---- -comments: false ---- -``` - -## Media - -We refer to images, audio and video as media resources in _Chirpy_. - -### URL Prefix - -From time to time we have to define duplicate URL prefixes for multiple resources in a post, which is a boring task that you can avoid by setting two parameters. - -- If you are using a CDN to host media files, you can specify the `cdn` in `_config.yml`{: .filepath }. The URLs of media resources for site avatar and posts are then prefixed with the CDN domain name. - - ```yaml - cdn: https://cdn.com - ``` - {: file='_config.yml' .nolineno } - -- To specify the resource path prefix for the current post/page range, set `media_subpath` in the _front matter_ of the post: - - ```yaml - --- - media_subpath: /path/to/media/ - --- - ``` - {: .nolineno } - -The option `site.cdn` and `page.media_subpath` can be used individually or in combination to flexibly compose the final resource URL: `[site.cdn/][page.media_subpath/]file.ext` - -### Images - -#### Caption - -Add italics to the next line of an image, then it will become the caption and appear at the bottom of the image: - -```markdown -![img-description](/path/to/image) -_Image Caption_ -``` -{: .nolineno} - -#### Size - -To prevent the page content layout from shifting when the image is loaded, we should set the width and height for each image. - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: width="700" height="400" } -``` -{: .nolineno} - -> For an SVG, you have to at least specify its _width_, otherwise it won't be rendered. -{: .prompt-info } - -Starting from _Chirpy v5.0.0_, `height` and `width` support abbreviations (`height` → `h`, `width` → `w`). The following example has the same effect as the above: - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: w="700" h="400" } -``` -{: .nolineno} - -#### Position - -By default, the image is centered, but you can specify the position by using one of the classes `normal`, `left`, and `right`. - -> Once the position is specified, the image caption should not be added. -{: .prompt-warning } - -- **Normal position** - - Image will be left aligned in below sample: - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .normal } - ``` - {: .nolineno} - -- **Float to the left** - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .left } - ``` - {: .nolineno} - -- **Float to the right** - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .right } - ``` - {: .nolineno} - -#### Dark/Light mode - -You can make images follow theme preferences in dark/light mode. This requires you to prepare two images, one for dark mode and one for light mode, and then assign them a specific class (`dark` or `light`): - -```markdown -![Light mode only](/path/to/light-mode.png){: .light } -![Dark mode only](/path/to/dark-mode.png){: .dark } -``` - -#### Shadow - -The screenshots of the program window can be considered to show the shadow effect: - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: .shadow } -``` -{: .nolineno} - -#### Preview Image - -If you want to add an image at the top of the post, please provide an image with a resolution of `1200 x 630`. Please note that if the image aspect ratio does not meet `1.91 : 1`, the image will be scaled and cropped. - -Knowing these prerequisites, you can start setting the image's attribute: - -```yaml ---- -image: - path: /path/to/image - alt: image alternative text ---- -``` - -Note that the [`media_subpath`](#url-prefix) can also be passed to the preview image, that is, when it has been set, the attribute `path` only needs the image file name. - -For simple use, you can also just use `image` to define the path. - -```yml ---- -image: /path/to/image ---- -``` - -#### LQIP - -For preview images: - -```yaml ---- -image: - lqip: /path/to/lqip-file # or base64 URI ---- -``` - -> You can observe LQIP in the preview image of post \"[Text and Typography](../text-and-typography/)\". - -For normal images: - -```markdown -![Image description](/path/to/image){: lqip="/path/to/lqip-file" } -``` -{: .nolineno } - -### Video - -#### Social Media Platform - -You can embed videos from social media platforms with the following syntax: - -```liquid -{% include embed/{Platform}.html id='{ID}' %} -``` - -Where `Platform` is the lowercase of the platform name, and `ID` is the video ID. - -The following table shows how to get the two parameters we need in a given video URL, and you can also know the currently supported video platforms. - -| Video URL | Platform | ID | -| -------------------------------------------------------------------------------------------------- | ---------- | :------------- | -| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` | -| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` | -| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` | - -#### Video Files - -If you want to embed a video file directly, use the following syntax: - -```liquid -{% include embed/video.html src='{URL}' %} -``` - -Where `URL` is a URL to a video file e.g. `/path/to/sample/video.mp4`. - -You can also specify additional attributes for the embedded video file. Here is a full list of attributes allowed. - -- `poster='/path/to/poster.png'` — poster image for a video that is shown while video is downloading -- `title='Text'` — title for a video that appears below the video and looks same as for images -- `autoplay=true` — video automatically begins to play back as soon as it can -- `loop=true` — automatically seek back to the start upon reaching the end of the video -- `muted=true` — audio will be initially silenced -- `types` — specify the extensions of additional video formats separated by `|`. Ensure these files exist in the same directory as your primary video file. - -Consider an example using all of the above: - -```liquid -{% - include embed/video.html - src='/path/to/video.mp4' - types='ogg|mov' - poster='poster.png' - title='Demo video' - autoplay=true - loop=true - muted=true -%} -``` - -### Audios - -If you want to embed an audio file directly, use the following syntax: - -```liquid -{% include embed/audio.html src='{URL}' %} -``` - -Where `URL` is a URL to an audio file e.g. `/path/to/audio.mp3`. - -You can also specify additional attributes for the embedded audio file. Here is a full list of attributes allowed. - -- `title='Text'` — title for an audio that appears below the audio and looks same as for images -- `types` — specify the extensions of additional audio formats separated by `|`. Ensure these files exist in the same directory as your primary audio file. - -Consider an example using all of the above: - -```liquid -{% - include embed/audio.html - src='/path/to/audio.mp3' - types='ogg|wav|aac' - title='Demo audio' -%} -``` - -## Pinned Posts - -You can pin one or more posts to the top of the home page, and the fixed posts are sorted in reverse order according to their release date. Enable by: - -```yaml ---- -pin: true ---- -``` - -## Prompts - -There are several types of prompts: `tip`, `info`, `warning`, and `danger`. They can be generated by adding the class `prompt-{type}` to the blockquote. For example, define a prompt of type `info` as follows: - -```md -> Example line for prompt. -{: .prompt-info } -``` -{: .nolineno } - -## Syntax - -### Inline Code - -```md -`inline code part` -``` -{: .nolineno } - -### Filepath Highlight - -```md -`/path/to/a/file.extend`{: .filepath} -``` -{: .nolineno } - -### Code Block - -Markdown symbols ```` ``` ```` can easily create a code block as follows: - -````md -``` -This is a plaintext code snippet. -``` -```` - -#### Specifying Language - -Using ```` ```{language} ```` you will get a code block with syntax highlight: - -````markdown -```yaml -key: value -``` -```` - -> The Jekyll tag `{% highlight %}` is not compatible with this theme. -{: .prompt-danger } - -#### Line Number - -By default, all languages except `plaintext`, `console`, and `terminal` will display line numbers. When you want to hide the line number of a code block, add the class `nolineno` to it: - -````markdown -```shell -echo 'No more line numbers!' -``` -{: .nolineno } -```` - -#### Specifying the Filename - -You may have noticed that the code language will be displayed at the top of the code block. If you want to replace it with the file name, you can add the attribute `file` to achieve this: - -````markdown -```shell -# content -``` -{: file="path/to/file" } -```` - -#### Liquid Codes - -If you want to display the **Liquid** snippet, surround the liquid code with `{% raw %}` and `{% endraw %}`: - -````markdown -{% raw %} -```liquid -{% if product.title contains 'Pack' %} - This product's title contains the word Pack. -{% endif %} -``` -{% endraw %} -```` - -Or adding `render_with_liquid: false` (Requires Jekyll 4.0 or higher) to the post's YAML block. - -## Mathematics - -We use [**MathJax**][mathjax] to generate mathematics. For website performance reasons, the mathematical feature won't be loaded by default. But it can be enabled by: - -[mathjax]: https://www.mathjax.org/ - -```yaml ---- -math: true ---- -``` - -After enabling the mathematical feature, you can add math equations with the following syntax: - -- **Block math** should be added with `$$ math $$` with **mandatory** blank lines before and after `$$` - - **Inserting equation numbering** should be added with `$$\begin{equation} math \end{equation}$$` - - **Referencing equation numbering** should be done with `\label{eq:label_name}` in the equation block and `\eqref{eq:label_name}` inline with text (see example below) -- **Inline math** (in lines) should be added with `$$ math $$` without any blank line before or after `$$` -- **Inline math** (in lists) should be added with `\$$ math $$` - -```markdown - - -$$ -LaTeX_math_expression -$$ - - - -$$ -\begin{equation} - LaTeX_math_expression - \label{eq:label_name} -\end{equation} -$$ - -Can be referenced as \eqref{eq:label_name}. - - - -"Lorem ipsum dolor sit amet, $$ LaTeX_math_expression $$ consectetur adipiscing elit." - - - -1. \$$ LaTeX_math_expression $$ -2. \$$ LaTeX_math_expression $$ -3. \$$ LaTeX_math_expression $$ -``` - -> Starting with `v7.0.0`, configuration options for **MathJax** have been moved to file `assets/js/data/mathjax.js`{: .filepath }, and you can change the options as needed, such as adding [extensions][mathjax-exts]. -> If you are building the site via `chirpy-starter`, copy that file from the gem installation directory (check with command `bundle info --path jekyll-theme-chirpy`) to the same directory in your repository. -{: .prompt-tip } - -[mathjax-exts]: https://docs.mathjax.org/en/latest/input/tex/extensions/index.html - -## Mermaid - -[**Mermaid**](https://github.com/mermaid-js/mermaid) is a great diagram generation tool. To enable it on your post, add the following to the YAML block: - -```yaml ---- -mermaid: true ---- -``` - -Then you can use it like other markdown languages: surround the graph code with ```` ```mermaid ```` and ```` ``` ````. - -## Learn More - -For more knowledge about Jekyll posts, visit the [Jekyll Docs: Posts](https://jekyllrb.com/docs/posts/). diff --git a/_posts/2019-08-09-getting-started.md b/_posts/2019-08-09-getting-started.md deleted file mode 100644 index 71383938b75..00000000000 --- a/_posts/2019-08-09-getting-started.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Getting Started -description: >- - Get started with Chirpy basics in this comprehensive overview. - You will learn how to install, configure, and use your first Chirpy-based website, as well as deploy it to a web server. -author: cotes -date: 2019-08-09 20:55:00 +0800 -categories: [Blogging, Tutorial] -tags: [getting started] -pin: true -media_subpath: '/posts/20180809' ---- - -## Creating a Site Repository - -When creating your site repository, you have two options depending on your needs: - -### Option 1. Using the Starter (Recommended) - -This approach simplifies upgrades, isolates unnecessary files, and is perfect for users who want to focus on writing with minimal configuration. - -1. Sign in to GitHub and navigate to the [**starter**][starter]. -2. Click the Use this template button and then select Create a new repository. -3. Name the new repository `.github.io`, replacing `username` with your lowercase GitHub username. - -### Option 2. Forking the Theme - -This approach is convenient for modifying features or UI design, but presents challenges during upgrades. So don't try this unless you are familiar with Jekyll and plan to heavily modify this theme. - -1. Sign in to GitHub. -2. [Fork the theme repository](https://github.com/cotes2020/jekyll-theme-chirpy/fork). -3. Name the new repository `.github.io`, replacing `username` with your lowercase GitHub username. - -## Setting up the Environment - -Once your repository is created, it's time to set up your development environment. There are two primary methods: - -### Using Dev Containers (Recommended for Windows) - -Dev Containers offer an isolated environment using Docker, which prevents conflicts with your system and ensures all dependencies are managed within the container. - -**Steps**: - -1. Install Docker: - - On Windows/macOS, install [Docker Desktop][docker-desktop]. - - On Linux, install [Docker Engine][docker-engine]. -2. Install [VS Code][vscode] and the [Dev Containers extension][dev-containers]. -3. Clone your repository: - - For Docker Desktop: Start VS Code and [clone your repo in a container volume][dc-clone-in-vol]. - - For Docker Engine: Clone your repo locally, then [open it in a container][dc-open-in-container] via VS Code. -4. Wait for the Dev Containers setup to complete. - -### Setting up Natively (Recommended for Unix-like OS) - -For Unix-like systems, you can set up the environment natively for optimal performance, though you can also use Dev Containers as an alternative. - -**Steps**: - -1. Follow the [Jekyll installation guide](https://jekyllrb.com/docs/installation/) to install Jekyll and ensure [Git](https://git-scm.com/) is installed. -2. Clone your repository to your local machine. -3. If you forked the theme, install [Node.js][nodejs] and run `bash tools/init.sh` in the root directory to initialize the repository. -4. Run command `bundle` in the root of your repository to install the dependencies. - -## Usage - -### Start the Jekyll Server - -To run the site locally, use the following command: - -```terminal -$ bundle exec jekyll serve -``` - -> If you are using Dev Containers, you must run that command in the **VS Code** Terminal. -{: .prompt-info } - -After a few seconds, the local server will be available at . - -### Configuration - -Update the variables in `_config.yml`{: .filepath} as needed. Some typical options include: - -- `url` -- `avatar` -- `timezone` -- `lang` - -### Social Contact Options - -Social contact options are displayed at the bottom of the sidebar. You can enable or disable specific contacts in the `_data/contact.yml`{: .filepath} file. - -### Customizing the Stylesheet - -To customize the stylesheet, copy the theme's `assets/css/jekyll-theme-chirpy.scss`{: .filepath} file to the same path in your Jekyll site, and add your custom styles at the end of the file. - -### Customizing Static Assets - -Static assets configuration was introduced in version `5.1.0`. The CDN of the static assets is defined in `_data/origin/cors.yml`{: .filepath }. You can replace some of them based on the network conditions in the region where your website is published. - -If you prefer to self-host the static assets, refer to the [_chirpy-static-assets_](https://github.com/cotes2020/chirpy-static-assets#readme) repository. - -## Deployment - -Before deploying, check the `_config.yml`{: .filepath} file and ensure the `url` is configured correctly. If you prefer a [**project site**](https://help.github.com/en/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites) and don't use a custom domain, or if you want to visit your website with a base URL on a web server other than **GitHub Pages**, remember to set the `baseurl` to your project name, starting with a slash, e.g., `/project-name`. - -Now you can choose _ONE_ of the following methods to deploy your Jekyll site. - -### Deploy Using Github Actions - -Prepare the following: - -- If you're on the GitHub Free plan, keep your site repository public. -- If you have committed `Gemfile.lock`{: .filepath} to the repository, and your local machine is not running Linux, update the platform list of the lock file: - - ```console - $ bundle lock --add-platform x86_64-linux - ``` - -Next, configure the _Pages_ service: - -1. Go to your repository on GitHub. Select the _Settings_ tab, then click _Pages_ in the left navigation bar. In the **Source** section (under _Build and deployment_), select [**GitHub Actions**][pages-workflow-src] from the dropdown menu. - ![Build source](pages-source-light.png){: .light .border .normal w='375' h='140' } - ![Build source](pages-source-dark.png){: .dark .normal w='375' h='140' } - -2. Push any commits to GitHub to trigger the _Actions_ workflow. In the _Actions_ tab of your repository, you should see the workflow _Build and Deploy_ running. Once the build is complete and successful, the site will be deployed automatically. - -You can now visit the URL provided by GitHub to access your site. - -### Manual Build and Deployment - -For self-hosted servers, you will need to build the site on your local machine and then upload the site files to the server. - -Navigate to the root of the source project, and build your site with the following command: - -```console -$ JEKYLL_ENV=production bundle exec jekyll b -``` - -Unless you specified the output path, the generated site files will be placed in the `_site`{: .filepath} folder of the project's root directory. Upload these files to your target server. - -[nodejs]: https://nodejs.org/ -[starter]: https://github.com/cotes2020/chirpy-starter -[pages-workflow-src]: https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow -[docker-desktop]: https://www.docker.com/products/docker-desktop/ -[docker-engine]: https://docs.docker.com/engine/install/ -[vscode]: https://code.visualstudio.com/ -[dev-containers]: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers -[dc-clone-in-vol]: https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-a-git-repository-or-github-pr-in-an-isolated-container-volume -[dc-open-in-container]: https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-an-existing-folder-in-a-container diff --git a/_posts/2019-08-11-customize-the-favicon.md b/_posts/2019-08-11-customize-the-favicon.md deleted file mode 100644 index a3278fa90eb..00000000000 --- a/_posts/2019-08-11-customize-the-favicon.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Customize the Favicon -author: cotes -date: 2019-08-11 00:34:00 +0800 -categories: [Blogging, Tutorial] -tags: [favicon] ---- - -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. - -## Generate the favicon - -Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button Select your Favicon image to upload your image file. - -In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button Generate your Favicons and HTML code to generate the favicon. - -## Download & Replace - -Download the generated package, unzip and delete the following two from the extracted files: - -- `browserconfig.xml`{: .filepath} -- `site.webmanifest`{: .filepath} - -And then copy the remaining image files (`.PNG`{: .filepath} and `.ICO`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one. - -The following table will help you understand the changes to the favicon files: - -| File(s) | From Online Tool | From Chirpy | -|---------------------|:---------------------------------:|:-----------:| -| `*.PNG` | ✓ | ✗ | -| `*.ICO` | ✓ | ✗ | - - -> ✓ means keep, ✗ means delete. -{: .prompt-info } - -The next time you build the site, the favicon will be replaced with a customized edition. diff --git a/_posts/2025-08-05-TIL.md b/_posts/2025-08-05-TIL.md new file mode 100644 index 00000000000..5c14e4eaf3c --- /dev/null +++ b/_posts/2025-08-05-TIL.md @@ -0,0 +1,60 @@ +--- +title: TIL +date: 2025-08-05T21:11:00+09:00 +categories: [TIL] +tags: [TIL] +image: assets/img/TIL.png +--- + +## 오늘 배운것 +- 코딩 테스트 볼때 자주 발생하는 실수 또는 오류에 대해 배움 + + +### 예상치 못한 음수가 발생하는 경우 +주로 정수형에서 많이 발상해고 대략 21억의 값이 넘어갈때 표현 범위를 넘어서 발생한다. +`형변환`으로 범위를 늘려주면 된다. + + +### 시간초과의 원인을 찾아 해결 +문제에서 시간초과는 두가지 이유로 발생할 수 있다. + +1. 작성한 로직의 시간 복잡도가 주어진 시간을 넘어가는 경우 +2. 데이터 입출력의 횟수가 많은 경우 + +데이터 입출력에 Scanner, print, BufferedReader, BufferedWriter 쌍으로 많이 사용된다. + +데이터의 입출력의 횟수가 적으면 둘의 차이가 많이 안나지만 많아지는 순간 둘의 실행속도의 차이가 많이 발생한다. + +### 인덱스에 의미 부여하며 풀기 +인덱스가 데이터의 순서에 대한 의미는 잘 알고 있다. +문제를 풀땐 데이터의 순서에 대한 의미 말고도 특정 값의 갯수 등... 여러 의미를 부여해서 문제를 해결할 수 있다. + +### 나머지 연산의 중요성 +코테 문제에서 나머지 연산 문제는 꽤 많이 존재한다. 그리고 나머지 연산 구할때 함정 문제도 존재한다. +1 ~ 50 까지의 곱을 10007로 나눈 나머지를 구하라는 문제를 보면 +`long` 타입으로 선언해도 음수가 나오게 된다. 그래서 분배 법칙에 대해 알아야한다. + +#### 분배법칙 +- 덧셈, 뺄셈, 곱셉에 분배법칙이 적용된다. +- 반복문 내에서 3개의 연산자가 존재한다면 나머지를 구한뒤 최종 나머지 값을 구해도 동일한 값이 나온다. + +### 정렬기초 +- `Arrays.sort(arr)` : 기본자료형 배열의 오름차순 정렬 +- `Arrays.sort(arr, Collections.reverseOrder())` : 참조자료형 배열의 내림차순 정렬 +- `negate(arr); Arrays.sort(arr); negate(arr)` : 기본자료형 배열 내림차순 구할때 음수로 바꾸고 오름차순 정렬한 뒤, 다시 양수로 변환 + +### 다중 조건 정렬 +객체간의 정렬을 구하기 위해 두개의 인터페이스가 사용된다. +1. `Comparable` : 객체 내부에 작성됨. +2. `Comparator` : 객체 외부에 작성됨.자유롭게 생성가능 + + +## 오늘 회고 +오늘 몸에 염증이 많이 생겼었는지 일하는중에 정신을 못차려서 해야했던 업무를 다 완수하지 못했다. +건강 챙겨서 빨리 회복하도록 노력해야겠다. +
+그리고 Do it! 알고리즘 책을 사서 알고리즘 공부를 시작하려고 한다. 이제 2일차로 많이 공부하지 못했지만 +새로운 지식분배법칙을 알게되었고, 까먹었고 자주사용하지 않은 지식정렬조건, 다중정렬에 대해 리마인드 할 수 있어서 좋았다. + + + diff --git a/_posts/2025-08-06-distributed-lock.md b/_posts/2025-08-06-distributed-lock.md new file mode 100644 index 00000000000..e52e7600876 --- /dev/null +++ b/_posts/2025-08-06-distributed-lock.md @@ -0,0 +1,58 @@ +--- +title: 분산 락(Distributed Lock)이란? +date: 2025-08-06 19:35:00 +0900 +categories: [Backend, Database] +tags: [distributed-lock, redis, zookeeper] +--- + +## 분산 락(Distributed Lock)이란 무엇일까요? + +분산 시스템 환경에서는 여러 서버가 공유된 자원(데이터, 파일 등)에 동시에 접근하려고 할 때 데이터의 일관성과 무결성을 해치는 문제가 발생할 수 있습니다. 예를 들어, 여러 사용자가 동시에 상품 재고를 수정하려고 하면, 실제 재고와 데이터베이스의 값이 달라지는 문제가 생길 수 있습니다. + +이러한 문제를 해결하기 위해 **분산 락**이 사용됩니다. 분산 락은 여러 서버에 분산된 시스템에서 공유 자원에 대한 동시 접근을 제어하는 동기화 메커니즘입니다. 즉, 특정 자원에 대해서는 한 번에 하나의 프로세스(또는 스레드)만 접근할 수 있도록 보장하여 데이터의 일관성을 유지합니다. + +## 분산 락은 왜 필요할까요? + +하나의 서버에서 동작하는 애플리케이션에서는 `synchronized` 키워드나 `ReentrantLock`과 같은 자바의 동시성 제어 도구를 사용하여 스레드 간의 동시 접근을 제어할 수 있습니다. 하지만 서버가 여러 대로 확장된 분산 환경에서는 이러한 방식이 동작하지 않습니다. 각 서버는 자신만의 메모리(JVM)를 가지고 있기 때문에, 한 서버의 락은 다른 서버에 영향을 주지 못합니다. + +따라서 분산 환경에서는 모든 서버가 공통으로 참조할 수 있는 외부의 락 관리 시스템이 필요합니다. 이것이 바로 분산 락의 역할입니다. + +## 분산 락 구현 방법 + +분산 락을 구현하는 데는 여러 가지 방법이 있지만, 주로 다음과 같은 외부 시스템을 활용합니다. + +### 1. Redis를 이용한 분산 락 + +[Redis](https://redis.io/)는 인-메모리 데이터 저장소로, 빠른 속도와 간단한 명령어(SETNX)를 제공하여 분산 락을 구현하는 데 널리 사용됩니다. + +- **SETNX (SET if Not eXists)**: `SETNX` 명령어는 키가 존재하지 않을 때만 값을 설정합니다. 이 명령어의 원자성(atomic)을 이용하여 락을 구현할 수 있습니다. + - 프로세스가 락을 획득하려면 `SETNX lock_key "locked"`와 같은 명령어를 실행합니다. + - 명령어가 성공하면(1을 반환), 락을 획득한 것입니다. + - 이미 다른 프로세스가 락을 가지고 있다면 명령어는 실패합니다(0을 반환). + +- **단점**: + - **락 유실**: 락을 획득한 클라이언트가 처리를 완료하고 락을 해제하기 전에 비정상적으로 종료되면, 락이 영원히 해제되지 않는 **데드락(deadlock)** 상태에 빠질 수 있습니다. 이를 방지하기 위해 락에 유효 시간(TTL, Time-To-Live)을 설정해야 합니다. + - **Redis 단일 장애점(SPOF)**: 단일 Redis 인스턴스를 사용하면 해당 인스턴스에 장애가 발생했을 때 전체 시스템의 락 기능이 마비될 수 있습니다. 이를 해결하기 위해 **Redis Sentinel**이나 **Redis Cluster**와 같은 고가용성 구성을 사용해야 합니다. + +### 2. ZooKeeper를 이용한 분산 락 + +[Apache ZooKeeper](https://zookeeper.apache.org/)는 분산 시스템의 코디네이션을 위해 설계된 서비스로, 분산 락을 구현하는 데 매우 안정적인 기능을 제공합니다. + +- **영구 노드(Persistent Nodes)와 임시 노드(Ephemeral Nodes)**: ZooKeeper는 파일 시스템과 유사한 계층적인 ZNode 구조를 가집니다. + - 락을 표현하기 위해 특정 경로에 **임시 노드(ephemeral node)**를 생성합니다. + - 임시 노드는 해당 노드를 생성한 클라이언트의 세션이 활성 상태일 때만 존재합니다. 만약 클라이언트가 비정상적으로 종료되면, 세션이 끊어지고 해당 임시 노드는 자동으로 삭제됩니다. 이 특성 덕분에 데드락을 방지할 수 있습니다. + - **순차 노드(Sequential Nodes)**: ZooKeeper는 노드를 생성할 때 순번을 붙여주는 기능을 제공합니다. 이를 이용하면 모든 요청이 락을 기다리게 하는 것이 아니라, 순서대로 락을 획득하도록 하여 "Thundering Herd" 문제를 방지하고 공정한 락 획득 순서를 보장할 수 있습니다. + +- **단점**: + - **성능**: Redis에 비해 상대적으로 느릴 수 있습니다. ZooKeeper는 데이터의 일관성과 안정성을 보장하기 위해 복잡한 프로토콜(ZAB)을 사용하기 때문입니다. + - **운영 복잡성**: Redis에 비해 설치 및 운영이 더 복잡합니다. + +## 분산 락 사용 시 고려사항 + +- **데드락 방지**: 락을 획득한 클라이언트가 어떤 이유로든 락을 해제하지 못하는 상황을 반드시 방지해야 합니다. TTL 설정이나 ZooKeeper의 임시 노드와 같은 메커니즘이 필수적입니다. +- **성능**: 분산 락은 시스템의 전체 성능에 큰 영향을 미칠 수 있습니다. 락을 획득하고 해제하는 과정이 빈번하게 발생한다면, Redis와 같이 빠른 솔루션이 적합할 수 있습니다. +- **안정성 및 고가용성**: 락을 관리하는 시스템 자체가 장애의 원인이 되어서는 안 됩니다. Redis Cluster, ZooKeeper 앙상블(ensemble) 등 고가용성 구성이 필요합니다. + +## 결론 + +분산 락은 분산 시스템에서 데이터의 일관성을 보장하기 위한 필수적인 도구입니다. 각 구현 방식은 장단점이 명확하므로, 시스템의 요구사항(성능, 안정성, 복잡성 등)을 신중하게 고려하여 적절한 방법을 선택해야 합니다. diff --git a/_sass/vendors/_bootstrap.scss b/_sass/vendors/_bootstrap.scss new file mode 100644 index 00000000000..2159e1fa326 --- /dev/null +++ b/_sass/vendors/_bootstrap.scss @@ -0,0 +1,5 @@ +@charset "UTF-8";/*! + * Bootstrap v5.3.7 (https://getbootstrap.com/) + * Copyright 2011-2025 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::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(-1 * var(--bs-border-width))}.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.414'/%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;filter:var(--bs-btn-close-filter);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)}:root{--bs-btn-close-filter: }.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)}:root{}.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}.opacity-75{opacity:.75!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}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!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-shrink-0{flex-shrink:0!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-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!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-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!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}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!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/img/TIL.png b/assets/img/TIL.png new file mode 100644 index 00000000000..60f928a1c25 Binary files /dev/null and b/assets/img/TIL.png differ diff --git a/assets/js/dist/app.min.js b/assets/js/dist/app.min.js new file mode 100644 index 00000000000..5c97d7be843 --- /dev/null +++ b/assets/js/dist/app.min.js @@ -0,0 +1,7 @@ +--- +permalink: /:basename +--- +/*! + * jekyll-theme-chirpy v7.3.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=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),i=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),s=e=>i(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(r(e)):null,a=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.call(...t):n},d=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void u(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),u(e))};t.addEventListener(n,i),setTimeout(()=>{o||t.dispatchEvent(new Event(n))},r)},f=/[^.]*(?=\..*)\.|.*/,h=/\..*/,g=/::\d+$/,m={};let p=1;const b={mouseenter:"mouseover",mouseleave:"mouseout"},v=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 _(e,t){return t&&`${t}::${p++}`||e.uidEvent||p++}function y(e){const t=_(e);return e.uidEvent=t,m[t]=m[t]||{},m[t]}function E(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 w(e,t,n){const r="string"==typeof t,o=r?n:t||n;let i=O(e);return v.has(i)||(i=e),[r,o,i]}function A(e,t,n,r,o){if("string"!=typeof t||!e)return;let[i,s,a]=w(t,n,r);if(t in b){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=y(e),c=l[a]||(l[a]={}),u=E(c,s,i?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const d=_(s,t.replace(f,"")),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 $(o,{delegateTarget:s}),r.oneOff&&T.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(r){return $(r,{delegateTarget:e}),n.oneOff&&T.off(e,r.type,t),t.apply(e,[r])}}(e,s);h.delegationSelector=i?n:null,h.callable=s,h.oneOff=o,h.uidEvent=d,c[d]=h,e.addEventListener(a,h,i)}function S(e,t,n,r,o){const i=E(t[n],r,o);i&&(e.removeEventListener(n,i,Boolean(o)),delete t[n][i.uidEvent])}function C(e,t,n,r){const o=t[n]||{};for(const[i,s]of Object.entries(o))i.includes(r)&&S(e,t,n,s.callable,s.delegationSelector)}function O(e){return e=e.replace(h,""),b[e]||e}const T={on(e,t,n,r){A(e,t,n,r,!1)},one(e,t,n,r){A(e,t,n,r,!0)},off(e,t,n,r){if("string"!=typeof t||!e)return;const[o,i,s]=w(t,n,r),a=s!==t,l=y(e),c=l[s]||{},u=t.startsWith(".");if(void 0===i){if(u)for(const n of Object.keys(l))C(e,l,n,t.slice(1));for(const[n,r]of Object.entries(c)){const o=n.replace(g,"");a&&!t.includes(o)||S(e,l,s,r.callable,r.delegationSelector)}}else{if(!Object.keys(c).length)return;S(e,l,s,i,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const r=l();let o=null,i=!0,s=!0,a=!1;t!==O(t)&&r&&(o=r.Event(t,n),r(e).trigger(o),i=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=$(new Event(t,{bubbles:i,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function $(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 N(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 j(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const L={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${j(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${j(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),t[n]=N(e.dataset[r])}return t},getDataAttribute:(e,t)=>N(e.getAttribute(`data-bs-${j(t)}`))};class D{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=i(t)?L.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...i(t)?L.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,r]of Object.entries(t)){const t=e[n],s=i(t)?"element":o(t);if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${r}".`)}}}class I extends D{constructor(e,n){super(),(e=s(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),T.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){d(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(s(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.7"}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 k=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},M={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=>!a(e)&&(e=>{if(!i(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=k(e);return t&&M.findOne(t)?t:null},getElementFromSelector(e){const t=k(e);return t?M.findOne(t):null},getMultipleElementsFromSelector(e){const t=k(e);return t?M.find(t):[]}},K=".bs.toast",P=`mouseover${K}`,q=`mouseout${K}`,x=`focusin${K}`,W=`focusout${K}`,Y=`hide${K}`,F=`hidden${K}`,R=`show${K}`,V=`shown${K}`,Q="hide",z="show",B="showing",H={animation:"boolean",autohide:"boolean",delay:"number"},U={animation:!0,autohide:!0,delay:5e3};class G extends I{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return U}static get DefaultType(){return H}static get NAME(){return"toast"}show(){if(T.trigger(this._element,R).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(Q),this._element.offsetHeight,this._element.classList.add(z,B),this._queueCallback(()=>{this._element.classList.remove(B),T.trigger(this._element,V),this._maybeScheduleHide()},this._element,this._config.animation)}hide(){if(!this.isShown())return;if(T.trigger(this._element,Y).defaultPrevented)return;this._element.classList.add(B),this._queueCallback(()=>{this._element.classList.add(Q),this._element.classList.remove(B,z),T.trigger(this._element,F)},this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(z),super.dispose()}isShown(){return this._element.classList.contains(z)}_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(){T.on(this._element,P,e=>this._onInteraction(e,!0)),T.on(this._element,q,e=>this._onInteraction(e,!1)),T.on(this._element,x,e=>this._onInteraction(e,!0)),T.on(this._element,W,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){const t=G.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}})}}var J,Z;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;T.on(document,n,`[data-bs-dismiss="${r}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),a(this))return;const o=M.getElementFromSelector(this)||this.closest(`.${r}`);e.getOrCreateInstance(o)[t]()})}(G),J=G,Z=()=>{const e=l();if(e){const t=J.NAME,n=e.fn[t];e.fn[t]=J.jQueryInterface,e.fn[t].Constructor=J,e.fn[t].noConflict=()=>(e.fn[t]=n,J.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of c)e()}),c.push(Z)):Z(),"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=G.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..ee401ae2959 --- /dev/null +++ b/assets/js/dist/categories.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.3.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,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):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 i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),o=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),r=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),s=e=>r(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,a=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?a(e.parentNode):null},l=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],u=()=>"rtl"===document.documentElement.dir,d=e=>{var t;t=()=>{const t=c();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?(f.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of f)e()}),f.push(t)):t()},p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.call(...t):n},h=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(e);const i=(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 o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),p(e))};t.addEventListener(n,r),setTimeout(()=>{o||t.dispatchEvent(new Event(n))},i)},g=/[^.]*(?=\..*)\.|.*/,m=/\..*/,v=/::\d+$/,b={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(e,t){return t&&`${t}::${y++}`||e.uidEvent||y++}function O(e){const t=E(e);return e.uidEvent=t,b[t]=b[t]||{},b[t]}function x(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 A(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=S(e);return w.has(r)||(r=e),[i,o,r]}function C(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=A(t,n,i);if(t in _){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=O(e),c=l[a]||(l[a]={}),f=x(c,s,r?n:null);if(f)return void(f.oneOff=f.oneOff&&o);const u=E(s,t.replace(g,"")),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 k(o,{delegateTarget:s}),i.oneOff&&j.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return k(i,{delegateTarget:e}),n.oneOff&&j.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=u,c[u]=d,e.addEventListener(a,d,r)}function L(e,t,n,i,o){const r=x(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function T(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&L(e,t,n,s.callable,s.delegationSelector)}function S(e){return e=e.replace(m,""),_[e]||e}const j={on(e,t,n,i){C(e,t,n,i,!1)},one(e,t,n,i){C(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=A(t,n,i),a=s!==t,l=O(e),c=l[s]||{},f=t.startsWith(".");if(void 0===r){if(f)for(const n of Object.keys(l))T(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(v,"");a&&!t.includes(o)||L(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;L(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=c();let o=null,r=!0,s=!0,a=!1;t!==S(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=k(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function k(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 D(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 P(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const N={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${P(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${P(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),t[n]=D(e.dataset[i])}return t},getDataAttribute:(e,t)=>D(e.getAttribute(`data-bs-${P(t)}`))};class M{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=r(t)?N.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...r(t)?N.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(t)){const t=e[n],s=r(t)?"element":o(t);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}class B extends M{constructor(e,n){super(),(e=s(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),j.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){h(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(s(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.7"}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=>i(e)).join(","):null},F={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(!r(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&&F.findOne(t)?t:null},getElementFromSelector(e){const t=I(e);return t?F.findOne(t):null},getMultipleElementsFromSelector(e){const t=I(e);return t?F.find(t):[]}},H=".bs.collapse",$=`show${H}`,z=`shown${H}`,W=`hide${H}`,q=`hidden${H}`,R=`click${H}.data-api`,V="show",Y="collapse",U="collapsing",K=`:scope .${Y} .${Y}`,Q='[data-bs-toggle="collapse"]',X={parent:null,toggle:!0},G={parent:"(null|element)",toggle:"boolean"};class J extends B{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=F.find(Q);for(const e of n){const t=F.getSelectorFromElement(e),n=F.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 X}static get DefaultType(){return G}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=>J.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(j.trigger(this._element,$).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(Y),this._element.classList.add(U),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(U),this._element.classList.add(Y,V),this._element.style[t]="",j.trigger(this._element,z)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,W).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(Y,V);for(const e of this._triggerArray){const t=F.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(U),this._element.classList.add(Y),j.trigger(this._element,q)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(V)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=s(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(Q);for(const t of e){const e=F.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=F.find(K,this._config.parent);return F.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=J.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}})}}j.on(document,R,Q,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of F.getMultipleElementsFromSelector(this))J.getOrCreateInstance(e,{toggle:!1}).toggle()}),d(J);const Z=document.getElementsByClassName("collapse");var ee="top",te="bottom",ne="right",ie="left",oe="auto",re=[ee,te,ne,ie],se="start",ae="end",le="clippingParents",ce="viewport",fe="popper",ue="reference",de=re.reduce(function(e,t){return e.concat([t+"-"+se,t+"-"+ae])},[]),pe=[].concat(re,[oe]).reduce(function(e,t){return e.concat([t,t+"-"+se,t+"-"+ae])},[]),he="beforeRead",ge="read",me="afterRead",ve="beforeMain",be="main",ye="afterMain",_e="beforeWrite",we="write",Ee="afterWrite",Oe=[he,ge,me,ve,be,ye,_e,we,Ee];function xe(e){return e?(e.nodeName||"").toLowerCase():null}function Ae(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ce(e){return e instanceof Ae(e).Element||e instanceof Element}function Le(e){return e instanceof Ae(e).HTMLElement||e instanceof HTMLElement}function Te(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Ae(e).ShadowRoot||e instanceof ShadowRoot)}var Se={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];Le(o)&&xe(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},{});Le(i)&&xe(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(e){i.removeAttribute(e)}))})}},requires:["computeStyles"]};function je(e){return e.split("-")[0]}var ke=Math.max,De=Math.min,Pe=Math.round;function Ne(){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 Me(){return!/^((?!chrome|android).)*safari/i.test(Ne())}function Be(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Le(e)&&(o=e.offsetWidth>0&&Pe(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&Pe(i.height)/e.offsetHeight||1);var s=(Ce(e)?Ae(e):window).visualViewport,a=!Me()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,f=i.width/o,u=i.height/r;return{width:f,height:u,top:c,right:l+f,bottom:c+u,left:l,x:l,y:c}}function Ie(e){var t=Be(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 Fe(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Te(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function He(e){return Ae(e).getComputedStyle(e)}function $e(e){return["table","td","th"].indexOf(xe(e))>=0}function ze(e){return((Ce(e)?e.ownerDocument:e.document)||window.document).documentElement}function We(e){return"html"===xe(e)?e:e.assignedSlot||e.parentNode||(Te(e)?e.host:null)||ze(e)}function qe(e){return Le(e)&&"fixed"!==He(e).position?e.offsetParent:null}function Re(e){for(var t=Ae(e),n=qe(e);n&&$e(n)&&"static"===He(n).position;)n=qe(n);return n&&("html"===xe(n)||"body"===xe(n)&&"static"===He(n).position)?t:n||function(e){var t=/firefox/i.test(Ne());if(/Trident/i.test(Ne())&&Le(e)&&"fixed"===He(e).position)return null;var n=We(e);for(Te(n)&&(n=n.host);Le(n)&&["html","body"].indexOf(xe(n))<0;){var i=He(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 Ve(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ye(e,t,n){return ke(e,De(t,n))}function Ue(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ke(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var Qe={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=je(n.placement),l=Ve(a),c=[ie,ne].indexOf(a)>=0?"height":"width";if(r&&s){var f=function(e,t){return Ue("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ke(e,re))}(o.padding,n),u=Ie(r),d="y"===l?ee:ie,p="y"===l?te:ne,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],g=s[l]-n.rects.reference[l],m=Re(r),v=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=h/2-g/2,y=f[d],_=v-u[c]-f[p],w=v/2-u[c]/2+b,E=Ye(y,w,_),O=l;n.modifiersData[i]=((t={})[O]=E,t.centerOffset=E-w,t)}},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)))&&Fe(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Xe(e){return e.split("-")[1]}var Ge={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Je(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,f=e.roundOffsets,u=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof f?f({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=ie,_=ee,w=window;if(c){var E=Re(n),O="clientHeight",x="clientWidth";if(E===Ae(n)&&"static"!==He(E=ze(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===ee||(o===ie||o===ne)&&r===ae)_=te,g-=(u&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=l?1:-1;if(o===ie||(o===ee||o===te)&&r===ae)y=ne,p-=(u&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Ge),L=!0===f?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:Pe(n*o)/o||0,y:Pe(i*o)/o||0}}({x:p,y:g},Ae(n)):{x:p,y:g};return p=L.x,g=L.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((t={})[_]=b?g+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var Ze={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:je(t.placement),variation:Xe(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,Je(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,Je(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:{}},et={passive:!0};var tt={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=Ae(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach(function(e){e.addEventListener("scroll",n.update,et)}),a&&l.addEventListener("resize",n.update,et),function(){r&&c.forEach(function(e){e.removeEventListener("scroll",n.update,et)}),a&&l.removeEventListener("resize",n.update,et)}},data:{}},nt={left:"right",right:"left",bottom:"top",top:"bottom"};function it(e){return e.replace(/left|right|bottom|top/g,function(e){return nt[e]})}var ot={start:"end",end:"start"};function rt(e){return e.replace(/start|end/g,function(e){return ot[e]})}function st(e){var t=Ae(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function at(e){return Be(ze(e)).left+st(e).scrollLeft}function lt(e){var t=He(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ct(e){return["html","body","#document"].indexOf(xe(e))>=0?e.ownerDocument.body:Le(e)&<(e)?e:ct(We(e))}function ft(e,t){var n;void 0===t&&(t=[]);var i=ct(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=Ae(i),s=o?[r].concat(r.visualViewport||[],lt(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ft(We(s)))}function ut(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function dt(e,t,n){return t===ce?ut(function(e,t){var n=Ae(e),i=ze(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Me();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+at(e),y:l}}(e,n)):Ce(t)?function(e,t){var n=Be(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):ut(function(e){var t,n=ze(e),i=st(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=ke(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=ke(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+at(e),l=-i.scrollTop;return"rtl"===He(o||n).direction&&(a+=ke(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(ze(e)))}function pt(e,t,n,i){var o="clippingParents"===t?function(e){var t=ft(We(e)),n=["absolute","fixed"].indexOf(He(e).position)>=0&&Le(e)?Re(e):e;return Ce(n)?t.filter(function(e){return Ce(e)&&Fe(e,n)&&"body"!==xe(e)}):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(t,n){var o=dt(e,n,i);return t.top=ke(o.top,t.top),t.right=De(o.right,t.right),t.bottom=De(o.bottom,t.bottom),t.left=ke(o.left,t.left),t},dt(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 ht(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?je(o):null,s=o?Xe(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case ee:t={x:a,y:n.y-i.height};break;case te:t={x:a,y:n.y+n.height};break;case ne:t={x:n.x+n.width,y:l};break;case ie:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Ve(r):null;if(null!=c){var f="y"===c?"height":"width";switch(s){case se:t[c]=t[c]-(n[f]/2-i[f]/2);break;case ae:t[c]=t[c]+(n[f]/2-i[f]/2)}}return t}function gt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?le:a,c=n.rootBoundary,f=void 0===c?ce:c,u=n.elementContext,d=void 0===u?fe:u,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,v=Ue("number"!=typeof m?m:Ke(m,re)),b=d===fe?ue:fe,y=e.rects.popper,_=e.elements[h?b:d],w=pt(Ce(_)?_:_.contextElement||ze(e.elements.popper),l,f,s),E=Be(e.elements.reference),O=ht({reference:E,element:y,placement:o}),x=ut(Object.assign({},y,O)),A=d===fe?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=e.modifiersData.offset;if(d===fe&&L){var T=L[o];Object.keys(C).forEach(function(e){var t=[ne,te].indexOf(e)>=0?1:-1,n=[ee,te].indexOf(e)>=0?"y":"x";C[e]+=T[n]*t})}return C}function mt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?pe:l,f=Xe(i),u=f?a?de:de.filter(function(e){return Xe(e)===f}):re,d=u.filter(function(e){return c.indexOf(e)>=0});0===d.length&&(d=u);var p=d.reduce(function(t,n){return t[n]=gt(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[je(n)],t},{});return Object.keys(p).sort(function(e,t){return p[e]-p[t]})}var vt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,f=n.boundary,u=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=t.options.placement,v=je(m),b=l||(v===m||!h?[it(m)]:function(e){if(je(e)===oe)return[];var t=it(e);return[rt(e),t,rt(t)]}(m)),y=[m].concat(b).reduce(function(e,n){return e.concat(je(n)===oe?mt(t,{placement:n,boundary:f,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:g}):n)},[]),_=t.rects.reference,w=t.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=gt(t,{placement:C,boundary:f,rootBoundary:u,altBoundary:d,padding:c}),D=S?T?ne:ie:T?te:ee;_[j]>w[j]&&(D=it(D));var P=it(D),N=[];if(r&&N.push(k[L]<=0),a&&N.push(k[D]<=0,k[P]<=0),N.every(function(e){return e})){x=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(e){var t=y.find(function(t){var n=E.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(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 yt(e){return[ee,ne,te,ie].some(function(t){return e[t]>=0})}var _t={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=gt(t,{elementContext:"reference"}),a=gt(t,{altBoundary:!0}),l=bt(s,i),c=bt(a,o,r),f=yt(l),u=yt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:f,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":f,"data-popper-escaped":u})}};var wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=pe.reduce(function(e,n){return e[n]=function(e,t,n){var i=je(e),o=[ie,ee].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[ie,ne].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e},{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=ht({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var Ot={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,f=n.altBoundary,u=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=gt(t,{boundary:l,rootBoundary:c,padding:u,altBoundary:f}),v=je(t.placement),b=Xe(t.placement),y=!b,_=Ve(v),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,O=t.rects.reference,x=t.rects.popper,A="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(E){if(r){var S,j="y"===_?ee:ie,k="y"===_?te:ne,D="y"===_?"height":"width",P=E[_],N=P+m[j],M=P-m[k],B=p?-x[D]/2:0,I=b===se?O[D]:x[D],F=b===se?-x[D]:-O[D],H=t.elements.arrow,$=p&&H?Ie(H):{width:0,height:0},z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],q=z[k],R=Ye(0,O[D],$[D]),V=y?O[D]/2-B-R-W-C.mainAxis:I-R-W-C.mainAxis,Y=y?-O[D]/2+B+R+q+C.mainAxis:F+R+q+C.mainAxis,U=t.elements.arrow&&Re(t.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==L?void 0:L[_])?S:0,X=P+Y-Q,G=Ye(p?De(N,P+V-Q-K):N,P,p?ke(M,X):M);E[_]=G,T[_]=G-P}if(a){var J,Z="x"===_?ee:ie,oe="x"===_?te:ne,re=E[w],ae="y"===w?"height":"width",le=re+m[Z],ce=re-m[oe],fe=-1!==[ee,ie].indexOf(v),ue=null!=(J=null==L?void 0:L[w])?J:0,de=fe?le:re-O[ae]-x[ae]-ue+C.altAxis,pe=fe?re+O[ae]+x[ae]-ue-C.altAxis:ce,he=p&&fe?function(e,t,n){var i=Ye(e,t,n);return i>n?n:i}(de,re,pe):Ye(p?de:le,re,p?pe:ce);E[w]=he,T[w]=he-re}t.modifiersData[i]=T}},requiresIfExists:["offset"]};function xt(e,t,n){void 0===n&&(n=!1);var i,o,r=Le(t),s=Le(t)&&function(e){var t=e.getBoundingClientRect(),n=Pe(t.width)/e.offsetWidth||1,i=Pe(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=ze(t),l=Be(e,s,n),c={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&(("body"!==xe(t)||lt(a))&&(c=(i=t)!==Ae(i)&&Le(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:st(i)),Le(t)?((f=Be(t,!0)).x+=t.clientLeft,f.y+=t.clientTop):a&&(f.x=at(a))),{x:l.left+c.scrollLeft-f.x,y:l.top+c.scrollTop-f.y,width:l.width,height:l.height}}function At(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 Ct={placement:"bottom",modifiers:[],strategy:"absolute"};function Lt(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Nt.has(n)||Boolean(Mt.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};const It={allowList:Pt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Ft={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ht={entry:"(string|element|function|null)",selector:"(string|element)"};class $t extends M{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return It}static get DefaultType(){return Ft}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},Ht)}_setContent(e,t,n){const i=F.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?r(t)?this._putElementInTemplate(s(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 p(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const zt=new Set(["sanitize","allowList","sanitizeFn"]),Wt="fade",qt="show",Rt=".tooltip-inner",Vt=".modal",Yt="hide.bs.modal",Ut="hover",Kt="focus",Qt="click",Xt={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Gt={allowList:Pt,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"},Jt={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 Zt extends B{constructor(e,t){if(void 0===Dt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 Gt}static get DefaultType(){return Jt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Vt),Yt,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=j.trigger(this._element,this.constructor.eventName("show")),t=(a(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),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(qt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))j.on(e,"mouseover",l);this._queueCallback(()=>{j.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(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(qt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))j.off(e,"mouseover",l);this._activeTrigger[Qt]=!1,this._activeTrigger[Kt]=!1,this._activeTrigger[Ut]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.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(Wt,qt),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(Wt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new $t({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Rt]: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(Wt)}_isShown(){return this.tip&&this.tip.classList.contains(qt)}_createPopper(e){const t=p(this._config.placement,[this,e,this._element]),n=Xt[t.toUpperCase()];return kt(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 p(e,[this._element,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,...p(this._config.popperConfig,[void 0,t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)j.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger[Qt]=!(t._isShown()&&t._activeTrigger[Qt]),t.toggle()});else if("manual"!==t){const e=t===Ut?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Ut?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Kt:Ut]=!0,t._enter()}),j.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Kt:Ut]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Vt),Yt,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=N.getDataAttributes(this._element);for(const e of Object.keys(t))zt.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:s(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=Zt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}function en(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function tn(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);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}var nn;d(Zt);const on=document.getElementById("toc-bar"),rn=document.getElementById("toc-solo-trigger"),sn=document.getElementsByClassName("toc-trigger"),an=document.getElementById("toc-popup"),ln=document.getElementById("toc-popup-close"),cn="overflow-hidden",fn="closing";class un{static initBar(){new IntersectionObserver(e=>{e.forEach(e=>{on.classList.toggle("invisible",e.isIntersecting)})},{rootMargin:`-${en(un,this,pn)._}px 0px 0px 0px`}).observe(rn),dn._=en(un,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(e=>{e.onclick=()=>this.hidePopup()})}static refresh(){en(un,this,dn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return an.open}static showPopup(){this.lockScroll(!0),an.showModal();an.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){an.toggleAttribute(fn),an.addEventListener("animationend",()=>{an.toggleAttribute(fn),an.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(cn,e),document.body.classList.toggle(cn,e)}static clickBackdrop(e){if(an.hasAttribute(fn))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...sn].forEach(e=>{e.onclick=()=>this.showPopup()}),an.onclick=e=>this.clickBackdrop(e),ln.onclick=()=>this.hidePopup(),an.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var dn={_:!0},pn={_:48};tn(un,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:en(nn=un,nn,pn)._});tn(class{static refresh(){tocbot.refresh(this.options)}static init(){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)"),Theme.getThemeMapper("default","dark");const hn=document.getElementById("mode-toggle");const gn=document.getElementById("sidebar"),mn=document.getElementById("sidebar-trigger"),vn=document.getElementById("mask");class bn{static toggle(){yn._=en(bn,this,!en(bn,this,yn)._),document.body.toggleAttribute("sidebar-display",en(bn,this,yn)._),gn.classList.toggle("z-2",en(bn,this,yn)._),vn.classList.toggle("d-none",!en(bn,this,yn)._)}}var yn={_:!1};const _n=document.getElementById("sidebar-trigger"),wn=document.getElementById("search-trigger"),En=document.getElementById("search-cancel"),On=document.querySelectorAll("#main-wrapper>.container>.row"),xn=document.getElementById("topbar-title"),An=document.getElementById("search"),Cn=document.getElementById("search-result-wrapper"),Ln=document.getElementById("search-results"),Tn=document.getElementById("search-input"),Sn=document.getElementById("search-hints"),jn="d-block",kn="d-none",Dn="input-focus",Pn="d-flex";class Nn{static on(){_n.classList.add(kn),xn.classList.add(kn),wn.classList.add(kn),An.classList.add(Pn),En.classList.add(jn)}static off(){En.classList.remove(jn),An.classList.remove(Pn),_n.classList.remove(kn),xn.classList.remove(kn),wn.classList.remove(kn)}}class Mn{static on(){this.resultVisible||(Cn.classList.remove(kn),On.forEach(e=>{e.classList.add(kn)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Ln.innerHTML="",Sn.classList.contains(kn)&&Sn.classList.remove(kn),Cn.classList.add(kn),On.forEach(e=>{e.classList.remove(kn)}),Tn.textContent="",this.resultVisible=!1)}}function Bn(){return En.classList.contains(jn)}tn(Mn,"resultVisible",!1),hn&&hn.addEventListener("click",()=>{Theme.flip()}),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 Zt(e)),mn.onclick=vn.onclick=()=>bn.toggle(),wn.addEventListener("click",()=>{Nn.on(),Mn.on(),Tn.focus()}),En.addEventListener("click",()=>{Nn.off(),Mn.off()}),Tn.addEventListener("focus",()=>{An.classList.add(Dn)}),Tn.addEventListener("focusout",()=>{An.classList.remove(Dn)}),Tn.addEventListener("input",()=>{""===Tn.value?Bn()?Sn.classList.remove(kn):Mn.off():(Mn.on(),Bn()&&Sn.classList.add(kn))}),[...Z].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..0f967dbe231 --- /dev/null +++ b/assets/js/dist/commons.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.3.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,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):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 i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),o=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),r=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),s=e=>r(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,a=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?a(e.parentNode):null},l=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=e=>{var t;t=()=>{const t=c();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?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of u)e()}),u.push(t)):t()},p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.call(...t):n},h=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(e);const i=(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 o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),p(e))};t.addEventListener(n,r),setTimeout(()=>{o||t.dispatchEvent(new Event(n))},i)},g=/[^.]*(?=\..*)\.|.*/,m=/\..*/,v=/::\d+$/,b={};let _=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(e,t){return t&&`${t}::${_++}`||e.uidEvent||_++}function O(e){const t=E(e);return e.uidEvent=t,b[t]=b[t]||{},b[t]}function x(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 A(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=S(e);return w.has(r)||(r=e),[i,o,r]}function C(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=A(t,n,i);if(t in y){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=O(e),c=l[a]||(l[a]={}),u=x(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,t.replace(g,"")),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 k(o,{delegateTarget:s}),i.oneOff&&j.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return k(i,{delegateTarget:e}),n.oneOff&&j.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 L(e,t,n,i,o){const r=x(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function T(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&L(e,t,n,s.callable,s.delegationSelector)}function S(e){return e=e.replace(m,""),y[e]||e}const j={on(e,t,n,i){C(e,t,n,i,!1)},one(e,t,n,i){C(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=A(t,n,i),a=s!==t,l=O(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))T(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(v,"");a&&!t.includes(o)||L(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;L(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=c();let o=null,r=!0,s=!0,a=!1;t!==S(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=k(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function k(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 D(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 P(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const M={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${P(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${P(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),t[n]=D(e.dataset[i])}return t},getDataAttribute:(e,t)=>D(e.getAttribute(`data-bs-${P(t)}`))};class N{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=r(t)?M.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...r(t)?M.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(t)){const t=e[n],s=r(t)?"element":o(t);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}class B extends N{constructor(e,n){super(),(e=s(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),j.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){h(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(s(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.7"}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=>i(e)).join(","):null},F={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(!r(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&&F.findOne(t)?t:null},getElementFromSelector(e){const t=I(e);return t?F.findOne(t):null},getMultipleElementsFromSelector(e){const t=I(e);return t?F.find(t):[]}},H=".bs.collapse",$=`show${H}`,z=`shown${H}`,W=`hide${H}`,R=`hidden${H}`,q=`click${H}.data-api`,V="show",Y="collapse",U="collapsing",K=`:scope .${Y} .${Y}`,Q='[data-bs-toggle="collapse"]',X={parent:null,toggle:!0},G={parent:"(null|element)",toggle:"boolean"};class J extends B{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=F.find(Q);for(const e of n){const t=F.getSelectorFromElement(e),n=F.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 X}static get DefaultType(){return G}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=>J.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(j.trigger(this._element,$).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(Y),this._element.classList.add(U),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(U),this._element.classList.add(Y,V),this._element.style[t]="",j.trigger(this._element,z)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,W).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(Y,V);for(const e of this._triggerArray){const t=F.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(U),this._element.classList.add(Y),j.trigger(this._element,R)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(V)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=s(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(Q);for(const t of e){const e=F.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=F.find(K,this._config.parent);return F.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=J.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}})}}j.on(document,q,Q,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of F.getMultipleElementsFromSelector(this))J.getOrCreateInstance(e,{toggle:!1}).toggle()}),d(J),document.getElementsByClassName("collapse");var Z="top",ee="bottom",te="right",ne="left",ie="auto",oe=[Z,ee,te,ne],re="start",se="end",ae="clippingParents",le="viewport",ce="popper",ue="reference",fe=oe.reduce(function(e,t){return e.concat([t+"-"+re,t+"-"+se])},[]),de=[].concat(oe,[ie]).reduce(function(e,t){return e.concat([t,t+"-"+re,t+"-"+se])},[]),pe="beforeRead",he="read",ge="afterRead",me="beforeMain",ve="main",be="afterMain",_e="beforeWrite",ye="write",we="afterWrite",Ee=[pe,he,ge,me,ve,be,_e,ye,we];function Oe(e){return e?(e.nodeName||"").toLowerCase():null}function xe(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ae(e){return e instanceof xe(e).Element||e instanceof Element}function Ce(e){return e instanceof xe(e).HTMLElement||e instanceof HTMLElement}function Le(e){return"undefined"!=typeof ShadowRoot&&(e instanceof xe(e).ShadowRoot||e instanceof ShadowRoot)}var Te={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];Ce(o)&&Oe(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},{});Ce(i)&&Oe(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(e){i.removeAttribute(e)}))})}},requires:["computeStyles"]};function Se(e){return e.split("-")[0]}var je=Math.max,ke=Math.min,De=Math.round;function Pe(){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 Me(){return!/^((?!chrome|android).)*safari/i.test(Pe())}function Ne(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Ce(e)&&(o=e.offsetWidth>0&&De(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&De(i.height)/e.offsetHeight||1);var s=(Ae(e)?xe(e):window).visualViewport,a=!Me()&&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 Be(e){var t=Ne(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 Ie(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Le(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Fe(e){return xe(e).getComputedStyle(e)}function He(e){return["table","td","th"].indexOf(Oe(e))>=0}function $e(e){return((Ae(e)?e.ownerDocument:e.document)||window.document).documentElement}function ze(e){return"html"===Oe(e)?e:e.assignedSlot||e.parentNode||(Le(e)?e.host:null)||$e(e)}function We(e){return Ce(e)&&"fixed"!==Fe(e).position?e.offsetParent:null}function Re(e){for(var t=xe(e),n=We(e);n&&He(n)&&"static"===Fe(n).position;)n=We(n);return n&&("html"===Oe(n)||"body"===Oe(n)&&"static"===Fe(n).position)?t:n||function(e){var t=/firefox/i.test(Pe());if(/Trident/i.test(Pe())&&Ce(e)&&"fixed"===Fe(e).position)return null;var n=ze(e);for(Le(n)&&(n=n.host);Ce(n)&&["html","body"].indexOf(Oe(n))<0;){var i=Fe(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 qe(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ve(e,t,n){return je(e,ke(t,n))}function Ye(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var Ke={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Se(n.placement),l=qe(a),c=[ne,te].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ye("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,oe))}(o.padding,n),f=Be(r),d="y"===l?Z:ne,p="y"===l?ee:te,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],g=s[l]-n.rects.reference[l],m=Re(r),v=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=h/2-g/2,_=u[d],y=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Ve(_,w,y),O=l;n.modifiersData[i]=((t={})[O]=E,t.centerOffset=E-w,t)}},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)))&&Ie(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qe(e){return e.split("-")[1]}var Xe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ge(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof u?u({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),_=ne,y=Z,w=window;if(c){var E=Re(n),O="clientHeight",x="clientWidth";if(E===xe(n)&&"static"!==Fe(E=$e(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===Z||(o===ne||o===te)&&r===se)y=ee,g-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=l?1:-1;if(o===ne||(o===Z||o===ee)&&r===se)_=te,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Xe),L=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:De(n*o)/o||0,y:De(i*o)/o||0}}({x:p,y:g},xe(n)):{x:p,y:g};return p=L.x,g=L.y,l?Object.assign({},C,((A={})[y]=b?"0":"",A[_]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((t={})[y]=b?g+"px":"",t[_]=v?p+"px":"",t.transform="",t))}var Je={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:Se(t.placement),variation:Qe(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,Ge(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,Ge(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:{}},Ze={passive:!0};var et={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=xe(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach(function(e){e.addEventListener("scroll",n.update,Ze)}),a&&l.addEventListener("resize",n.update,Ze),function(){r&&c.forEach(function(e){e.removeEventListener("scroll",n.update,Ze)}),a&&l.removeEventListener("resize",n.update,Ze)}},data:{}},tt={left:"right",right:"left",bottom:"top",top:"bottom"};function nt(e){return e.replace(/left|right|bottom|top/g,function(e){return tt[e]})}var it={start:"end",end:"start"};function ot(e){return e.replace(/start|end/g,function(e){return it[e]})}function rt(e){var t=xe(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function st(e){return Ne($e(e)).left+rt(e).scrollLeft}function at(e){var t=Fe(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function lt(e){return["html","body","#document"].indexOf(Oe(e))>=0?e.ownerDocument.body:Ce(e)&&at(e)?e:lt(ze(e))}function ct(e,t){var n;void 0===t&&(t=[]);var i=lt(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=xe(i),s=o?[r].concat(r.visualViewport||[],at(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ct(ze(s)))}function ut(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ft(e,t,n){return t===le?ut(function(e,t){var n=xe(e),i=$e(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Me();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+st(e),y:l}}(e,n)):Ae(t)?function(e,t){var n=Ne(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):ut(function(e){var t,n=$e(e),i=rt(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=je(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=je(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+st(e),l=-i.scrollTop;return"rtl"===Fe(o||n).direction&&(a+=je(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}($e(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=ct(ze(e)),n=["absolute","fixed"].indexOf(Fe(e).position)>=0&&Ce(e)?Re(e):e;return Ae(n)?t.filter(function(e){return Ae(e)&&Ie(e,n)&&"body"!==Oe(e)}):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(t,n){var o=ft(e,n,i);return t.top=je(o.top,t.top),t.right=ke(o.right,t.right),t.bottom=ke(o.bottom,t.bottom),t.left=je(o.left,t.left),t},ft(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 pt(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Se(o):null,s=o?Qe(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case Z:t={x:a,y:n.y-i.height};break;case ee:t={x:a,y:n.y+n.height};break;case te:t={x:n.x+n.width,y:l};break;case ne:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?qe(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case re:t[c]=t[c]-(n[u]/2-i[u]/2);break;case se:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?ae:a,c=n.rootBoundary,u=void 0===c?le:c,f=n.elementContext,d=void 0===f?ce:f,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,v=Ye("number"!=typeof m?m:Ue(m,oe)),b=d===ce?ue:ce,_=e.rects.popper,y=e.elements[h?b:d],w=dt(Ae(y)?y:y.contextElement||$e(e.elements.popper),l,u,s),E=Ne(e.elements.reference),O=pt({reference:E,element:_,placement:o}),x=ut(Object.assign({},_,O)),A=d===ce?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=e.modifiersData.offset;if(d===ce&&L){var T=L[o];Object.keys(C).forEach(function(e){var t=[te,ee].indexOf(e)>=0?1:-1,n=[Z,ee].indexOf(e)>=0?"y":"x";C[e]+=T[n]*t})}return C}function gt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Qe(i),f=u?a?fe:fe.filter(function(e){return Qe(e)===u}):oe,d=f.filter(function(e){return c.indexOf(e)>=0});0===d.length&&(d=f);var p=d.reduce(function(t,n){return t[n]=ht(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Se(n)],t},{});return Object.keys(p).sort(function(e,t){return p[e]-p[t]})}var mt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=t.options.placement,v=Se(m),b=l||(v===m||!h?[nt(m)]:function(e){if(Se(e)===ie)return[];var t=nt(e);return[ot(e),t,ot(t)]}(m)),_=[m].concat(b).reduce(function(e,n){return e.concat(Se(n)===ie?gt(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:g}):n)},[]),y=t.rects.reference,w=t.rects.popper,E=new Map,O=!0,x=_[0],A=0;A<_.length;A++){var C=_[A],L=Se(C),T=Qe(C)===re,S=[Z,ee].indexOf(L)>=0,j=S?"width":"height",k=ht(t,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?T?te:ne:T?ee:Z;y[j]>w[j]&&(D=nt(D));var P=nt(D),M=[];if(r&&M.push(k[L]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every(function(e){return e})){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(e){var t=_.find(function(t){var n=E.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(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 bt(e){return[Z,te,ee,ne].some(function(t){return e[t]>=0})}var _t={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=ht(t,{elementContext:"reference"}),a=ht(t,{altBoundary:!0}),l=vt(s,i),c=vt(a,o,r),u=bt(l),f=bt(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 yt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce(function(e,n){return e[n]=function(e,t,n){var i=Se(e),o=[ne,Z].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[ne,te].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e},{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var wt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=pt({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var Et={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=ht(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Se(t.placement),b=Qe(t.placement),_=!b,y=qe(v),w="x"===y?"y":"x",E=t.modifiersData.popperOffsets,O=t.rects.reference,x=t.rects.popper,A="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(E){if(r){var S,j="y"===y?Z:ne,k="y"===y?ee:te,D="y"===y?"height":"width",P=E[y],M=P+m[j],N=P-m[k],B=p?-x[D]/2:0,I=b===re?O[D]:x[D],F=b===re?-x[D]:-O[D],H=t.elements.arrow,$=p&&H?Be(H):{width:0,height:0},z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[k],q=Ve(0,O[D],$[D]),V=_?O[D]/2-B-q-W-C.mainAxis:I-q-W-C.mainAxis,Y=_?-O[D]/2+B+q+R+C.mainAxis:F+q+R+C.mainAxis,U=t.elements.arrow&&Re(t.elements.arrow),K=U?"y"===y?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==L?void 0:L[y])?S:0,X=P+Y-Q,G=Ve(p?ke(M,P+V-Q-K):M,P,p?je(N,X):N);E[y]=G,T[y]=G-P}if(a){var J,ie="x"===y?Z:ne,oe="x"===y?ee:te,se=E[w],ae="y"===w?"height":"width",le=se+m[ie],ce=se-m[oe],ue=-1!==[Z,ne].indexOf(v),fe=null!=(J=null==L?void 0:L[w])?J:0,de=ue?le:se-O[ae]-x[ae]-fe+C.altAxis,pe=ue?se+O[ae]+x[ae]-fe-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=Ve(e,t,n);return i>n?n:i}(de,se,pe):Ve(p?de:le,se,p?pe:ce);E[w]=he,T[w]=he-se}t.modifiersData[i]=T}},requiresIfExists:["offset"]};function Ot(e,t,n){void 0===n&&(n=!1);var i,o,r=Ce(t),s=Ce(t)&&function(e){var t=e.getBoundingClientRect(),n=De(t.width)/e.offsetWidth||1,i=De(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=$e(t),l=Ne(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Oe(t)||at(a))&&(c=(i=t)!==xe(i)&&Ce(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:rt(i)),Ce(t)?((u=Ne(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=st(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function xt(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 At={placement:"bottom",modifiers:[],strategy:"absolute"};function Ct(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Pt.has(n)||Boolean(Mt.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};const Bt={allowList:Dt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},It={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ft={entry:"(string|element|function|null)",selector:"(string|element)"};class Ht extends N{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Bt}static get DefaultType(){return It}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},Ft)}_setContent(e,t,n){const i=F.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?r(t)?this._putElementInTemplate(s(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)Nt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return p(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const $t=new Set(["sanitize","allowList","sanitizeFn"]),zt="fade",Wt="show",Rt=".tooltip-inner",qt=".modal",Vt="hide.bs.modal",Yt="hover",Ut="focus",Kt="click",Qt={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},Xt={allowList:Dt,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"},Gt={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 Jt extends B{constructor(e,t){if(void 0===kt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 Xt}static get DefaultType(){return Gt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(qt),Vt,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=j.trigger(this._element,this.constructor.eventName("show")),t=(a(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),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Wt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))j.on(e,"mouseover",l);this._queueCallback(()=>{j.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(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Wt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))j.off(e,"mouseover",l);this._activeTrigger[Kt]=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Yt]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.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(zt,Wt),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(zt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ht({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Rt]: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(zt)}_isShown(){return this.tip&&this.tip.classList.contains(Wt)}_createPopper(e){const t=p(this._config.placement,[this,e,this._element]),n=Qt[t.toUpperCase()];return jt(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 p(e,[this._element,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,...p(this._config.popperConfig,[void 0,t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)j.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger[Kt]=!(t._isShown()&&t._activeTrigger[Kt]),t.toggle()});else if("manual"!==t){const e=t===Yt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Yt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Yt]=!0,t._enter()}),j.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Yt]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(qt),Vt,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=M.getDataAttributes(this._element);for(const e of Object.keys(t))$t.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:s(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=Jt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}function Zt(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function en(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);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}var tn;d(Jt);const nn=document.getElementById("toc-bar"),on=document.getElementById("toc-solo-trigger"),rn=document.getElementsByClassName("toc-trigger"),sn=document.getElementById("toc-popup"),an=document.getElementById("toc-popup-close"),ln="overflow-hidden",cn="closing";class un{static initBar(){new IntersectionObserver(e=>{e.forEach(e=>{nn.classList.toggle("invisible",e.isIntersecting)})},{rootMargin:`-${Zt(un,this,dn)._}px 0px 0px 0px`}).observe(on),fn._=Zt(un,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(e=>{e.onclick=()=>this.hidePopup()})}static refresh(){Zt(un,this,fn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return sn.open}static showPopup(){this.lockScroll(!0),sn.showModal();sn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){sn.toggleAttribute(cn),sn.addEventListener("animationend",()=>{sn.toggleAttribute(cn),sn.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(ln,e),document.body.classList.toggle(ln,e)}static clickBackdrop(e){if(sn.hasAttribute(cn))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...rn].forEach(e=>{e.onclick=()=>this.showPopup()}),sn.onclick=e=>this.clickBackdrop(e),an.onclick=()=>this.hidePopup(),sn.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var fn={_:!0},dn={_:48};en(un,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Zt(tn=un,tn,dn)._});en(class{static refresh(){tocbot.refresh(this.options)}static init(){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)"),Theme.getThemeMapper("default","dark");const pn=document.getElementById("mode-toggle");const hn=document.getElementById("sidebar"),gn=document.getElementById("sidebar-trigger"),mn=document.getElementById("mask");class vn{static toggle(){bn._=Zt(vn,this,!Zt(vn,this,bn)._),document.body.toggleAttribute("sidebar-display",Zt(vn,this,bn)._),hn.classList.toggle("z-2",Zt(vn,this,bn)._),mn.classList.toggle("d-none",!Zt(vn,this,bn)._)}}var bn={_:!1};const _n=document.getElementById("sidebar-trigger"),yn=document.getElementById("search-trigger"),wn=document.getElementById("search-cancel"),En=document.querySelectorAll("#main-wrapper>.container>.row"),On=document.getElementById("topbar-title"),xn=document.getElementById("search"),An=document.getElementById("search-result-wrapper"),Cn=document.getElementById("search-results"),Ln=document.getElementById("search-input"),Tn=document.getElementById("search-hints"),Sn="d-block",jn="d-none",kn="input-focus",Dn="d-flex";class Pn{static on(){_n.classList.add(jn),On.classList.add(jn),yn.classList.add(jn),xn.classList.add(Dn),wn.classList.add(Sn)}static off(){wn.classList.remove(Sn),xn.classList.remove(Dn),_n.classList.remove(jn),On.classList.remove(jn),yn.classList.remove(jn)}}class Mn{static on(){this.resultVisible||(An.classList.remove(jn),En.forEach(e=>{e.classList.add(jn)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Cn.innerHTML="",Tn.classList.contains(jn)&&Tn.classList.remove(jn),An.classList.add(jn),En.forEach(e=>{e.classList.remove(jn)}),Ln.textContent="",this.resultVisible=!1)}}function Nn(){return wn.classList.contains(Sn)}en(Mn,"resultVisible",!1),gn.onclick=mn.onclick=()=>vn.toggle(),yn.addEventListener("click",()=>{Pn.on(),Mn.on(),Ln.focus()}),wn.addEventListener("click",()=>{Pn.off(),Mn.off()}),Ln.addEventListener("focus",()=>{xn.classList.add(kn)}),Ln.addEventListener("focusout",()=>{xn.classList.remove(kn)}),Ln.addEventListener("input",()=>{""===Ln.value?Nn()?Tn.classList.remove(jn):Mn.off():(Mn.on(),Nn()&&Tn.classList.add(jn))}),pn&&pn.addEventListener("click",()=>{Theme.flip()}),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 Jt(e))}(); diff --git a/assets/js/dist/home.min.js b/assets/js/dist/home.min.js new file mode 100644 index 00000000000..ae67fc29b17 --- /dev/null +++ b/assets/js/dist/home.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.3.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),t),o=t=>null==t?`${t}`:Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),s=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,a=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?a(t.parentNode):null},l=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=t=>{var e;e=()=>{const e=c();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?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of u)t()}),u.push(e)):e()},p=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t.call(...e):n},h=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(t);const i=(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 o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),p(t))};e.addEventListener(n,r),setTimeout(()=>{o||e.dispatchEvent(new Event(n))},i)},m=/[^.]*(?=\..*)\.|.*/,g=/\..*/,v=/::\d+$/,b={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(t,e){return e&&`${e}::${y++}`||t.uidEvent||y++}function O(t){const e=E(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function x(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 A(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=S(t);return w.has(r)||(r=t),[i,o,r]}function C(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=A(e,n,i);if(e in _){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=O(t),c=l[a]||(l[a]={}),u=x(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,e.replace(m,"")),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 k(o,{delegateTarget:s}),i.oneOff&&j.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return k(i,{delegateTarget:t}),n.oneOff&&j.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 T(t,e,n,i,o){const r=x(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&T(t,e,n,s.callable,s.delegationSelector)}function S(t){return t=t.replace(g,""),_[t]||t}const j={on(t,e,n,i){C(t,e,n,i,!1)},one(t,e,n,i){C(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=A(e,n,i),a=s!==e,l=O(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))L(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(v,"");a&&!e.includes(o)||T(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;T(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==S(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=k(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function k(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 D(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 P(t){return t.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const M={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${P(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${P(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),e[n]=D(t.dataset[i])}return e},getDataAttribute:(t,e)=>D(t.getAttribute(`data-bs-${P(e)}`))};class N{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=r(e)?M.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...r(e)?M.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(e)){const e=t[n],s=r(e)?"element":o(e);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}class B extends N{constructor(t,n){super(),(t=s(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){h(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 e.get(s(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.7"}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 F=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=>i(t)).join(","):null},I={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(!r(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=F(t);return e&&I.findOne(e)?e:null},getElementFromSelector(t){const e=F(t);return e?I.findOne(e):null},getMultipleElementsFromSelector(t){const e=F(t);return e?I.find(e):[]}},H=".bs.collapse",$=`show${H}`,z=`shown${H}`,q=`hide${H}`,W=`hidden${H}`,R=`click${H}.data-api`,V="show",Y="collapse",U="collapsing",K=`:scope .${Y} .${Y}`,Q='[data-bs-toggle="collapse"]',X={parent:null,toggle:!0},G={parent:"(null|element)",toggle:"boolean"};class J extends B{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(Q);for(const t of n){const e=I.getSelectorFromElement(t),n=I.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 X}static get DefaultType(){return G}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=>J.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,$).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Y),this._element.classList.add(U),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(U),this._element.classList.add(Y,V),this._element.style[e]="",j.trigger(this._element,z)},this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,q).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(Y,V);for(const t of this._triggerArray){const e=I.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(U),this._element.classList.add(Y),j.trigger(this._element,W)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(V)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=s(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Q);for(const e of t){const t=I.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=I.find(K,this._config.parent);return I.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=J.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}})}}j.on(document,R,Q,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of I.getMultipleElementsFromSelector(this))J.getOrCreateInstance(t,{toggle:!1}).toggle()}),d(J),document.getElementsByClassName("collapse");var Z="top",tt="bottom",et="right",nt="left",it="auto",ot=[Z,tt,et,nt],rt="start",st="end",at="clippingParents",lt="viewport",ct="popper",ut="reference",ft=ot.reduce(function(t,e){return t.concat([e+"-"+rt,e+"-"+st])},[]),dt=[].concat(ot,[it]).reduce(function(t,e){return t.concat([e,e+"-"+rt,e+"-"+st])},[]),pt="beforeRead",ht="read",mt="afterRead",gt="beforeMain",vt="main",bt="afterMain",yt="beforeWrite",_t="write",wt="afterWrite",Et=[pt,ht,mt,gt,vt,bt,yt,_t,wt];function Ot(t){return t?(t.nodeName||"").toLowerCase():null}function xt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function At(t){return t instanceof xt(t).Element||t instanceof Element}function Ct(t){return t instanceof xt(t).HTMLElement||t instanceof HTMLElement}function Tt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof xt(t).ShadowRoot||t instanceof ShadowRoot)}var Lt={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];Ct(o)&&Ot(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},{});Ct(i)&&Ot(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(t){i.removeAttribute(t)}))})}},requires:["computeStyles"]};function St(t){return t.split("-")[0]}var jt=Math.max,kt=Math.min,Dt=Math.round;function Pt(){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 Mt(){return!/^((?!chrome|android).)*safari/i.test(Pt())}function Nt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&Ct(t)&&(o=t.offsetWidth>0&&Dt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Dt(i.height)/t.offsetHeight||1);var s=(At(t)?xt(t):window).visualViewport,a=!Mt()&&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 Bt(t){var e=Nt(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 Ft(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Tt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function It(t){return xt(t).getComputedStyle(t)}function Ht(t){return["table","td","th"].indexOf(Ot(t))>=0}function $t(t){return((At(t)?t.ownerDocument:t.document)||window.document).documentElement}function zt(t){return"html"===Ot(t)?t:t.assignedSlot||t.parentNode||(Tt(t)?t.host:null)||$t(t)}function qt(t){return Ct(t)&&"fixed"!==It(t).position?t.offsetParent:null}function Wt(t){for(var e=xt(t),n=qt(t);n&&Ht(n)&&"static"===It(n).position;)n=qt(n);return n&&("html"===Ot(n)||"body"===Ot(n)&&"static"===It(n).position)?e:n||function(t){var e=/firefox/i.test(Pt());if(/Trident/i.test(Pt())&&Ct(t)&&"fixed"===It(t).position)return null;var n=zt(t);for(Tt(n)&&(n=n.host);Ct(n)&&["html","body"].indexOf(Ot(n))<0;){var i=It(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 Rt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Vt(t,e,n){return jt(t,kt(e,n))}function Yt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Ut(t,e){return e.reduce(function(e,n){return e[n]=t,e},{})}var Kt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=St(n.placement),l=Rt(a),c=[nt,et].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Yt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Ut(t,ot))}(o.padding,n),f=Bt(r),d="y"===l?Z:nt,p="y"===l?tt:et,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=Wt(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Vt(y,w,_),O=l;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},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)))&&Ft(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qt(t){return t.split("-")[1]}var Xt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Gt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=nt,_=Z,w=window;if(c){var E=Wt(n),O="clientHeight",x="clientWidth";if(E===xt(n)&&"static"!==It(E=$t(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===Z||(o===nt||o===et)&&r===st)_=tt,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===nt||(o===Z||o===tt)&&r===st)y=et,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Xt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Dt(n*o)/o||0,y:Dt(i*o)/o||0}}({x:p,y:m},xt(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var Jt={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:St(e.placement),variation:Qt(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,Gt(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,Gt(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:{}},Zt={passive:!0};var te={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=xt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach(function(t){t.addEventListener("scroll",n.update,Zt)}),a&&l.addEventListener("resize",n.update,Zt),function(){r&&c.forEach(function(t){t.removeEventListener("scroll",n.update,Zt)}),a&&l.removeEventListener("resize",n.update,Zt)}},data:{}},ee={left:"right",right:"left",bottom:"top",top:"bottom"};function ne(t){return t.replace(/left|right|bottom|top/g,function(t){return ee[t]})}var ie={start:"end",end:"start"};function oe(t){return t.replace(/start|end/g,function(t){return ie[t]})}function re(t){var e=xt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function se(t){return Nt($t(t)).left+re(t).scrollLeft}function ae(t){var e=It(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function le(t){return["html","body","#document"].indexOf(Ot(t))>=0?t.ownerDocument.body:Ct(t)&&ae(t)?t:le(zt(t))}function ce(t,e){var n;void 0===e&&(e=[]);var i=le(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=xt(i),s=o?[r].concat(r.visualViewport||[],ae(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(ce(zt(s)))}function ue(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function fe(t,e,n){return e===lt?ue(function(t,e){var n=xt(t),i=$t(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Mt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+se(t),y:l}}(t,n)):At(e)?function(t,e){var n=Nt(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):ue(function(t){var e,n=$t(t),i=re(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=jt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=jt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+se(t),l=-i.scrollTop;return"rtl"===It(o||n).direction&&(a+=jt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}($t(t)))}function de(t,e,n,i){var o="clippingParents"===e?function(t){var e=ce(zt(t)),n=["absolute","fixed"].indexOf(It(t).position)>=0&&Ct(t)?Wt(t):t;return At(n)?e.filter(function(t){return At(t)&&Ft(t,n)&&"body"!==Ot(t)}):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(e,n){var o=fe(t,n,i);return e.top=jt(o.top,e.top),e.right=kt(o.right,e.right),e.bottom=kt(o.bottom,e.bottom),e.left=jt(o.left,e.left),e},fe(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 pe(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?St(o):null,s=o?Qt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case Z:e={x:a,y:n.y-i.height};break;case tt:e={x:a,y:n.y+n.height};break;case et:e={x:n.x+n.width,y:l};break;case nt:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?Rt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case rt:e[c]=e[c]-(n[u]/2-i[u]/2);break;case st:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?at:a,c=n.rootBoundary,u=void 0===c?lt:c,f=n.elementContext,d=void 0===f?ct:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Yt("number"!=typeof g?g:Ut(g,ot)),b=d===ct?ut:ct,y=t.rects.popper,_=t.elements[h?b:d],w=de(At(_)?_:_.contextElement||$t(t.elements.popper),l,u,s),E=Nt(t.elements.reference),O=pe({reference:E,element:y,placement:o}),x=ue(Object.assign({},y,O)),A=d===ct?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===ct&&T){var L=T[o];Object.keys(C).forEach(function(t){var e=[et,tt].indexOf(t)>=0?1:-1,n=[Z,tt].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e})}return C}function me(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?dt:l,u=Qt(i),f=u?a?ft:ft.filter(function(t){return Qt(t)===u}):ot,d=f.filter(function(t){return c.indexOf(t)>=0});0===d.length&&(d=f);var p=d.reduce(function(e,n){return e[n]=he(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[St(n)],e},{});return Object.keys(p).sort(function(t,e){return p[t]-p[e]})}var ge={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=St(g),b=l||(v===g||!h?[ne(g)]:function(t){if(St(t)===it)return[];var e=ne(t);return[oe(t),e,oe(e)]}(g)),y=[g].concat(b).reduce(function(t,n){return t.concat(St(n)===it?me(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)},[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=he(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?et:nt:L?tt:Z;_[j]>w[j]&&(D=ne(D));var P=ne(D),M=[];if(r&&M.push(k[T]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every(function(t){return t})){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find(function(e){var n=E.get(e);if(n)return n.slice(0,t).every(function(t){return t})});if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ve(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 be(t){return[Z,et,tt,nt].some(function(e){return t[e]>=0})}var ye={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=he(e,{elementContext:"reference"}),a=he(e,{altBoundary:!0}),l=ve(s,i),c=ve(a,o,r),u=be(l),f=be(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 _e={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=dt.reduce(function(t,n){return t[n]=function(t,e,n){var i=St(t),o=[nt,Z].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[nt,et].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t},{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var we={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=pe({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var Ee={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=he(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=St(e.placement),b=Qt(e.placement),y=!b,_=Rt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?Z:nt,k="y"===_?tt:et,D="y"===_?"height":"width",P=E[_],M=P+g[j],N=P-g[k],B=p?-x[D]/2:0,F=b===rt?O[D]:x[D],I=b===rt?-x[D]:-O[D],H=e.elements.arrow,$=p&&H?Bt(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},q=z[j],W=z[k],R=Vt(0,O[D],$[D]),V=y?O[D]/2-B-R-q-C.mainAxis:F-R-q-C.mainAxis,Y=y?-O[D]/2+B+R+W+C.mainAxis:I+R+W+C.mainAxis,U=e.elements.arrow&&Wt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,X=P+Y-Q,G=Vt(p?kt(M,P+V-Q-K):M,P,p?jt(N,X):N);E[_]=G,L[_]=G-P}if(a){var J,it="x"===_?Z:nt,ot="x"===_?tt:et,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[ot],ut=-1!==[Z,nt].indexOf(v),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?lt:st-O[at]-x[at]-ft+C.altAxis,pt=ut?st+O[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Vt(t,e,n);return i>n?n:i}(dt,st,pt):Vt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Oe(t,e,n){void 0===n&&(n=!1);var i,o,r=Ct(e),s=Ct(e)&&function(t){var e=t.getBoundingClientRect(),n=Dt(e.width)/t.offsetWidth||1,i=Dt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=$t(e),l=Nt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ot(e)||ae(a))&&(c=(i=e)!==xt(i)&&Ct(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:re(i)),Ct(e)?((u=Nt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=se(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function xe(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 Ae={placement:"bottom",modifiers:[],strategy:"absolute"};function Ce(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Pe.has(n)||Boolean(Me.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))};const Be={allowList:De,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Fe={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ie={entry:"(string|element|function|null)",selector:"(string|element)"};class He extends N{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Be}static get DefaultType(){return Fe}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},Ie)}_setContent(t,e,n){const i=I.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?r(e)?this._putElementInTemplate(s(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)Ne(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return p(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const $e=new Set(["sanitize","allowList","sanitizeFn"]),ze="fade",qe="show",We=".tooltip-inner",Re=".modal",Ve="hide.bs.modal",Ye="hover",Ue="focus",Ke="click",Qe={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},Xe={allowList:De,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"},Ge={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 Je extends B{constructor(t,e){if(void 0===ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 Xe}static get DefaultType(){return Ge}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Re),Ve,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=j.trigger(this._element,this.constructor.eventName("show")),e=(a(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),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(qe),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",l);this._queueCallback(()=>{j.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(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(qe),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",l);this._activeTrigger[Ke]=!1,this._activeTrigger[Ue]=!1,this._activeTrigger[Ye]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.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(ze,qe),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(ze),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new He({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[We]: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(ze)}_isShown(){return this.tip&&this.tip.classList.contains(qe)}_createPopper(t){const e=p(this._config.placement,[this,t,this._element]),n=Qe[e.toUpperCase()];return je(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 p(t,[this._element,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,...p(this._config.popperConfig,[void 0,e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[Ke]=!(e._isShown()&&e._activeTrigger[Ke]),e.toggle()});else if("manual"!==e){const t=e===Ye?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ye?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ue:Ye]=!0,e._enter()}),j.on(this._element,n,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ue:Ye]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Re),Ve,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=M.getDataAttributes(this._element);for(const t of Object.keys(e))$e.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:s(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=Je.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}})}}d(Je);const Ze="data-src",tn="data-lqip",en="shimmer",nn="blur";function on(t){this.parentElement.classList.remove(t)}function rn(){this.complete&&(this.hasAttribute(tn)?on.call(this,nn):on.call(this,en))}function sn(){const t=this.getAttribute(Ze);this.setAttribute("src",encodeURI(t)),this.removeAttribute(Ze)}class an{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)}}function ln(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function cn(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);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}var un;const fn=document.getElementById("toc-bar"),dn=document.getElementById("toc-solo-trigger"),pn=document.getElementsByClassName("toc-trigger"),hn=document.getElementById("toc-popup"),mn=document.getElementById("toc-popup-close"),gn="overflow-hidden",vn="closing";class bn{static initBar(){new IntersectionObserver(t=>{t.forEach(t=>{fn.classList.toggle("invisible",t.isIntersecting)})},{rootMargin:`-${ln(bn,this,_n)._}px 0px 0px 0px`}).observe(dn),yn._=ln(bn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(t=>{t.onclick=()=>this.hidePopup()})}static refresh(){ln(bn,this,yn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return hn.open}static showPopup(){this.lockScroll(!0),hn.showModal();hn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){hn.toggleAttribute(vn),hn.addEventListener("animationend",()=>{hn.toggleAttribute(vn),hn.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(gn,t),document.body.classList.toggle(gn,t)}static clickBackdrop(t){if(hn.hasAttribute(vn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...pn].forEach(t=>{t.onclick=()=>this.showPopup()}),hn.onclick=t=>this.clickBackdrop(t),mn.onclick=()=>this.hidePopup(),hn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var yn={_:!0},_n={_:48};cn(bn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:ln(un=bn,un,_n)._});cn(class{static refresh(){tocbot.refresh(this.options)}static init(){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)"),Theme.getThemeMapper("default","dark");const wn=document.getElementById("mode-toggle");const En=document.getElementById("sidebar"),On=document.getElementById("sidebar-trigger"),xn=document.getElementById("mask");class An{static toggle(){Cn._=ln(An,this,!ln(An,this,Cn)._),document.body.toggleAttribute("sidebar-display",ln(An,this,Cn)._),En.classList.toggle("z-2",ln(An,this,Cn)._),xn.classList.toggle("d-none",!ln(An,this,Cn)._)}}var Cn={_:!1};const Tn=document.getElementById("sidebar-trigger"),Ln=document.getElementById("search-trigger"),Sn=document.getElementById("search-cancel"),jn=document.querySelectorAll("#main-wrapper>.container>.row"),kn=document.getElementById("topbar-title"),Dn=document.getElementById("search"),Pn=document.getElementById("search-result-wrapper"),Mn=document.getElementById("search-results"),Nn=document.getElementById("search-input"),Bn=document.getElementById("search-hints"),Fn="d-block",In="d-none",Hn="input-focus",$n="d-flex";class zn{static on(){Tn.classList.add(In),kn.classList.add(In),Ln.classList.add(In),Dn.classList.add($n),Sn.classList.add(Fn)}static off(){Sn.classList.remove(Fn),Dn.classList.remove($n),Tn.classList.remove(In),kn.classList.remove(In),Ln.classList.remove(In)}}class qn{static on(){this.resultVisible||(Pn.classList.remove(In),jn.forEach(t=>{t.classList.add(In)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Mn.innerHTML="",Bn.classList.contains(In)&&Bn.classList.remove(In),Pn.classList.add(In),jn.forEach(t=>{t.classList.remove(In)}),Nn.textContent="",this.resultVisible=!1)}}function Wn(){return Sn.classList.contains(Fn)}cn(qn,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach(t=>{t.addEventListener("load",rn)}),document.querySelectorAll('article img[loading="lazy"]').forEach(t=>{t.complete&&on.call(t,en)});const e=document.querySelectorAll(`article img[${tn}="true"]`);e.length&&e.forEach(t=>{sn.call(t)})}(),dayjs.locale(an.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${an.attrTimestamp}]`).forEach(t=>{const e=dayjs.unix(an.getTimestamp(t)),n=e.format(an.getDateFormat(t));if(t.textContent=n,t.removeAttribute(an.attrTimestamp),t.removeAttribute(an.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}}),On.onclick=xn.onclick=()=>An.toggle(),Ln.addEventListener("click",()=>{zn.on(),qn.on(),Nn.focus()}),Sn.addEventListener("click",()=>{zn.off(),qn.off()}),Nn.addEventListener("focus",()=>{Dn.classList.add(Hn)}),Nn.addEventListener("focusout",()=>{Dn.classList.remove(Hn)}),Nn.addEventListener("input",()=>{""===Nn.value?Wn()?Bn.classList.remove(In):qn.off():(qn.on(),Wn()&&Bn.classList.add(In))}),wn&&wn.addEventListener("click",()=>{Theme.flip()}),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 Je(t))}(); diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js new file mode 100644 index 00000000000..dec03fc668b --- /dev/null +++ b/assets/js/dist/misc.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.3.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),t),o=t=>null==t?`${t}`:Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),s=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,a=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?a(t.parentNode):null},l=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=t=>{var e;e=()=>{const e=c();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?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of u)t()}),u.push(e)):e()},p=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t.call(...e):n},h=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(t);const i=(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 o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),p(t))};e.addEventListener(n,r),setTimeout(()=>{o||e.dispatchEvent(new Event(n))},i)},m=/[^.]*(?=\..*)\.|.*/,g=/\..*/,v=/::\d+$/,b={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(t,e){return e&&`${e}::${y++}`||t.uidEvent||y++}function O(t){const e=E(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function x(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 A(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=S(t);return w.has(r)||(r=t),[i,o,r]}function C(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=A(e,n,i);if(e in _){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=O(t),c=l[a]||(l[a]={}),u=x(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,e.replace(m,"")),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 k(o,{delegateTarget:s}),i.oneOff&&j.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return k(i,{delegateTarget:t}),n.oneOff&&j.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 T(t,e,n,i,o){const r=x(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&T(t,e,n,s.callable,s.delegationSelector)}function S(t){return t=t.replace(g,""),_[t]||t}const j={on(t,e,n,i){C(t,e,n,i,!1)},one(t,e,n,i){C(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=A(e,n,i),a=s!==e,l=O(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))L(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(v,"");a&&!e.includes(o)||T(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;T(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==S(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=k(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function k(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 D(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 P(t){return t.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const M={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${P(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${P(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),e[n]=D(t.dataset[i])}return e},getDataAttribute:(t,e)=>D(t.getAttribute(`data-bs-${P(e)}`))};class N{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=r(e)?M.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...r(e)?M.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(e)){const e=t[n],s=r(e)?"element":o(e);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}class B extends N{constructor(t,n){super(),(t=s(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){h(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 e.get(s(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.7"}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 F=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=>i(t)).join(","):null},I={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(!r(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=F(t);return e&&I.findOne(e)?e:null},getElementFromSelector(t){const e=F(t);return e?I.findOne(e):null},getMultipleElementsFromSelector(t){const e=F(t);return e?I.find(e):[]}},H=".bs.collapse",$=`show${H}`,z=`shown${H}`,W=`hide${H}`,R=`hidden${H}`,q=`click${H}.data-api`,V="show",Y="collapse",U="collapsing",K=`:scope .${Y} .${Y}`,Q='[data-bs-toggle="collapse"]',X={parent:null,toggle:!0},G={parent:"(null|element)",toggle:"boolean"};class J extends B{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(Q);for(const t of n){const e=I.getSelectorFromElement(t),n=I.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 X}static get DefaultType(){return G}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=>J.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,$).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Y),this._element.classList.add(U),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(U),this._element.classList.add(Y,V),this._element.style[e]="",j.trigger(this._element,z)},this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,W).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(Y,V);for(const t of this._triggerArray){const e=I.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(U),this._element.classList.add(Y),j.trigger(this._element,R)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(V)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=s(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Q);for(const e of t){const t=I.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=I.find(K,this._config.parent);return I.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=J.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}})}}j.on(document,q,Q,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of I.getMultipleElementsFromSelector(this))J.getOrCreateInstance(t,{toggle:!1}).toggle()}),d(J),document.getElementsByClassName("collapse");var Z="top",tt="bottom",et="right",nt="left",it="auto",ot=[Z,tt,et,nt],rt="start",st="end",at="clippingParents",lt="viewport",ct="popper",ut="reference",ft=ot.reduce(function(t,e){return t.concat([e+"-"+rt,e+"-"+st])},[]),dt=[].concat(ot,[it]).reduce(function(t,e){return t.concat([e,e+"-"+rt,e+"-"+st])},[]),pt="beforeRead",ht="read",mt="afterRead",gt="beforeMain",vt="main",bt="afterMain",yt="beforeWrite",_t="write",wt="afterWrite",Et=[pt,ht,mt,gt,vt,bt,yt,_t,wt];function Ot(t){return t?(t.nodeName||"").toLowerCase():null}function xt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function At(t){return t instanceof xt(t).Element||t instanceof Element}function Ct(t){return t instanceof xt(t).HTMLElement||t instanceof HTMLElement}function Tt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof xt(t).ShadowRoot||t instanceof ShadowRoot)}var Lt={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];Ct(o)&&Ot(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},{});Ct(i)&&Ot(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(t){i.removeAttribute(t)}))})}},requires:["computeStyles"]};function St(t){return t.split("-")[0]}var jt=Math.max,kt=Math.min,Dt=Math.round;function Pt(){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 Mt(){return!/^((?!chrome|android).)*safari/i.test(Pt())}function Nt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&Ct(t)&&(o=t.offsetWidth>0&&Dt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Dt(i.height)/t.offsetHeight||1);var s=(At(t)?xt(t):window).visualViewport,a=!Mt()&&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 Bt(t){var e=Nt(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 Ft(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Tt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function It(t){return xt(t).getComputedStyle(t)}function Ht(t){return["table","td","th"].indexOf(Ot(t))>=0}function $t(t){return((At(t)?t.ownerDocument:t.document)||window.document).documentElement}function zt(t){return"html"===Ot(t)?t:t.assignedSlot||t.parentNode||(Tt(t)?t.host:null)||$t(t)}function Wt(t){return Ct(t)&&"fixed"!==It(t).position?t.offsetParent:null}function Rt(t){for(var e=xt(t),n=Wt(t);n&&Ht(n)&&"static"===It(n).position;)n=Wt(n);return n&&("html"===Ot(n)||"body"===Ot(n)&&"static"===It(n).position)?e:n||function(t){var e=/firefox/i.test(Pt());if(/Trident/i.test(Pt())&&Ct(t)&&"fixed"===It(t).position)return null;var n=zt(t);for(Tt(n)&&(n=n.host);Ct(n)&&["html","body"].indexOf(Ot(n))<0;){var i=It(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 qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Vt(t,e,n){return jt(t,kt(e,n))}function Yt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Ut(t,e){return e.reduce(function(e,n){return e[n]=t,e},{})}var Kt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=St(n.placement),l=qt(a),c=[nt,et].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Yt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Ut(t,ot))}(o.padding,n),f=Bt(r),d="y"===l?Z:nt,p="y"===l?tt:et,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=Rt(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Vt(y,w,_),O=l;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},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)))&&Ft(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qt(t){return t.split("-")[1]}var Xt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Gt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=nt,_=Z,w=window;if(c){var E=Rt(n),O="clientHeight",x="clientWidth";if(E===xt(n)&&"static"!==It(E=$t(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===Z||(o===nt||o===et)&&r===st)_=tt,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===nt||(o===Z||o===tt)&&r===st)y=et,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Xt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Dt(n*o)/o||0,y:Dt(i*o)/o||0}}({x:p,y:m},xt(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var Jt={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:St(e.placement),variation:Qt(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,Gt(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,Gt(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:{}},Zt={passive:!0};var te={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=xt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach(function(t){t.addEventListener("scroll",n.update,Zt)}),a&&l.addEventListener("resize",n.update,Zt),function(){r&&c.forEach(function(t){t.removeEventListener("scroll",n.update,Zt)}),a&&l.removeEventListener("resize",n.update,Zt)}},data:{}},ee={left:"right",right:"left",bottom:"top",top:"bottom"};function ne(t){return t.replace(/left|right|bottom|top/g,function(t){return ee[t]})}var ie={start:"end",end:"start"};function oe(t){return t.replace(/start|end/g,function(t){return ie[t]})}function re(t){var e=xt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function se(t){return Nt($t(t)).left+re(t).scrollLeft}function ae(t){var e=It(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function le(t){return["html","body","#document"].indexOf(Ot(t))>=0?t.ownerDocument.body:Ct(t)&&ae(t)?t:le(zt(t))}function ce(t,e){var n;void 0===e&&(e=[]);var i=le(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=xt(i),s=o?[r].concat(r.visualViewport||[],ae(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(ce(zt(s)))}function ue(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function fe(t,e,n){return e===lt?ue(function(t,e){var n=xt(t),i=$t(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Mt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+se(t),y:l}}(t,n)):At(e)?function(t,e){var n=Nt(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):ue(function(t){var e,n=$t(t),i=re(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=jt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=jt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+se(t),l=-i.scrollTop;return"rtl"===It(o||n).direction&&(a+=jt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}($t(t)))}function de(t,e,n,i){var o="clippingParents"===e?function(t){var e=ce(zt(t)),n=["absolute","fixed"].indexOf(It(t).position)>=0&&Ct(t)?Rt(t):t;return At(n)?e.filter(function(t){return At(t)&&Ft(t,n)&&"body"!==Ot(t)}):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(e,n){var o=fe(t,n,i);return e.top=jt(o.top,e.top),e.right=kt(o.right,e.right),e.bottom=kt(o.bottom,e.bottom),e.left=jt(o.left,e.left),e},fe(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 pe(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?St(o):null,s=o?Qt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case Z:e={x:a,y:n.y-i.height};break;case tt:e={x:a,y:n.y+n.height};break;case et:e={x:n.x+n.width,y:l};break;case nt:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?qt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case rt:e[c]=e[c]-(n[u]/2-i[u]/2);break;case st:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?at:a,c=n.rootBoundary,u=void 0===c?lt:c,f=n.elementContext,d=void 0===f?ct:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Yt("number"!=typeof g?g:Ut(g,ot)),b=d===ct?ut:ct,y=t.rects.popper,_=t.elements[h?b:d],w=de(At(_)?_:_.contextElement||$t(t.elements.popper),l,u,s),E=Nt(t.elements.reference),O=pe({reference:E,element:y,placement:o}),x=ue(Object.assign({},y,O)),A=d===ct?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===ct&&T){var L=T[o];Object.keys(C).forEach(function(t){var e=[et,tt].indexOf(t)>=0?1:-1,n=[Z,tt].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e})}return C}function me(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?dt:l,u=Qt(i),f=u?a?ft:ft.filter(function(t){return Qt(t)===u}):ot,d=f.filter(function(t){return c.indexOf(t)>=0});0===d.length&&(d=f);var p=d.reduce(function(e,n){return e[n]=he(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[St(n)],e},{});return Object.keys(p).sort(function(t,e){return p[t]-p[e]})}var ge={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=St(g),b=l||(v===g||!h?[ne(g)]:function(t){if(St(t)===it)return[];var e=ne(t);return[oe(t),e,oe(e)]}(g)),y=[g].concat(b).reduce(function(t,n){return t.concat(St(n)===it?me(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)},[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=he(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?et:nt:L?tt:Z;_[j]>w[j]&&(D=ne(D));var P=ne(D),M=[];if(r&&M.push(k[T]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every(function(t){return t})){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find(function(e){var n=E.get(e);if(n)return n.slice(0,t).every(function(t){return t})});if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ve(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 be(t){return[Z,et,tt,nt].some(function(e){return t[e]>=0})}var ye={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=he(e,{elementContext:"reference"}),a=he(e,{altBoundary:!0}),l=ve(s,i),c=ve(a,o,r),u=be(l),f=be(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 _e={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=dt.reduce(function(t,n){return t[n]=function(t,e,n){var i=St(t),o=[nt,Z].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[nt,et].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t},{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var we={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=pe({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var Ee={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=he(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=St(e.placement),b=Qt(e.placement),y=!b,_=qt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?Z:nt,k="y"===_?tt:et,D="y"===_?"height":"width",P=E[_],M=P+g[j],N=P-g[k],B=p?-x[D]/2:0,F=b===rt?O[D]:x[D],I=b===rt?-x[D]:-O[D],H=e.elements.arrow,$=p&&H?Bt(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[k],q=Vt(0,O[D],$[D]),V=y?O[D]/2-B-q-W-C.mainAxis:F-q-W-C.mainAxis,Y=y?-O[D]/2+B+q+R+C.mainAxis:I+q+R+C.mainAxis,U=e.elements.arrow&&Rt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,X=P+Y-Q,G=Vt(p?kt(M,P+V-Q-K):M,P,p?jt(N,X):N);E[_]=G,L[_]=G-P}if(a){var J,it="x"===_?Z:nt,ot="x"===_?tt:et,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[ot],ut=-1!==[Z,nt].indexOf(v),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?lt:st-O[at]-x[at]-ft+C.altAxis,pt=ut?st+O[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Vt(t,e,n);return i>n?n:i}(dt,st,pt):Vt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Oe(t,e,n){void 0===n&&(n=!1);var i,o,r=Ct(e),s=Ct(e)&&function(t){var e=t.getBoundingClientRect(),n=Dt(e.width)/t.offsetWidth||1,i=Dt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=$t(e),l=Nt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ot(e)||ae(a))&&(c=(i=e)!==xt(i)&&Ct(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:re(i)),Ct(e)?((u=Nt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=se(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function xe(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 Ae={placement:"bottom",modifiers:[],strategy:"absolute"};function Ce(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Pe.has(n)||Boolean(Me.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))};const Be={allowList:De,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Fe={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ie={entry:"(string|element|function|null)",selector:"(string|element)"};class He extends N{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Be}static get DefaultType(){return Fe}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},Ie)}_setContent(t,e,n){const i=I.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?r(e)?this._putElementInTemplate(s(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)Ne(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return p(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const $e=new Set(["sanitize","allowList","sanitizeFn"]),ze="fade",We="show",Re=".tooltip-inner",qe=".modal",Ve="hide.bs.modal",Ye="hover",Ue="focus",Ke="click",Qe={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},Xe={allowList:De,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"},Ge={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 Je extends B{constructor(t,e){if(void 0===ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 Xe}static get DefaultType(){return Ge}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(qe),Ve,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=j.trigger(this._element,this.constructor.eventName("show")),e=(a(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),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(We),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",l);this._queueCallback(()=>{j.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(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(We),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",l);this._activeTrigger[Ke]=!1,this._activeTrigger[Ue]=!1,this._activeTrigger[Ye]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.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(ze,We),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(ze),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new He({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Re]: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(ze)}_isShown(){return this.tip&&this.tip.classList.contains(We)}_createPopper(t){const e=p(this._config.placement,[this,t,this._element]),n=Qe[e.toUpperCase()];return je(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 p(t,[this._element,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,...p(this._config.popperConfig,[void 0,e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[Ke]=!(e._isShown()&&e._activeTrigger[Ke]),e.toggle()});else if("manual"!==e){const t=e===Ye?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ye?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ue:Ye]=!0,e._enter()}),j.on(this._element,n,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ue:Ye]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(qe),Ve,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=M.getDataAttributes(this._element);for(const t of Object.keys(e))$e.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:s(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=Je.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}})}}d(Je);class Ze{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)}}function tn(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function en(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);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}var nn;const on=document.getElementById("toc-bar"),rn=document.getElementById("toc-solo-trigger"),sn=document.getElementsByClassName("toc-trigger"),an=document.getElementById("toc-popup"),ln=document.getElementById("toc-popup-close"),cn="overflow-hidden",un="closing";class fn{static initBar(){new IntersectionObserver(t=>{t.forEach(t=>{on.classList.toggle("invisible",t.isIntersecting)})},{rootMargin:`-${tn(fn,this,pn)._}px 0px 0px 0px`}).observe(rn),dn._=tn(fn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(t=>{t.onclick=()=>this.hidePopup()})}static refresh(){tn(fn,this,dn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return an.open}static showPopup(){this.lockScroll(!0),an.showModal();an.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){an.toggleAttribute(un),an.addEventListener("animationend",()=>{an.toggleAttribute(un),an.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(cn,t),document.body.classList.toggle(cn,t)}static clickBackdrop(t){if(an.hasAttribute(un))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...sn].forEach(t=>{t.onclick=()=>this.showPopup()}),an.onclick=t=>this.clickBackdrop(t),ln.onclick=()=>this.hidePopup(),an.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var dn={_:!0},pn={_:48};en(fn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:tn(nn=fn,nn,pn)._});en(class{static refresh(){tocbot.refresh(this.options)}static init(){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)"),Theme.getThemeMapper("default","dark");const hn=document.getElementById("mode-toggle");const mn=document.getElementById("sidebar"),gn=document.getElementById("sidebar-trigger"),vn=document.getElementById("mask");class bn{static toggle(){yn._=tn(bn,this,!tn(bn,this,yn)._),document.body.toggleAttribute("sidebar-display",tn(bn,this,yn)._),mn.classList.toggle("z-2",tn(bn,this,yn)._),vn.classList.toggle("d-none",!tn(bn,this,yn)._)}}var yn={_:!1};const _n=document.getElementById("sidebar-trigger"),wn=document.getElementById("search-trigger"),En=document.getElementById("search-cancel"),On=document.querySelectorAll("#main-wrapper>.container>.row"),xn=document.getElementById("topbar-title"),An=document.getElementById("search"),Cn=document.getElementById("search-result-wrapper"),Tn=document.getElementById("search-results"),Ln=document.getElementById("search-input"),Sn=document.getElementById("search-hints"),jn="d-block",kn="d-none",Dn="input-focus",Pn="d-flex";class Mn{static on(){_n.classList.add(kn),xn.classList.add(kn),wn.classList.add(kn),An.classList.add(Pn),En.classList.add(jn)}static off(){En.classList.remove(jn),An.classList.remove(Pn),_n.classList.remove(kn),xn.classList.remove(kn),wn.classList.remove(kn)}}class Nn{static on(){this.resultVisible||(Cn.classList.remove(kn),On.forEach(t=>{t.classList.add(kn)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Tn.innerHTML="",Sn.classList.contains(kn)&&Sn.classList.remove(kn),Cn.classList.add(kn),On.forEach(t=>{t.classList.remove(kn)}),Ln.textContent="",this.resultVisible=!1)}}function Bn(){return En.classList.contains(jn)}en(Nn,"resultVisible",!1),gn.onclick=vn.onclick=()=>bn.toggle(),wn.addEventListener("click",()=>{Mn.on(),Nn.on(),Ln.focus()}),En.addEventListener("click",()=>{Mn.off(),Nn.off()}),Ln.addEventListener("focus",()=>{An.classList.add(Dn)}),Ln.addEventListener("focusout",()=>{An.classList.remove(Dn)}),Ln.addEventListener("input",()=>{""===Ln.value?Bn()?Sn.classList.remove(kn):Nn.off():(Nn.on(),Bn()&&Sn.classList.add(kn))}),dayjs.locale(Ze.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${Ze.attrTimestamp}]`).forEach(t=>{const e=dayjs.unix(Ze.getTimestamp(t)),n=e.format(Ze.getDateFormat(t));if(t.textContent=n,t.removeAttribute(Ze.attrTimestamp),t.removeAttribute(Ze.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}}),hn&&hn.addEventListener("click",()=>{Theme.flip()}),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 Je(t))}(); diff --git a/assets/js/dist/page.min.js b/assets/js/dist/page.min.js new file mode 100644 index 00000000000..710b17dfd9b --- /dev/null +++ b/assets/js/dist/page.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.3.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,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):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 i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),o=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),r=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),s=e=>r(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,a=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?a(e.parentNode):null},l=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=e=>{var t;t=()=>{const t=c();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?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of u)e()}),u.push(t)):t()},p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.call(...t):n},h=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(e);const i=(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 o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),p(e))};t.addEventListener(n,r),setTimeout(()=>{o||t.dispatchEvent(new Event(n))},i)},m=/[^.]*(?=\..*)\.|.*/,g=/\..*/,v=/::\d+$/,b={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(e,t){return t&&`${t}::${y++}`||e.uidEvent||y++}function A(e){const t=E(e);return e.uidEvent=t,b[t]=b[t]||{},b[t]}function x(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 O(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=S(e);return w.has(r)||(r=e),[i,o,r]}function C(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=O(t,n,i);if(t in _){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=A(e),c=l[a]||(l[a]={}),u=x(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,t.replace(m,"")),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 j(o,{delegateTarget:s}),i.oneOff&&k.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return j(i,{delegateTarget:e}),n.oneOff&&k.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 T(e,t,n,i,o){const r=x(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function L(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&T(e,t,n,s.callable,s.delegationSelector)}function S(e){return e=e.replace(g,""),_[e]||e}const k={on(e,t,n,i){C(e,t,n,i,!1)},one(e,t,n,i){C(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=O(t,n,i),a=s!==t,l=A(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))L(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(v,"");a&&!t.includes(o)||T(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;T(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=c();let o=null,r=!0,s=!0,a=!1;t!==S(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=j(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function j(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 D(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 P(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const N={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${P(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${P(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),t[n]=D(e.dataset[i])}return t},getDataAttribute:(e,t)=>D(e.getAttribute(`data-bs-${P(t)}`))};class M{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=r(t)?N.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...r(t)?N.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(t)){const t=e[n],s=r(t)?"element":o(t);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}class B extends M{constructor(e,n){super(),(e=s(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),k.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){h(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(s(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.7"}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=>i(e)).join(","):null},F={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(!r(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&&F.findOne(t)?t:null},getElementFromSelector(e){const t=I(e);return t?F.findOne(t):null},getMultipleElementsFromSelector(e){const t=I(e);return t?F.find(t):[]}},$=".bs.collapse",H=`show${$}`,q=`shown${$}`,z=`hide${$}`,W=`hidden${$}`,R=`click${$}.data-api`,V="show",Y="collapse",U="collapsing",K=`:scope .${Y} .${Y}`,Q='[data-bs-toggle="collapse"]',G={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class J extends B{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=F.find(Q);for(const e of n){const t=F.getSelectorFromElement(e),n=F.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 G}static get DefaultType(){return X}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=>J.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(k.trigger(this._element,H).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(Y),this._element.classList.add(U),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(U),this._element.classList.add(Y,V),this._element.style[t]="",k.trigger(this._element,q)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(k.trigger(this._element,z).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(Y,V);for(const e of this._triggerArray){const t=F.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(U),this._element.classList.add(Y),k.trigger(this._element,W)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(V)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=s(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(Q);for(const t of e){const e=F.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=F.find(K,this._config.parent);return F.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=J.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}})}}k.on(document,R,Q,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of F.getMultipleElementsFromSelector(this))J.getOrCreateInstance(e,{toggle:!1}).toggle()}),d(J),document.getElementsByClassName("collapse");var Z="top",ee="bottom",te="right",ne="left",ie="auto",oe=[Z,ee,te,ne],re="start",se="end",ae="clippingParents",le="viewport",ce="popper",ue="reference",fe=oe.reduce(function(e,t){return e.concat([t+"-"+re,t+"-"+se])},[]),de=[].concat(oe,[ie]).reduce(function(e,t){return e.concat([t,t+"-"+re,t+"-"+se])},[]),pe="beforeRead",he="read",me="afterRead",ge="beforeMain",ve="main",be="afterMain",ye="beforeWrite",_e="write",we="afterWrite",Ee=[pe,he,me,ge,ve,be,ye,_e,we];function Ae(e){return e?(e.nodeName||"").toLowerCase():null}function xe(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Oe(e){return e instanceof xe(e).Element||e instanceof Element}function Ce(e){return e instanceof xe(e).HTMLElement||e instanceof HTMLElement}function Te(e){return"undefined"!=typeof ShadowRoot&&(e instanceof xe(e).ShadowRoot||e instanceof ShadowRoot)}var Le={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];Ce(o)&&Ae(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},{});Ce(i)&&Ae(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(e){i.removeAttribute(e)}))})}},requires:["computeStyles"]};function Se(e){return e.split("-")[0]}var ke=Math.max,je=Math.min,De=Math.round;function Pe(){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 Ne(){return!/^((?!chrome|android).)*safari/i.test(Pe())}function Me(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Ce(e)&&(o=e.offsetWidth>0&&De(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&De(i.height)/e.offsetHeight||1);var s=(Oe(e)?xe(e):window).visualViewport,a=!Ne()&&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 Be(e){var t=Me(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 Ie(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Te(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Fe(e){return xe(e).getComputedStyle(e)}function $e(e){return["table","td","th"].indexOf(Ae(e))>=0}function He(e){return((Oe(e)?e.ownerDocument:e.document)||window.document).documentElement}function qe(e){return"html"===Ae(e)?e:e.assignedSlot||e.parentNode||(Te(e)?e.host:null)||He(e)}function ze(e){return Ce(e)&&"fixed"!==Fe(e).position?e.offsetParent:null}function We(e){for(var t=xe(e),n=ze(e);n&&$e(n)&&"static"===Fe(n).position;)n=ze(n);return n&&("html"===Ae(n)||"body"===Ae(n)&&"static"===Fe(n).position)?t:n||function(e){var t=/firefox/i.test(Pe());if(/Trident/i.test(Pe())&&Ce(e)&&"fixed"===Fe(e).position)return null;var n=qe(e);for(Te(n)&&(n=n.host);Ce(n)&&["html","body"].indexOf(Ae(n))<0;){var i=Fe(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 Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ve(e,t,n){return ke(e,je(t,n))}function Ye(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}var Ke={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Se(n.placement),l=Re(a),c=[ne,te].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ye("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,oe))}(o.padding,n),f=Be(r),d="y"===l?Z:ne,p="y"===l?ee:te,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=We(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Ve(y,w,_),A=l;n.modifiersData[i]=((t={})[A]=E,t.centerOffset=E-w,t)}},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)))&&Ie(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qe(e){return e.split("-")[1]}var Ge={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xe(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=ne,_=Z,w=window;if(c){var E=We(n),A="clientHeight",x="clientWidth";if(E===xe(n)&&"static"!==Fe(E=He(n)).position&&"absolute"===a&&(A="scrollHeight",x="scrollWidth"),o===Z||(o===ne||o===te)&&r===se)_=ee,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[A])-i.height,m*=l?1:-1;if(o===ne||(o===Z||o===ee)&&r===se)y=te,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var O,C=Object.assign({position:a},c&&Ge),T=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:De(n*o)/o||0,y:De(i*o)/o||0}}({x:p,y:m},xe(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((O={})[_]=b?"0":"",O[y]=v?"0":"",O.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",O)):Object.assign({},C,((t={})[_]=b?m+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var Je={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:Se(t.placement),variation:Qe(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,Xe(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,Xe(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:{}},Ze={passive:!0};var et={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=xe(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach(function(e){e.addEventListener("scroll",n.update,Ze)}),a&&l.addEventListener("resize",n.update,Ze),function(){r&&c.forEach(function(e){e.removeEventListener("scroll",n.update,Ze)}),a&&l.removeEventListener("resize",n.update,Ze)}},data:{}},tt={left:"right",right:"left",bottom:"top",top:"bottom"};function nt(e){return e.replace(/left|right|bottom|top/g,function(e){return tt[e]})}var it={start:"end",end:"start"};function ot(e){return e.replace(/start|end/g,function(e){return it[e]})}function rt(e){var t=xe(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function st(e){return Me(He(e)).left+rt(e).scrollLeft}function at(e){var t=Fe(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function lt(e){return["html","body","#document"].indexOf(Ae(e))>=0?e.ownerDocument.body:Ce(e)&&at(e)?e:lt(qe(e))}function ct(e,t){var n;void 0===t&&(t=[]);var i=lt(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=xe(i),s=o?[r].concat(r.visualViewport||[],at(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ct(qe(s)))}function ut(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ft(e,t,n){return t===le?ut(function(e,t){var n=xe(e),i=He(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Ne();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+st(e),y:l}}(e,n)):Oe(t)?function(e,t){var n=Me(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):ut(function(e){var t,n=He(e),i=rt(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=ke(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=ke(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+st(e),l=-i.scrollTop;return"rtl"===Fe(o||n).direction&&(a+=ke(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(He(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=ct(qe(e)),n=["absolute","fixed"].indexOf(Fe(e).position)>=0&&Ce(e)?We(e):e;return Oe(n)?t.filter(function(e){return Oe(e)&&Ie(e,n)&&"body"!==Ae(e)}):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(t,n){var o=ft(e,n,i);return t.top=ke(o.top,t.top),t.right=je(o.right,t.right),t.bottom=je(o.bottom,t.bottom),t.left=ke(o.left,t.left),t},ft(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 pt(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Se(o):null,s=o?Qe(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case Z:t={x:a,y:n.y-i.height};break;case ee:t={x:a,y:n.y+n.height};break;case te:t={x:n.x+n.width,y:l};break;case ne:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case re:t[c]=t[c]-(n[u]/2-i[u]/2);break;case se:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?ae:a,c=n.rootBoundary,u=void 0===c?le:c,f=n.elementContext,d=void 0===f?ce:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Ye("number"!=typeof g?g:Ue(g,oe)),b=d===ce?ue:ce,y=e.rects.popper,_=e.elements[h?b:d],w=dt(Oe(_)?_:_.contextElement||He(e.elements.popper),l,u,s),E=Me(e.elements.reference),A=pt({reference:E,element:y,placement:o}),x=ut(Object.assign({},y,A)),O=d===ce?x:E,C={top:w.top-O.top+v.top,bottom:O.bottom-w.bottom+v.bottom,left:w.left-O.left+v.left,right:O.right-w.right+v.right},T=e.modifiersData.offset;if(d===ce&&T){var L=T[o];Object.keys(C).forEach(function(e){var t=[te,ee].indexOf(e)>=0?1:-1,n=[Z,ee].indexOf(e)>=0?"y":"x";C[e]+=L[n]*t})}return C}function mt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Qe(i),f=u?a?fe:fe.filter(function(e){return Qe(e)===u}):oe,d=f.filter(function(e){return c.indexOf(e)>=0});0===d.length&&(d=f);var p=d.reduce(function(t,n){return t[n]=ht(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Se(n)],t},{});return Object.keys(p).sort(function(e,t){return p[e]-p[t]})}var gt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,v=Se(g),b=l||(v===g||!h?[nt(g)]:function(e){if(Se(e)===ie)return[];var t=nt(e);return[ot(e),t,ot(t)]}(g)),y=[g].concat(b).reduce(function(e,n){return e.concat(Se(n)===ie?mt(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)},[]),_=t.rects.reference,w=t.rects.popper,E=new Map,A=!0,x=y[0],O=0;O=0,k=S?"width":"height",j=ht(t,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?te:ne:L?ee:Z;_[k]>w[k]&&(D=nt(D));var P=nt(D),N=[];if(r&&N.push(j[T]<=0),a&&N.push(j[D]<=0,j[P]<=0),N.every(function(e){return e})){x=C,A=!1;break}E.set(C,N)}if(A)for(var M=function(e){var t=y.find(function(t){var n=E.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(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 bt(e){return[Z,te,ee,ne].some(function(t){return e[t]>=0})}var yt={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=ht(t,{elementContext:"reference"}),a=ht(t,{altBoundary:!0}),l=vt(s,i),c=vt(a,o,r),u=bt(l),f=bt(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 _t={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce(function(e,n){return e[n]=function(e,t,n){var i=Se(e),o=[ne,Z].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[ne,te].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e},{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var wt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=pt({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var Et={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=ht(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Se(t.placement),b=Qe(t.placement),y=!b,_=Re(v),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,A=t.rects.reference,x=t.rects.popper,O="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,C="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(E){if(r){var S,k="y"===_?Z:ne,j="y"===_?ee:te,D="y"===_?"height":"width",P=E[_],N=P+g[k],M=P-g[j],B=p?-x[D]/2:0,I=b===re?A[D]:x[D],F=b===re?-x[D]:-A[D],$=t.elements.arrow,H=p&&$?Be($):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=q[k],W=q[j],R=Ve(0,A[D],H[D]),V=y?A[D]/2-B-R-z-C.mainAxis:I-R-z-C.mainAxis,Y=y?-A[D]/2+B+R+W+C.mainAxis:F+R+W+C.mainAxis,U=t.elements.arrow&&We(t.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,G=P+Y-Q,X=Ve(p?je(N,P+V-Q-K):N,P,p?ke(M,G):M);E[_]=X,L[_]=X-P}if(a){var J,ie="x"===_?Z:ne,oe="x"===_?ee:te,se=E[w],ae="y"===w?"height":"width",le=se+g[ie],ce=se-g[oe],ue=-1!==[Z,ne].indexOf(v),fe=null!=(J=null==T?void 0:T[w])?J:0,de=ue?le:se-A[ae]-x[ae]-fe+C.altAxis,pe=ue?se+A[ae]+x[ae]-fe-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=Ve(e,t,n);return i>n?n:i}(de,se,pe):Ve(p?de:le,se,p?pe:ce);E[w]=he,L[w]=he-se}t.modifiersData[i]=L}},requiresIfExists:["offset"]};function At(e,t,n){void 0===n&&(n=!1);var i,o,r=Ce(t),s=Ce(t)&&function(e){var t=e.getBoundingClientRect(),n=De(t.width)/e.offsetWidth||1,i=De(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=He(t),l=Me(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ae(t)||at(a))&&(c=(i=t)!==xe(i)&&Ce(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:rt(i)),Ce(t)?((u=Me(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=st(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function xt(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 Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function Ct(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Pt.has(n)||Boolean(Nt.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};const Bt={allowList:Dt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},It={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ft={entry:"(string|element|function|null)",selector:"(string|element)"};class $t extends M{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Bt}static get DefaultType(){return It}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},Ft)}_setContent(e,t,n){const i=F.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?r(t)?this._putElementInTemplate(s(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)Mt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return p(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Ht=new Set(["sanitize","allowList","sanitizeFn"]),qt="fade",zt="show",Wt=".tooltip-inner",Rt=".modal",Vt="hide.bs.modal",Yt="hover",Ut="focus",Kt="click",Qt={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},Gt={allowList:Dt,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"},Xt={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 Jt extends B{constructor(e,t){if(void 0===jt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 Gt}static get DefaultType(){return Xt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),k.off(this._element.closest(Rt),Vt,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=k.trigger(this._element,this.constructor.eventName("show")),t=(a(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),k.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(zt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))k.on(e,"mouseover",l);this._queueCallback(()=>{k.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(k.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(zt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))k.off(e,"mouseover",l);this._activeTrigger[Kt]=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Yt]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),k.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(qt,zt),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(qt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new $t({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Wt]: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(qt)}_isShown(){return this.tip&&this.tip.classList.contains(zt)}_createPopper(e){const t=p(this._config.placement,[this,e,this._element]),n=Qt[t.toUpperCase()];return kt(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 p(e,[this._element,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,...p(this._config.popperConfig,[void 0,t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)k.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger[Kt]=!(t._isShown()&&t._activeTrigger[Kt]),t.toggle()});else if("manual"!==t){const e=t===Yt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Yt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");k.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Yt]=!0,t._enter()}),k.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Yt]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},k.on(this._element.closest(Rt),Vt,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=N.getDataAttributes(this._element);for(const e of Object.keys(t))Ht.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:s(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=Jt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}d(Jt);const Zt=".code-header>button",en="timeout",tn="data-title-succeed",nn="data-bs-original-title",on=2e3;function rn(e){if(e.hasAttribute(en)){let t=e.getAttribute(en);if(Number(t)>Date.now())return!0}return!1}function sn(e){e.setAttribute(en,Date.now()+on)}function an(e){e.removeAttribute(en)}function ln(){const e=document.querySelectorAll(Zt);if(0===e.length)return;const t=new ClipboardJS(Zt,{target:e=>e.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...e].map(e=>new Jt(e,{placement:"left"})),t.on("success",e=>{const t=e.trigger;(e.clearSelection(),rn(t))||(t.children[0].setAttribute("class","fas fa-check"),function(e){const t=e.getAttribute(tn);e.setAttribute(nn,t),Jt.getInstance(e).show()}(t),sn(t),setTimeout(()=>{!function(e){Jt.getInstance(e).hide(),e.removeAttribute(nn)}(t),function(e){e.children[0].setAttribute("class","far fa-clipboard")}(t),an(t)},on))})}const cn="data-src",un="data-lqip",fn="shimmer",dn="blur";function pn(e){this.parentElement.classList.remove(e)}function hn(){this.complete&&(this.hasAttribute(un)?pn.call(this,dn):pn.call(this,fn))}function mn(){const e=this.getAttribute(cn);this.setAttribute("src",encodeURI(e)),this.removeAttribute(cn)}const gn=".popup:not(.dark)",vn=".popup:not(.light)";let bn=gn;function yn(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function _n(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);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}var wn;const En=document.getElementById("toc-bar"),An=document.getElementById("toc-solo-trigger"),xn=document.getElementsByClassName("toc-trigger"),On=document.getElementById("toc-popup"),Cn=document.getElementById("toc-popup-close"),Tn="overflow-hidden",Ln="closing";class Sn{static initBar(){new IntersectionObserver(e=>{e.forEach(e=>{En.classList.toggle("invisible",e.isIntersecting)})},{rootMargin:`-${yn(Sn,this,jn)._}px 0px 0px 0px`}).observe(An),kn._=yn(Sn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(e=>{e.onclick=()=>this.hidePopup()})}static refresh(){yn(Sn,this,kn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return On.open}static showPopup(){this.lockScroll(!0),On.showModal();On.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){On.toggleAttribute(Ln),On.addEventListener("animationend",()=>{On.toggleAttribute(Ln),On.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(Tn,e),document.body.classList.toggle(Tn,e)}static clickBackdrop(e){if(On.hasAttribute(Ln))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...xn].forEach(e=>{e.onclick=()=>this.showPopup()}),On.onclick=e=>this.clickBackdrop(e),Cn.onclick=()=>this.hidePopup(),On.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var kn={_:!0},jn={_:48};_n(Sn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:yn(wn=Sn,wn,jn)._});_n(class{static refresh(){tocbot.refresh(this.options)}static init(){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)");const Dn="mermaid",Pn=Theme.getThemeMapper("default","dark");function Nn(e){if(e.source===window&&e.data&&e.data.id===Theme.ID){[...document.getElementsByClassName(Dn)].forEach(e=>{const t=e.previousSibling.children.item(0).textContent;e.textContent=t,e.removeAttribute("data-processed")});const e=Pn[Theme.visualState];mermaid.initialize({theme:e}),mermaid.init(null,`.${Dn}`)}}function Mn(e){const t=e.textContent,n=e.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(Dn);const o=document.createTextNode(t);i.appendChild(o),n.after(i)}const Bn=document.getElementById("mode-toggle");const In=document.getElementById("sidebar"),Fn=document.getElementById("sidebar-trigger"),$n=document.getElementById("mask");class Hn{static toggle(){qn._=yn(Hn,this,!yn(Hn,this,qn)._),document.body.toggleAttribute("sidebar-display",yn(Hn,this,qn)._),In.classList.toggle("z-2",yn(Hn,this,qn)._),$n.classList.toggle("d-none",!yn(Hn,this,qn)._)}}var qn={_:!1};const zn=document.getElementById("sidebar-trigger"),Wn=document.getElementById("search-trigger"),Rn=document.getElementById("search-cancel"),Vn=document.querySelectorAll("#main-wrapper>.container>.row"),Yn=document.getElementById("topbar-title"),Un=document.getElementById("search"),Kn=document.getElementById("search-result-wrapper"),Qn=document.getElementById("search-results"),Gn=document.getElementById("search-input"),Xn=document.getElementById("search-hints"),Jn="d-block",Zn="d-none",ei="input-focus",ti="d-flex";class ni{static on(){zn.classList.add(Zn),Yn.classList.add(Zn),Wn.classList.add(Zn),Un.classList.add(ti),Rn.classList.add(Jn)}static off(){Rn.classList.remove(Jn),Un.classList.remove(ti),zn.classList.remove(Zn),Yn.classList.remove(Zn),Wn.classList.remove(Zn)}}class ii{static on(){this.resultVisible||(Kn.classList.remove(Zn),Vn.forEach(e=>{e.classList.add(Zn)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Qn.innerHTML="",Xn.classList.contains(Zn)&&Xn.classList.remove(Zn),Kn.classList.add(Zn),Vn.forEach(e=>{e.classList.remove(Zn)}),Gn.textContent="",this.resultVisible=!1)}}function oi(){return Rn.classList.contains(Jn)}_n(ii,"resultVisible",!1),function(){const e=document.querySelectorAll("article img");if(0===e.length)return;e.forEach(e=>{e.addEventListener("load",hn)}),document.querySelectorAll('article img[loading="lazy"]').forEach(e=>{e.complete&&pn.call(e,fn)});const t=document.querySelectorAll(`article img[${un}="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"));Theme.visualState===Theme.DARK&&(bn=vn);let t=GLightbox({selector:`${bn}`});if(e&&Theme.switchable){let e=null;window.addEventListener("message",n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(e,t){bn=bn===gn?vn:gn,null===t&&(t=GLightbox({selector:`${bn}`})),[e,t]=[t,e]}(t,e)})}}(),Fn.onclick=$n.onclick=()=>Hn.toggle(),Wn.addEventListener("click",()=>{ni.on(),ii.on(),Gn.focus()}),Rn.addEventListener("click",()=>{ni.off(),ii.off()}),Gn.addEventListener("focus",()=>{Un.classList.add(ei)}),Gn.addEventListener("focusout",()=>{Un.classList.remove(ei)}),Gn.addEventListener("input",()=>{""===Gn.value?oi()?Xn.classList.remove(Zn):ii.off():(ii.on(),oi()&&Xn.classList.add(Zn))}),ln(),function(){const e=document.getElementById("copy-link");null!==e&&(e.addEventListener("click",e=>{const t=e.target;rn(t)||navigator.clipboard.writeText(window.location.href).then(()=>{const e=t.getAttribute(nn),n=t.getAttribute(tn);t.setAttribute(nn,n),Jt.getInstance(t).show(),sn(t),setTimeout(()=>{t.setAttribute(nn,e),an(t)},on)})}),e.addEventListener("mouseleave",e=>{Jt.getInstance(e.target).hide()}))}(),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let e={theme:Pn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Mn),mermaid.initialize(e),Theme.switchable&&window.addEventListener("message",Nn)}(),Bn&&Bn.addEventListener("click",()=>{Theme.flip()}),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 Jt(e))}(); diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js new file mode 100644 index 00000000000..a4ae524803e --- /dev/null +++ b/assets/js/dist/post.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.3.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),t),o=t=>null==t?`${t}`:Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),s=t=>r(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,a=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?a(t.parentNode):null},l=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,u=[],f=()=>"rtl"===document.documentElement.dir,d=t=>{var e;e=()=>{const e=c();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?(u.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of u)t()}),u.push(e)):e()},p=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t.call(...e):n},h=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void p(t);const i=(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 o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),p(t))};e.addEventListener(n,r),setTimeout(()=>{o||e.dispatchEvent(new Event(n))},i)},m=/[^.]*(?=\..*)\.|.*/,g=/\..*/,b=/::\d+$/,v={};let y=1;const _={mouseenter:"mouseover",mouseleave:"mouseout"},w=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 E(t,e){return e&&`${e}::${y++}`||t.uidEvent||y++}function A(t){const e=E(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function x(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 O(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=S(t);return w.has(r)||(r=t),[i,o,r]}function C(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=O(e,n,i);if(e in _){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=A(t),c=l[a]||(l[a]={}),u=x(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=E(s,e.replace(m,"")),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 k(o,{delegateTarget:s}),i.oneOff&&j.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return k(i,{delegateTarget:t}),n.oneOff&&j.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 T(t,e,n,i,o){const r=x(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&T(t,e,n,s.callable,s.delegationSelector)}function S(t){return t=t.replace(g,""),_[t]||t}const j={on(t,e,n,i){C(t,e,n,i,!1)},one(t,e,n,i){C(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=O(e,n,i),a=s!==e,l=A(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))L(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(b,"");a&&!e.includes(o)||T(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;T(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==S(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=k(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function k(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 D(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 P(t){return t.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const N={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${P(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${P(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),e[n]=D(t.dataset[i])}return e},getDataAttribute:(t,e)=>D(t.getAttribute(`data-bs-${P(e)}`))};class M{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=r(e)?N.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...r(e)?N.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[n,i]of Object.entries(e)){const e=t[n],s=r(e)?"element":o(e);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}class B extends M{constructor(t,n){super(),(t=s(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){h(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 e.get(s(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.7"}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 I=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=>i(t)).join(","):null},F={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(!r(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=I(t);return e&&F.findOne(e)?e:null},getElementFromSelector(t){const e=I(t);return e?F.findOne(e):null},getMultipleElementsFromSelector(t){const e=I(t);return e?F.find(e):[]}},$=".bs.collapse",H=`show${$}`,q=`shown${$}`,z=`hide${$}`,W=`hidden${$}`,R=`click${$}.data-api`,V="show",Y="collapse",U="collapsing",K=`:scope .${Y} .${Y}`,Q='[data-bs-toggle="collapse"]',G={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class J extends B{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=F.find(Q);for(const t of n){const e=F.getSelectorFromElement(t),n=F.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 G}static get DefaultType(){return X}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=>J.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,H).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Y),this._element.classList.add(U),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(U),this._element.classList.add(Y,V),this._element.style[e]="",j.trigger(this._element,q)},this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,z).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(Y,V);for(const t of this._triggerArray){const e=F.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(U),this._element.classList.add(Y),j.trigger(this._element,W)},this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(V)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=s(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Q);for(const e of t){const t=F.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=F.find(K,this._config.parent);return F.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=J.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}})}}j.on(document,R,Q,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of F.getMultipleElementsFromSelector(this))J.getOrCreateInstance(t,{toggle:!1}).toggle()}),d(J),document.getElementsByClassName("collapse");var Z="top",tt="bottom",et="right",nt="left",it="auto",ot=[Z,tt,et,nt],rt="start",st="end",at="clippingParents",lt="viewport",ct="popper",ut="reference",ft=ot.reduce(function(t,e){return t.concat([e+"-"+rt,e+"-"+st])},[]),dt=[].concat(ot,[it]).reduce(function(t,e){return t.concat([e,e+"-"+rt,e+"-"+st])},[]),pt="beforeRead",ht="read",mt="afterRead",gt="beforeMain",bt="main",vt="afterMain",yt="beforeWrite",_t="write",wt="afterWrite",Et=[pt,ht,mt,gt,bt,vt,yt,_t,wt];function At(t){return t?(t.nodeName||"").toLowerCase():null}function xt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ot(t){return t instanceof xt(t).Element||t instanceof Element}function Ct(t){return t instanceof xt(t).HTMLElement||t instanceof HTMLElement}function Tt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof xt(t).ShadowRoot||t instanceof ShadowRoot)}var Lt={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];Ct(o)&&At(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},{});Ct(i)&&At(i)&&(Object.assign(i.style,r),Object.keys(o).forEach(function(t){i.removeAttribute(t)}))})}},requires:["computeStyles"]};function St(t){return t.split("-")[0]}var jt=Math.max,kt=Math.min,Dt=Math.round;function Pt(){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 Nt(){return!/^((?!chrome|android).)*safari/i.test(Pt())}function Mt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&Ct(t)&&(o=t.offsetWidth>0&&Dt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Dt(i.height)/t.offsetHeight||1);var s=(Ot(t)?xt(t):window).visualViewport,a=!Nt()&&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 Bt(t){var e=Mt(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 It(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Tt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ft(t){return xt(t).getComputedStyle(t)}function $t(t){return["table","td","th"].indexOf(At(t))>=0}function Ht(t){return((Ot(t)?t.ownerDocument:t.document)||window.document).documentElement}function qt(t){return"html"===At(t)?t:t.assignedSlot||t.parentNode||(Tt(t)?t.host:null)||Ht(t)}function zt(t){return Ct(t)&&"fixed"!==Ft(t).position?t.offsetParent:null}function Wt(t){for(var e=xt(t),n=zt(t);n&&$t(n)&&"static"===Ft(n).position;)n=zt(n);return n&&("html"===At(n)||"body"===At(n)&&"static"===Ft(n).position)?e:n||function(t){var e=/firefox/i.test(Pt());if(/Trident/i.test(Pt())&&Ct(t)&&"fixed"===Ft(t).position)return null;var n=qt(t);for(Tt(n)&&(n=n.host);Ct(n)&&["html","body"].indexOf(At(n))<0;){var i=Ft(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 Rt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Vt(t,e,n){return jt(t,kt(e,n))}function Yt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Ut(t,e){return e.reduce(function(e,n){return e[n]=t,e},{})}var Kt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=St(n.placement),l=Rt(a),c=[nt,et].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Yt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Ut(t,ot))}(o.padding,n),f=Bt(r),d="y"===l?Z:nt,p="y"===l?tt:et,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=Wt(r),b=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[d],_=b-f[c]-u[p],w=b/2-f[c]/2+v,E=Vt(y,w,_),A=l;n.modifiersData[i]=((e={})[A]=E,e.centerOffset=E-w,e)}},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)))&&It(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qt(t){return t.split("-")[1]}var Gt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=nt,_=Z,w=window;if(c){var E=Wt(n),A="clientHeight",x="clientWidth";if(E===xt(n)&&"static"!==Ft(E=Ht(n)).position&&"absolute"===a&&(A="scrollHeight",x="scrollWidth"),o===Z||(o===nt||o===et)&&r===st)_=tt,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[A])-i.height,m*=l?1:-1;if(o===nt||(o===Z||o===tt)&&r===st)y=et,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var O,C=Object.assign({position:a},c&&Gt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Dt(n*o)/o||0,y:Dt(i*o)/o||0}}({x:p,y:m},xt(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((O={})[_]=v?"0":"",O[y]=b?"0":"",O.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",O)):Object.assign({},C,((e={})[_]=v?m+"px":"",e[y]=b?p+"px":"",e.transform="",e))}var Jt={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:St(e.placement),variation:Qt(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,Xt(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,Xt(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:{}},Zt={passive:!0};var te={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=xt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach(function(t){t.addEventListener("scroll",n.update,Zt)}),a&&l.addEventListener("resize",n.update,Zt),function(){r&&c.forEach(function(t){t.removeEventListener("scroll",n.update,Zt)}),a&&l.removeEventListener("resize",n.update,Zt)}},data:{}},ee={left:"right",right:"left",bottom:"top",top:"bottom"};function ne(t){return t.replace(/left|right|bottom|top/g,function(t){return ee[t]})}var ie={start:"end",end:"start"};function oe(t){return t.replace(/start|end/g,function(t){return ie[t]})}function re(t){var e=xt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function se(t){return Mt(Ht(t)).left+re(t).scrollLeft}function ae(t){var e=Ft(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function le(t){return["html","body","#document"].indexOf(At(t))>=0?t.ownerDocument.body:Ct(t)&&ae(t)?t:le(qt(t))}function ce(t,e){var n;void 0===e&&(e=[]);var i=le(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=xt(i),s=o?[r].concat(r.visualViewport||[],ae(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(ce(qt(s)))}function ue(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function fe(t,e,n){return e===lt?ue(function(t,e){var n=xt(t),i=Ht(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Nt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+se(t),y:l}}(t,n)):Ot(e)?function(t,e){var n=Mt(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):ue(function(t){var e,n=Ht(t),i=re(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=jt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=jt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+se(t),l=-i.scrollTop;return"rtl"===Ft(o||n).direction&&(a+=jt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Ht(t)))}function de(t,e,n,i){var o="clippingParents"===e?function(t){var e=ce(qt(t)),n=["absolute","fixed"].indexOf(Ft(t).position)>=0&&Ct(t)?Wt(t):t;return Ot(n)?e.filter(function(t){return Ot(t)&&It(t,n)&&"body"!==At(t)}):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(e,n){var o=fe(t,n,i);return e.top=jt(o.top,e.top),e.right=kt(o.right,e.right),e.bottom=kt(o.bottom,e.bottom),e.left=jt(o.left,e.left),e},fe(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 pe(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?St(o):null,s=o?Qt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case Z:e={x:a,y:n.y-i.height};break;case tt:e={x:a,y:n.y+n.height};break;case et:e={x:n.x+n.width,y:l};break;case nt:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?Rt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case rt:e[c]=e[c]-(n[u]/2-i[u]/2);break;case st:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?at:a,c=n.rootBoundary,u=void 0===c?lt:c,f=n.elementContext,d=void 0===f?ct:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Yt("number"!=typeof g?g:Ut(g,ot)),v=d===ct?ut:ct,y=t.rects.popper,_=t.elements[h?v:d],w=de(Ot(_)?_:_.contextElement||Ht(t.elements.popper),l,u,s),E=Mt(t.elements.reference),A=pe({reference:E,element:y,placement:o}),x=ue(Object.assign({},y,A)),O=d===ct?x:E,C={top:w.top-O.top+b.top,bottom:O.bottom-w.bottom+b.bottom,left:w.left-O.left+b.left,right:O.right-w.right+b.right},T=t.modifiersData.offset;if(d===ct&&T){var L=T[o];Object.keys(C).forEach(function(t){var e=[et,tt].indexOf(t)>=0?1:-1,n=[Z,tt].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e})}return C}function me(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?dt:l,u=Qt(i),f=u?a?ft:ft.filter(function(t){return Qt(t)===u}):ot,d=f.filter(function(t){return c.indexOf(t)>=0});0===d.length&&(d=f);var p=d.reduce(function(e,n){return e[n]=he(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[St(n)],e},{});return Object.keys(p).sort(function(t,e){return p[t]-p[e]})}var ge={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,b=St(g),v=l||(b===g||!h?[ne(g)]:function(t){if(St(t)===it)return[];var e=ne(t);return[oe(t),e,oe(e)]}(g)),y=[g].concat(v).reduce(function(t,n){return t.concat(St(n)===it?me(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)},[]),_=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,x=y[0],O=0;O=0,j=S?"width":"height",k=he(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?et:nt:L?tt:Z;_[j]>w[j]&&(D=ne(D));var P=ne(D),N=[];if(r&&N.push(k[T]<=0),a&&N.push(k[D]<=0,k[P]<=0),N.every(function(t){return t})){x=C,A=!1;break}E.set(C,N)}if(A)for(var M=function(t){var e=y.find(function(e){var n=E.get(e);if(n)return n.slice(0,t).every(function(t){return t})});if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function be(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 ve(t){return[Z,et,tt,nt].some(function(e){return t[e]>=0})}var ye={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=he(e,{elementContext:"reference"}),a=he(e,{altBoundary:!0}),l=be(s,i),c=be(a,o,r),u=ve(l),f=ve(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 _e={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=dt.reduce(function(t,n){return t[n]=function(t,e,n){var i=St(t),o=[nt,Z].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[nt,et].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t},{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var we={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=pe({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var Ee={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=he(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),b=St(e.placement),v=Qt(e.placement),y=!v,_=Rt(b),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,x=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?Z:nt,k="y"===_?tt:et,D="y"===_?"height":"width",P=E[_],N=P+g[j],M=P-g[k],B=p?-x[D]/2:0,I=v===rt?A[D]:x[D],F=v===rt?-x[D]:-A[D],$=e.elements.arrow,H=p&&$?Bt($):{width:0,height:0},q=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=q[j],W=q[k],R=Vt(0,A[D],H[D]),V=y?A[D]/2-B-R-z-C.mainAxis:I-R-z-C.mainAxis,Y=y?-A[D]/2+B+R+W+C.mainAxis:F+R+W+C.mainAxis,U=e.elements.arrow&&Wt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,G=P+Y-Q,X=Vt(p?kt(N,P+V-Q-K):N,P,p?jt(M,G):M);E[_]=X,L[_]=X-P}if(a){var J,it="x"===_?Z:nt,ot="x"===_?tt:et,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[ot],ut=-1!==[Z,nt].indexOf(b),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?lt:st-A[at]-x[at]-ft+C.altAxis,pt=ut?st+A[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Vt(t,e,n);return i>n?n:i}(dt,st,pt):Vt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ae(t,e,n){void 0===n&&(n=!1);var i,o,r=Ct(e),s=Ct(e)&&function(t){var e=t.getBoundingClientRect(),n=Dt(e.width)/t.offsetWidth||1,i=Dt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Ht(e),l=Mt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==At(e)||ae(a))&&(c=(i=e)!==xt(i)&&Ct(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:re(i)),Ct(e)?((u=Mt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=se(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function xe(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 Oe={placement:"bottom",modifiers:[],strategy:"absolute"};function Ce(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Pe.has(n)||Boolean(Ne.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))};const Be={allowList:De,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Ie={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Fe={entry:"(string|element|function|null)",selector:"(string|element)"};class $e extends M{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Be}static get DefaultType(){return Ie}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},Fe)}_setContent(t,e,n){const i=F.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?r(e)?this._putElementInTemplate(s(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)Me(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return p(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const He=new Set(["sanitize","allowList","sanitizeFn"]),qe="fade",ze="show",We=".tooltip-inner",Re=".modal",Ve="hide.bs.modal",Ye="hover",Ue="focus",Ke="click",Qe={AUTO:"auto",TOP:"top",RIGHT:f()?"left":"right",BOTTOM:"bottom",LEFT:f()?"right":"left"},Ge={allowList:De,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"},Xe={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 Je extends B{constructor(t,e){if(void 0===ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)");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 Ge}static get DefaultType(){return Xe}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Re),Ve,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=j.trigger(this._element,this.constructor.eventName("show")),e=(a(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),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",l);this._queueCallback(()=>{j.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(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",l);this._activeTrigger[Ke]=!1,this._activeTrigger[Ue]=!1,this._activeTrigger[Ye]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.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(qe,ze),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(qe),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new $e({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[We]: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(qe)}_isShown(){return this.tip&&this.tip.classList.contains(ze)}_createPopper(t){const e=p(this._config.placement,[this,t,this._element]),n=Qe[e.toUpperCase()];return je(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 p(t,[this._element,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,...p(this._config.popperConfig,[void 0,e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[Ke]=!(e._isShown()&&e._activeTrigger[Ke]),e.toggle()});else if("manual"!==e){const t=e===Ye?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ye?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ue:Ye]=!0,e._enter()}),j.on(this._element,n,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ue:Ye]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Re),Ve,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=N.getDataAttributes(this._element);for(const t of Object.keys(e))He.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:s(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=Je.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}})}}d(Je);const Ze=".code-header>button",tn="timeout",en="data-title-succeed",nn="data-bs-original-title",on=2e3;function rn(t){if(t.hasAttribute(tn)){let e=t.getAttribute(tn);if(Number(e)>Date.now())return!0}return!1}function sn(t){t.setAttribute(tn,Date.now()+on)}function an(t){t.removeAttribute(tn)}function ln(){const t=document.querySelectorAll(Ze);if(0===t.length)return;const e=new ClipboardJS(Ze,{target:t=>t.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...t].map(t=>new Je(t,{placement:"left"})),e.on("success",t=>{const e=t.trigger;(t.clearSelection(),rn(e))||(e.children[0].setAttribute("class","fas fa-check"),function(t){const e=t.getAttribute(en);t.setAttribute(nn,e),Je.getInstance(t).show()}(e),sn(e),setTimeout(()=>{!function(t){Je.getInstance(t).hide(),t.removeAttribute(nn)}(e),function(t){t.children[0].setAttribute("class","far fa-clipboard")}(e),an(e)},on))})}const cn="data-src",un="data-lqip",fn="shimmer",dn="blur";function pn(t){this.parentElement.classList.remove(t)}function hn(){this.complete&&(this.hasAttribute(un)?pn.call(this,dn):pn.call(this,fn))}function mn(){const t=this.getAttribute(cn);this.setAttribute("src",encodeURI(t)),this.removeAttribute(cn)}const gn=".popup:not(.dark)",bn=".popup:not(.light)";let vn=gn;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)}}function _n(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function wn(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);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}var En;const An=document.getElementById("toc-bar"),xn=document.getElementById("toc-solo-trigger"),On=document.getElementsByClassName("toc-trigger"),Cn=document.getElementById("toc-popup"),Tn=document.getElementById("toc-popup-close"),Ln="overflow-hidden",Sn="closing";class jn{static initBar(){new IntersectionObserver(t=>{t.forEach(t=>{An.classList.toggle("invisible",t.isIntersecting)})},{rootMargin:`-${_n(jn,this,Dn)._}px 0px 0px 0px`}).observe(xn),kn._=_n(jn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach(t=>{t.onclick=()=>this.hidePopup()})}static refresh(){_n(jn,this,kn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return Cn.open}static showPopup(){this.lockScroll(!0),Cn.showModal();Cn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){Cn.toggleAttribute(Sn),Cn.addEventListener("animationend",()=>{Cn.toggleAttribute(Sn),Cn.close()},{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(Ln,t),document.body.classList.toggle(Ln,t)}static clickBackdrop(t){if(Cn.hasAttribute(Sn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...On].forEach(t=>{t.onclick=()=>this.showPopup()}),Cn.onclick=t=>this.clickBackdrop(t),Tn.onclick=()=>this.hidePopup(),Cn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var kn={_:!0},Dn={_:48};wn(jn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:_n(En=jn,En,Dn)._});class Pn{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}}wn(Pn,"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32});const Nn=matchMedia("(min-width: 1200px)");function Mn(t){t.matches?(jn.popupOpened&&jn.hidePopup(),Pn.refresh()):jn.refresh()}const Bn="mermaid",In=Theme.getThemeMapper("default","dark");function Fn(t){if(t.source===window&&t.data&&t.data.id===Theme.ID){[...document.getElementsByClassName(Bn)].forEach(t=>{const e=t.previousSibling.children.item(0).textContent;t.textContent=e,t.removeAttribute("data-processed")});const t=In[Theme.visualState];mermaid.initialize({theme:t}),mermaid.init(null,`.${Bn}`)}}function $n(t){const e=t.textContent,n=t.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(Bn);const o=document.createTextNode(e);i.appendChild(o),n.after(i)}const Hn=document.getElementById("mode-toggle");const qn=document.getElementById("sidebar"),zn=document.getElementById("sidebar-trigger"),Wn=document.getElementById("mask");class Rn{static toggle(){Vn._=_n(Rn,this,!_n(Rn,this,Vn)._),document.body.toggleAttribute("sidebar-display",_n(Rn,this,Vn)._),qn.classList.toggle("z-2",_n(Rn,this,Vn)._),Wn.classList.toggle("d-none",!_n(Rn,this,Vn)._)}}var Vn={_:!1};const Yn=document.getElementById("sidebar-trigger"),Un=document.getElementById("search-trigger"),Kn=document.getElementById("search-cancel"),Qn=document.querySelectorAll("#main-wrapper>.container>.row"),Gn=document.getElementById("topbar-title"),Xn=document.getElementById("search"),Jn=document.getElementById("search-result-wrapper"),Zn=document.getElementById("search-results"),ti=document.getElementById("search-input"),ei=document.getElementById("search-hints"),ni="d-block",ii="d-none",oi="input-focus",ri="d-flex";class si{static on(){Yn.classList.add(ii),Gn.classList.add(ii),Un.classList.add(ii),Xn.classList.add(ri),Kn.classList.add(ni)}static off(){Kn.classList.remove(ni),Xn.classList.remove(ri),Yn.classList.remove(ii),Gn.classList.remove(ii),Un.classList.remove(ii)}}class ai{static on(){this.resultVisible||(Jn.classList.remove(ii),Qn.forEach(t=>{t.classList.add(ii)}),this.resultVisible=!0)}static off(){this.resultVisible&&(Zn.innerHTML="",ei.classList.contains(ii)&&ei.classList.remove(ii),Jn.classList.add(ii),Qn.forEach(t=>{t.classList.remove(ii)}),ti.textContent="",this.resultVisible=!1)}}function li(){return Kn.classList.contains(ni)}wn(ai,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach(t=>{t.addEventListener("load",hn)}),document.querySelectorAll('article img[loading="lazy"]').forEach(t=>{t.complete&&pn.call(t,fn)});const e=document.querySelectorAll(`article img[${un}="true"]`);e.length&&e.forEach(t=>{mn.call(t)})}(),function(){if(null===document.querySelector('main>article[data-toc="true"]'))return;Nn.matches?Pn.init():jn.init(),document.getElementById("toc-wrapper").classList.remove("invisible"),Nn.onchange=Mn}(),function(){if(null===document.querySelector(".popup"))return;const t=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(vn=bn);let e=GLightbox({selector:`${vn}`});if(t&&Theme.switchable){let t=null;window.addEventListener("message",n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(t,e){vn=vn===gn?bn:gn,null===e&&(e=GLightbox({selector:`${vn}`})),[t,e]=[e,t]}(e,t)})}}(),zn.onclick=Wn.onclick=()=>Rn.toggle(),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)}}),ln(),function(){const t=document.getElementById("copy-link");null!==t&&(t.addEventListener("click",t=>{const e=t.target;rn(e)||navigator.clipboard.writeText(window.location.href).then(()=>{const t=e.getAttribute(nn),n=e.getAttribute(en);e.setAttribute(nn,n),Je.getInstance(e).show(),sn(e),setTimeout(()=>{e.setAttribute(nn,t),an(e)},on)})}),t.addEventListener("mouseleave",t=>{Je.getInstance(t.target).hide()}))}(),Un.addEventListener("click",()=>{si.on(),ai.on(),ti.focus()}),Kn.addEventListener("click",()=>{si.off(),ai.off()}),ti.addEventListener("focus",()=>{Xn.classList.add(oi)}),ti.addEventListener("focusout",()=>{Xn.classList.remove(oi)}),ti.addEventListener("input",()=>{""===ti.value?li()?ei.classList.remove(ii):ai.off():(ai.on(),li()&&ei.classList.add(ii))}),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let t={theme:In[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach($n),mermaid.initialize(t),Theme.switchable&&window.addEventListener("message",Fn)}(),Hn&&Hn.addEventListener("click",()=>{Theme.flip()}),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 Je(t))}(); diff --git a/assets/js/dist/sw.min.js b/assets/js/dist/sw.min.js new file mode 100644 index 00000000000..c09d7d19769 --- /dev/null +++ b/assets/js/dist/sw.min.js @@ -0,0 +1,7 @@ +--- +permalink: /:basename +--- +/*! + * jekyll-theme-chirpy v7.3.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/assets/js/dist/theme.min.js b/assets/js/dist/theme.min.js new file mode 100644 index 00000000000..80c1a23cbe7 --- /dev/null +++ b/assets/js/dist/theme.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.3.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +var Theme=function(){"use strict";function t(t,e,i){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:i;throw new TypeError("Private element is not present on this object")}function e(e,i,s){return s(t(e,i))}var i;class s{static get DARK(){return"dark"}static get LIGHT(){return"light"}static get ID(){return"theme-mode"}static get visualState(){return e(s,this,o)?e(s,this,n):e(s,this,h)?this.DARK:this.LIGHT}static getThemeMapper(t,e){return{[this.LIGHT]:t,[this.DARK]:e}}static init(){this.switchable&&(t(s,this,b)._.addEventListener("change",()=>{const i=e(s,this,n);t(s,this,a).call(this),i!==this.visualState&&t(s,this,l).call(this)}),e(s,this,o)&&(e(s,this,r)?t(s,this,u).call(this):t(s,this,c).call(this)))}static flip(){e(s,this,o)?t(s,this,a).call(this):e(s,this,h)?t(s,this,c).call(this):t(s,this,u).call(this),t(s,this,l).call(this)}}function n(e){return sessionStorage.getItem(t(i,e,g)._)||document.documentElement.getAttribute(t(i,e,v)._)}function r(t){return e(i,t,n)===t.DARK}function o(t){return null!==e(i,t,n)}function h(e){return t(i,e,b)._.matches}function u(){document.documentElement.setAttribute(t(i,this,v)._,this.DARK),sessionStorage.setItem(t(i,this,g)._,this.DARK)}function c(){document.documentElement.setAttribute(t(i,this,v)._,this.LIGHT),sessionStorage.setItem(t(i,this,g)._,this.LIGHT)}function a(){document.documentElement.removeAttribute(t(i,this,v)._),sessionStorage.removeItem(t(i,this,g)._)}function l(){window.postMessage({id:this.ID},"*")}i=s;var m,f,d,g={_:"mode"},v={_:"data-mode"},b={_:window.matchMedia("(prefers-color-scheme: dark)")};return m=s,f="switchable",d=!document.documentElement.hasAttribute(t(i,i,v)._),(f=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var s=i.call(t,e);if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(f))in m?Object.defineProperty(m,f,{value:d,enumerable:!0,configurable:!0,writable:!0}):m[f]=d,s.init(),s}(); diff --git a/images/KakaoTalk_20250805_083557403.jpg b/images/KakaoTalk_20250805_083557403.jpg new file mode 100644 index 00000000000..1e0cc80842f Binary files /dev/null and b/images/KakaoTalk_20250805_083557403.jpg differ diff --git a/template/2025-08-05-test.md b/template/2025-08-05-test.md new file mode 100644 index 00000000000..d2ce262bae5 --- /dev/null +++ b/template/2025-08-05-test.md @@ -0,0 +1,8 @@ +--- +title: TITLE +date: 2025-08-05T09:17:00+09:00 +categories: [TOP_CATEGORY, SUB_CATEGORY] +tags: [TAG] +#image: /images/KakaoTalk_20250805_083557403.jpg +description: 짧은 요약 +--- diff --git a/tools/init.sh b/tools/init.sh deleted file mode 100755 index d710182be4e..00000000000 --- a/tools/init.sh +++ /dev/null @@ -1,131 +0,0 @@ -#!/usr/bin/env bash -# -# Init the environment for new user. - -set -eu - -# CLI Dependencies -CLI=("git" "npm") - -ACTIONS_WORKFLOW=pages-deploy.yml - -RELEASE_HASH=$(git log --grep="chore(release):" -1 --pretty="%H") - -# temporary file suffixes that make `sed -i` compatible with BSD and Linux -TEMP_SUFFIX="to-delete" - -_no_gh=false - -help() { - echo "Usage:" - echo - echo " bash /path/to/init [options]" - echo - echo "Options:" - echo " --no-gh Do not deploy to Github." - echo " -h, --help Print this help information." -} - -# BSD and GNU compatible sed -_sedi() { - regex=$1 - file=$2 - sed -i.$TEMP_SUFFIX -E "$regex" "$file" - rm -f "$file".$TEMP_SUFFIX -} - -_check_cli() { - for i in "${!CLI[@]}"; do - cli="${CLI[$i]}" - if ! command -v "$cli" &>/dev/null; then - echo "Command '$cli' not found! Hint: you should install it." - exit 1 - fi - done -} - -_check_status() { - if [[ -n $(git status . -s) ]]; then - echo "Error: Commit unstaged files first, and then run this tool again." - exit 1 - fi -} - -_check_init() { - if [[ $(git rev-parse HEAD^1) == "$RELEASE_HASH" ]]; then - echo "Already initialized." - exit 0 - fi -} - -check_env() { - _check_cli - _check_status - _check_init -} - -reset_latest() { - git reset --hard "$RELEASE_HASH" - git clean -fd - git submodule update --init --recursive -} - -init_files() { - if $_no_gh; then - rm -rf .github - else - ## Change the files of `.github/` - temp="$(mktemp -d)" - find .github/workflows -type f -name "*$ACTIONS_WORKFLOW*" -exec mv {} "$temp/$ACTIONS_WORKFLOW" \; - rm -rf .github && mkdir -p .github/workflows - mv "$temp/$ACTIONS_WORKFLOW" .github/workflows/"$ACTIONS_WORKFLOW" - rm -rf "$temp" - fi - - # Cleanup image settings in site config - _sedi "s/(^timezone:).*/\1/;s/(^.*cdn:).*/\1/;s/(^avatar:).*/\1/" _config.yml - - # remove the other files - rm -rf tools/init.sh tools/release.sh _posts/* - - # build assets - npm i && npm run build - - # track the CSS/JS output - _sedi "/^_sass\/vendors/d" .gitignore - _sedi "/^assets\/js\/dist/d" .gitignore -} - -commit() { - git add -A - git commit -m "chore: initialize the environment" -q - echo -e "\n> Initialization successful!\n" -} - -main() { - check_env - reset_latest - init_files - commit -} - -while (($#)); do - opt="$1" - case $opt in - --no-gh) - _no_gh=true - shift - ;; - -h | --help) - help - exit 0 - ;; - *) - # unknown option - help - exit 1 - ;; - esac -done - -main diff --git a/tools/release.sh b/tools/release.sh deleted file mode 100755 index 36ca88af6a4..00000000000 --- a/tools/release.sh +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env bash -# -# Requires: Git, NPM and RubyGems - -set -eu - -opt_pre=false # option for bump gem version -opt_pkg=false # option for building gem package - -MAIN_BRANCH="master" -RELEASE_BRANCH="production" - -GEM_SPEC="jekyll-theme-chirpy.gemspec" -NODE_SPEC="package.json" -CHANGELOG="docs/CHANGELOG.md" -CONFIG="_config.yml" - -CSS_DIST="_sass/vendors" -JS_DIST="assets/js/dist" - -FILES=( - "$GEM_SPEC" - "$NODE_SPEC" - "$CHANGELOG" - "$CONFIG" -) - -TOOLS=( - "git" - "npm" - "gem" -) - -help() { - echo -e "A tool to release new version Chirpy gem.\nThis tool will:" - echo " 1. Build a new gem and publish it to RubyGems.org" - echo " 2. Merge the release branch into the default branch" - echo - echo "Usage:" - echo " bash $0 [options]" - echo - echo "Options:" - echo " --prepare Preparation for release" - echo " -p, --package Build a gem package only, for local packaging in case of auto-publishing failure" - echo " -h, --help Display this help message" -} - -_check_cli() { - for i in "${!TOOLS[@]}"; do - cli="${TOOLS[$i]}" - if ! command -v "$cli" &>/dev/null; then - echo "> Command '$cli' not found!" - exit 1 - fi - done -} - -_check_git() { - $opt_pre || ( - # ensure that changes have been committed - if [[ -n $(git status . -s) ]]; then - echo "> Abort: Commit the staged files first, and then run this tool again." - exit 1 - fi - ) - - $opt_pkg || ( - if [[ "$(git branch --show-current)" != "$RELEASE_BRANCH" ]]; then - echo "> Abort: Please run the tool in the '$RELEASE_BRANCH' branch." - exit 1 - fi - ) -} - -_check_src() { - for i in "${!FILES[@]}"; do - _src="${FILES[$i]}" - if [[ ! -f $_src && ! -d $_src ]]; then - echo -e "> Error: Missing file \"$_src\"!\n" - exit 1 - fi - done -} - -init() { - _check_cli - _check_git - _check_src - echo -e "> npm install\n" - npm i -} - -## Bump new version to gem-spec file -_bump_version() { - _version="$(grep '"version":' "$NODE_SPEC" | sed 's/.*: "//;s/".*//')" - sed -i "s/[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+/$_version/" "$GEM_SPEC" - echo "> Bump gem version to $_version" -} - -_improve_changelog() { - # Replace multiple empty lines with a single empty line - sed -i '/^$/N;/^\n$/D' "$CHANGELOG" - # Escape left angle brackets of HTML tag in the changelog as they break the markdown structure. e.g., '
' - sed -i -E 's/\s(<[a-z])/ \\\1/g' "$CHANGELOG" -} - -prepare() { - _bump_version - _improve_changelog -} - -## Build a Gem package -build_gem() { - # Remove unnecessary theme settings - sed -i -E "s/(^timezone:).*/\1/;s/(^cdn:).*/\1/;s/(^avatar:).*/\1/" $CONFIG - rm -f ./*.gem - - npm run build - # add CSS/JS distribution files to gem package - git add "$CSS_DIST" "$JS_DIST" -f - - echo -e "\n> gem build $GEM_SPEC\n" - gem build "$GEM_SPEC" - - echo -e "\n> Resume file changes ...\n" - git reset - git checkout . -} - -# Push the gem to RubyGems.org (using $GEM_HOST_API_KEY) -push_gem() { - gem push ./*.gem -} - -## Merge the release branch into the default branch -merge() { - git fetch origin "$MAIN_BRANCH" - git checkout -b "$MAIN_BRANCH" origin/"$MAIN_BRANCH" - - git merge --no-ff --no-edit "$RELEASE_BRANCH" || ( - git merge --abort - echo -e "\n> Conflict detected. Aborting merge.\n" - exit 0 - ) - - git push origin "$MAIN_BRANCH" -} - -main() { - init - - if $opt_pre; then - prepare - exit 0 - fi - - build_gem - $opt_pkg && exit 0 - push_gem - merge -} - -while (($#)); do - opt="$1" - case $opt in - --prepare) - opt_pre=true - shift - ;; - -p | --package) - opt_pkg=true - shift - ;; - -h | --help) - help - exit 0 - ;; - *) - # unknown option - help - exit 1 - ;; - esac -done - -main