From b1e44d4dfd458a3d793d90a86a5b4de3647ef657 Mon Sep 17 00:00:00 2001 From: Daniel Mazhari-Jensen Date: Mon, 10 Aug 2026 10:35:49 +0200 Subject: [PATCH 1/8] =?UTF-8?q?ci:=20=F0=9F=91=B7=20update-checks-n-typos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pre-commit-config, typos.toml, and check-gh-workflow. --- .config/typos.toml | 8 +++ .github/workflows/checks.yml | 97 ++++++++++++++++++++++++++++++++++++ .pre-commit-config.yaml | 34 ++++++------- .vscode/settings.json | 1 + 4 files changed, 121 insertions(+), 19 deletions(-) create mode 100644 .config/typos.toml create mode 100644 .github/workflows/checks.yml diff --git a/.config/typos.toml b/.config/typos.toml new file mode 100644 index 0000000..8dd4e99 --- /dev/null +++ b/.config/typos.toml @@ -0,0 +1,8 @@ +[files] +extend-exclude = [ + "*.html", + "*.css", + ".quarto/*", + "_site/*", + "*.svg" +] diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 0000000..20be897 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,97 @@ +name: Checks + +on: pull_request + +permissions: read-all + +jobs: + check-template: + runs-on: ubuntu-latest + steps: + # This is a useful security step to check for unexpected outbound calls from the runner, + # which could indicate a compromised token or runner. + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0 + with: + egress-policy: audit + + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Set up uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + enable-cache: true + + - name: Install justfile + run: uv tool install rust-just + + # Set this user so that the checks create Git commits. + - name: Set bot user + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + + # TODO: Confirm name of recipe to check template creation. + - name: Check template creation + run: just test-all + + check-typos: + runs-on: ubuntu-latest + steps: + # This is a useful security step to check for unexpected outbound calls from the runner, + # which could indicate a compromised token or runner. + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0 + with: + egress-policy: audit + + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Spell check repo + uses: crate-ci/typos@cf5f1c29a8ac336af8568821ec41919923b05a83 # v1.45.1 + with: + config: .config/typos.toml + + check-website-build: + runs-on: ubuntu-latest + steps: + # This is a useful security step to check for unexpected outbound calls from the runner, + # which could indicate a compromised token or runner. + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0 + with: + egress-policy: audit + + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Set up Quarto + uses: quarto-dev/quarto-actions/setup@8a96df13519ee81fd526f2dfca5962811136661b # v2.2.0 + + # Check that the website builds, but don't publish it + - name: Render Quarto Project + uses: quarto-dev/quarto-actions/render@8a96df13519ee81fd526f2dfca5962811136661b # v2.2.0 + + # Dependency Review Action + # + # This Action will scan dependency manifest files that change as part of a Pull Request, + # surfacing known-vulnerable versions of the packages declared or updated in the PR. + # Once installed, if the workflow run is marked as required, + # PRs introducing known-vulnerable packages will be blocked from merging. + # + # Source repository: https://github.com/actions/dependency-review-action + check-dependencies: + runs-on: ubuntu-latest + steps: + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0 + with: + egress-policy: audit + + - name: "Checkout Repository" + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: "Dependency Review" + uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 54e2b9f..97085b5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,30 +10,26 @@ repos: hooks: - id: gitleaks - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v6.0.0 - hooks: - - id: trailing-whitespace - - id: end-of-file-fixer - - id: mixed-line-ending - args: [ --fix=lf ] - - id: check-merge-conflict - args: [ --assume-in-merge ] - - - repo: https://github.com/commitizen-tools/commitizen - rev: v4.17.0 - hooks: - - id: commitizen - # Use the mirror since the main `typos` repo has tags for different # sub-packages, which confuses pre-commit when it tries to find the latest # version - repo: https://github.com/adhtruong/mirrors-typos - rev: v1.48.0 + rev: v1.45.1 hooks: - id: typos + args: [--config, .config/typos.toml, --force-exclude] + + - repo: https://github.com/jolars/panache-pre-commit + rev: v2.51.0 + hooks: + - id: panache-format - - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.49 + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 hooks: - - id: rumdl-fmt # Auto-format + - id: trailing-whitespace + - id: end-of-file-fixer + - id: mixed-line-ending + args: [--fix=lf] + - id: check-merge-conflict + args: [--assume-in-merge] diff --git a/.vscode/settings.json b/.vscode/settings.json index 66cf316..5baecbc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -26,6 +26,7 @@ "*.qmd.jinja": "jinja-md" }, "files.insertFinalNewline": true, + "typos.config": ".config/typos.toml", "conventionalCommits.emojiFormat": "emoji", "conventionalCommits.promptScopes": false } From 00ae6ba60b903d9bff97a293789a75e9ebfca124 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 08:37:59 +0000 Subject: [PATCH 2/8] =?UTF-8?q?chore:=20=E2=9C=8F=EF=B8=8F=20automatic=20p?= =?UTF-8?q?re-commit=20hook=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.qmd | 4 +- CHANGELOG.md | 60 +++--- CODE_OF_CONDUCT.md | 35 ++-- CONTRIBUTING.md | 137 +++++++------- README.md | 79 ++++---- README.qmd | 62 +++---- docs/guide/installing.qmd | 53 +++--- docs/guide/next-steps.qmd | 214 ++++++++++------------ docs/guide/updating.qmd | 51 +++--- docs/guide/using.qmd | 48 +++-- docs/includes/_badges.qmd | 16 +- index.qmd | 82 ++++----- template/404.qmd | 4 +- template/CODE_OF_CONDUCT.md | 35 ++-- template/README.qmd | 80 ++++---- template/appendix/for-teachers.qmd | 8 +- template/includes/_badges.qmd | 16 +- template/includes/_star-us.qmd | 9 +- template/includes/_survey.qmd | 3 +- template/overview/is-this-for-you.qmd | 18 +- template/overview/learning-design.qmd | 131 ++++++------- template/overview/schedule.qmd | 38 ++-- template/overview/syllabus.qmd | 9 +- template/pre-workshop/code-of-conduct.qmd | 109 ++++++----- template/pre-workshop/survey.qmd | 19 +- template/sessions/conclusion.qmd | 4 +- template/sessions/introduction.qmd | 4 +- template/sessions/session.qmd | 6 +- 28 files changed, 636 insertions(+), 698 deletions(-) diff --git a/404.qmd b/404.qmd index f28249f..767f5d4 100644 --- a/404.qmd +++ b/404.qmd @@ -2,5 +2,5 @@ title: "The page you are looking for does not exist" --- -This page does not exist, go back to the [homepage](/index.qmd) or check -the URL for typos. +This page does not exist, go back to the [homepage](/index.qmd) or check the URL +for typos. diff --git a/CHANGELOG.md b/CHANGELOG.md index d51dce6..e7e9084 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,25 +1,23 @@ # Changelog -Since we follow -[Conventional Commits](https://decisions.seedcase-project.org/why-conventional-commits/) -we're able to automatically create formal "releases" of the workshop -based on our commit messages. Releases in the context of workshops are -simply snapshots in time of the workshop content. The releases are -published to Zenodo for easier discovery, archival, and citation -purposes. We use +Since we follow [Conventional +Commits](https://decisions.seedcase-project.org/why-conventional-commits/) we're +able to automatically create formal "releases" of the workshop based on our +commit messages. Releases in the context of workshops are simply snapshots in +time of the workshop content. The releases are published to Zenodo for easier +discovery, archival, and citation purposes. We use [Commitizen](https://decisions.seedcase-project.org/why-semantic-release-with-commitizen/) -to automatically create these releases using -[SemVer](https://semverdoc.org) as the version numbering scheme. +to automatically create these releases using [SemVer](https://semverdoc.org) as +the version numbering scheme. -Because releases are created based on commit messages, a new release can -be created quite often---sometimes several times in a day. This also -means that any individual release will not have many changes within it. -Below is a list of the releases we've made so far, along with what was -changed within each release. +Because releases are created based on commit messages, a new release can be +created quite often---sometimes several times in a day. This also means that any +individual release will not have many changes within it. Below is a list of the +releases we've made so far, along with what was changed within each release. -If you attended a workshop or used the workshop material as some point -in time, you can always refer to this changelog page to find out what -has been changed since you last used it. +If you attended a workshop or used the workshop material as some point in time, +you can always refer to this changelog page to find out what has been changed +since you last used it. ## 0.11.0 (2026-06-04) @@ -101,10 +99,8 @@ has been changed since you last used it. - :sparkles: add badges to landing page - :sparkles: standardize table widths of schedule -- :see_no_evil: some `.vdoc.*` type files are created by Quarto, ignore - them -- :sparkles: include hidden contributor list sections in README and - index +- :see_no_evil: some `.vdoc.*` type files are created by Quarto, ignore them +- :sparkles: include hidden contributor list sections in README and index ### Fix @@ -119,8 +115,7 @@ has been changed since you last used it. - :hammer: rename `style` to `format-r` in justfile - :pencil2: use quotes around values in `_quarto.yml` - :recycle: include `@sec-` links to chapters along with a link -- :technologist: simplify pull request template after Markdown formatter - added +- :technologist: simplify pull request template after Markdown formatter added - :wrench: indent by 2 in Markdown files in `.editorconfig` - :recycle: install uv directly, rather than first pipx - :arrow_up: update pre-commit hook versions @@ -182,8 +177,7 @@ has been changed since you last used it. ### Refactor -- :recycle: output `get-contributors.sh` as text, send to file in - justfile +- :recycle: output `get-contributors.sh` as text, send to file in justfile ## 0.4.12 (2025-09-03) @@ -260,8 +254,8 @@ has been changed since you last used it. ### Refactor - :memo: simplify some text of the README -- :recycle: replace ending of `_contributors.yml` with newline for - pre-commit styling +- :recycle: replace ending of `_contributors.yml` with newline for pre-commit + styling - :hammer: exclude justfile when listing TODOs - :hammer: use `quarto update` to match recipe name - :arrow_up: update pre-commit hook versions @@ -368,12 +362,10 @@ has been changed since you last used it. - :recycle: switch to using bash in `check-commits` justfile - :memo: fix link to instructor guide - :fire: don't need the update from template workflow -- :recycle: switch to using `github_user` and `github_repo` for project - naming +- :recycle: switch to using `github_user` and `github_repo` for project naming - :recycle: use lowercase for workshop type naming - :recycle: set Zenodo upload type to `lesson` -- :recycle: moved version information for installing into - `_metadata.yml` +- :recycle: moved version information for installing into `_metadata.yml` - :recycle: match syllabus structure to that done in GitHub Intro - :fire: session isn't always an R workshop, don't need code chunk @@ -405,9 +397,7 @@ has been changed since you last used it. - :truck: converted includes into own pages in template - :recycle: remove social time from schedule - :recycle: include a starting URL for Quarto website in Netlify -- :construction_worker: merge template website build workflow into one - file +- :construction_worker: merge template website build workflow into one file - :recycle: expand on template's CONTRIBUTING doc - :truck: move code of conduct out of includes as own page -- :recycle: use only one `.cz.toml`, but use internal 'if' statements - inside +- :recycle: use only one `.cz.toml`, but use internal 'if' statements inside diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 6f8f13c..22171e4 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,28 +1,25 @@ # Contributor Code of Conduct -As contributors and maintainers of this project, we pledge to respect -all people who contribute through reporting issues, posting suggestions, -updating any material, submitting pull requests, and other activities. +As contributors and maintainers of this project, we pledge to respect all people +who contribute through reporting issues, posting suggestions, updating any +material, submitting pull requests, and other activities. -We are committed to making participation in this project a -harassment-free experience for everyone, regardless of level of -experience, gender, gender identity and expression, sexual orientation, -disability, personal appearance, body size, race, ethnicity, age, or -religion. +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, or religion. -Examples of unacceptable behavior by participants include the use of -sexual language or imagery, derogatory comments or personal attacks, -trolling, public or private harassment, insults, or other unprofessional -conduct. +Examples of unacceptable behavior by participants include the use of sexual +language or imagery, derogatory comments or personal attacks, trolling, public +or private harassment, insults, or other unprofessional conduct. -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct. Project -maintainers who do not follow the Code of Conduct may be removed from -the project team. +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct. Project maintainers who do not follow the +Code of Conduct may be removed from the project team. -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by opening an issue or contacting one or more of the project +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by opening an issue or contacting one or more of the project maintainers. This Code of Conduct is adapted from the Contributor Covenant diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5fba2d6..de37f83 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,109 +2,102 @@ ## :bug: Issues and bugs -The easiest way to contribute is to report issues or bugs that you might -find while using the Template Workshop. You can do this by creating a -[new](https://github.com/rostools/template-workshop/issues/new/) issue -on our GitHub repository. +The easiest way to contribute is to report issues or bugs that you might find +while using the Template Workshop. You can do this by creating a +[new](https://github.com/rostools/template-workshop/issues/new/) issue on our +GitHub repository. ## :pencil2: Adding or modifying content If you would like to contribute content, please check out our -[guide](https://guides.rostools.org/contributing) for more specific -details on how we work and develop. It is a regularly evolving document, -so is at various states of completion. +[guide](https://guides.rostools.org/contributing) for more specific details on +how we work and develop. It is a regularly evolving document, so is at various +states of completion. To contribute to the Template Workshop, you first need to install [uv](https://docs.astral.sh/uv/) and -[justfile](https://just.systems/man/en/packages.html). We use uv and -justfile to manage our project, such as to run checks and test the -template. Both the uv and justfile websites have a more detailed guide -on using uv, but below are some simple instructions to get you started. +[justfile](https://just.systems/man/en/packages.html). We use uv and justfile to +manage our project, such as to run checks and test the template. Both the uv and +justfile websites have a more detailed guide on using uv, but below are some +simple instructions to get you started. -It's easiest to first -[install uv](https://docs.astral.sh/uv/getting-started/installation/) -and then install justfile with uv. Once you've installed uv, install -justfile by running: +It's easiest to first [install +uv](https://docs.astral.sh/uv/getting-started/installation/) and then install +justfile with uv. Once you've installed uv, install justfile by running: -``` bash +```bash uv tool install rust-just ``` -We keep all our development workflows in the `justfile`, so you can -explore it to see what commands are available. To see a list of commands -available, run: +We keep all our development workflows in the `justfile`, so you can explore it +to see what commands are available. To see a list of commands available, run: -``` bash +```bash just ``` -As you contribute, make sure your changes will pass our tests by opening -a terminal so that the working directory is the root of this project +As you contribute, make sure your changes will pass our tests by opening a +terminal so that the working directory is the root of this project (`template-workshop/`) and running: -``` bash +```bash just run-all ``` -When testing the template, Copier can only use content kept in the Git -history. Meaning that if you make changes to the template and try to -test it, it won't be able to test those changes. You have to commit the -changes first in order for Copier to use them. +When testing the template, Copier can only use content kept in the Git history. +Meaning that if you make changes to the template and try to test it, it won't be +able to test those changes. You have to commit the changes first in order for +Copier to use them. -When committing changes, please try to follow -[Conventional Commits](https://decisions.seedcase-project.org/why-conventional-commits/) -as Git messages. Using this convention allows us to be able to -automatically create a release based on the commit message by using +When committing changes, please try to follow [Conventional +Commits](https://decisions.seedcase-project.org/why-conventional-commits/) as +Git messages. Using this convention allows us to be able to automatically create +a release based on the commit message by using [Commitizen](https://decisions.seedcase-project.org/why-semantic-release-with-commitizen/). -If you don't use Conventional Commits when making a commit, we will -revise the pull request title to follow that format, as we use squash -merges when merging pull requests, so all other commits in the pull -request will be squashed into one commit. +If you don't use Conventional Commits when making a commit, we will revise the +pull request title to follow that format, as we use squash merges when merging +pull requests, so all other commits in the pull request will be squashed into +one commit. ## :file_folder: Explanation of files and folders -This list describes the default files that are included in the template -as well as explains a bit more about them and what they are used for. - -- `.copier-answers.yml`: Contains the answers you gave when copying the - project from the template. - **You should not modify this file directly.** -- `.github/`: Contains GitHub-specific files, such as the workflow to - build the website from the Markdown files. -- `_quarto.yml`: Quarto configuration file for the website, including - settings for the website, such as the theme, navigation, and other - options. -- `.gitignore`: This ignore file tells Git which files to not track. - Unless you know what you are doing, it's best to not touch this file. -- `.pre-commit-config.yaml`: [Pre-commit](https://pre-commit.com/) - configuration file for managing and running checks before each commit. -- `.typos.toml`: [typos](https://github.com/crate-ci/typos) spell - checker configuration file. -- `CITATION.cff`: Structured citation metadata for your project when - archived on [Zenodo](https://zenodo.org/) and used by GitHub to - display the citation information on the repository page. This is used - to add the metadata to Zenodo when a GitHub release has been uploaded - to Zenodo. -- `justfile`: [`just`](https://just.systems/man/en/) configuration file - for scripting project tasks. +This list describes the default files that are included in the template as well +as explains a bit more about them and what they are used for. + +- `.copier-answers.yml`: Contains the answers you gave when copying the project + from the template. **You should not modify this file directly.** +- `.github/`: Contains GitHub-specific files, such as the workflow to build the + website from the Markdown files. +- `_quarto.yml`: Quarto configuration file for the website, including settings + for the website, such as the theme, navigation, and other options. +- `.gitignore`: This ignore file tells Git which files to not track. Unless you + know what you are doing, it's best to not touch this file. +- `.pre-commit-config.yaml`: [Pre-commit](https://pre-commit.com/) configuration + file for managing and running checks before each commit. +- `.typos.toml`: [typos](https://github.com/crate-ci/typos) spell checker + configuration file. +- `CITATION.cff`: Structured citation metadata for your project when archived on + [Zenodo](https://zenodo.org/) and used by GitHub to display the citation + information on the repository page. This is used to add the metadata to Zenodo + when a GitHub release has been uploaded to Zenodo. +- `justfile`: [`just`](https://just.systems/man/en/) configuration file for + scripting project tasks. - `.editorconfig`: Editor configuration file for - [EditorConfig](https://editorconfig.org/) to maintain consistent - coding styles across different editors and IDEs. + [EditorConfig](https://editorconfig.org/) to maintain consistent coding styles + across different editors and IDEs. - `CHANGELOG.md`: Changelog file for tracking changes in the project. - `CONTRIBUTING.md`: Guidelines for contributing to the project. -- `.github/`: Contains GitHub-specific files, such as issue and pull - request templates, workflows, +- `.github/`: Contains GitHub-specific files, such as issue and pull request + templates, workflows, [dependabot](https://docs.github.com/en/code-security/tutorials/secure-your-dependencies/dependabot-quickstart-guide) configuration, pull request templates, and a [CODEOWNERS](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners) file. -- `_metadata.yml`: Quarto metadata file for the website, including - information about the project, such as the titles and GitHub names. -- `_quarto.yml`: Quarto configuration file for the website, including - settings for the website, such as the theme, navigation, and other - options. -- `.rumdl.toml`: [rumdl](https://rumdl.dev) configuration file for - formatting Markdown files in the project. -- `.cz.toml`: - [Commitizen](https://commitizen-tools.github.io/commitizen/) +- `_metadata.yml`: Quarto metadata file for the website, including information + about the project, such as the titles and GitHub names. +- `_quarto.yml`: Quarto configuration file for the website, including settings + for the website, such as the theme, navigation, and other options. +- `.rumdl.toml`: [rumdl](https://rumdl.dev) configuration file for formatting + Markdown files in the project. +- `.cz.toml`: [Commitizen](https://commitizen-tools.github.io/commitizen/) configuration file for managing versions and changelogs. diff --git a/README.md b/README.md index 38bfc2b..1986fad 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ - - # Template Workshop: An opinionated setup for making workshops as open educational resources [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.16979956.svg)](https://doi.org/10.5281/zenodo.16979956) @@ -15,25 +13,23 @@ website](https://github.com/rostools/template-workshop/actions/workflows/build-w [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/rostools/template-workshop/main.svg)](https://results.pre-commit.ci/latest/github/rostools/template-workshop/main) [![lifecycle](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental) -[![Project Status: Active – The project has reached a stable, usable -state and is being actively +[![Project Status: Active -- The project has reached a stable, usable state and +is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) -This repository contains a -[Copier](https://copier.readthedocs.io/en/stable/) template for setting -up a new repository for a workshop. We made template-workshop because we -manage and develop several workshops in rostools, and this template is -designed to make it easier to create, develop, and maintain those -workshops. - -The template helps set up and maintain workshop repositories, which -contain files to create a website for a workshop and that might also be -used as an open educational resource (OVER). Use this template to quickly -get started with a new workshop with all the necessary files and -configurations in place for a smoother “developer experience” and to -have [continuous -delivery/deployment](https://en.wikipedia.org/wiki/Continuous_delivery) -of the workshop website and archival to Zenodo. +This repository contains a [Copier](https://copier.readthedocs.io/en/stable/) +template for setting up a new repository for a workshop. We made +template-workshop because we manage and develop several workshops in rostools, +and this template is designed to make it easier to create, develop, and maintain +those workshops. + +The template helps set up and maintain workshop repositories, which contain +files to create a website for a workshop and that might also be used as an open +educational resource (OVER). Use this template to quickly get started with a new +workshop with all the necessary files and configurations in place for a smoother +"developer experience" and to have [continuous +delivery/deployment](https://en.wikipedia.org/wiki/Continuous_delivery) of the +workshop website and archival to Zenodo. Check out our [website](https://template-workshop.rostools.org) for more information, such as the features it provides and a @@ -43,18 +39,17 @@ template. For a list of changes, see our [changelog](CHANGELOG.md) page. > [!TIP] > > This template repository was generated from the -> [t-squared](https://github.com/seedcase-project/t-squared) Seedcase -> template :tada: +> [t-squared](https://github.com/seedcase-project/t-squared) Seedcase template +> :tada: ## Contributing -Check out our [contributing page](CONTRIBUTING.md) for information on -how to contribute to the project, including how to set up your -development environment. +Check out our [contributing page](CONTRIBUTING.md) for information on how to +contribute to the project, including how to set up your development environment. Please note that this project is released with a [Contributor Code of -Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree -to abide by its terms. +Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to +abide by its terms. ### Contributors @@ -70,22 +65,24 @@ This project is licensed under the [MIT License](LICENSE.md). ## Citing -This project is part of rostools, which is an organisation that hosts -and runs workshops (also as open educational resources) that are related -in some way to doing reproducible and open science. If you use this -template in your work, please cite it as follows: +This project is part of rostools, which is an organisation that hosts and runs +workshops (also as open educational resources) that are related in some way to +doing reproducible and open science. If you use this template in your work, +please cite it as follows: -Johnston L.W., Brødbæk S.K. (2025). Template Workshop: An opinionated -setup for making workshops as open educational resources DOI: -10.5281/zenodo.16979956 URL: https://template-workshop.rostools.org +Johnston L.W., Brødbæk S.K. (2025). Template Workshop: An opinionated setup for +making workshops as open educational resources DOI: 10.5281/zenodo.16979956 URL: +https://template-workshop.rostools.org Or as a BibTeX entry: - @misc{YourReferenceHere, - author = {Johnston, Luke William and Brødbæk, Signe Kirk}, - doi = {10.5281/zenodo.16979956}, - month = {8}, - title = {Template Workshop: An opinionated setup for making workshops as open educational resources}, - url = {https://template-workshop.rostools.org}, - year = {2025} - } +``` +@misc{YourReferenceHere, +author = {Johnston, Luke William and Brødbæk, Signe Kirk}, +doi = {10.5281/zenodo.16979956}, +month = {8}, +title = {Template Workshop: An opinionated setup for making workshops as open educational resources}, +url = {https://template-workshop.rostools.org}, +year = {2025} +} +``` diff --git a/README.qmd b/README.qmd index 8f4eefa..b3c0dd1 100644 --- a/README.qmd +++ b/README.qmd @@ -11,42 +11,39 @@ metadata-files: {{< include /docs/includes/_badges.qmd >}} -This repository contains a -[Copier](https://copier.readthedocs.io/en/stable/) template for setting -up a new repository for a workshop. We made {{< meta gh.repo >}} because -we manage and develop several workshops in rostools, and this template -is designed to make it easier to create, develop, and maintain those -workshops. - -The template helps set up and maintain workshop repositories, which -contain files to create a website for a workshop and that might also be -used as an open educational resource (OVER). Use this template to quickly -get started with a new workshop with all the necessary files and -configurations in place for a smoother "developer experience" and to -have -[continuous delivery/deployment](https://en.wikipedia.org/wiki/Continuous_delivery) -of the workshop website and archival to Zenodo. - -Check out our [website]({{< meta links.site >}}) for more information, -such as the features it provides and a -[guide]({{< meta links.site >}}/docs/guide) to using the template. For a -list of changes, see our [changelog](CHANGELOG.md) page. +This repository contains a [Copier](https://copier.readthedocs.io/en/stable/) +template for setting up a new repository for a workshop. We made +{{< meta gh.repo >}} because we manage and develop several workshops in +rostools, and this template is designed to make it easier to create, develop, +and maintain those workshops. + +The template helps set up and maintain workshop repositories, which contain +files to create a website for a workshop and that might also be used as an open +educational resource (OVER). Use this template to quickly get started with a new +workshop with all the necessary files and configurations in place for a smoother +"developer experience" and to have [continuous +delivery/deployment](https://en.wikipedia.org/wiki/Continuous_delivery) of the +workshop website and archival to Zenodo. + +Check out our [website]({{< meta links.site >}}) for more information, such as +the features it provides and a [guide]({{< meta links.site >}}/docs/guide) to +using the template. For a list of changes, see our [changelog](CHANGELOG.md) +page. ::: callout-tip This template repository was generated from the -[t-squared](https://github.com/seedcase-project/t-squared) Seedcase -template :tada: +[t-squared](https://github.com/seedcase-project/t-squared) Seedcase template +:tada: ::: ## Contributing -Check out our [contributing page](CONTRIBUTING.md) for information on -how to contribute to the project, including how to set up your -development environment. +Check out our [contributing page](CONTRIBUTING.md) for information on how to +contribute to the project, including how to set up your development environment. -Please note that this project is released with a -[Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in -this project you agree to abide by its terms. +Please note that this project is released with a [Contributor Code of +Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to +abide by its terms. ### Contributors @@ -58,13 +55,14 @@ This project is licensed under the [MIT License](LICENSE.md). ## Citing -This project is part of rostools, which is an organisation that hosts -and runs workshops (also as open educational resources) that are related -in some way to doing reproducible and open science. If you use this -template in your work, please cite it as follows: +This project is part of rostools, which is an organisation that hosts and runs +workshops (also as open educational resources) that are related in some way to +doing reproducible and open science. If you use this template in your work, +please cite it as follows: ```{python} #| output: asis + !uvx --quiet cffconvert --format apalike ``` diff --git a/docs/guide/installing.qmd b/docs/guide/installing.qmd index 700836c..b2dce21 100644 --- a/docs/guide/installing.qmd +++ b/docs/guide/installing.qmd @@ -6,41 +6,38 @@ description: | order: 1 --- -There are a few programs that are required to use this template to -create a workshop: +There are a few programs that are required to use this template to create a +workshop: -- [uv](https://docs.astral.sh/uv/): A tool for managing Python - environments and running commands. -- [Python](https://www.python.org/): Required by Copier, the template - tool. -- [Copier](https://copier.readthedocs.io/en/stable/): A template tool - for making new workshops in a standardised and structured way. -- [just](https://just.systems/man/en/): A build and development - management tool that helps with running common build and check tasks. +- [uv](https://docs.astral.sh/uv/): A tool for managing Python environments and + running commands. +- [Python](https://www.python.org/): Required by Copier, the template tool. +- [Copier](https://copier.readthedocs.io/en/stable/): A template tool for making + new workshops in a standardised and structured way. +- [just](https://just.systems/man/en/): A build and development management tool + that helps with running common build and check tasks. You can use uv to install these required programs, so -[install](https://docs.astral.sh/uv/getting-started/installation/) that -first. After you've installed uv, install the other programs using: +[install](https://docs.astral.sh/uv/getting-started/installation/) that first. +After you've installed uv, install the other programs using: -```{.bash filename="Terminal"} +```bash {filename="Terminal"} uv tool install copier rust-just ``` uv will also install Python for you when you install these tools. -There are some optional, though **strongly recommended**, programs to -install and use in any workshop created with this template: +There are some optional, though **strongly recommended**, programs to install +and use in any workshop created with this template: -- [Git](https://git-scm.com/): For version control and setting up Git to - track the newly created workshop. -- [Lychee](https://lychee.cli.rs/guides/getting-started/): A link - checker that we include in the `justfile` for checking for broken - links in the files. -- [Quarto](https://quarto.org/): A scientific and technical publishing - system built on Pandoc. The website built with this template is - created with Quarto, and the workshop created from this template is - also set up to use Quarto too. -- [gh cli](https://cli.github.com/): For managing GitHub repositories - and settings from the command line. There are some post-creation steps - we've included that use gh to simplify setting up a GitHub repository - for the workshop. +- [Git](https://git-scm.com/): For version control and setting up Git to track + the newly created workshop. +- [Lychee](https://lychee.cli.rs/guides/getting-started/): A link checker that + we include in the `justfile` for checking for broken links in the files. +- [Quarto](https://quarto.org/): A scientific and technical publishing system + built on Pandoc. The website built with this template is created with Quarto, + and the workshop created from this template is also set up to use Quarto too. +- [gh cli](https://cli.github.com/): For managing GitHub repositories and + settings from the command line. There are some post-creation steps we've + included that use gh to simplify setting up a GitHub repository for the + workshop. diff --git a/docs/guide/next-steps.qmd b/docs/guide/next-steps.qmd index f0df3dc..12187c3 100644 --- a/docs/guide/next-steps.qmd +++ b/docs/guide/next-steps.qmd @@ -5,65 +5,62 @@ description: | order: 4 --- -While most of the post-applying steps are listed in the created -`TODO.md` file within the workshop, this documents some more details for -these steps. Use this guide alongside the `TODO.md` to complete those -tasks. For example, one of the first tasks is to start having Git track -the workshop with `git init`. +While most of the post-applying steps are listed in the created `TODO.md` file +within the workshop, this documents some more details for these steps. Use this +guide alongside the `TODO.md` to complete those tasks. For example, one of the +first tasks is to start having Git track the workshop with `git init`. ## Setting up pre-commit hooks -[Pre-commit hooks](https://pre-commit.com/) are scripts that run when -committing changes to a Git repository. They are incredibly useful for -enforcing coding standards and catching errors early. The `justfile` -contains a `install-precommit` recipe that sets up the pre-commit hooks -for your workshop. Run it by opening a terminal within the workshop -directory and running the following command: +[Pre-commit hooks](https://pre-commit.com/) are scripts that run when committing +changes to a Git repository. They are incredibly useful for enforcing coding +standards and catching errors early. The `justfile` contains a +`install-precommit` recipe that sets up the pre-commit hooks for your workshop. +Run it by opening a terminal within the workshop directory and running the +following command: -```{.bash filename="Terminal"} +```bash {filename="Terminal"} just install-precommit ``` -This sets up the pre-commit hooks to run standard checks on your -repository whenever you commit files to the history. Using pre-commit -hooks as part of your workflow is even better if you connect the -continuous integration service to your repository. Go to the -[pre-commit.ci](https://pre-commit.ci/) website and follow the -instructions there to connect your repository to the service. This will -run the pre-commit hooks on every commit you push to the repository, -including pull requests, which will ensure that the code is checked for -basic issues. It will also keep the pre-commit hooks updated by creating -a pull request whenever newer versions of the hooks are available. +This sets up the pre-commit hooks to run standard checks on your repository +whenever you commit files to the history. Using pre-commit hooks as part of your +workflow is even better if you connect the continuous integration service to +your repository. Go to the [pre-commit.ci](https://pre-commit.ci/) website and +follow the instructions there to connect your repository to the service. This +will run the pre-commit hooks on every commit you push to the repository, +including pull requests, which will ensure that the code is checked for basic +issues. It will also keep the pre-commit hooks updated by creating a pull +request whenever newer versions of the hooks are available. ## Adding the Quarto theme ::: callout-warning -This step is only necessary if you are using this template for a -repository that is part of rostools. If you are using this template for -a different workshop, you can skip this step. If you have your own -Quarto theme that you want to use, you can use this step as a general -guide on how to add a Quarto theme to your workshop. +This step is only necessary if you are using this template for a repository that +is part of rostools. If you are using this template for a different workshop, +you can skip this step. If you have your own Quarto theme that you want to use, +you can use this step as a general guide on how to add a Quarto theme to your +workshop. ::: -For rostools repositories, we have a custom Quarto extension that has -our theme called `rostools-theme`. The `justfile` has a recipe called -`update-quarto-theme` that adds this theme to the workshop. Run it by -opening a terminal within the workshop directory and running the -following command: +For rostools repositories, we have a custom Quarto extension that has our theme +called `rostools-theme`. The `justfile` has a recipe called +`update-quarto-theme` that adds this theme to the workshop. Run it by opening a +terminal within the workshop directory and running the following command: -```{.bash filename="Terminal"} +```bash {filename="Terminal"} just update-quarto-theme ``` -This adds the `rostools-theme` Quarto theme to the website, which -provides a consistent look and feel across all rostools websites. It's -called `update-quarto-theme` here since you can use this command to keep -the theme updated. +This adds the `rostools-theme` Quarto theme to the website, which provides a +consistent look and feel across all rostools websites. It's called +`update-quarto-theme` here since you can use this command to keep the theme +updated. -Then to use the theme, you need to update the `_quarto.yml` file by -adding the following lines to the `project` and `format` sections: +Then to use the theme, you need to update the `_quarto.yml` file by adding the +following lines to the `project` and `format` sections: -``` yaml +```yaml project: type: rostools-theme @@ -75,111 +72,102 @@ format: rostools-theme-html ## Setting up a GitHub repository ::: callout-warning -These series of steps are only necessary if you are using this template -for a repository that is part of rostools. If you want a quick way of -putting your workshop on GitHub, you can use the `gh` command line tool -to upload the workshop to GitHub: +These series of steps are only necessary if you are using this template for a +repository that is part of rostools. If you want a quick way of putting your +workshop on GitHub, you can use the `gh` command line tool to upload the +workshop to GitHub: -```{.bash filename="Terminal"} +```bash {filename="Terminal"} gh repo create {{ github_repo_spec }} --source=. --public` ``` ::: -We have a custom command line tool that we developed to help manage -GitHub repositories for rostools repositories. While it's useful for us, -it isn't designed or build in a way that makes it easy for others to -use. +We have a custom command line tool that we developed to help manage GitHub +repositories for rostools repositories. While it's useful for us, it isn't +designed or build in a way that makes it easy for others to use. -For setting up a GitHub repository for the created workshop that will be -part of rostools, you'll need to install the Seedcase Project's (a -"sibling" organisation) internal tool -[`spaid`](https://github.com/seedcase-project/spaid) and use the -following commands to run the next setup steps: +For setting up a GitHub repository for the created workshop that will be part of +rostools, you'll need to install the Seedcase Project's (a "sibling" +organisation) internal tool [`spaid`](https://github.com/seedcase-project/spaid) +and use the following commands to run the next setup steps: -```{.bash filename="Terminal"} +```bash {filename="Terminal"} spaid_gh_create_repo_from_local -h spaid_gh_set_repo_settings -h spaid_gh_ruleset_basic_protect_main -h spaid_gh_ruleset_require_pr -h ``` -Some configuration is needed after copying this template to a new -repository, including configuration external to the repository. Some -GitHub workflows require installing GitHub Apps, for greater security -purposes and easier administration when managing multiple repositories. -The -[security section](https://guidebook.seedcase-project.org/operations/security#using-github-apps-to-generate-tokens) -in our [Guidebook](https://guidebook.seedcase-project.org/) provides -some instructions on how to set up GitHub Apps, secrets, and variables. -Ideally the secrets and variables should be set up in the organization -settings. The specific workflows in this template that require this -additional setup are: +Some configuration is needed after copying this template to a new repository, +including configuration external to the repository. Some GitHub workflows +require installing GitHub Apps, for greater security purposes and easier +administration when managing multiple repositories. The [security +section](https://guidebook.seedcase-project.org/operations/security#using-github-apps-to-generate-tokens) +in our [Guidebook](https://guidebook.seedcase-project.org/) provides some +instructions on how to set up GitHub Apps, secrets, and variables. Ideally the +secrets and variables should be set up in the organization settings. The +specific workflows in this template that require this additional setup are: - The workflow `.github/workflows/release.yml` requires the - [auto-release-token](https://github.com/apps/auto-release-token) - GitHub App, which is specific to the Seedcase Project but usable - within rostools, as well as a creating a GitHub secret called - `UPDATE_VERSION_TOKEN` and a variable called `UPDATE_VERSION_APP_ID` - that has the App ID. + [auto-release-token](https://github.com/apps/auto-release-token) GitHub App, + which is specific to the Seedcase Project but usable within rostools, as well + as a creating a GitHub secret called `UPDATE_VERSION_TOKEN` and a variable + called `UPDATE_VERSION_APP_ID` that has the App ID. - The workflow `.github/workflows/add-to-project.yml` requires the - [add-to-board-token](https://github.com/apps/add-to-board-token) - GitHub App (another Seedcase app), along with the `ADD_TO_BOARD_TOKEN` - secret and the `ADD_TO_BOARD_APP_ID` variable of the GitHub App's ID. + [add-to-board-token](https://github.com/apps/add-to-board-token) GitHub App + (another Seedcase app), along with the `ADD_TO_BOARD_TOKEN` secret and the + `ADD_TO_BOARD_APP_ID` variable of the GitHub App's ID. ## Connecting to hosting services If you use this template to make a website hosted on -[Netlify](https://www.netlify.com/), you need to connect the GitHub -repository to Netlify. The Quarto documentation has an -[excellent guide](https://quarto.org/docs/publishing/netlify.html) on -how to do this. It includes configuring Netlify to host the website and -adding the +[Netlify](https://www.netlify.com/), you need to connect the GitHub repository +to Netlify. The Quarto documentation has an [excellent +guide](https://quarto.org/docs/publishing/netlify.html) on how to do this. It +includes configuring Netlify to host the website and adding the [`NETLIFY_AUTH_TOKEN`](https://quarto.org/docs/publishing/netlify.html#netlify-credentials) secret to the GitHub repository (or ideally at the organization level). -For hosting on [GitHub Pages](https://pages.github.com/), it's a bit -easier to set up than Netlify. The Quarto documentation again has a -[guide](https://quarto.org/docs/publishing/github-pages.html) on how to -do this. Before you can host on GitHub Pages, you need to use Quarto to -set things up for you, by running the following command: +For hosting on [GitHub Pages](https://pages.github.com/), it's a bit easier to +set up than Netlify. The Quarto documentation again has a +[guide](https://quarto.org/docs/publishing/github-pages.html) on how to do this. +Before you can host on GitHub Pages, you need to use Quarto to set things up for +you, by running the following command: -```{.bash filename="Terminal"} +```bash {filename="Terminal"} quarto publish github-pages ``` ## Auto-releasing to Zenodo ::: callout-warning -This step is only necessary if you are using this template for a -repository that is part of rostools. If you are using this template for -a different workshop, you can skip this step. If you want to set up -auto-releasing to Zenodo for a different workshop, you can use this -section to guide you to setting it up for your workshop. +This step is only necessary if you are using this template for a repository that +is part of rostools. If you are using this template for a different workshop, +you can skip this step. If you want to set up auto-releasing to Zenodo for a +different workshop, you can use this section to guide you to setting it up for +your workshop. ::: -If you create a release on GitHub, either manually or through a GitHub -workflow, you can have that release automatically create a record on -Zenodo, which is a service that allows you to archive workshops and -create a DOI for it. - -GitHub and Zenodo have an integration that, when set up, will -automatically create a -[Zenodo record](https://help.zenodo.org/docs/deposit/about-records/) -from a -[GitHub release](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases). -This is useful if you want to create a DOI for your workshop, which will -allow you or others to cite it in their work as well as provide more -exposure for your workshop. Connecting GitHub to Zenodo is very easy, -check out Zenodo's -[guide](https://help.zenodo.org/docs/github/archive-software/github-upload/) -on it. +If you create a release on GitHub, either manually or through a GitHub workflow, +you can have that release automatically create a record on Zenodo, which is a +service that allows you to archive workshops and create a DOI for it. + +GitHub and Zenodo have an integration that, when set up, will automatically +create a [Zenodo record](https://help.zenodo.org/docs/deposit/about-records/) +from a [GitHub +release](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases). +This is useful if you want to create a DOI for your workshop, which will allow +you or others to cite it in their work as well as provide more exposure for your +workshop. Connecting GitHub to Zenodo is very easy, check out Zenodo's +[guide](https://help.zenodo.org/docs/github/archive-software/github-upload/) on +it. ## Setting up GoatCounter -s If you want to use GoatCounter for website visitor tracking, you need -to create a GoatCounter account and set up a new site for your website. -Adding a new site is very easy. Go into the "Settings" after logging -into your account. Under "Sites", click "Add new site" and fill in the -form with your website's unique name. You can use the auto-filled name -in the `includes/site-counter.html` file, which has the format of -"orgname-reponame" or modify your own. +s If you want to use GoatCounter for website visitor tracking, you need to +create a GoatCounter account and set up a new site for your website. Adding a +new site is very easy. Go into the "Settings" after logging into your account. +Under "Sites", click "Add new site" and fill in the form with your website's +unique name. You can use the auto-filled name in the +`includes/site-counter.html` file, which has the format of "orgname-reponame" or +modify your own. diff --git a/docs/guide/updating.qmd b/docs/guide/updating.qmd index 19993ba..35b3161 100644 --- a/docs/guide/updating.qmd +++ b/docs/guide/updating.qmd @@ -6,39 +6,36 @@ description: | order: 3 --- -One of the biggest strengths of Copier is that it allows you to easily -update your workshop with any changes that have been made to the -template since you first copied it. There are two ways to update (or -sync) an existing workshop with the latest changes from the template: -`update` and `recopy`. +One of the biggest strengths of Copier is that it allows you to easily update +your workshop with any changes that have been made to the template since you +first copied it. There are two ways to update (or sync) an existing workshop +with the latest changes from the template: `update` and `recopy`. -- Use `update` to apply template updates to your workshop without - overwriting local changes. `update` will compare the version of the - template you used when you first copied the template with the current - version of the template, and then apply the changes that are - different. This also means it won't overwrite any changes you made to - files in your current workshop, for example, if you deleted a file - that was in the template, it won't be copied back. +- Use `update` to apply template updates to your workshop without overwriting + local changes. `update` will compare the version of the template you used when + you first copied the template with the current version of the template, and + then apply the changes that are different. This also means it won't overwrite + any changes you made to files in your current workshop, for example, if you + deleted a file that was in the template, it won't be copied back. -- Use `recopy` if you want to reapply the template from scratch, which - will overwrite any changes you made to the files that were copied from - the template. This is useful if you want to reset the workshop to the - state of the template. For example, if you deleted a file but want it - back from the template or are simply curious to see if there are any - new changes that you might want to use. +- Use `recopy` if you want to reapply the template from scratch, which will + overwrite any changes you made to the files that were copied from the + template. This is useful if you want to reset the workshop to the state of the + template. For example, if you deleted a file but want it back from the + template or are simply curious to see if there are any new changes that you + might want to use. -In both cases, the commands are very similar and also use many of the -same options as the `copy` command. If you want to use the same answers -as given when you first copied the template, you can use the -`--defaults` option. Then it will only prompt you for the questions that -have changed since the last time you copied the template. +In both cases, the commands are very similar and also use many of the same +options as the `copy` command. If you want to use the same answers as given when +you first copied the template, you can use the `--defaults` option. Then it will +only prompt you for the questions that have changed since the last time you +copied the template. -```{.bash filename="Terminal"} +```bash {filename="Terminal"} uvx copier update --defaults # Or uvx copier recopy --defaults ``` -As with the `copy` command, the workshop needs to be tracked by Git and -must be in a clean state (no changes) for the `update` and `recopy` -commands to work. +As with the `copy` command, the workshop needs to be tracked by Git and must be +in a clean state (no changes) for the `update` and `recopy` commands to work. diff --git a/docs/guide/using.qmd b/docs/guide/using.qmd index 816c78e..f4c2d58 100644 --- a/docs/guide/using.qmd +++ b/docs/guide/using.qmd @@ -6,46 +6,44 @@ description: | order: 2 --- -This guide walks through how to use this template to create a new -workshop or apply it to an existing workshop. +This guide walks through how to use this template to create a new workshop or +apply it to an existing workshop. ## Creating a new workshop -You can use this template to create a new workshop with a standard set -of files and folders, as well as all the features and configurations to -make it easier to build your workshop smoothly and effectively. First, -open a terminal and run the following command: +You can use this template to create a new workshop with a standard set of files +and folders, as well as all the features and configurations to make it easier to +build your workshop smoothly and effectively. First, open a terminal and run the +following command: -```{.bash filename="Terminal"} +```bash {filename="Terminal"} uvx copier copy gh:rostools/template-workshop path/to/WORKSHOP-NAME ``` The `copy` command uses the template on GitHub (`gh:`) at the -`rostools/template-workshop` location. The `path/to/` is the location -where you'd like the new workshop to be created and `WORKSHOP-NAME` is -the name you want to give for the new workshop's directory and (ideally) -the GitHub repository for the workshop. The name should be something -short and meaningful, ideally lowercase, with `-` instead of spaces, and -no special characters. +`rostools/template-workshop` location. The `path/to/` is the location where +you'd like the new workshop to be created and `WORKSHOP-NAME` is the name you +want to give for the new workshop's directory and (ideally) the GitHub +repository for the workshop. The name should be something short and meaningful, +ideally lowercase, with `-` instead of spaces, and no special characters. ## Applying to an existing workshop -If you want to use this template on an existing workshop, you can use -the `copy` command of `copier` just like above to apply the template to -the existing workshop. This will add all the template's files and -configurations to the existing workshop. +If you want to use this template on an existing workshop, you can use the `copy` +command of `copier` just like above to apply the template to the existing +workshop. This will add all the template's files and configurations to the +existing workshop. -```{.bash filename="Terminal"} +```bash {filename="Terminal"} uvx copier copy gh:rostools/template-workshop path/to/EXISTING-WORKSHOP ``` -See the comment above in the "Creating a new workshop" section about the -naming of the existing workshop directory. It will go through a series -of prompts, as in the case of creating a new workshop, including asking -if you want to overwrite existing files. +See the comment above in the "Creating a new workshop" section about the naming +of the existing workshop directory. It will go through a series of prompts, as +in the case of creating a new workshop, including asking if you want to +overwrite existing files. ::: callout-note -To use the `copy` command, the existing workshop needs to be tracked by -Git and in a clean state (no changes have been made in the working -directory). +To use the `copy` command, the existing workshop needs to be tracked by Git and +in a clean state (no changes have been made in the working directory). ::: diff --git a/docs/includes/_badges.qmd b/docs/includes/_badges.qmd index 3aad20f..bfcaffe 100644 --- a/docs/includes/_badges.qmd +++ b/docs/includes/_badges.qmd @@ -1,10 +1,16 @@ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.16979956.svg)](https://doi.org/10.5281/zenodo.16979956) [![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-teal.json?raw=true.svg)](https://github.com/copier-org/copier) -[![GitHub License](https://img.shields.io/github/license/{{< meta gh.org >}}/{{< meta gh.repo >}}.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/blob/main/LICENSE.md) -[![GitHub Release](https://img.shields.io/github/v/release/{{< meta gh.org >}}/{{< meta gh.repo >}}.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/releases/latest) +[![GitHub +License](https://img.shields.io/github/license/{{< meta gh.org >}}/{{< meta gh.repo >}}.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/blob/main/LICENSE.md) +[![GitHub +Release](https://img.shields.io/github/v/release/{{< meta gh.org >}}/{{< meta gh.repo >}}.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/releases/latest) [![Test](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/test.yml/badge.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/test.yml) -[![Build website](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/build-website.yml/badge.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/build-website.yml) +[![Build +website](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/build-website.yml/badge.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/build-website.yml) [![CodeQL](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/github-code-scanning/codeql) -[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/{{< meta gh.org >}}/{{< meta gh.repo >}}/main.svg)](https://results.pre-commit.ci/latest/github/{{< meta gh.org >}}/{{< meta gh.repo >}}/main) +[![pre-commit.ci +status](https://results.pre-commit.ci/badge/github/{{< meta gh.org >}}/{{< meta gh.repo >}}/main.svg)](https://results.pre-commit.ci/latest/github/{{< meta gh.org >}}/{{< meta gh.repo >}}/main) [![lifecycle](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental) -[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) +[![Project Status: Active -- The project has reached a stable, usable state and +is being actively +developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) diff --git a/index.qmd b/index.qmd index ad8b07f..2d75119 100644 --- a/index.qmd +++ b/index.qmd @@ -2,34 +2,33 @@ {{< include /docs/includes/_badges.qmd >}} -This is a template for creating a new workshop with the intent of making -it an open educational resource (OVER). Use this template to quickly get -started with a new workshop with all the necessary files and -configurations in place, including for developing the workshop. +This is a template for creating a new workshop with the intent of making it an +open educational resource (OVER). Use this template to quickly get started with +a new workshop with all the necessary files and configurations in place, +including for developing the workshop. ## Features -There are four sets of features included in this template, those for -general workshops, those for R workshops, and those for general or R -workshops developed within rostools. These are the features for the -general workshops: +There are four sets of features included in this template, those for general +workshops, those for R workshops, and those for general or R workshops developed +within rostools. These are the features for the general workshops: -- Uses [Quarto](https://quarto.org/) for the workshop content, allowing - for easy integration of code, text, and figures. -- Includes a [justfile](https://just.systems/man/en/) for managing - common tasks like building the workshop and running checks. -- Uses [typos](https://github.com/crate-ci/typos) to check for common - spelling mistakes. -- Uses a [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - license for the workshop content. -- Run checks with with [pre-commit](https://pre-commit.com/) hooks to - ensure consistent formatting and style across the project. It includes - checks for credentials, typos, and file formatting. -- Includes [GitHub Actions](https://docs.github.com/en/actions) for - continuous integration, testing, and delivery for running checks, - formatting, releasing, and building the website. -- Uses [Netlify](https://www.netlify.com/) for hosting the workshop - website or GitHub Pages if you prefer to host it there. +- Uses [Quarto](https://quarto.org/) for the workshop content, allowing for easy + integration of code, text, and figures. +- Includes a [justfile](https://just.systems/man/en/) for managing common tasks + like building the workshop and running checks. +- Uses [typos](https://github.com/crate-ci/typos) to check for common spelling + mistakes. +- Uses a [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) license for + the workshop content. +- Run checks with with [pre-commit](https://pre-commit.com/) hooks to ensure + consistent formatting and style across the project. It includes checks for + credentials, typos, and file formatting. +- Includes [GitHub Actions](https://docs.github.com/en/actions) for continuous + integration, testing, and delivery for running checks, formatting, releasing, + and building the website. +- Uses [Netlify](https://www.netlify.com/) for hosting the workshop website or + GitHub Pages if you prefer to host it there. - Includes an [EditorConfig](https://editorconfig.org/) file to ensure consistent formatting across different editors. - High level, system and program management with @@ -40,40 +39,37 @@ general workshops: - [`.zenodo.json`](https://help.zenodo.org/docs/github/describe-software/zenodo-json/) file for citation information, that provides Zenodo with the necessary metadata to create a DOI for the workshop. -- Includes a [GoatCounter](https://www.goatcounter.com/) file for - website visitor tracking, which is privacy-friendly and does not use - cookies. That means it doesn't need a GDPR notice as no personal data - is collected. -- Checks URLs with [Lychee](https://lychee.cli.rs) to ensure that URLs - are not broken. -- Uses [rumdl](https://rumdl.dev/) to format Markdown files in a - consistent way. +- Includes a [GoatCounter](https://www.goatcounter.com/) file for website + visitor tracking, which is privacy-friendly and does not use cookies. That + means it doesn't need a GDPR notice as no personal data is collected. +- Checks URLs with [Lychee](https://lychee.cli.rs) to ensure that URLs are not + broken. +- Uses [rumdl](https://rumdl.dev/) to format Markdown files in a consistent way. - Includes [Dependabot](https://docs.github.com/en/code-security/tutorials/secure-your-dependencies/dependabot-quickstart-guide) configuration for automatically keeping dependencies up to date. For R-specific workshops, the additional feature is: -- For R projects, uses [Air](https://posit-dev.github.io/air/) to format - and check R code. +- For R projects, uses [Air](https://posit-dev.github.io/air/) to format and + check R code. These are additional features for workshops developed within rostools: -- GitHub workflows for automatically adding Pull Requests and Issues to - a project board. -- Uses the - [`rostools-theme`](https://github.com/rostools/rostools-theme) Quarto +- GitHub workflows for automatically adding Pull Requests and Issues to a + project board. +- Uses the [`rostools-theme`](https://github.com/rostools/rostools-theme) Quarto extension for a standard appearance across workshops. - Automated Git tagging and GitHub releases with [commitizen](https://decisions.seedcase-project.org/why-semantic-release-with-commitizen/) - that are based on messages following - [Conventional Commits](https://decisions.seedcase-project.org/why-conventional-commits/). + that are based on messages following [Conventional + Commits](https://decisions.seedcase-project.org/why-conventional-commits/). ## Want to contribute? -We would love your feedback or contributions! Head over to our -[GitHub repository]({{< meta links.github >}}) to share your ideas or -contribute code. Your input makes us better! +We would love your feedback or contributions! Head over to our [GitHub +repository]({{< meta links.github >}}) to share your ideas or contribute code. +Your input makes us better! ### Contributors diff --git a/template/404.qmd b/template/404.qmd index f28249f..767f5d4 100644 --- a/template/404.qmd +++ b/template/404.qmd @@ -2,5 +2,5 @@ title: "The page you are looking for does not exist" --- -This page does not exist, go back to the [homepage](/index.qmd) or check -the URL for typos. +This page does not exist, go back to the [homepage](/index.qmd) or check the URL +for typos. diff --git a/template/CODE_OF_CONDUCT.md b/template/CODE_OF_CONDUCT.md index 6f8f13c..22171e4 100644 --- a/template/CODE_OF_CONDUCT.md +++ b/template/CODE_OF_CONDUCT.md @@ -1,28 +1,25 @@ # Contributor Code of Conduct -As contributors and maintainers of this project, we pledge to respect -all people who contribute through reporting issues, posting suggestions, -updating any material, submitting pull requests, and other activities. +As contributors and maintainers of this project, we pledge to respect all people +who contribute through reporting issues, posting suggestions, updating any +material, submitting pull requests, and other activities. -We are committed to making participation in this project a -harassment-free experience for everyone, regardless of level of -experience, gender, gender identity and expression, sexual orientation, -disability, personal appearance, body size, race, ethnicity, age, or -religion. +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, or religion. -Examples of unacceptable behavior by participants include the use of -sexual language or imagery, derogatory comments or personal attacks, -trolling, public or private harassment, insults, or other unprofessional -conduct. +Examples of unacceptable behavior by participants include the use of sexual +language or imagery, derogatory comments or personal attacks, trolling, public +or private harassment, insults, or other unprofessional conduct. -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct. Project -maintainers who do not follow the Code of Conduct may be removed from -the project team. +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct. Project maintainers who do not follow the +Code of Conduct may be removed from the project team. -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by opening an issue or contacting one or more of the project +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by opening an issue or contacting one or more of the project maintainers. This Code of Conduct is adapted from the Contributor Covenant diff --git a/template/README.qmd b/template/README.qmd index e89b021..994fe9d 100644 --- a/template/README.qmd +++ b/template/README.qmd @@ -10,59 +10,56 @@ format: gfm -This repository contains the lesson, lecture, and assignment material -for the workshop, including the website source files and other -associated workshop administration and development files. For more -detail on the workshop, check out the -[welcome page]({{< meta links.site >}}). +This repository contains the lesson, lecture, and assignment material for the +workshop, including the website source files and other associated workshop +administration and development files. For more detail on the workshop, check out +the [welcome page]({{< meta links.site >}}). ::: callout-tip This workshop repository was generated from the -[`template-workshop`](https://github.com/rostools/template-workshop) -rostools template. +[`template-workshop`](https://github.com/rostools/template-workshop) rostools +template. ::: ## Instructional Design -The lectures and lessons in this workshop are designed to be presented -primarily with a participatory live-coding approach. This involves an -teacher typing and running code in an editor or similar platform in -front of the class, while the class follows along using their own -computers. Exercises are interspersed in the lesson material, allowing -participants to collaboratively work on smaller coding problems for a -few minutes. All lesson materials are provided ahead of time on the -workshop website for participants to refer to during lectures. +The lectures and lessons in this workshop are designed to be presented primarily +with a participatory live-coding approach. This involves an teacher typing and +running code in an editor or similar platform in front of the class, while the +class follows along using their own computers. Exercises are interspersed in the +lesson material, allowing participants to collaboratively work on smaller coding +problems for a few minutes. All lesson materials are provided ahead of time on +the workshop website for participants to refer to during lectures. ## Lesson content The teaching material is found mainly in these locations: - `index.Rmd`: Contains the overview of the workshop. -- `overview/` folder: Contains the files that give an overview to the - workshop, such as the syllabus and schedule. -- `pre-workshop/`: Contains the files needed before the workshop, like - the pre-workshop tasks. -- `sessions/`: Contains the files used during the workshop (e.g. - code-along material). -- `appendix/`: Contains the files used to support the workshop, such as - code of conduct, changelog, contributing guides, and instructions for - teachers. -- `slides/`: Contains the lecture slides that are rendered into HTML - slides from Markdown. - -The website is generated with [Quarto](https://quarto.org/), so it -follows the file and folder structure conventions from that package. +- `overview/` folder: Contains the files that give an overview to the workshop, + such as the syllabus and schedule. +- `pre-workshop/`: Contains the files needed before the workshop, like the + pre-workshop tasks. +- `sessions/`: Contains the files used during the workshop (e.g. code-along + material). +- `appendix/`: Contains the files used to support the workshop, such as code of + conduct, changelog, contributing guides, and instructions for teachers. +- `slides/`: Contains the lecture slides that are rendered into HTML slides from + Markdown. + +The website is generated with [Quarto](https://quarto.org/), so it follows the +file and folder structure conventions from that package. ## Contributing -If you are interested in contributing to the workshop material, please -refer to the [contributing guidelines](CONTRIBUTING.md). For guidelines -on how to be a helper or teacher, check out the -[For teachers](https://guides.rostools.org/instructors) page. +If you are interested in contributing to the workshop material, please refer to +the [contributing guidelines](CONTRIBUTING.md). For guidelines on how to be a +helper or teacher, check out the [For +teachers](https://guides.rostools.org/instructors) page. -Please note that the project is released with a -[Contributor Code of Conduct](CODE_OF_CONDUCT.md). By contributing to or -being involved in this project, you agree to abide by its terms. +Please note that the project is released with a [Contributor Code of +Conduct](CODE_OF_CONDUCT.md). By contributing to or being involved in this +project, you agree to abide by its terms. @@ -78,12 +75,11 @@ This project is licensed under the [CC-BY-4.0 License](LICENSE.md). ## Re-use -The workshop is largely designed to be taught in the order given, as -each session builds off of the previous ones. The easiest way to use -this material is to use it as-is, making use of the tips and -instructions found throughout this page. The only thing you might want -to make as your own would be the slides, however, they are also good -enough to use on their own too. +The workshop is largely designed to be taught in the order given, as each +session builds off of the previous ones. The easiest way to use this material is +to use it as-is, making use of the tips and instructions found throughout this +page. The only thing you might want to make as your own would be the slides, +however, they are also good enough to use on their own too. To help with general admin tasks of running the workshop, there is the [samwise](https://github.com/rostools/samwise) R package. diff --git a/template/appendix/for-teachers.qmd b/template/appendix/for-teachers.qmd index da07256..68833e0 100644 --- a/template/appendix/for-teachers.qmd +++ b/template/appendix/for-teachers.qmd @@ -1,8 +1,8 @@ # For teachers {#sec-for-teachers} A more general guide to teaching or helping is found on the -[Guides](https://guides.rostools.org/) website. This page has -information relevant specifically to this workshop. +[Guides](https://guides.rostools.org/) website. This page has information +relevant specifically to this workshop. -- For created teams, assign one teacher or helper to each group to help - them specifically during the final group project. +- For created teams, assign one teacher or helper to each group to help them + specifically during the final group project. diff --git a/template/includes/_badges.qmd b/template/includes/_badges.qmd index 443751e..0bebe3c 100644 --- a/template/includes/_badges.qmd +++ b/template/includes/_badges.qmd @@ -1,8 +1,14 @@ [![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-teal.json?raw=true.svg)](https://github.com/copier-org/copier) -[![GitHub License](https://img.shields.io/github/license/{{< meta gh.org >}}/{{< meta gh.repo >}}.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/blob/main/LICENSE.md) -[![GitHub Release](https://img.shields.io/github/v/release/{{< meta gh.org >}}/{{< meta gh.repo >}}.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/releases/latest) -[![Build website](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/build-website.yml/badge.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/build-website.yml) -[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/{{< meta gh.org >}}/{{< meta gh.repo >}}/main.svg)](https://results.pre-commit.ci/latest/github/{{< meta gh.org >}}/{{< meta gh.repo >}}/main) +[![GitHub +License](https://img.shields.io/github/license/{{< meta gh.org >}}/{{< meta gh.repo >}}.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/blob/main/LICENSE.md) +[![GitHub +Release](https://img.shields.io/github/v/release/{{< meta gh.org >}}/{{< meta gh.repo >}}.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/releases/latest) +[![Build +website](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/build-website.yml/badge.svg)](https://github.com/{{< meta gh.org >}}/{{< meta gh.repo >}}/actions/workflows/build-website.yml) +[![pre-commit.ci +status](https://results.pre-commit.ci/badge/github/{{< meta gh.org >}}/{{< meta gh.repo >}}/main.svg)](https://results.pre-commit.ci/latest/github/{{< meta gh.org >}}/{{< meta gh.repo >}}/main) [![lifecycle](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental) -[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) +[![Project Status: Active -- The project has reached a stable, usable state and +is being actively +developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) diff --git a/template/includes/_star-us.qmd b/template/includes/_star-us.qmd index 2254979..f7071d3 100644 --- a/template/includes/_star-us.qmd +++ b/template/includes/_star-us.qmd @@ -1,9 +1,8 @@ ::: {.callout-tip appearance="minimal"} ## Do you find this workshop material useful? -If yes, please consider "starring" our -[GitHub repository]({{< meta links.github >}}). Starring the repository -will save it to your list of saved repositories, so it's easy for you to -find again later. As a plus, it helps give our project more visibility -:star2: +If yes, please consider "starring" our [GitHub +repository]({{< meta links.github >}}). Starring the repository will save it to +your list of saved repositories, so it's easy for you to find again later. As a +plus, it helps give our project more visibility :star2: ::: diff --git a/template/includes/_survey.qmd b/template/includes/_survey.qmd index ab5ed5d..9ee2671 100644 --- a/template/includes/_survey.qmd +++ b/template/includes/_survey.qmd @@ -1,2 +1,3 @@ -[Feedback survey! :tada:]({{< meta surveys.feedback >}}){.btn +[Feedback survey! +:tada:]({{< meta surveys.feedback >}}){.btn .btn-primary role="button"} diff --git a/template/overview/is-this-for-you.qmd b/template/overview/is-this-for-you.qmd index 0aac076..8dcb4cc 100644 --- a/template/overview/is-this-for-you.qmd +++ b/template/overview/is-this-for-you.qmd @@ -1,20 +1,18 @@ # Is this for you? {#sec-is-this-for-you} -To help manage expectations and develop the material for this workshop, -we make a few assumptions about *who you are* as a participant in the -workshop. +To help manage expectations and develop the material for this workshop, we make +a few assumptions about *who you are* as a participant in the workshop. We assume you can relate to one or more of the following: - TODO: List assumptions -While we have these assumptions to help focus the content of the -workshop, if you have an interest in the workshop but don't fit any of -the assumptions, *you are still welcome to attend*! We welcome everyone -until capacity has been reached. +While we have these assumptions to help focus the content of the workshop, if +you have an interest in the workshop but don't fit any of the assumptions, *you +are still welcome to attend*! We welcome everyone until capacity has been +reached. -In addition to the assumptions above, the workshop also has a fairly -focused scope, which may also help you decide if this workshop is for -you: +In addition to the assumptions above, the workshop also has a fairly focused +scope, which may also help you decide if this workshop is for you: - TODO: List of concrete tasks we will do and not do. diff --git a/template/overview/learning-design.qmd b/template/overview/learning-design.qmd index e345f63..e71938d 100644 --- a/template/overview/learning-design.qmd +++ b/template/overview/learning-design.qmd @@ -2,106 +2,97 @@ # Learning design {#sec-learning-design} -This workshop is designed using the science of learning. Learning is -when new content gets incorporated into long-term storage in the brain -in a way that it can be later retrieved. Some of the best ways to enable -learning is to do "active learning" by engaging with the material, -practicing retrieving what was just covered, repeatedly being exposed to -the content, linking the new information with what you already know, and -explaining it to someone else. - -We use a variety of activities to target the different "pathways" of -learning. A big part of learning is being engaged in the *process* of -learning, not just learning the content itself. So to help you be -engaged in your own learning, we want to involve you in the reasons -*why* we do the things we do during this workshop. +This workshop is designed using the science of learning. Learning is when new +content gets incorporated into long-term storage in the brain in a way that it +can be later retrieved. Some of the best ways to enable learning is to do +"active learning" by engaging with the material, practicing retrieving what was +just covered, repeatedly being exposed to the content, linking the new +information with what you already know, and explaining it to someone else. + +We use a variety of activities to target the different "pathways" of learning. A +big part of learning is being engaged in the *process* of learning, not just +learning the content itself. So to help you be engaged in your own learning, we +want to involve you in the reasons *why* we do the things we do during this +workshop. Throughout the workshop, we use these practices to support learning. ## Clear learning goals and a strong narrative -The learning goals and the narrative are tightly connected in this -workshop. Learning is easier when you have a better idea of where you -are going, where you are relative to the end goal, and what to expect -along the way. +The learning goals and the narrative are tightly connected in this workshop. +Learning is easier when you have a better idea of where you are going, where you +are relative to the end goal, and what to expect along the way. ## "Code-alongs" as the main activity "Code-alongs" is when the teacher types on their computer that is on the -projector and explains what it means as you also type along with them. -The connection between using the hands and doing something tangible -helps reinforce learning. It also helps the teachers to go slower as we -have to both explain and type things out. This helps you learn better. -"Less is more" works very well with learning. +projector and explains what it means as you also type along with them. The +connection between using the hands and doing something tangible helps reinforce +learning. It also helps the teachers to go slower as we have to both explain and +type things out. This helps you learn better. "Less is more" works very well +with learning. ## Retrieval practice with hands-on exercises -Hands-on exercises reinforce what was just taught through retrieval -practice and repetition. It gives you a chance to engage with the -material and the space to try it out on your own. This helps you form a -better sense of how to do it yourself. +Hands-on exercises reinforce what was just taught through retrieval practice and +repetition. It gives you a chance to engage with the material and the space to +try it out on your own. This helps you form a better sense of how to do it +yourself. ## Linking new information with existing knowledge with discussion activities -Discussion activities encourage linking what you already know and do in -your work with the new information. Because humans are social beings, we -also tend to learn better when there is some social aspect to it. For -example, explaining something to someone else is one of the best ways to -learn, as nicely expressed in the quote "while we teach, we learn" from -the Roman philosopher Seneca. +Discussion activities encourage linking what you already know and do in your +work with the new information. Because humans are social beings, we also tend to +learn better when there is some social aspect to it. For example, explaining +something to someone else is one of the best ways to learn, as nicely expressed +in the quote "while we teach, we learn" from the Roman philosopher Seneca. ## Minimal use of lectures -Lectures, while extremely common, are forms of information sharing with -the lowest rates of learning. In this workshop, we use reading tasks -instead, so you can go at your pace, re-read things you may not -understand, and take notes, all of which support learning. To help -reinforce what you just read, the teacher will briefly summarise and -emphasise key points after reading tasks, to repeat the main points and -target another part of the brain (the auditory pathway). +Lectures, while extremely common, are forms of information sharing with the +lowest rates of learning. In this workshop, we use reading tasks instead, so you +can go at your pace, re-read things you may not understand, and take notes, all +of which support learning. To help reinforce what you just read, the teacher +will briefly summarise and emphasise key points after reading tasks, to repeat +the main points and target another part of the brain (the auditory pathway). ## Frequent breaks and variation in activities -Breaks are how your brain can recharge and refocus. The brain is only -able to effectively focus on one thing at a time in 30-50 minute blocks -of time. That's why we mix together code-alongs, exercises, discussions, -and reading to give your brain some variation. Having an explicit break, -even 5 minutes, is enough for the brain to better process and store what -was covered. +Breaks are how your brain can recharge and refocus. The brain is only able to +effectively focus on one thing at a time in 30-50 minute blocks of time. That's +why we mix together code-alongs, exercises, discussions, and reading to give +your brain some variation. Having an explicit break, even 5 minutes, is enough +for the brain to better process and store what was covered. ## Easily accessible material that is online, always -All the material is online on this website, so that it is easy for you -to go back to after the workshop. This builds the repetition and -retrieval practice part of learning. Our brains also get easily -distracted, which is completely normal. So if you get distracted during -the workshop, you can simply go to the material and get caught up with -where we are. We also make sure to follow the material on the website -closely, so that it is easier for you to follow along. +All the material is online on this website, so that it is easy for you to go +back to after the workshop. This builds the repetition and retrieval practice +part of learning. Our brains also get easily distracted, which is completely +normal. So if you get distracted during the workshop, you can simply go to the +material and get caught up with where we are. We also make sure to follow the +material on the website closely, so that it is easier for you to follow along. ## A safe and supportive environment -Mental safety in a supportive environment is critical for effective -learning. It puts the brain into a more relaxed state that allows for -optimal processing and ultimately learning. That's why we try to -explicitly create that space, for example with the use of our Code of -Conduct. +Mental safety in a supportive environment is critical for effective learning. It +puts the brain into a more relaxed state that allows for optimal processing and +ultimately learning. That's why we try to explicitly create that space, for +example with the use of our Code of Conduct. ## Using origami hats to ask for help -Asking for help can feel difficult, especially when you are learning and -are unsure about something. To make it easier and feel safer, we use -origami hats (or stickies) to show how everyone is doing. If you need -help, you put up the "help" hat (usually orange) and a helper will come -to you as soon as possible. If not, you can put up a "all good" hat -(usually blue) to let us know you are following along. Since we often -have several helpers, you usually won’t wait long. This simple system -lets you ask for help without interrupting the teacher or drawing -attention, so you can keep following along while you wait. Our goal is -to make getting help easier and more comfortable. +Asking for help can feel difficult, especially when you are learning and are +unsure about something. To make it easier and feel safer, we use origami hats +(or stickies) to show how everyone is doing. If you need help, you put up the +"help" hat (usually orange) and a helper will come to you as soon as possible. +If not, you can put up a "all good" hat (usually blue) to let us know you are +following along. Since we often have several helpers, you usually won't wait +long. This simple system lets you ask for help without interrupting the teacher +or drawing attention, so you can keep following along while you wait. Our goal +is to make getting help easier and more comfortable. ## Being involved in the learning process -Now you know a bit more about the thoughts behind how we've designed -this workshop to really try to support and enable your own learning! -:tada: :grin: +Now you know a bit more about the thoughts behind how we've designed this +workshop to really try to support and enable your own learning! :tada: :grin: diff --git a/template/overview/schedule.qmd b/template/overview/schedule.qmd index 38ac81c..7db33ae 100644 --- a/template/overview/schedule.qmd +++ b/template/overview/schedule.qmd @@ -6,28 +6,26 @@ format: # Schedule {#sec-schedule} -The workshop is structured as a series of participatory live-coding -sessions interspersed with hands-on exercises and group work, using -either a practice dataset or some other real-world dataset. There are -some lectures given, mainly at the start and end of the workshop. The -general schedule outline is shown in the below table. This is not a -fixed schedule of the timings of each session---some may be shorter and -others may be longer. Instead, it is meant to be an approximate guide -and overview. +The workshop is structured as a series of participatory live-coding sessions +interspersed with hands-on exercises and group work, using either a practice +dataset or some other real-world dataset. There are some lectures given, mainly +at the start and end of the workshop. The general schedule outline is shown in +the below table. This is not a fixed schedule of the timings of each +session---some may be shorter and others may be longer. Instead, it is meant to +be an approximate guide and overview. ::: panel-tabset ## Day 1 {.unnumbered} -| Time | Session topic | -|:------|:----------------------------------------------------------------------------------------| -| 9:30 | {{< fa mug-hot >}} Arrival; Coffee and light breakfast | -| 10:00 | {{< fa person-chalkboard >}} [Introduction to the workshop](/sessions/introduction.qmd) | -| 10:30 | {{< fa laptop-code >}} TBD | -| 12:20 | {{< fa comment-dots >}} [End of session short survey]() | -| 12:30 | {{< fa utensils >}} Lunch | -| 13:15 | {{< fa laptop-code >}} TBD | -| 14:45 | {{< fa mug-hot >}} Break with coffee and snacks | -| 15:00 | {{< fa laptop-code >}} TBD | -| 16:30 | {{< fa comment-dots >}} [End of session short survey]() | - + | Time | Session topic | + | :---- | :-------------------------------------------------------------------------------------- | + | 9:30 | {{< fa mug-hot >}} Arrival; Coffee and light breakfast | + | 10:00 | {{< fa person-chalkboard >}} [Introduction to the workshop](/sessions/introduction.qmd) | + | 10:30 | {{< fa laptop-code >}} TBD | + | 12:20 | {{< fa comment-dots >}} [End of session short survey]() | + | 12:30 | {{< fa utensils >}} Lunch | + | 13:15 | {{< fa laptop-code >}} TBD | + | 14:45 | {{< fa mug-hot >}} Break with coffee and snacks | + | 15:00 | {{< fa laptop-code >}} TBD | + | 16:30 | {{< fa comment-dots >}} [End of session short survey]() | ::: diff --git a/template/overview/syllabus.qmd b/template/overview/syllabus.qmd index 410d072..b0c7591 100644 --- a/template/overview/syllabus.qmd +++ b/template/overview/syllabus.qmd @@ -2,9 +2,8 @@ TODO: Include description and overall introduction of workshop -This workshop lasts TODO: Time and is split into the following sessions, -listed in the [schedule](/overview/schedule.qmd), which will be covered -in order: +This workshop lasts TODO: Time and is split into the following sessions, listed +in the [schedule](/overview/schedule.qmd), which will be covered in order: - [Introduction to the workshop](/sessions/introduction.qmd) - [TODO: Session title](/sessions/session.qmd) @@ -16,8 +15,8 @@ The overall aim of this workshop is to enable you to: 1. -Broken down into specific objectives for each session, we've designed -the workshop to enable you to do the following: +Broken down into specific objectives for each session, we've designed the +workshop to enable you to do the following: [**TODO: Session title**](/sessions/session.qmd) diff --git a/template/pre-workshop/code-of-conduct.qmd b/template/pre-workshop/code-of-conduct.qmd index ebcb90c..9b4d09a 100644 --- a/template/pre-workshop/code-of-conduct.qmd +++ b/template/pre-workshop/code-of-conduct.qmd @@ -2,91 +2,86 @@ # Code of conduct {#sec-code-of-conduct} -Learning happens when we feel safe and supported. Since we want you to -learn during this workshop, we want you to feel safe and supported. We -also want all learners to have an enjoyable and fulfilling experience -while participating in this workshop. So we expect all learners to show -respect, kindness, and courtesy to other learners throughout the whole -workshop and to help create a positive and safe learning environment. - -While most people and (sub-)cultures have an implicit, assumed set of -practices and expectations for behaviour, we believe strongly in -effective and clear communication. This includes making what is normally -implicit expectations to instead be explicit expectations. +Learning happens when we feel safe and supported. Since we want you to learn +during this workshop, we want you to feel safe and supported. We also want all +learners to have an enjoyable and fulfilling experience while participating in +this workshop. So we expect all learners to show respect, kindness, and courtesy +to other learners throughout the whole workshop and to help create a positive +and safe learning environment. + +While most people and (sub-)cultures have an implicit, assumed set of practices +and expectations for behaviour, we believe strongly in effective and clear +communication. This includes making what is normally implicit expectations to +instead be explicit expectations. Teachers and helpers will uphold and embody this code in all spaces and -activities of the workshop, and we expect you as the learner to do the -same. In fact, by participating in this workshop, you indicate that you -agree to follow these explicit expectations. We have this code of -conduct to communicate to you that we really value and want to nurture a -space that encourages and enhances learning. Otherwise, why would we -have a workshop if you can't or aren't able to effectively learn -anything from it! :zany_face: +activities of the workshop, and we expect you as the learner to do the same. In +fact, by participating in this workshop, you indicate that you agree to follow +these explicit expectations. We have this code of conduct to communicate to you +that we really value and want to nurture a space that encourages and enhances +learning. Otherwise, why would we have a workshop if you can't or aren't able to +effectively learn anything from it! :zany_face: ## Expected behavior We want a welcoming, supportive, safe, and fun environment not only for -ourselves as teachers and helpers, but also for all learners, regardless -of background and identity. This means that we do not tolerate behaviour -that is disrespectful to any of our teachers, helpers, or learners (see -below for unacceptable behaviour). +ourselves as teachers and helpers, but also for all learners, regardless of +background and identity. This means that we do not tolerate behaviour that is +disrespectful to any of our teachers, helpers, or learners (see below for +unacceptable behaviour). -We encourage the following kinds of behaviours in all interactions -during this workshop that will foster a positive and professional -learning environment: +We encourage the following kinds of behaviours in all interactions during this +workshop that will foster a positive and professional learning environment: - Show kindness, courtesy, and respect towards other workshop members. -- All interactions should be professional regardless of platform: either - online or in-person. -- Be aware of your words by using welcoming and inclusive language. - Words matter, a lot! +- All interactions should be professional regardless of platform: either online + or in-person. +- Be aware of your words by using welcoming and inclusive language. Words + matter, a lot! - Be respectful to different viewpoints and experiences. - Gracefully accept constructive criticism. - Focus on what is best for everyone in the workshop. ## Unacceptable behavior -While we assume you will not do these behaviours, we want to clearly -communicate what unacceptable behaviour is. It is any behaviour, as -actions or words, that excludes, intimidates, or causes discomfort to -others. We do not tolerate discrimination or harassment based on -characteristics that include, though are not limited to, gender identity -and expression, sexual orientation, disability, physical appearance, -body size, citizenship, nationality, ethnic or social origin, pregnancy, -familial status, veteran status, genetic information, religion or belief -(or lack thereof), membership of a national minority, property, age, -education, socio-economic status, technical choices, and experience -level. We of course also don't tolerate verbally or physically violent -behaviour towards others. +While we assume you will not do these behaviours, we want to clearly communicate +what unacceptable behaviour is. It is any behaviour, as actions or words, that +excludes, intimidates, or causes discomfort to others. We do not tolerate +discrimination or harassment based on characteristics that include, though are +not limited to, gender identity and expression, sexual orientation, disability, +physical appearance, body size, citizenship, nationality, ethnic or social +origin, pregnancy, familial status, veteran status, genetic information, +religion or belief (or lack thereof), membership of a national minority, +property, age, education, socio-economic status, technical choices, and +experience level. We of course also don't tolerate verbally or physically +violent behaviour towards others. Examples of unacceptable behavior includes: -- Written or verbal comments that exclude people on the basis of - membership of any specific group. +- Written or verbal comments that exclude people on the basis of membership of + any specific group. - The display of sexual or violent images. - Unwelcome sexual attention, advances, and/or physical contact. - Sustained disruption of workshop sessions or communications. - Insults or put downs. -- Sexist, racist, homophobic, transphobic, ableist, or exclusionary - jokes. +- Sexist, racist, homophobic, transphobic, ableist, or exclusionary jokes. ## Consequences of unacceptable behavior -Learners who are asked, either in person or online, to stop any -inappropriate behavior are expected to comply immediately. If a learners -engages in behaviour that violates this code of conduct, the organizers, -teachers, or helpers may take any action they deem appropriate, -including warning the offender or removing them from the workshop. +Learners who are asked, either in person or online, to stop any inappropriate +behavior are expected to comply immediately. If a learners engages in behaviour +that violates this code of conduct, the organizers, teachers, or helpers may +take any action they deem appropriate, including warning the offender or +removing them from the workshop. -If you feel in any way unsafe or mistreated, you may contact us -privately---all communication is confidential. +If you feel in any way unsafe or mistreated, you may contact us privately---all +communication is confidential. -Thank you for helping make this a welcoming, friendly workshop for all -:smile: +Thank you for helping make this a welcoming, friendly workshop for all :smile: ::: {.callout-note appearance="default"} -*Acknowledgements*: Large portions of this code of conduct were taken -and modified from other codes of conduct, specifically -[Software Carpentry](https://docs.carpentries.org/policies/coc/) and +*Acknowledgements*: Large portions of this code of conduct were taken and +modified from other codes of conduct, specifically [Software +Carpentry](https://docs.carpentries.org/policies/coc/) and [UofTCoders](https://github.com/UofTCoders/studyGroup/blob/gh-pages/codeOfConduct.md). ::: diff --git a/template/pre-workshop/survey.qmd b/template/pre-workshop/survey.qmd index 981c042..aa3c4f1 100644 --- a/template/pre-workshop/survey.qmd +++ b/template/pre-workshop/survey.qmd @@ -1,17 +1,18 @@ # Survey {#sec-survey} -We have a [Code of Conduct](/pre-workshop/code-of-conduct.qmd). If you -haven't read it, **read it now**. The survey involves a question about -Conduct. We want to make sure this workshop is a supportive and safe -environment for learning, so this Code of Conduct is quite important. +We have a [Code of Conduct](/pre-workshop/code-of-conduct.qmd). If you haven't +read it, **read it now**. The survey involves a question about Conduct. We want +to make sure this workshop is a supportive and safe environment for learning, so +this Code of Conduct is quite important. -If you haven't read the sections under "Workshop overview" and -"Pre-workshop tasks", **please read them now**. +If you haven't read the sections under "Workshop overview" and "Pre-workshop +tasks", **please read them now**. -You're almost done. Please fill out the pre-workshop survey to finish -this section: +You're almost done. Please fill out the pre-workshop survey to finish this +section: -[Pre-workshop survey :tada:]({{< meta surveys.pre-workshop >}}){.btn +[Pre-workshop survey +:tada:]({{< meta surveys.pre-workshop >}}){.btn .btn-primary role="button"} See you at the workshop! :wave: diff --git a/template/sessions/conclusion.qmd b/template/sessions/conclusion.qmd index 7493985..45f5ea7 100644 --- a/template/sessions/conclusion.qmd +++ b/template/sessions/conclusion.qmd @@ -13,6 +13,6 @@ ::: {.callout-note collapse="true"} ## Teacher note -The slides contain speaking notes that you can view by pressing 'S' on -the keyboard. +The slides contain speaking notes that you can view by pressing 'S' on the +keyboard. ::: diff --git a/template/sessions/introduction.qmd b/template/sessions/introduction.qmd index 59221fc..a4b7a4f 100644 --- a/template/sessions/introduction.qmd +++ b/template/sessions/introduction.qmd @@ -13,8 +13,8 @@ ::: {.callout-note collapse="true"} ## Teacher note -The slides contain speaking notes that you can view by pressing 'S' on -the keyboard. +The slides contain speaking notes that you can view by pressing 'S' on the +keyboard. ::: ## The Big Picture diff --git a/template/sessions/session.qmd b/template/sessions/session.qmd index 09239e5..06ce0a8 100644 --- a/template/sessions/session.qmd +++ b/template/sessions/session.qmd @@ -18,7 +18,7 @@ TODO: Reading text ## :technologist: Exercise: Title -**Time: ~NUM minutes.** +**Time: \~NUM minutes.** Text @@ -26,13 +26,13 @@ Text ## :speech_balloon: Discussion activity: Title -**Time: ~Num minutes.** +**Time: \~Num minutes.** Text ## :book: Reading task: Title -**Time: ~Num minutes.** +**Time: \~Num minutes.** Text From e94e7ec90773abdf3fcc484644914773c26fcd74 Mon Sep 17 00:00:00 2001 From: Daniel Mazhari-Jensen Date: Mon, 10 Aug 2026 10:54:56 +0200 Subject: [PATCH 3/8] =?UTF-8?q?build:=20=F0=9F=91=B7=20remove-typos-from-b?= =?UTF-8?q?uild-workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-website.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/build-website.yml b/.github/workflows/build-website.yml index d41da1b..0582ec2 100644 --- a/.github/workflows/build-website.yml +++ b/.github/workflows/build-website.yml @@ -28,9 +28,6 @@ jobs: - name: Check out repository uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - name: Spell check repo - uses: crate-ci/typos@bee27e3a4fd1ea2111cf90ab89cd076c870fce14 # v1.48.0 - - name: Set up Quarto uses: quarto-dev/quarto-actions/setup@8a96df13519ee81fd526f2dfca5962811136661b # v2.2.0 From d80483fe789663d1d91100a26286db5ddd66a58a Mon Sep 17 00:00:00 2001 From: "Luke W. Johnston" Date: Mon, 24 Aug 2026 19:44:42 +0200 Subject: [PATCH 4/8] =?UTF-8?q?chore:=20=F0=9F=94=A5=20remove=20leftover?= =?UTF-8?q?=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .config/typos.toml | 6 +++++- .cz.toml | 8 -------- .rumdl.toml | 30 ------------------------------ .typos.toml | 14 -------------- 4 files changed, 5 insertions(+), 53 deletions(-) delete mode 100644 .cz.toml delete mode 100644 .rumdl.toml delete mode 100644 .typos.toml diff --git a/.config/typos.toml b/.config/typos.toml index 8dd4e99..63581c2 100644 --- a/.config/typos.toml +++ b/.config/typos.toml @@ -2,7 +2,11 @@ extend-exclude = [ "*.html", "*.css", + "*.json", ".quarto/*", "_site/*", - "*.svg" + "_book/*", + "_extensions/*", + "*.svg", + "*.bib", ] diff --git a/.cz.toml b/.cz.toml deleted file mode 100644 index f8ffdcf..0000000 --- a/.cz.toml +++ /dev/null @@ -1,8 +0,0 @@ -[tool.commitizen] -version = "0.11.0" -bump_message = "build: 🔖 update version from $current_version to $new_version" -version_schema = "semver" -version_provider = "commitizen" -update_changelog_on_bump = true -# Don't regenerate the changelog on every update -changelog_incremental = true diff --git a/.rumdl.toml b/.rumdl.toml deleted file mode 100644 index ba9b523..0000000 --- a/.rumdl.toml +++ /dev/null @@ -1,30 +0,0 @@ -[global] -# 72 to match what we have currently been using -line_length = 72 -flavor = "quarto" -exclude = [ - # Common directories to exclude - ".github", - # This is auto-generated from the qmd version - "**/README.md", - # This has it's own structure - "**/LICENSE.md", -] - -# List style: `-` -[MD004] -style = "dash" - -# Wrap list items -[MD032] -allow-lazy-continuation = false - -# Reflow text -[MD013] -reflow = true -reflow-mode = "normalize" - -# Fix tables and their separator row -[MD060] -enabled = true -style = "aligned-no-space" diff --git a/.typos.toml b/.typos.toml deleted file mode 100644 index 36ad591..0000000 --- a/.typos.toml +++ /dev/null @@ -1,14 +0,0 @@ -[files] -extend-exclude = [ - "*.html", - "*.json", - "*.log", - "*.tex", - "*.css", - "*.svg", - ".quarto/*", - "_site/*", - "_book/*", - "_extensions/*", - "*.bib", -] From b681efeec459b8f8e515b299e4d9233dc3db0a31 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 17:45:08 +0000 Subject: [PATCH 5/8] =?UTF-8?q?chore:=20=E2=9C=8F=EF=B8=8F=20automatic=20p?= =?UTF-8?q?re-commit=20hook=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b13789..e69de29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +0,0 @@ - From bad8cba27594168374f1e334070d83624b0ced74 Mon Sep 17 00:00:00 2001 From: "Luke W. Johnston" Date: Wed, 2 Sep 2026 10:56:20 +0200 Subject: [PATCH 6/8] =?UTF-8?q?build:=20=F0=9F=94=A8=20update=20pre-commit?= =?UTF-8?q?=20to=20match=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/.pre-commit-config.yaml | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/template/.pre-commit-config.yaml b/template/.pre-commit-config.yaml index dc8e321..97085b5 100644 --- a/template/.pre-commit-config.yaml +++ b/template/.pre-commit-config.yaml @@ -10,21 +10,6 @@ repos: hooks: - id: gitleaks - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v6.0.0 - hooks: - - id: trailing-whitespace - - id: end-of-file-fixer - - id: mixed-line-ending - args: [ --fix=lf ] - - id: check-merge-conflict - args: [ --assume-in-merge ] - - - repo: https://github.com/commitizen-tools/commitizen - rev: v4.13.10 - hooks: - - id: commitizen - # Use the mirror since the main `typos` repo has tags for different # sub-packages, which confuses pre-commit when it tries to find the latest # version @@ -32,8 +17,19 @@ repos: rev: v1.45.1 hooks: - id: typos + args: [--config, .config/typos.toml, --force-exclude] + + - repo: https://github.com/jolars/panache-pre-commit + rev: v2.51.0 + hooks: + - id: panache-format - - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.1.81 + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 hooks: - - id: rumdl-fmt # Auto-format + - id: trailing-whitespace + - id: end-of-file-fixer + - id: mixed-line-ending + args: [--fix=lf] + - id: check-merge-conflict + args: [--assume-in-merge] From e403995016510cac0cce901dfa3c26d92f143202 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2026 08:58:31 +0000 Subject: [PATCH 7/8] =?UTF-8?q?chore:=20=E2=9C=8F=EF=B8=8F=20automatic=20p?= =?UTF-8?q?re-commit=20hook=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CONTRIBUTING.md | 14 ++++---- .../quarto-ext/fontawesome/assets/css/all.css | 4 +-- .../fontawesome/assets/css/all.min.css | 2 +- template/CODE_OF_CONDUCT.md | 35 ++++++++++--------- 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8ca2343..b9ebd2b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,9 +20,9 @@ manage our project, such as to run checks and test the template. Both the uv and justfile websites have a more detailed guide on using uv, but below are some simple instructions to get you started. -It's easiest to first [install -uv](https://docs.astral.sh/uv/getting-started/installation/) and then install -justfile with uv. Once you've installed uv, install justfile by running: +It's easiest to first +[install uv](https://docs.astral.sh/uv/getting-started/installation/) and then +install justfile with uv. Once you've installed uv, install justfile by running: ```bash uv tool install rust-just @@ -48,10 +48,10 @@ Meaning that if you make changes to the template and try to test it, it won't be able to test those changes. You have to commit the changes first in order for Copier to use them. -When committing changes, please try to follow [Conventional -Commits](https://decisions.seedcase-project.org/why-conventional-commits/) as -Git messages. Using this convention allows us to be able to automatically create -a release based on the commit message by using +When committing changes, please try to follow +[Conventional Commits](https://decisions.seedcase-project.org/why-conventional-commits/) +as Git messages. Using this convention allows us to be able to automatically +create a release based on the commit message by using [Cocogitto](https://decisions.seedcase-project.org/why-semantic-release-with-cocogitto/). If you don't use Conventional Commits when making a commit, we will revise the pull request title to follow that format. That's because we use squash merges diff --git a/_extensions/rostools/rostools-theme/_extensions/quarto-ext/fontawesome/assets/css/all.css b/_extensions/rostools/rostools-theme/_extensions/quarto-ext/fontawesome/assets/css/all.css index ffdf0f0..b393c2a 100644 --- a/_extensions/rostools/rostools-theme/_extensions/quarto-ext/fontawesome/assets/css/all.css +++ b/_extensions/rostools/rostools-theme/_extensions/quarto-ext/fontawesome/assets/css/all.css @@ -6571,7 +6571,7 @@ readers do not read off random characters that represent icons */ .fa-centos { --fa: "\f789"; } -.fa-adn { +.fa-and { --fa: "\f170"; } .fa-cloudsmith { @@ -7168,7 +7168,7 @@ readers do not read off random characters that represent icons */ .fa-spotify { --fa: "\f1bc"; } -.fa-optin-monster { +.fa-option-monster { --fa: "\f23c"; } .fa-fly { diff --git a/_extensions/rostools/rostools-theme/_extensions/quarto-ext/fontawesome/assets/css/all.min.css b/_extensions/rostools/rostools-theme/_extensions/quarto-ext/fontawesome/assets/css/all.min.css index a660d56..6aa05a6 100644 --- a/_extensions/rostools/rostools-theme/_extensions/quarto-ext/fontawesome/assets/css/all.min.css +++ b/_extensions/rostools/rostools-theme/_extensions/quarto-ext/fontawesome/assets/css/all.min.css @@ -6,4 +6,4 @@ .fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-regular,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-brands:before,.fa-regular:before,.fa-solid:before,.fa:before,.fab:before,.far:before,.fas:before{content:var(--fa)}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} .fa-0{--fa:"\30"}.fa-1{--fa:"\31"}.fa-2{--fa:"\32"}.fa-3{--fa:"\33"}.fa-4{--fa:"\34"}.fa-5{--fa:"\35"}.fa-6{--fa:"\36"}.fa-7{--fa:"\37"}.fa-8{--fa:"\38"}.fa-9{--fa:"\39"}.fa-fill-drip{--fa:"\f576"}.fa-arrows-to-circle{--fa:"\e4bd"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:"\f138"}.fa-at{--fa:"\40"}.fa-trash-alt,.fa-trash-can{--fa:"\f2ed"}.fa-text-height{--fa:"\f034"}.fa-user-times,.fa-user-xmark{--fa:"\f235"}.fa-stethoscope{--fa:"\f0f1"}.fa-comment-alt,.fa-message{--fa:"\f27a"}.fa-info{--fa:"\f129"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:"\f422"}.fa-explosion{--fa:"\e4e9"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:"\f15c"}.fa-wave-square{--fa:"\f83e"}.fa-ring{--fa:"\f70b"}.fa-building-un{--fa:"\e4d9"}.fa-dice-three{--fa:"\f527"}.fa-calendar-alt,.fa-calendar-days{--fa:"\f073"}.fa-anchor-circle-check{--fa:"\e4aa"}.fa-building-circle-arrow-right{--fa:"\e4d1"}.fa-volleyball,.fa-volleyball-ball{--fa:"\f45f"}.fa-arrows-up-to-line{--fa:"\e4c2"}.fa-sort-desc,.fa-sort-down{--fa:"\f0dd"}.fa-circle-minus,.fa-minus-circle{--fa:"\f056"}.fa-door-open{--fa:"\f52b"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:"\f2f5"}.fa-atom{--fa:"\f5d2"}.fa-soap{--fa:"\e06e"}.fa-heart-music-camera-bolt,.fa-icons{--fa:"\f86d"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:"\f539"}.fa-bridge-circle-check{--fa:"\e4c9"}.fa-pump-medical{--fa:"\e06a"}.fa-fingerprint{--fa:"\f577"}.fa-hand-point-right{--fa:"\f0a4"}.fa-magnifying-glass-location,.fa-search-location{--fa:"\f689"}.fa-forward-step,.fa-step-forward{--fa:"\f051"}.fa-face-smile-beam,.fa-smile-beam{--fa:"\f5b8"}.fa-flag-checkered{--fa:"\f11e"}.fa-football,.fa-football-ball{--fa:"\f44e"}.fa-school-circle-exclamation{--fa:"\e56c"}.fa-crop{--fa:"\f125"}.fa-angle-double-down,.fa-angles-down{--fa:"\f103"}.fa-users-rectangle{--fa:"\e594"}.fa-people-roof{--fa:"\e537"}.fa-people-line{--fa:"\e534"}.fa-beer,.fa-beer-mug-empty{--fa:"\f0fc"}.fa-diagram-predecessor{--fa:"\e477"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:"\f176"}.fa-burn,.fa-fire-flame-simple{--fa:"\f46a"}.fa-male,.fa-person{--fa:"\f183"}.fa-laptop{--fa:"\f109"}.fa-file-csv{--fa:"\f6dd"}.fa-menorah{--fa:"\f676"}.fa-truck-plane{--fa:"\e58f"}.fa-record-vinyl{--fa:"\f8d9"}.fa-face-grin-stars,.fa-grin-stars{--fa:"\f587"}.fa-bong{--fa:"\f55c"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:"\f67b"}.fa-arrow-down-up-across-line{--fa:"\e4af"}.fa-spoon,.fa-utensil-spoon{--fa:"\f2e5"}.fa-jar-wheat{--fa:"\e517"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:"\f674"}.fa-file-circle-exclamation{--fa:"\e4eb"}.fa-circle-h,.fa-hospital-symbol{--fa:"\f47e"}.fa-pager{--fa:"\f815"}.fa-address-book,.fa-contact-book{--fa:"\f2b9"}.fa-strikethrough{--fa:"\f0cc"}.fa-k{--fa:"\4b"}.fa-landmark-flag{--fa:"\e51c"}.fa-pencil,.fa-pencil-alt{--fa:"\f303"}.fa-backward{--fa:"\f04a"}.fa-caret-right{--fa:"\f0da"}.fa-comments{--fa:"\f086"}.fa-file-clipboard,.fa-paste{--fa:"\f0ea"}.fa-code-pull-request{--fa:"\e13c"}.fa-clipboard-list{--fa:"\f46d"}.fa-truck-loading,.fa-truck-ramp-box{--fa:"\f4de"}.fa-user-check{--fa:"\f4fc"}.fa-vial-virus{--fa:"\e597"}.fa-sheet-plastic{--fa:"\e571"}.fa-blog{--fa:"\f781"}.fa-user-ninja{--fa:"\f504"}.fa-person-arrow-up-from-line{--fa:"\e539"}.fa-scroll-torah,.fa-torah{--fa:"\f6a0"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:"\f458"}.fa-toggle-off{--fa:"\f204"}.fa-archive,.fa-box-archive{--fa:"\f187"}.fa-person-drowning{--fa:"\e545"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:"\f886"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:"\f58a"}.fa-spray-can{--fa:"\f5bd"}.fa-truck-monster{--fa:"\f63b"}.fa-w{--fa:"\57"}.fa-earth-africa,.fa-globe-africa{--fa:"\f57c"}.fa-rainbow{--fa:"\f75b"}.fa-circle-notch{--fa:"\f1ce"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:"\f3fa"}.fa-paw{--fa:"\f1b0"}.fa-cloud{--fa:"\f0c2"}.fa-trowel-bricks{--fa:"\e58a"}.fa-face-flushed,.fa-flushed{--fa:"\f579"}.fa-hospital-user{--fa:"\f80d"}.fa-tent-arrow-left-right{--fa:"\e57f"}.fa-gavel,.fa-legal{--fa:"\f0e3"}.fa-binoculars{--fa:"\f1e5"}.fa-microphone-slash{--fa:"\f131"}.fa-box-tissue{--fa:"\e05b"}.fa-motorcycle{--fa:"\f21c"}.fa-bell-concierge,.fa-concierge-bell{--fa:"\f562"}.fa-pen-ruler,.fa-pencil-ruler{--fa:"\f5ae"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:"\e068"}.fa-mars-and-venus-burst{--fa:"\e523"}.fa-caret-square-right,.fa-square-caret-right{--fa:"\f152"}.fa-cut,.fa-scissors{--fa:"\f0c4"}.fa-sun-plant-wilt{--fa:"\e57a"}.fa-toilets-portable{--fa:"\e584"}.fa-hockey-puck{--fa:"\f453"}.fa-table{--fa:"\f0ce"}.fa-magnifying-glass-arrow-right{--fa:"\e521"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:"\f566"}.fa-users-slash{--fa:"\e073"}.fa-clover{--fa:"\e139"}.fa-mail-reply,.fa-reply{--fa:"\f3e5"}.fa-star-and-crescent{--fa:"\f699"}.fa-house-fire{--fa:"\e50c"}.fa-minus-square,.fa-square-minus{--fa:"\f146"}.fa-helicopter{--fa:"\f533"}.fa-compass{--fa:"\f14e"}.fa-caret-square-down,.fa-square-caret-down{--fa:"\f150"}.fa-file-circle-question{--fa:"\e4ef"}.fa-laptop-code{--fa:"\f5fc"}.fa-swatchbook{--fa:"\f5c3"}.fa-prescription-bottle{--fa:"\f485"}.fa-bars,.fa-navicon{--fa:"\f0c9"}.fa-people-group{--fa:"\e533"}.fa-hourglass-3,.fa-hourglass-end{--fa:"\f253"}.fa-heart-broken,.fa-heart-crack{--fa:"\f7a9"}.fa-external-link-square-alt,.fa-square-up-right{--fa:"\f360"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:"\f597"}.fa-film{--fa:"\f008"}.fa-ruler-horizontal{--fa:"\f547"}.fa-people-robbery{--fa:"\e536"}.fa-lightbulb{--fa:"\f0eb"}.fa-caret-left{--fa:"\f0d9"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:"\f06a"}.fa-school-circle-xmark{--fa:"\e56d"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:"\f08b"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:"\f13a"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:"\f13e"}.fa-cloud-showers-heavy{--fa:"\f740"}.fa-headphones-alt,.fa-headphones-simple{--fa:"\f58f"}.fa-sitemap{--fa:"\f0e8"}.fa-circle-dollar-to-slot,.fa-donate{--fa:"\f4b9"}.fa-memory{--fa:"\f538"}.fa-road-spikes{--fa:"\e568"}.fa-fire-burner{--fa:"\e4f1"}.fa-flag{--fa:"\f024"}.fa-hanukiah{--fa:"\f6e6"}.fa-feather{--fa:"\f52d"}.fa-volume-down,.fa-volume-low{--fa:"\f027"}.fa-comment-slash{--fa:"\f4b3"}.fa-cloud-sun-rain{--fa:"\f743"}.fa-compress{--fa:"\f066"}.fa-wheat-alt,.fa-wheat-awn{--fa:"\e2cd"}.fa-ankh{--fa:"\f644"}.fa-hands-holding-child{--fa:"\e4fa"}.fa-asterisk{--fa:"\2a"}.fa-check-square,.fa-square-check{--fa:"\f14a"}.fa-peseta-sign{--fa:"\e221"}.fa-header,.fa-heading{--fa:"\f1dc"}.fa-ghost{--fa:"\f6e2"}.fa-list,.fa-list-squares{--fa:"\f03a"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:"\f87b"}.fa-cart-plus{--fa:"\f217"}.fa-gamepad{--fa:"\f11b"}.fa-circle-dot,.fa-dot-circle{--fa:"\f192"}.fa-dizzy,.fa-face-dizzy{--fa:"\f567"}.fa-egg{--fa:"\f7fb"}.fa-house-medical-circle-xmark{--fa:"\e513"}.fa-campground{--fa:"\f6bb"}.fa-folder-plus{--fa:"\f65e"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:"\f1e3"}.fa-paint-brush,.fa-paintbrush{--fa:"\f1fc"}.fa-lock{--fa:"\f023"}.fa-gas-pump{--fa:"\f52f"}.fa-hot-tub,.fa-hot-tub-person{--fa:"\f593"}.fa-map-location,.fa-map-marked{--fa:"\f59f"}.fa-house-flood-water{--fa:"\e50e"}.fa-tree{--fa:"\f1bb"}.fa-bridge-lock{--fa:"\e4cc"}.fa-sack-dollar{--fa:"\f81d"}.fa-edit,.fa-pen-to-square{--fa:"\f044"}.fa-car-side{--fa:"\f5e4"}.fa-share-alt,.fa-share-nodes{--fa:"\f1e0"}.fa-heart-circle-minus{--fa:"\e4ff"}.fa-hourglass-2,.fa-hourglass-half{--fa:"\f252"}.fa-microscope{--fa:"\f610"}.fa-sink{--fa:"\e06d"}.fa-bag-shopping,.fa-shopping-bag{--fa:"\f290"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:"\f881"}.fa-mitten{--fa:"\f7b5"}.fa-person-rays{--fa:"\e54d"}.fa-users{--fa:"\f0c0"}.fa-eye-slash{--fa:"\f070"}.fa-flask-vial{--fa:"\e4f3"}.fa-hand,.fa-hand-paper{--fa:"\f256"}.fa-om{--fa:"\f679"}.fa-worm{--fa:"\e599"}.fa-house-circle-xmark{--fa:"\e50b"}.fa-plug{--fa:"\f1e6"}.fa-chevron-up{--fa:"\f077"}.fa-hand-spock{--fa:"\f259"}.fa-stopwatch{--fa:"\f2f2"}.fa-face-kiss,.fa-kiss{--fa:"\f596"}.fa-bridge-circle-xmark{--fa:"\e4cb"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:"\f589"}.fa-chess-bishop{--fa:"\f43a"}.fa-face-grin-wink,.fa-grin-wink{--fa:"\f58c"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:"\f2a4"}.fa-road-circle-check{--fa:"\e564"}.fa-dice-five{--fa:"\f523"}.fa-rss-square,.fa-square-rss{--fa:"\f143"}.fa-land-mine-on{--fa:"\e51b"}.fa-i-cursor{--fa:"\f246"}.fa-stamp{--fa:"\f5bf"}.fa-stairs{--fa:"\e289"}.fa-i{--fa:"\49"}.fa-hryvnia,.fa-hryvnia-sign{--fa:"\f6f2"}.fa-pills{--fa:"\f484"}.fa-face-grin-wide,.fa-grin-alt{--fa:"\f581"}.fa-tooth{--fa:"\f5c9"}.fa-v{--fa:"\56"}.fa-bangladeshi-taka-sign{--fa:"\e2e6"}.fa-bicycle{--fa:"\f206"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:"\e579"}.fa-head-side-cough-slash{--fa:"\e062"}.fa-ambulance,.fa-truck-medical{--fa:"\f0f9"}.fa-wheat-awn-circle-exclamation{--fa:"\e598"}.fa-snowman{--fa:"\f7d0"}.fa-mortar-pestle{--fa:"\f5a7"}.fa-road-barrier{--fa:"\e562"}.fa-school{--fa:"\f549"}.fa-igloo{--fa:"\f7ae"}.fa-joint{--fa:"\f595"}.fa-angle-right{--fa:"\f105"}.fa-horse{--fa:"\f6f0"}.fa-q{--fa:"\51"}.fa-g{--fa:"\47"}.fa-notes-medical{--fa:"\f481"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:"\f2c9"}.fa-dong-sign{--fa:"\e169"}.fa-capsules{--fa:"\f46b"}.fa-poo-bolt,.fa-poo-storm{--fa:"\f75a"}.fa-face-frown-open,.fa-frown-open{--fa:"\f57a"}.fa-hand-point-up{--fa:"\f0a6"}.fa-money-bill{--fa:"\f0d6"}.fa-bookmark{--fa:"\f02e"}.fa-align-justify{--fa:"\f039"}.fa-umbrella-beach{--fa:"\f5ca"}.fa-helmet-un{--fa:"\e503"}.fa-bullseye{--fa:"\f140"}.fa-bacon{--fa:"\f7e5"}.fa-hand-point-down{--fa:"\f0a7"}.fa-arrow-up-from-bracket{--fa:"\e09a"}.fa-folder,.fa-folder-blank{--fa:"\f07b"}.fa-file-medical-alt,.fa-file-waveform{--fa:"\f478"}.fa-radiation{--fa:"\f7b9"}.fa-chart-simple{--fa:"\e473"}.fa-mars-stroke{--fa:"\f229"}.fa-vial{--fa:"\f492"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:"\f624"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:"\e2ca"}.fa-e{--fa:"\45"}.fa-pen-alt,.fa-pen-clip{--fa:"\f305"}.fa-bridge-circle-exclamation{--fa:"\e4ca"}.fa-user{--fa:"\f007"}.fa-school-circle-check{--fa:"\e56b"}.fa-dumpster{--fa:"\f793"}.fa-shuttle-van,.fa-van-shuttle{--fa:"\f5b6"}.fa-building-user{--fa:"\e4da"}.fa-caret-square-left,.fa-square-caret-left{--fa:"\f191"}.fa-highlighter{--fa:"\f591"}.fa-key{--fa:"\f084"}.fa-bullhorn{--fa:"\f0a1"}.fa-globe{--fa:"\f0ac"}.fa-synagogue{--fa:"\f69b"}.fa-person-half-dress{--fa:"\e548"}.fa-road-bridge{--fa:"\e563"}.fa-location-arrow{--fa:"\f124"}.fa-c{--fa:"\43"}.fa-tablet-button{--fa:"\f10a"}.fa-building-lock{--fa:"\e4d6"}.fa-pizza-slice{--fa:"\f818"}.fa-money-bill-wave{--fa:"\f53a"}.fa-area-chart,.fa-chart-area{--fa:"\f1fe"}.fa-house-flag{--fa:"\e50d"}.fa-person-circle-minus{--fa:"\e540"}.fa-ban,.fa-cancel{--fa:"\f05e"}.fa-camera-rotate{--fa:"\e0d8"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:"\f5d0"}.fa-star{--fa:"\f005"}.fa-repeat{--fa:"\f363"}.fa-cross{--fa:"\f654"}.fa-box{--fa:"\f466"}.fa-venus-mars{--fa:"\f228"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:"\f245"}.fa-expand-arrows-alt,.fa-maximize{--fa:"\f31e"}.fa-charging-station{--fa:"\f5e7"}.fa-shapes,.fa-triangle-circle-square{--fa:"\f61f"}.fa-random,.fa-shuffle{--fa:"\f074"}.fa-person-running,.fa-running{--fa:"\f70c"}.fa-mobile-retro{--fa:"\e527"}.fa-grip-lines-vertical{--fa:"\f7a5"}.fa-spider{--fa:"\f717"}.fa-hands-bound{--fa:"\e4f9"}.fa-file-invoice-dollar{--fa:"\f571"}.fa-plane-circle-exclamation{--fa:"\e556"}.fa-x-ray{--fa:"\f497"}.fa-spell-check{--fa:"\f891"}.fa-slash{--fa:"\f715"}.fa-computer-mouse,.fa-mouse{--fa:"\f8cc"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:"\f090"}.fa-shop-slash,.fa-store-alt-slash{--fa:"\e070"}.fa-server{--fa:"\f233"}.fa-virus-covid-slash{--fa:"\e4a9"}.fa-shop-lock{--fa:"\e4a5"}.fa-hourglass-1,.fa-hourglass-start{--fa:"\f251"}.fa-blender-phone{--fa:"\f6b6"}.fa-building-wheat{--fa:"\e4db"}.fa-person-breastfeeding{--fa:"\e53a"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:"\f2f6"}.fa-venus{--fa:"\f221"}.fa-passport{--fa:"\f5ab"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:"\e68f"}.fa-heart-pulse,.fa-heartbeat{--fa:"\f21e"}.fa-people-carry,.fa-people-carry-box{--fa:"\f4ce"}.fa-temperature-high{--fa:"\f769"}.fa-microchip{--fa:"\f2db"}.fa-crown{--fa:"\f521"}.fa-weight-hanging{--fa:"\f5cd"}.fa-xmarks-lines{--fa:"\e59a"}.fa-file-prescription{--fa:"\f572"}.fa-weight,.fa-weight-scale{--fa:"\f496"}.fa-user-friends,.fa-user-group{--fa:"\f500"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:"\f15e"}.fa-chess-knight{--fa:"\f441"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:"\f59b"}.fa-wheelchair{--fa:"\f193"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:"\f0aa"}.fa-toggle-on{--fa:"\f205"}.fa-person-walking,.fa-walking{--fa:"\f554"}.fa-l{--fa:"\4c"}.fa-fire{--fa:"\f06d"}.fa-bed-pulse,.fa-procedures{--fa:"\f487"}.fa-shuttle-space,.fa-space-shuttle{--fa:"\f197"}.fa-face-laugh,.fa-laugh{--fa:"\f599"}.fa-folder-open{--fa:"\f07c"}.fa-heart-circle-plus{--fa:"\e500"}.fa-code-fork{--fa:"\e13b"}.fa-city{--fa:"\f64f"}.fa-microphone-alt,.fa-microphone-lines{--fa:"\f3c9"}.fa-pepper-hot{--fa:"\f816"}.fa-unlock{--fa:"\f09c"}.fa-colon-sign{--fa:"\e140"}.fa-headset{--fa:"\f590"}.fa-store-slash{--fa:"\e071"}.fa-road-circle-xmark{--fa:"\e566"}.fa-user-minus{--fa:"\f503"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:"\f22a"}.fa-champagne-glasses,.fa-glass-cheers{--fa:"\f79f"}.fa-clipboard{--fa:"\f328"}.fa-house-circle-exclamation{--fa:"\e50a"}.fa-file-arrow-up,.fa-file-upload{--fa:"\f574"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:"\f1eb"}.fa-bath,.fa-bathtub{--fa:"\f2cd"}.fa-underline{--fa:"\f0cd"}.fa-user-edit,.fa-user-pen{--fa:"\f4ff"}.fa-signature{--fa:"\f5b7"}.fa-stroopwafel{--fa:"\f551"}.fa-bold{--fa:"\f032"}.fa-anchor-lock{--fa:"\e4ad"}.fa-building-ngo{--fa:"\e4d7"}.fa-manat-sign{--fa:"\e1d5"}.fa-not-equal{--fa:"\f53e"}.fa-border-style,.fa-border-top-left{--fa:"\f853"}.fa-map-location-dot,.fa-map-marked-alt{--fa:"\f5a0"}.fa-jedi{--fa:"\f669"}.fa-poll,.fa-square-poll-vertical{--fa:"\f681"}.fa-mug-hot{--fa:"\f7b6"}.fa-battery-car,.fa-car-battery{--fa:"\f5df"}.fa-gift{--fa:"\f06b"}.fa-dice-two{--fa:"\f528"}.fa-chess-queen{--fa:"\f445"}.fa-glasses{--fa:"\f530"}.fa-chess-board{--fa:"\f43c"}.fa-building-circle-check{--fa:"\e4d2"}.fa-person-chalkboard{--fa:"\e53d"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:"\f22b"}.fa-hand-back-fist,.fa-hand-rock{--fa:"\f255"}.fa-caret-square-up,.fa-square-caret-up{--fa:"\f151"}.fa-cloud-showers-water{--fa:"\e4e4"}.fa-bar-chart,.fa-chart-bar{--fa:"\f080"}.fa-hands-bubbles,.fa-hands-wash{--fa:"\e05e"}.fa-less-than-equal{--fa:"\f537"}.fa-train{--fa:"\f238"}.fa-eye-low-vision,.fa-low-vision{--fa:"\f2a8"}.fa-crow{--fa:"\f520"}.fa-sailboat{--fa:"\e445"}.fa-window-restore{--fa:"\f2d2"}.fa-plus-square,.fa-square-plus{--fa:"\f0fe"}.fa-torii-gate{--fa:"\f6a1"}.fa-frog{--fa:"\f52e"}.fa-bucket{--fa:"\e4cf"}.fa-image{--fa:"\f03e"}.fa-microphone{--fa:"\f130"}.fa-cow{--fa:"\f6c8"}.fa-caret-up{--fa:"\f0d8"}.fa-screwdriver{--fa:"\f54a"}.fa-folder-closed{--fa:"\e185"}.fa-house-tsunami{--fa:"\e515"}.fa-square-nfi{--fa:"\e576"}.fa-arrow-up-from-ground-water{--fa:"\e4b5"}.fa-glass-martini-alt,.fa-martini-glass{--fa:"\f57b"}.fa-square-binary{--fa:"\e69b"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:"\f2ea"}.fa-columns,.fa-table-columns{--fa:"\f0db"}.fa-lemon{--fa:"\f094"}.fa-head-side-mask{--fa:"\e063"}.fa-handshake{--fa:"\f2b5"}.fa-gem{--fa:"\f3a5"}.fa-dolly,.fa-dolly-box{--fa:"\f472"}.fa-smoking{--fa:"\f48d"}.fa-compress-arrows-alt,.fa-minimize{--fa:"\f78c"}.fa-monument{--fa:"\f5a6"}.fa-snowplow{--fa:"\f7d2"}.fa-angle-double-right,.fa-angles-right{--fa:"\f101"}.fa-cannabis{--fa:"\f55f"}.fa-circle-play,.fa-play-circle{--fa:"\f144"}.fa-tablets{--fa:"\f490"}.fa-ethernet{--fa:"\f796"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:"\f153"}.fa-chair{--fa:"\f6c0"}.fa-check-circle,.fa-circle-check{--fa:"\f058"}.fa-circle-stop,.fa-stop-circle{--fa:"\f28d"}.fa-compass-drafting,.fa-drafting-compass{--fa:"\f568"}.fa-plate-wheat{--fa:"\e55a"}.fa-icicles{--fa:"\f7ad"}.fa-person-shelter{--fa:"\e54f"}.fa-neuter{--fa:"\f22c"}.fa-id-badge{--fa:"\f2c1"}.fa-marker{--fa:"\f5a1"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:"\f59a"}.fa-helicopter-symbol{--fa:"\e502"}.fa-universal-access{--fa:"\f29a"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:"\f139"}.fa-lari-sign{--fa:"\e1c8"}.fa-volcano{--fa:"\f770"}.fa-person-walking-dashed-line-arrow-right{--fa:"\e553"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:"\f154"}.fa-viruses{--fa:"\e076"}.fa-square-person-confined{--fa:"\e577"}.fa-user-tie{--fa:"\f508"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:"\f175"}.fa-tent-arrow-down-to-line{--fa:"\e57e"}.fa-certificate{--fa:"\f0a3"}.fa-mail-reply-all,.fa-reply-all{--fa:"\f122"}.fa-suitcase{--fa:"\f0f2"}.fa-person-skating,.fa-skating{--fa:"\f7c5"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:"\f662"}.fa-camera-retro{--fa:"\f083"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:"\f0ab"}.fa-arrow-right-to-file,.fa-file-import{--fa:"\f56f"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:"\f14c"}.fa-box-open{--fa:"\f49e"}.fa-scroll{--fa:"\f70e"}.fa-spa{--fa:"\f5bb"}.fa-location-pin-lock{--fa:"\e51f"}.fa-pause{--fa:"\f04c"}.fa-hill-avalanche{--fa:"\e507"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:"\f2cb"}.fa-bomb{--fa:"\f1e2"}.fa-registered{--fa:"\f25d"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:"\f2bb"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:"\f516"}.fa-subscript{--fa:"\f12c"}.fa-diamond-turn-right,.fa-directions{--fa:"\f5eb"}.fa-burst{--fa:"\e4dc"}.fa-house-laptop,.fa-laptop-house{--fa:"\e066"}.fa-face-tired,.fa-tired{--fa:"\f5c8"}.fa-money-bills{--fa:"\e1f3"}.fa-smog{--fa:"\f75f"}.fa-crutch{--fa:"\f7f7"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:"\f0ee"}.fa-palette{--fa:"\f53f"}.fa-arrows-turn-right{--fa:"\e4c0"}.fa-vest{--fa:"\e085"}.fa-ferry{--fa:"\e4ea"}.fa-arrows-down-to-people{--fa:"\e4b9"}.fa-seedling,.fa-sprout{--fa:"\f4d8"}.fa-arrows-alt-h,.fa-left-right{--fa:"\f337"}.fa-boxes-packing{--fa:"\e4c7"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:"\f0a8"}.fa-group-arrows-rotate{--fa:"\e4f6"}.fa-bowl-food{--fa:"\e4c6"}.fa-candy-cane{--fa:"\f786"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:"\f160"}.fa-cloud-bolt,.fa-thunderstorm{--fa:"\f76c"}.fa-remove-format,.fa-text-slash{--fa:"\f87d"}.fa-face-smile-wink,.fa-smile-wink{--fa:"\f4da"}.fa-file-word{--fa:"\f1c2"}.fa-file-powerpoint{--fa:"\f1c4"}.fa-arrows-h,.fa-arrows-left-right{--fa:"\f07e"}.fa-house-lock{--fa:"\e510"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:"\f0ed"}.fa-children{--fa:"\e4e1"}.fa-blackboard,.fa-chalkboard{--fa:"\f51b"}.fa-user-alt-slash,.fa-user-large-slash{--fa:"\f4fa"}.fa-envelope-open{--fa:"\f2b6"}.fa-handshake-alt-slash,.fa-handshake-simple-slash{--fa:"\e05f"}.fa-mattress-pillow{--fa:"\e525"}.fa-guarani-sign{--fa:"\e19a"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:"\f021"}.fa-fire-extinguisher{--fa:"\f134"}.fa-cruzeiro-sign{--fa:"\e152"}.fa-greater-than-equal{--fa:"\f532"}.fa-shield-alt,.fa-shield-halved{--fa:"\f3ed"}.fa-atlas,.fa-book-atlas{--fa:"\f558"}.fa-virus{--fa:"\e074"}.fa-envelope-circle-check{--fa:"\e4e8"}.fa-layer-group{--fa:"\f5fd"}.fa-arrows-to-dot{--fa:"\e4be"}.fa-archway{--fa:"\f557"}.fa-heart-circle-check{--fa:"\e4fd"}.fa-house-chimney-crack,.fa-house-damage{--fa:"\f6f1"}.fa-file-archive,.fa-file-zipper{--fa:"\f1c6"}.fa-square{--fa:"\f0c8"}.fa-glass-martini,.fa-martini-glass-empty{--fa:"\f000"}.fa-couch{--fa:"\f4b8"}.fa-cedi-sign{--fa:"\e0df"}.fa-italic{--fa:"\f033"}.fa-table-cells-column-lock{--fa:"\e678"}.fa-church{--fa:"\f51d"}.fa-comments-dollar{--fa:"\f653"}.fa-democrat{--fa:"\f747"}.fa-z{--fa:"\5a"}.fa-person-skiing,.fa-skiing{--fa:"\f7c9"}.fa-road-lock{--fa:"\e567"}.fa-a{--fa:"\41"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:"\e03f"}.fa-feather-alt,.fa-feather-pointed{--fa:"\f56b"}.fa-p{--fa:"\50"}.fa-snowflake{--fa:"\f2dc"}.fa-newspaper{--fa:"\f1ea"}.fa-ad,.fa-rectangle-ad{--fa:"\f641"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:"\f0a9"}.fa-filter-circle-xmark{--fa:"\e17b"}.fa-locust{--fa:"\e520"}.fa-sort,.fa-unsorted{--fa:"\f0dc"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:"\f0cb"}.fa-person-dress-burst{--fa:"\e544"}.fa-money-check-alt,.fa-money-check-dollar{--fa:"\f53d"}.fa-vector-square{--fa:"\f5cb"}.fa-bread-slice{--fa:"\f7ec"}.fa-language{--fa:"\f1ab"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:"\f598"}.fa-filter{--fa:"\f0b0"}.fa-question{--fa:"\3f"}.fa-file-signature{--fa:"\f573"}.fa-arrows-alt,.fa-up-down-left-right{--fa:"\f0b2"}.fa-house-chimney-user{--fa:"\e065"}.fa-hand-holding-heart{--fa:"\f4be"}.fa-puzzle-piece{--fa:"\f12e"}.fa-money-check{--fa:"\f53c"}.fa-star-half-alt,.fa-star-half-stroke{--fa:"\f5c0"}.fa-code{--fa:"\f121"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:"\f7a0"}.fa-building-circle-exclamation{--fa:"\e4d3"}.fa-magnifying-glass-chart{--fa:"\e522"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:"\f08e"}.fa-cubes-stacked{--fa:"\e4e6"}.fa-krw,.fa-won,.fa-won-sign{--fa:"\f159"}.fa-virus-covid{--fa:"\e4a8"}.fa-austral-sign{--fa:"\e0a9"}.fa-f{--fa:"\46"}.fa-leaf{--fa:"\f06c"}.fa-road{--fa:"\f018"}.fa-cab,.fa-taxi{--fa:"\f1ba"}.fa-person-circle-plus{--fa:"\e541"}.fa-chart-pie,.fa-pie-chart{--fa:"\f200"}.fa-bolt-lightning{--fa:"\e0b7"}.fa-sack-xmark{--fa:"\e56a"}.fa-file-excel{--fa:"\f1c3"}.fa-file-contract{--fa:"\f56c"}.fa-fish-fins{--fa:"\e4f2"}.fa-building-flag{--fa:"\e4d5"}.fa-face-grin-beam,.fa-grin-beam{--fa:"\f582"}.fa-object-ungroup{--fa:"\f248"}.fa-poop{--fa:"\f619"}.fa-location-pin,.fa-map-marker{--fa:"\f041"}.fa-kaaba{--fa:"\f66b"}.fa-toilet-paper{--fa:"\f71e"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:"\f807"}.fa-eject{--fa:"\f052"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:"\f35a"}.fa-plane-circle-check{--fa:"\e555"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:"\f5a5"}.fa-object-group{--fa:"\f247"}.fa-chart-line,.fa-line-chart{--fa:"\f201"}.fa-mask-ventilator{--fa:"\e524"}.fa-arrow-right{--fa:"\f061"}.fa-map-signs,.fa-signs-post{--fa:"\f277"}.fa-cash-register{--fa:"\f788"}.fa-person-circle-question{--fa:"\e542"}.fa-h{--fa:"\48"}.fa-tarp{--fa:"\e57b"}.fa-screwdriver-wrench,.fa-tools{--fa:"\f7d9"}.fa-arrows-to-eye{--fa:"\e4bf"}.fa-plug-circle-bolt{--fa:"\e55b"}.fa-heart{--fa:"\f004"}.fa-mars-and-venus{--fa:"\f224"}.fa-home-user,.fa-house-user{--fa:"\e1b0"}.fa-dumpster-fire{--fa:"\f794"}.fa-house-crack{--fa:"\e3b1"}.fa-cocktail,.fa-martini-glass-citrus{--fa:"\f561"}.fa-face-surprise,.fa-surprise{--fa:"\f5c2"}.fa-bottle-water{--fa:"\e4c5"}.fa-circle-pause,.fa-pause-circle{--fa:"\f28b"}.fa-toilet-paper-slash{--fa:"\e072"}.fa-apple-alt,.fa-apple-whole{--fa:"\f5d1"}.fa-kitchen-set{--fa:"\e51a"}.fa-r{--fa:"\52"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:"\f2ca"}.fa-cube{--fa:"\f1b2"}.fa-bitcoin-sign{--fa:"\e0b4"}.fa-shield-dog{--fa:"\e573"}.fa-solar-panel{--fa:"\f5ba"}.fa-lock-open{--fa:"\f3c1"}.fa-elevator{--fa:"\e16d"}.fa-money-bill-transfer{--fa:"\e528"}.fa-money-bill-trend-up{--fa:"\e529"}.fa-house-flood-water-circle-arrow-right{--fa:"\e50f"}.fa-poll-h,.fa-square-poll-horizontal{--fa:"\f682"}.fa-circle{--fa:"\f111"}.fa-backward-fast,.fa-fast-backward{--fa:"\f049"}.fa-recycle{--fa:"\f1b8"}.fa-user-astronaut{--fa:"\f4fb"}.fa-plane-slash{--fa:"\e069"}.fa-trademark{--fa:"\f25c"}.fa-basketball,.fa-basketball-ball{--fa:"\f434"}.fa-satellite-dish{--fa:"\f7c0"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:"\f35b"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:"\f3cd"}.fa-volume-high,.fa-volume-up{--fa:"\f028"}.fa-users-rays{--fa:"\e593"}.fa-wallet{--fa:"\f555"}.fa-clipboard-check{--fa:"\f46c"}.fa-file-audio{--fa:"\f1c7"}.fa-burger,.fa-hamburger{--fa:"\f805"}.fa-wrench{--fa:"\f0ad"}.fa-bugs{--fa:"\e4d0"}.fa-rupee,.fa-rupee-sign{--fa:"\f156"}.fa-file-image{--fa:"\f1c5"}.fa-circle-question,.fa-question-circle{--fa:"\f059"}.fa-plane-departure{--fa:"\f5b0"}.fa-handshake-slash{--fa:"\e060"}.fa-book-bookmark{--fa:"\e0bb"}.fa-code-branch{--fa:"\f126"}.fa-hat-cowboy{--fa:"\f8c0"}.fa-bridge{--fa:"\e4c8"}.fa-phone-alt,.fa-phone-flip{--fa:"\f879"}.fa-truck-front{--fa:"\e2b7"}.fa-cat{--fa:"\f6be"}.fa-anchor-circle-exclamation{--fa:"\e4ab"}.fa-truck-field{--fa:"\e58d"}.fa-route{--fa:"\f4d7"}.fa-clipboard-question{--fa:"\e4e3"}.fa-panorama{--fa:"\e209"}.fa-comment-medical{--fa:"\f7f5"}.fa-teeth-open{--fa:"\f62f"}.fa-file-circle-minus{--fa:"\e4ed"}.fa-tags{--fa:"\f02c"}.fa-wine-glass{--fa:"\f4e3"}.fa-fast-forward,.fa-forward-fast{--fa:"\f050"}.fa-face-meh-blank,.fa-meh-blank{--fa:"\f5a4"}.fa-parking,.fa-square-parking{--fa:"\f540"}.fa-house-signal{--fa:"\e012"}.fa-bars-progress,.fa-tasks-alt{--fa:"\f828"}.fa-faucet-drip{--fa:"\e006"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:"\f474"}.fa-ban-smoking,.fa-smoking-ban{--fa:"\f54d"}.fa-terminal{--fa:"\f120"}.fa-mobile-button{--fa:"\f10b"}.fa-house-medical-flag{--fa:"\e514"}.fa-basket-shopping,.fa-shopping-basket{--fa:"\f291"}.fa-tape{--fa:"\f4db"}.fa-bus-alt,.fa-bus-simple{--fa:"\f55e"}.fa-eye{--fa:"\f06e"}.fa-face-sad-cry,.fa-sad-cry{--fa:"\f5b3"}.fa-audio-description{--fa:"\f29e"}.fa-person-military-to-person{--fa:"\e54c"}.fa-file-shield{--fa:"\e4f0"}.fa-user-slash{--fa:"\f506"}.fa-pen{--fa:"\f304"}.fa-tower-observation{--fa:"\e586"}.fa-file-code{--fa:"\f1c9"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:"\f012"}.fa-bus{--fa:"\f207"}.fa-heart-circle-xmark{--fa:"\e501"}.fa-home-lg,.fa-house-chimney{--fa:"\e3af"}.fa-window-maximize{--fa:"\f2d0"}.fa-face-frown,.fa-frown{--fa:"\f119"}.fa-prescription{--fa:"\f5b1"}.fa-shop,.fa-store-alt{--fa:"\f54f"}.fa-floppy-disk,.fa-save{--fa:"\f0c7"}.fa-vihara{--fa:"\f6a7"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:"\f515"}.fa-sort-asc,.fa-sort-up{--fa:"\f0de"}.fa-comment-dots,.fa-commenting{--fa:"\f4ad"}.fa-plant-wilt{--fa:"\e5aa"}.fa-diamond{--fa:"\f219"}.fa-face-grin-squint,.fa-grin-squint{--fa:"\f585"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:"\f4c0"}.fa-chart-diagram{--fa:"\e695"}.fa-bacterium{--fa:"\e05a"}.fa-hand-pointer{--fa:"\f25a"}.fa-drum-steelpan{--fa:"\f56a"}.fa-hand-scissors{--fa:"\f257"}.fa-hands-praying,.fa-praying-hands{--fa:"\f684"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:"\f01e"}.fa-biohazard{--fa:"\f780"}.fa-location,.fa-location-crosshairs{--fa:"\f601"}.fa-mars-double{--fa:"\f227"}.fa-child-dress{--fa:"\e59c"}.fa-users-between-lines{--fa:"\e591"}.fa-lungs-virus{--fa:"\e067"}.fa-face-grin-tears,.fa-grin-tears{--fa:"\f588"}.fa-phone{--fa:"\f095"}.fa-calendar-times,.fa-calendar-xmark{--fa:"\f273"}.fa-child-reaching{--fa:"\e59d"}.fa-head-side-virus{--fa:"\e064"}.fa-user-cog,.fa-user-gear{--fa:"\f4fe"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:"\f163"}.fa-door-closed{--fa:"\f52a"}.fa-shield-virus{--fa:"\e06c"}.fa-dice-six{--fa:"\f526"}.fa-mosquito-net{--fa:"\e52c"}.fa-file-fragment{--fa:"\e697"}.fa-bridge-water{--fa:"\e4ce"}.fa-person-booth{--fa:"\f756"}.fa-text-width{--fa:"\f035"}.fa-hat-wizard{--fa:"\f6e8"}.fa-pen-fancy{--fa:"\f5ac"}.fa-digging,.fa-person-digging{--fa:"\f85e"}.fa-trash{--fa:"\f1f8"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:"\f629"}.fa-book-medical{--fa:"\f7e6"}.fa-poo{--fa:"\f2fe"}.fa-quote-right,.fa-quote-right-alt{--fa:"\f10e"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:"\f553"}.fa-cubes{--fa:"\f1b3"}.fa-divide{--fa:"\f529"}.fa-tenge,.fa-tenge-sign{--fa:"\f7d7"}.fa-headphones{--fa:"\f025"}.fa-hands-holding{--fa:"\f4c2"}.fa-hands-clapping{--fa:"\e1a8"}.fa-republican{--fa:"\f75e"}.fa-arrow-left{--fa:"\f060"}.fa-person-circle-xmark{--fa:"\e543"}.fa-ruler{--fa:"\f545"}.fa-align-left{--fa:"\f036"}.fa-dice-d6{--fa:"\f6d1"}.fa-restroom{--fa:"\f7bd"}.fa-j{--fa:"\4a"}.fa-users-viewfinder{--fa:"\e595"}.fa-file-video{--fa:"\f1c8"}.fa-external-link-alt,.fa-up-right-from-square{--fa:"\f35d"}.fa-table-cells,.fa-th{--fa:"\f00a"}.fa-file-pdf{--fa:"\f1c1"}.fa-bible,.fa-book-bible{--fa:"\f647"}.fa-o{--fa:"\4f"}.fa-medkit,.fa-suitcase-medical{--fa:"\f0fa"}.fa-user-secret{--fa:"\f21b"}.fa-otter{--fa:"\f700"}.fa-female,.fa-person-dress{--fa:"\f182"}.fa-comment-dollar{--fa:"\f651"}.fa-briefcase-clock,.fa-business-time{--fa:"\f64a"}.fa-table-cells-large,.fa-th-large{--fa:"\f009"}.fa-book-tanakh,.fa-tanakh{--fa:"\f827"}.fa-phone-volume,.fa-volume-control-phone{--fa:"\f2a0"}.fa-hat-cowboy-side{--fa:"\f8c1"}.fa-clipboard-user{--fa:"\f7f3"}.fa-child{--fa:"\f1ae"}.fa-lira-sign{--fa:"\f195"}.fa-satellite{--fa:"\f7bf"}.fa-plane-lock{--fa:"\e558"}.fa-tag{--fa:"\f02b"}.fa-comment{--fa:"\f075"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:"\f1fd"}.fa-envelope{--fa:"\f0e0"}.fa-angle-double-up,.fa-angles-up{--fa:"\f102"}.fa-paperclip{--fa:"\f0c6"}.fa-arrow-right-to-city{--fa:"\e4b3"}.fa-ribbon{--fa:"\f4d6"}.fa-lungs{--fa:"\f604"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:"\f887"}.fa-litecoin-sign{--fa:"\e1d3"}.fa-border-none{--fa:"\f850"}.fa-circle-nodes{--fa:"\e4e2"}.fa-parachute-box{--fa:"\f4cd"}.fa-indent{--fa:"\f03c"}.fa-truck-field-un{--fa:"\e58e"}.fa-hourglass,.fa-hourglass-empty{--fa:"\f254"}.fa-mountain{--fa:"\f6fc"}.fa-user-doctor,.fa-user-md{--fa:"\f0f0"}.fa-circle-info,.fa-info-circle{--fa:"\f05a"}.fa-cloud-meatball{--fa:"\f73b"}.fa-camera,.fa-camera-alt{--fa:"\f030"}.fa-square-virus{--fa:"\e578"}.fa-meteor{--fa:"\f753"}.fa-car-on{--fa:"\e4dd"}.fa-sleigh{--fa:"\f7cc"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:"\f162"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:"\f4c1"}.fa-water{--fa:"\f773"}.fa-calendar-check{--fa:"\f274"}.fa-braille{--fa:"\f2a1"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:"\f486"}.fa-landmark{--fa:"\f66f"}.fa-truck{--fa:"\f0d1"}.fa-crosshairs{--fa:"\f05b"}.fa-person-cane{--fa:"\e53c"}.fa-tent{--fa:"\e57d"}.fa-vest-patches{--fa:"\e086"}.fa-check-double{--fa:"\f560"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:"\f15d"}.fa-money-bill-wheat{--fa:"\e52a"}.fa-cookie{--fa:"\f563"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:"\f0e2"}.fa-hard-drive,.fa-hdd{--fa:"\f0a0"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:"\f586"}.fa-dumbbell{--fa:"\f44b"}.fa-list-alt,.fa-rectangle-list{--fa:"\f022"}.fa-tarp-droplet{--fa:"\e57c"}.fa-house-medical-circle-check{--fa:"\e511"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:"\f7ca"}.fa-calendar-plus{--fa:"\f271"}.fa-plane-arrival{--fa:"\f5af"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:"\f359"}.fa-subway,.fa-train-subway{--fa:"\f239"}.fa-chart-gantt{--fa:"\e0e4"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:"\e1bc"}.fa-crop-alt,.fa-crop-simple{--fa:"\f565"}.fa-money-bill-1,.fa-money-bill-alt{--fa:"\f3d1"}.fa-left-long,.fa-long-arrow-alt-left{--fa:"\f30a"}.fa-dna{--fa:"\f471"}.fa-virus-slash{--fa:"\e075"}.fa-minus,.fa-subtract{--fa:"\f068"}.fa-chess{--fa:"\f439"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:"\f177"}.fa-plug-circle-check{--fa:"\e55c"}.fa-street-view{--fa:"\f21d"}.fa-franc-sign{--fa:"\e18f"}.fa-volume-off{--fa:"\f026"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:"\f2a3"}.fa-cog,.fa-gear{--fa:"\f013"}.fa-droplet-slash,.fa-tint-slash{--fa:"\f5c7"}.fa-mosque{--fa:"\f678"}.fa-mosquito{--fa:"\e52b"}.fa-star-of-david{--fa:"\f69a"}.fa-person-military-rifle{--fa:"\e54b"}.fa-cart-shopping,.fa-shopping-cart{--fa:"\f07a"}.fa-vials{--fa:"\f493"}.fa-plug-circle-plus{--fa:"\e55f"}.fa-place-of-worship{--fa:"\f67f"}.fa-grip-vertical{--fa:"\f58e"}.fa-hexagon-nodes{--fa:"\e699"}.fa-arrow-turn-up,.fa-level-up{--fa:"\f148"}.fa-u{--fa:"\55"}.fa-square-root-alt,.fa-square-root-variable{--fa:"\f698"}.fa-clock,.fa-clock-four{--fa:"\f017"}.fa-backward-step,.fa-step-backward{--fa:"\f048"}.fa-pallet{--fa:"\f482"}.fa-faucet{--fa:"\e005"}.fa-baseball-bat-ball{--fa:"\f432"}.fa-s{--fa:"\53"}.fa-timeline{--fa:"\e29c"}.fa-keyboard{--fa:"\f11c"}.fa-caret-down{--fa:"\f0d7"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:"\f7f2"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:"\f2c8"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:"\f3cf"}.fa-plane-up{--fa:"\e22d"}.fa-piggy-bank{--fa:"\f4d3"}.fa-battery-3,.fa-battery-half{--fa:"\f242"}.fa-mountain-city{--fa:"\e52e"}.fa-coins{--fa:"\f51e"}.fa-khanda{--fa:"\f66d"}.fa-sliders,.fa-sliders-h{--fa:"\f1de"}.fa-folder-tree{--fa:"\f802"}.fa-network-wired{--fa:"\f6ff"}.fa-map-pin{--fa:"\f276"}.fa-hamsa{--fa:"\f665"}.fa-cent-sign{--fa:"\e3f5"}.fa-flask{--fa:"\f0c3"}.fa-person-pregnant{--fa:"\e31e"}.fa-wand-sparkles{--fa:"\f72b"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:"\f142"}.fa-ticket{--fa:"\f145"}.fa-power-off{--fa:"\f011"}.fa-long-arrow-alt-right,.fa-right-long{--fa:"\f30b"}.fa-flag-usa{--fa:"\f74d"}.fa-laptop-file{--fa:"\e51d"}.fa-teletype,.fa-tty{--fa:"\f1e4"}.fa-diagram-next{--fa:"\e476"}.fa-person-rifle{--fa:"\e54e"}.fa-house-medical-circle-exclamation{--fa:"\e512"}.fa-closed-captioning{--fa:"\f20a"}.fa-hiking,.fa-person-hiking{--fa:"\f6ec"}.fa-venus-double{--fa:"\f226"}.fa-images{--fa:"\f302"}.fa-calculator{--fa:"\f1ec"}.fa-people-pulling{--fa:"\e535"}.fa-n{--fa:"\4e"}.fa-cable-car,.fa-tram{--fa:"\f7da"}.fa-cloud-rain{--fa:"\f73d"}.fa-building-circle-xmark{--fa:"\e4d4"}.fa-ship{--fa:"\f21a"}.fa-arrows-down-to-line{--fa:"\e4b8"}.fa-download{--fa:"\f019"}.fa-face-grin,.fa-grin{--fa:"\f580"}.fa-backspace,.fa-delete-left{--fa:"\f55a"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:"\f1fb"}.fa-file-circle-check{--fa:"\e5a0"}.fa-forward{--fa:"\f04e"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:"\f3ce"}.fa-face-meh,.fa-meh{--fa:"\f11a"}.fa-align-center{--fa:"\f037"}.fa-book-dead,.fa-book-skull{--fa:"\f6b7"}.fa-drivers-license,.fa-id-card{--fa:"\f2c2"}.fa-dedent,.fa-outdent{--fa:"\f03b"}.fa-heart-circle-exclamation{--fa:"\e4fe"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:"\f015"}.fa-calendar-week{--fa:"\f784"}.fa-laptop-medical{--fa:"\f812"}.fa-b{--fa:"\42"}.fa-file-medical{--fa:"\f477"}.fa-dice-one{--fa:"\f525"}.fa-kiwi-bird{--fa:"\f535"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:"\f0ec"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:"\f2f9"}.fa-cutlery,.fa-utensils{--fa:"\f2e7"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:"\f161"}.fa-mill-sign{--fa:"\e1ed"}.fa-bowl-rice{--fa:"\e2eb"}.fa-skull{--fa:"\f54c"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:"\f519"}.fa-truck-pickup{--fa:"\f63c"}.fa-long-arrow-alt-up,.fa-up-long{--fa:"\f30c"}.fa-stop{--fa:"\f04d"}.fa-code-merge{--fa:"\f387"}.fa-upload{--fa:"\f093"}.fa-hurricane{--fa:"\f751"}.fa-mound{--fa:"\e52d"}.fa-toilet-portable{--fa:"\e583"}.fa-compact-disc{--fa:"\f51f"}.fa-file-arrow-down,.fa-file-download{--fa:"\f56d"}.fa-caravan{--fa:"\f8ff"}.fa-shield-cat{--fa:"\e572"}.fa-bolt,.fa-zap{--fa:"\f0e7"}.fa-glass-water{--fa:"\e4f4"}.fa-oil-well{--fa:"\e532"}.fa-vault{--fa:"\e2c5"}.fa-mars{--fa:"\f222"}.fa-toilet{--fa:"\f7d8"}.fa-plane-circle-xmark{--fa:"\e557"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:"\f157"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:"\f158"}.fa-sun{--fa:"\f185"}.fa-guitar{--fa:"\f7a6"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:"\f59c"}.fa-horse-head{--fa:"\f7ab"}.fa-bore-hole{--fa:"\e4c3"}.fa-industry{--fa:"\f275"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:"\f358"}.fa-arrows-turn-to-dots{--fa:"\e4c1"}.fa-florin-sign{--fa:"\e184"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:"\f884"}.fa-less-than{--fa:"\3c"}.fa-angle-down{--fa:"\f107"}.fa-car-tunnel{--fa:"\e4de"}.fa-head-side-cough{--fa:"\e061"}.fa-grip-lines{--fa:"\f7a4"}.fa-thumbs-down{--fa:"\f165"}.fa-user-lock{--fa:"\f502"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:"\f178"}.fa-anchor-circle-xmark{--fa:"\e4ac"}.fa-ellipsis,.fa-ellipsis-h{--fa:"\f141"}.fa-chess-pawn{--fa:"\f443"}.fa-first-aid,.fa-kit-medical{--fa:"\f479"}.fa-person-through-window{--fa:"\e5a9"}.fa-toolbox{--fa:"\f552"}.fa-hands-holding-circle{--fa:"\e4fb"}.fa-bug{--fa:"\f188"}.fa-credit-card,.fa-credit-card-alt{--fa:"\f09d"}.fa-automobile,.fa-car{--fa:"\f1b9"}.fa-hand-holding-hand{--fa:"\e4f7"}.fa-book-open-reader,.fa-book-reader{--fa:"\f5da"}.fa-mountain-sun{--fa:"\e52f"}.fa-arrows-left-right-to-line{--fa:"\e4ba"}.fa-dice-d20{--fa:"\f6cf"}.fa-truck-droplet{--fa:"\e58c"}.fa-file-circle-xmark{--fa:"\e5a1"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:"\e040"}.fa-medal{--fa:"\f5a2"}.fa-bed{--fa:"\f236"}.fa-h-square,.fa-square-h{--fa:"\f0fd"}.fa-podcast{--fa:"\f2ce"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:"\f2c7"}.fa-bell{--fa:"\f0f3"}.fa-superscript{--fa:"\f12b"}.fa-plug-circle-xmark{--fa:"\e560"}.fa-star-of-life{--fa:"\f621"}.fa-phone-slash{--fa:"\f3dd"}.fa-paint-roller{--fa:"\f5aa"}.fa-hands-helping,.fa-handshake-angle{--fa:"\f4c4"}.fa-location-dot,.fa-map-marker-alt{--fa:"\f3c5"}.fa-file{--fa:"\f15b"}.fa-greater-than{--fa:"\3e"}.fa-person-swimming,.fa-swimmer{--fa:"\f5c4"}.fa-arrow-down{--fa:"\f063"}.fa-droplet,.fa-tint{--fa:"\f043"}.fa-eraser{--fa:"\f12d"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:"\f57d"}.fa-person-burst{--fa:"\e53b"}.fa-dove{--fa:"\f4ba"}.fa-battery-0,.fa-battery-empty{--fa:"\f244"}.fa-socks{--fa:"\f696"}.fa-inbox{--fa:"\f01c"}.fa-section{--fa:"\e447"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:"\f625"}.fa-envelope-open-text{--fa:"\f658"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:"\f0f8"}.fa-wine-bottle{--fa:"\f72f"}.fa-chess-rook{--fa:"\f447"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:"\f550"}.fa-dharmachakra{--fa:"\f655"}.fa-hotdog{--fa:"\f80f"}.fa-blind,.fa-person-walking-with-cane{--fa:"\f29d"}.fa-drum{--fa:"\f569"}.fa-ice-cream{--fa:"\f810"}.fa-heart-circle-bolt{--fa:"\e4fc"}.fa-fax{--fa:"\f1ac"}.fa-paragraph{--fa:"\f1dd"}.fa-check-to-slot,.fa-vote-yea{--fa:"\f772"}.fa-star-half{--fa:"\f089"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:"\f468"}.fa-chain,.fa-link{--fa:"\f0c1"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:"\f2a2"}.fa-tree-city{--fa:"\e587"}.fa-play{--fa:"\f04b"}.fa-font{--fa:"\f031"}.fa-table-cells-row-lock{--fa:"\e67a"}.fa-rupiah-sign{--fa:"\e23d"}.fa-magnifying-glass,.fa-search{--fa:"\f002"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:"\f45d"}.fa-diagnoses,.fa-person-dots-from-line{--fa:"\f470"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:"\f82a"}.fa-naira-sign{--fa:"\e1f6"}.fa-cart-arrow-down{--fa:"\f218"}.fa-walkie-talkie{--fa:"\f8ef"}.fa-file-edit,.fa-file-pen{--fa:"\f31c"}.fa-receipt{--fa:"\f543"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:"\f14b"}.fa-suitcase-rolling{--fa:"\f5c1"}.fa-person-circle-exclamation{--fa:"\e53f"}.fa-chevron-down{--fa:"\f078"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:"\f240"}.fa-skull-crossbones{--fa:"\f714"}.fa-code-compare{--fa:"\e13a"}.fa-list-dots,.fa-list-ul{--fa:"\f0ca"}.fa-school-lock{--fa:"\e56f"}.fa-tower-cell{--fa:"\e585"}.fa-down-long,.fa-long-arrow-alt-down{--fa:"\f309"}.fa-ranking-star{--fa:"\e561"}.fa-chess-king{--fa:"\f43f"}.fa-person-harassing{--fa:"\e549"}.fa-brazilian-real-sign{--fa:"\e46c"}.fa-landmark-alt,.fa-landmark-dome{--fa:"\f752"}.fa-arrow-up{--fa:"\f062"}.fa-television,.fa-tv,.fa-tv-alt{--fa:"\f26c"}.fa-shrimp{--fa:"\e448"}.fa-list-check,.fa-tasks{--fa:"\f0ae"}.fa-jug-detergent{--fa:"\e519"}.fa-circle-user,.fa-user-circle{--fa:"\f2bd"}.fa-user-shield{--fa:"\f505"}.fa-wind{--fa:"\f72e"}.fa-car-burst,.fa-car-crash{--fa:"\f5e1"}.fa-y{--fa:"\59"}.fa-person-snowboarding,.fa-snowboarding{--fa:"\f7ce"}.fa-shipping-fast,.fa-truck-fast{--fa:"\f48b"}.fa-fish{--fa:"\f578"}.fa-user-graduate{--fa:"\f501"}.fa-adjust,.fa-circle-half-stroke{--fa:"\f042"}.fa-clapperboard{--fa:"\e131"}.fa-circle-radiation,.fa-radiation-alt{--fa:"\f7ba"}.fa-baseball,.fa-baseball-ball{--fa:"\f433"}.fa-jet-fighter-up{--fa:"\e518"}.fa-diagram-project,.fa-project-diagram{--fa:"\f542"}.fa-copy{--fa:"\f0c5"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:"\f6a9"}.fa-hand-sparkles{--fa:"\e05d"}.fa-grip,.fa-grip-horizontal{--fa:"\f58d"}.fa-share-from-square,.fa-share-square{--fa:"\f14d"}.fa-child-combatant,.fa-child-rifle{--fa:"\e4e0"}.fa-gun{--fa:"\e19b"}.fa-phone-square,.fa-square-phone{--fa:"\f098"}.fa-add,.fa-plus{--fa:"\2b"}.fa-expand{--fa:"\f065"}.fa-computer{--fa:"\e4e5"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:"\f00d"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:"\f047"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:"\f51c"}.fa-peso-sign{--fa:"\e222"}.fa-building-shield{--fa:"\e4d8"}.fa-baby{--fa:"\f77c"}.fa-users-line{--fa:"\e592"}.fa-quote-left,.fa-quote-left-alt{--fa:"\f10d"}.fa-tractor{--fa:"\f722"}.fa-trash-arrow-up,.fa-trash-restore{--fa:"\f829"}.fa-arrow-down-up-lock{--fa:"\e4b0"}.fa-lines-leaning{--fa:"\e51e"}.fa-ruler-combined{--fa:"\f546"}.fa-copyright{--fa:"\f1f9"}.fa-equals{--fa:"\3d"}.fa-blender{--fa:"\f517"}.fa-teeth{--fa:"\f62e"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:"\f20b"}.fa-map{--fa:"\f279"}.fa-rocket{--fa:"\f135"}.fa-photo-film,.fa-photo-video{--fa:"\f87c"}.fa-folder-minus{--fa:"\f65d"}.fa-hexagon-nodes-bolt{--fa:"\e69a"}.fa-store{--fa:"\f54e"}.fa-arrow-trend-up{--fa:"\e098"}.fa-plug-circle-minus{--fa:"\e55e"}.fa-sign,.fa-sign-hanging{--fa:"\f4d9"}.fa-bezier-curve{--fa:"\f55b"}.fa-bell-slash{--fa:"\f1f6"}.fa-tablet,.fa-tablet-android{--fa:"\f3fb"}.fa-school-flag{--fa:"\e56e"}.fa-fill{--fa:"\f575"}.fa-angle-up{--fa:"\f106"}.fa-drumstick-bite{--fa:"\f6d7"}.fa-holly-berry{--fa:"\f7aa"}.fa-chevron-left{--fa:"\f053"}.fa-bacteria{--fa:"\e059"}.fa-hand-lizard{--fa:"\f258"}.fa-notdef{--fa:"\e1fe"}.fa-disease{--fa:"\f7fa"}.fa-briefcase-medical{--fa:"\f469"}.fa-genderless{--fa:"\f22d"}.fa-chevron-right{--fa:"\f054"}.fa-retweet{--fa:"\f079"}.fa-car-alt,.fa-car-rear{--fa:"\f5de"}.fa-pump-soap{--fa:"\e06b"}.fa-video-slash{--fa:"\f4e2"}.fa-battery-2,.fa-battery-quarter{--fa:"\f243"}.fa-radio{--fa:"\f8d7"}.fa-baby-carriage,.fa-carriage-baby{--fa:"\f77d"}.fa-traffic-light{--fa:"\f637"}.fa-thermometer{--fa:"\f491"}.fa-vr-cardboard{--fa:"\f729"}.fa-hand-middle-finger{--fa:"\f806"}.fa-percent,.fa-percentage{--fa:"\25"}.fa-truck-moving{--fa:"\f4df"}.fa-glass-water-droplet{--fa:"\e4f5"}.fa-display{--fa:"\e163"}.fa-face-smile,.fa-smile{--fa:"\f118"}.fa-thumb-tack,.fa-thumbtack{--fa:"\f08d"}.fa-trophy{--fa:"\f091"}.fa-person-praying,.fa-pray{--fa:"\f683"}.fa-hammer{--fa:"\f6e3"}.fa-hand-peace{--fa:"\f25b"}.fa-rotate,.fa-sync-alt{--fa:"\f2f1"}.fa-spinner{--fa:"\f110"}.fa-robot{--fa:"\f544"}.fa-peace{--fa:"\f67c"}.fa-cogs,.fa-gears{--fa:"\f085"}.fa-warehouse{--fa:"\f494"}.fa-arrow-up-right-dots{--fa:"\e4b7"}.fa-splotch{--fa:"\f5bc"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:"\f584"}.fa-dice-four{--fa:"\f524"}.fa-sim-card{--fa:"\f7c4"}.fa-transgender,.fa-transgender-alt{--fa:"\f225"}.fa-mercury{--fa:"\f223"}.fa-arrow-turn-down,.fa-level-down{--fa:"\f149"}.fa-person-falling-burst{--fa:"\e547"}.fa-award{--fa:"\f559"}.fa-ticket-alt,.fa-ticket-simple{--fa:"\f3ff"}.fa-building{--fa:"\f1ad"}.fa-angle-double-left,.fa-angles-left{--fa:"\f100"}.fa-qrcode{--fa:"\f029"}.fa-clock-rotate-left,.fa-history{--fa:"\f1da"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:"\f583"}.fa-arrow-right-from-file,.fa-file-export{--fa:"\f56e"}.fa-shield,.fa-shield-blank{--fa:"\f132"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:"\f885"}.fa-comment-nodes{--fa:"\e696"}.fa-house-medical{--fa:"\e3b2"}.fa-golf-ball,.fa-golf-ball-tee{--fa:"\f450"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:"\f137"}.fa-house-chimney-window{--fa:"\e00d"}.fa-pen-nib{--fa:"\f5ad"}.fa-tent-arrow-turn-left{--fa:"\e580"}.fa-tents{--fa:"\e582"}.fa-magic,.fa-wand-magic{--fa:"\f0d0"}.fa-dog{--fa:"\f6d3"}.fa-carrot{--fa:"\f787"}.fa-moon{--fa:"\f186"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:"\f5ce"}.fa-cheese{--fa:"\f7ef"}.fa-yin-yang{--fa:"\f6ad"}.fa-music{--fa:"\f001"}.fa-code-commit{--fa:"\f386"}.fa-temperature-low{--fa:"\f76b"}.fa-biking,.fa-person-biking{--fa:"\f84a"}.fa-broom{--fa:"\f51a"}.fa-shield-heart{--fa:"\e574"}.fa-gopuram{--fa:"\f664"}.fa-earth-oceania,.fa-globe-oceania{--fa:"\e47b"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:"\f2d3"}.fa-hashtag{--fa:"\23"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:"\f424"}.fa-oil-can{--fa:"\f613"}.fa-t{--fa:"\54"}.fa-hippo{--fa:"\f6ed"}.fa-chart-column{--fa:"\e0e3"}.fa-infinity{--fa:"\f534"}.fa-vial-circle-check{--fa:"\e596"}.fa-person-arrow-down-to-line{--fa:"\e538"}.fa-voicemail{--fa:"\f897"}.fa-fan{--fa:"\f863"}.fa-person-walking-luggage{--fa:"\e554"}.fa-arrows-alt-v,.fa-up-down{--fa:"\f338"}.fa-cloud-moon-rain{--fa:"\f73c"}.fa-calendar{--fa:"\f133"}.fa-trailer{--fa:"\e041"}.fa-bahai,.fa-haykal{--fa:"\f666"}.fa-sd-card{--fa:"\f7c2"}.fa-dragon{--fa:"\f6d5"}.fa-shoe-prints{--fa:"\f54b"}.fa-circle-plus,.fa-plus-circle{--fa:"\f055"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:"\f58b"}.fa-hand-holding{--fa:"\f4bd"}.fa-plug-circle-exclamation{--fa:"\e55d"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:"\f127"}.fa-clone{--fa:"\f24d"}.fa-person-walking-arrow-loop-left{--fa:"\e551"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:"\f882"}.fa-fire-alt,.fa-fire-flame-curved{--fa:"\f7e4"}.fa-tornado{--fa:"\f76f"}.fa-file-circle-plus{--fa:"\e494"}.fa-book-quran,.fa-quran{--fa:"\f687"}.fa-anchor{--fa:"\f13d"}.fa-border-all{--fa:"\f84c"}.fa-angry,.fa-face-angry{--fa:"\f556"}.fa-cookie-bite{--fa:"\f564"}.fa-arrow-trend-down{--fa:"\e097"}.fa-feed,.fa-rss{--fa:"\f09e"}.fa-draw-polygon{--fa:"\f5ee"}.fa-balance-scale,.fa-scale-balanced{--fa:"\f24e"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:"\f62a"}.fa-shower{--fa:"\f2cc"}.fa-desktop,.fa-desktop-alt{--fa:"\f390"}.fa-m{--fa:"\4d"}.fa-table-list,.fa-th-list{--fa:"\f00b"}.fa-comment-sms,.fa-sms{--fa:"\f7cd"}.fa-book{--fa:"\f02d"}.fa-user-plus{--fa:"\f234"}.fa-check{--fa:"\f00c"}.fa-battery-4,.fa-battery-three-quarters{--fa:"\f241"}.fa-house-circle-check{--fa:"\e509"}.fa-angle-left{--fa:"\f104"}.fa-diagram-successor{--fa:"\e47a"}.fa-truck-arrow-right{--fa:"\e58b"}.fa-arrows-split-up-and-left{--fa:"\e4bc"}.fa-fist-raised,.fa-hand-fist{--fa:"\f6de"}.fa-cloud-moon{--fa:"\f6c3"}.fa-briefcase{--fa:"\f0b1"}.fa-person-falling{--fa:"\e546"}.fa-image-portrait,.fa-portrait{--fa:"\f3e0"}.fa-user-tag{--fa:"\f507"}.fa-rug{--fa:"\e569"}.fa-earth-europe,.fa-globe-europe{--fa:"\f7a2"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:"\f59d"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:"\f410"}.fa-baht-sign{--fa:"\e0ac"}.fa-book-open{--fa:"\f518"}.fa-book-journal-whills,.fa-journal-whills{--fa:"\f66a"}.fa-handcuffs{--fa:"\e4f8"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:"\f071"}.fa-database{--fa:"\f1c0"}.fa-mail-forward,.fa-share{--fa:"\f064"}.fa-bottle-droplet{--fa:"\e4c4"}.fa-mask-face{--fa:"\e1d7"}.fa-hill-rockslide{--fa:"\e508"}.fa-exchange-alt,.fa-right-left{--fa:"\f362"}.fa-paper-plane{--fa:"\f1d8"}.fa-road-circle-exclamation{--fa:"\e565"}.fa-dungeon{--fa:"\f6d9"}.fa-align-right{--fa:"\f038"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:"\f53b"}.fa-life-ring{--fa:"\f1cd"}.fa-hands,.fa-sign-language,.fa-signing{--fa:"\f2a7"}.fa-calendar-day{--fa:"\f783"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:"\f5c5"}.fa-arrows-up-down,.fa-arrows-v{--fa:"\f07d"}.fa-face-grimace,.fa-grimace{--fa:"\f57f"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:"\e2ce"}.fa-level-down-alt,.fa-turn-down{--fa:"\f3be"}.fa-person-walking-arrow-right{--fa:"\e552"}.fa-envelope-square,.fa-square-envelope{--fa:"\f199"}.fa-dice{--fa:"\f522"}.fa-bowling-ball{--fa:"\f436"}.fa-brain{--fa:"\f5dc"}.fa-band-aid,.fa-bandage{--fa:"\f462"}.fa-calendar-minus{--fa:"\f272"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:"\f057"}.fa-gifts{--fa:"\f79c"}.fa-hotel{--fa:"\f594"}.fa-earth-asia,.fa-globe-asia{--fa:"\f57e"}.fa-id-card-alt,.fa-id-card-clip{--fa:"\f47f"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:"\f00e"}.fa-thumbs-up{--fa:"\f164"}.fa-user-clock{--fa:"\f4fd"}.fa-allergies,.fa-hand-dots{--fa:"\f461"}.fa-file-invoice{--fa:"\f570"}.fa-window-minimize{--fa:"\f2d1"}.fa-coffee,.fa-mug-saucer{--fa:"\f0f4"}.fa-brush{--fa:"\f55d"}.fa-file-half-dashed{--fa:"\e698"}.fa-mask{--fa:"\f6fa"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:"\f010"}.fa-ruler-vertical{--fa:"\f548"}.fa-user-alt,.fa-user-large{--fa:"\f406"}.fa-train-tram{--fa:"\e5b4"}.fa-user-nurse{--fa:"\f82f"}.fa-syringe{--fa:"\f48e"}.fa-cloud-sun{--fa:"\f6c4"}.fa-stopwatch-20{--fa:"\e06f"}.fa-square-full{--fa:"\f45c"}.fa-magnet{--fa:"\f076"}.fa-jar{--fa:"\e516"}.fa-note-sticky,.fa-sticky-note{--fa:"\f249"}.fa-bug-slash{--fa:"\e490"}.fa-arrow-up-from-water-pump{--fa:"\e4b6"}.fa-bone{--fa:"\f5d7"}.fa-table-cells-row-unlock{--fa:"\e691"}.fa-user-injured{--fa:"\f728"}.fa-face-sad-tear,.fa-sad-tear{--fa:"\f5b4"}.fa-plane{--fa:"\f072"}.fa-tent-arrows-down{--fa:"\e581"}.fa-exclamation{--fa:"\21"}.fa-arrows-spin{--fa:"\e4bb"}.fa-print{--fa:"\f02f"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:"\e2bb"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:"\24"}.fa-x{--fa:"\58"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:"\f688"}.fa-users-cog,.fa-users-gear{--fa:"\f509"}.fa-person-military-pointing{--fa:"\e54a"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:"\f19c"}.fa-umbrella{--fa:"\f0e9"}.fa-trowel{--fa:"\e589"}.fa-d{--fa:"\44"}.fa-stapler{--fa:"\e5af"}.fa-masks-theater,.fa-theater-masks{--fa:"\f630"}.fa-kip-sign{--fa:"\e1c4"}.fa-hand-point-left{--fa:"\f0a5"}.fa-handshake-alt,.fa-handshake-simple{--fa:"\f4c6"}.fa-fighter-jet,.fa-jet-fighter{--fa:"\f0fb"}.fa-share-alt-square,.fa-square-share-nodes{--fa:"\f1e1"}.fa-barcode{--fa:"\f02a"}.fa-plus-minus{--fa:"\e43c"}.fa-video,.fa-video-camera{--fa:"\f03d"}.fa-graduation-cap,.fa-mortar-board{--fa:"\f19d"}.fa-hand-holding-medical{--fa:"\e05c"}.fa-person-circle-check{--fa:"\e53e"}.fa-level-up-alt,.fa-turn-up{--fa:"\f3bf"} -.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero{--fa:"\f3d0"}.fa-hooli{--fa:"\f427"}.fa-yelp{--fa:"\f1e9"}.fa-cc-visa{--fa:"\f1f0"}.fa-lastfm{--fa:"\f202"}.fa-shopware{--fa:"\f5b5"}.fa-creative-commons-nc{--fa:"\f4e8"}.fa-aws{--fa:"\f375"}.fa-redhat{--fa:"\f7bc"}.fa-yoast{--fa:"\f2b1"}.fa-cloudflare{--fa:"\e07d"}.fa-ups{--fa:"\f7e0"}.fa-pixiv{--fa:"\e640"}.fa-wpexplorer{--fa:"\f2de"}.fa-dyalog{--fa:"\f399"}.fa-bity{--fa:"\f37a"}.fa-stackpath{--fa:"\f842"}.fa-buysellads{--fa:"\f20d"}.fa-first-order{--fa:"\f2b0"}.fa-modx{--fa:"\f285"}.fa-guilded{--fa:"\e07e"}.fa-vnv{--fa:"\f40b"}.fa-js-square,.fa-square-js{--fa:"\f3b9"}.fa-microsoft{--fa:"\f3ca"}.fa-qq{--fa:"\f1d6"}.fa-orcid{--fa:"\f8d2"}.fa-java{--fa:"\f4e4"}.fa-invision{--fa:"\f7b0"}.fa-creative-commons-pd-alt{--fa:"\f4ed"}.fa-centercode{--fa:"\f380"}.fa-glide-g{--fa:"\f2a6"}.fa-drupal{--fa:"\f1a9"}.fa-jxl{--fa:"\e67b"}.fa-dart-lang{--fa:"\e693"}.fa-hire-a-helper{--fa:"\f3b0"}.fa-creative-commons-by{--fa:"\f4e7"}.fa-unity{--fa:"\e049"}.fa-whmcs{--fa:"\f40d"}.fa-rocketchat{--fa:"\f3e8"}.fa-vk{--fa:"\f189"}.fa-untappd{--fa:"\f405"}.fa-mailchimp{--fa:"\f59e"}.fa-css3-alt{--fa:"\f38b"}.fa-reddit-square,.fa-square-reddit{--fa:"\f1a2"}.fa-vimeo-v{--fa:"\f27d"}.fa-contao{--fa:"\f26d"}.fa-square-font-awesome{--fa:"\e5ad"}.fa-deskpro{--fa:"\f38f"}.fa-brave{--fa:"\e63c"}.fa-sistrix{--fa:"\f3ee"}.fa-instagram-square,.fa-square-instagram{--fa:"\e055"}.fa-battle-net{--fa:"\f835"}.fa-the-red-yeti{--fa:"\f69d"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:"\f3af"}.fa-edge{--fa:"\f282"}.fa-threads{--fa:"\e618"}.fa-napster{--fa:"\f3d2"}.fa-snapchat-square,.fa-square-snapchat{--fa:"\f2ad"}.fa-google-plus-g{--fa:"\f0d5"}.fa-artstation{--fa:"\f77a"}.fa-markdown{--fa:"\f60f"}.fa-sourcetree{--fa:"\f7d3"}.fa-google-plus{--fa:"\f2b3"}.fa-diaspora{--fa:"\f791"}.fa-foursquare{--fa:"\f180"}.fa-stack-overflow{--fa:"\f16c"}.fa-github-alt{--fa:"\f113"}.fa-phoenix-squadron{--fa:"\f511"}.fa-pagelines{--fa:"\f18c"}.fa-algolia{--fa:"\f36c"}.fa-red-river{--fa:"\f3e3"}.fa-creative-commons-sa{--fa:"\f4ef"}.fa-safari{--fa:"\f267"}.fa-google{--fa:"\f1a0"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:"\f35c"}.fa-atlassian{--fa:"\f77b"}.fa-linkedin-in{--fa:"\f0e1"}.fa-digital-ocean{--fa:"\f391"}.fa-nimblr{--fa:"\f5a8"}.fa-chromecast{--fa:"\f838"}.fa-evernote{--fa:"\f839"}.fa-hacker-news{--fa:"\f1d4"}.fa-creative-commons-sampling{--fa:"\f4f0"}.fa-adversal{--fa:"\f36a"}.fa-creative-commons{--fa:"\f25e"}.fa-watchman-monitoring{--fa:"\e087"}.fa-fonticons{--fa:"\f280"}.fa-weixin{--fa:"\f1d7"}.fa-shirtsinbulk{--fa:"\f214"}.fa-codepen{--fa:"\f1cb"}.fa-git-alt{--fa:"\f841"}.fa-lyft{--fa:"\f3c3"}.fa-rev{--fa:"\f5b2"}.fa-windows{--fa:"\f17a"}.fa-wizards-of-the-coast{--fa:"\f730"}.fa-square-viadeo,.fa-viadeo-square{--fa:"\f2aa"}.fa-meetup{--fa:"\f2e0"}.fa-centos{--fa:"\f789"}.fa-adn{--fa:"\f170"}.fa-cloudsmith{--fa:"\f384"}.fa-opensuse{--fa:"\e62b"}.fa-pied-piper-alt{--fa:"\f1a8"}.fa-dribbble-square,.fa-square-dribbble{--fa:"\f397"}.fa-codiepie{--fa:"\f284"}.fa-node{--fa:"\f419"}.fa-mix{--fa:"\f3cb"}.fa-steam{--fa:"\f1b6"}.fa-cc-apple-pay{--fa:"\f416"}.fa-scribd{--fa:"\f28a"}.fa-debian{--fa:"\e60b"}.fa-openid{--fa:"\f19b"}.fa-instalod{--fa:"\e081"}.fa-files-pinwheel{--fa:"\e69f"}.fa-expeditedssl{--fa:"\f23e"}.fa-sellcast{--fa:"\f2da"}.fa-square-twitter,.fa-twitter-square{--fa:"\f081"}.fa-r-project{--fa:"\f4f7"}.fa-delicious{--fa:"\f1a5"}.fa-freebsd{--fa:"\f3a4"}.fa-vuejs{--fa:"\f41f"}.fa-accusoft{--fa:"\f369"}.fa-ioxhost{--fa:"\f208"}.fa-fonticons-fi{--fa:"\f3a2"}.fa-app-store{--fa:"\f36f"}.fa-cc-mastercard{--fa:"\f1f1"}.fa-itunes-note{--fa:"\f3b5"}.fa-golang{--fa:"\e40f"}.fa-kickstarter,.fa-square-kickstarter{--fa:"\f3bb"}.fa-grav{--fa:"\f2d6"}.fa-weibo{--fa:"\f18a"}.fa-uncharted{--fa:"\e084"}.fa-firstdraft{--fa:"\f3a1"}.fa-square-youtube,.fa-youtube-square{--fa:"\f431"}.fa-wikipedia-w{--fa:"\f266"}.fa-rendact,.fa-wpressr{--fa:"\f3e4"}.fa-angellist{--fa:"\f209"}.fa-galactic-republic{--fa:"\f50c"}.fa-nfc-directional{--fa:"\e530"}.fa-skype{--fa:"\f17e"}.fa-joget{--fa:"\f3b7"}.fa-fedora{--fa:"\f798"}.fa-stripe-s{--fa:"\f42a"}.fa-meta{--fa:"\e49b"}.fa-laravel{--fa:"\f3bd"}.fa-hotjar{--fa:"\f3b1"}.fa-bluetooth-b{--fa:"\f294"}.fa-square-letterboxd{--fa:"\e62e"}.fa-sticker-mule{--fa:"\f3f7"}.fa-creative-commons-zero{--fa:"\f4f3"}.fa-hips{--fa:"\f452"}.fa-css{--fa:"\e6a2"}.fa-behance{--fa:"\f1b4"}.fa-reddit{--fa:"\f1a1"}.fa-discord{--fa:"\f392"}.fa-chrome{--fa:"\f268"}.fa-app-store-ios{--fa:"\f370"}.fa-cc-discover{--fa:"\f1f2"}.fa-wpbeginner{--fa:"\f297"}.fa-confluence{--fa:"\f78d"}.fa-shoelace{--fa:"\e60c"}.fa-mdb{--fa:"\f8ca"}.fa-dochub{--fa:"\f394"}.fa-accessible-icon{--fa:"\f368"}.fa-ebay{--fa:"\f4f4"}.fa-amazon{--fa:"\f270"}.fa-unsplash{--fa:"\e07c"}.fa-yarn{--fa:"\f7e3"}.fa-square-steam,.fa-steam-square{--fa:"\f1b7"}.fa-500px{--fa:"\f26e"}.fa-square-vimeo,.fa-vimeo-square{--fa:"\f194"}.fa-asymmetrik{--fa:"\f372"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:"\f2b4"}.fa-gratipay{--fa:"\f184"}.fa-apple{--fa:"\f179"}.fa-hive{--fa:"\e07f"}.fa-gitkraken{--fa:"\f3a6"}.fa-keybase{--fa:"\f4f5"}.fa-apple-pay{--fa:"\f415"}.fa-padlet{--fa:"\e4a0"}.fa-amazon-pay{--fa:"\f42c"}.fa-github-square,.fa-square-github{--fa:"\f092"}.fa-stumbleupon{--fa:"\f1a4"}.fa-fedex{--fa:"\f797"}.fa-phoenix-framework{--fa:"\f3dc"}.fa-shopify{--fa:"\e057"}.fa-neos{--fa:"\f612"}.fa-square-threads{--fa:"\e619"}.fa-hackerrank{--fa:"\f5f7"}.fa-researchgate{--fa:"\f4f8"}.fa-swift{--fa:"\f8e1"}.fa-angular{--fa:"\f420"}.fa-speakap{--fa:"\f3f3"}.fa-angrycreative{--fa:"\f36e"}.fa-y-combinator{--fa:"\f23b"}.fa-empire{--fa:"\f1d1"}.fa-envira{--fa:"\f299"}.fa-google-scholar{--fa:"\e63b"}.fa-gitlab-square,.fa-square-gitlab{--fa:"\e5ae"}.fa-studiovinari{--fa:"\f3f8"}.fa-pied-piper{--fa:"\f2ae"}.fa-wordpress{--fa:"\f19a"}.fa-product-hunt{--fa:"\f288"}.fa-firefox{--fa:"\f269"}.fa-linode{--fa:"\f2b8"}.fa-goodreads{--fa:"\f3a8"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:"\f264"}.fa-jsfiddle{--fa:"\f1cc"}.fa-sith{--fa:"\f512"}.fa-themeisle{--fa:"\f2b2"}.fa-page4{--fa:"\f3d7"}.fa-hashnode{--fa:"\e499"}.fa-react{--fa:"\f41b"}.fa-cc-paypal{--fa:"\f1f4"}.fa-squarespace{--fa:"\f5be"}.fa-cc-stripe{--fa:"\f1f5"}.fa-creative-commons-share{--fa:"\f4f2"}.fa-bitcoin{--fa:"\f379"}.fa-keycdn{--fa:"\f3ba"}.fa-opera{--fa:"\f26a"}.fa-itch-io{--fa:"\f83a"}.fa-umbraco{--fa:"\f8e8"}.fa-galactic-senate{--fa:"\f50d"}.fa-ubuntu{--fa:"\f7df"}.fa-draft2digital{--fa:"\f396"}.fa-stripe{--fa:"\f429"}.fa-houzz{--fa:"\f27c"}.fa-gg{--fa:"\f260"}.fa-dhl{--fa:"\f790"}.fa-pinterest-square,.fa-square-pinterest{--fa:"\f0d3"}.fa-xing{--fa:"\f168"}.fa-blackberry{--fa:"\f37b"}.fa-creative-commons-pd{--fa:"\f4ec"}.fa-playstation{--fa:"\f3df"}.fa-quinscape{--fa:"\f459"}.fa-less{--fa:"\f41d"}.fa-blogger-b{--fa:"\f37d"}.fa-opencart{--fa:"\f23d"}.fa-vine{--fa:"\f1ca"}.fa-signal-messenger{--fa:"\e663"}.fa-paypal{--fa:"\f1ed"}.fa-gitlab{--fa:"\f296"}.fa-typo3{--fa:"\f42b"}.fa-reddit-alien{--fa:"\f281"}.fa-yahoo{--fa:"\f19e"}.fa-dailymotion{--fa:"\e052"}.fa-affiliatetheme{--fa:"\f36b"}.fa-pied-piper-pp{--fa:"\f1a7"}.fa-bootstrap{--fa:"\f836"}.fa-odnoklassniki{--fa:"\f263"}.fa-nfc-symbol{--fa:"\e531"}.fa-mintbit{--fa:"\e62f"}.fa-ethereum{--fa:"\f42e"}.fa-speaker-deck{--fa:"\f83c"}.fa-creative-commons-nc-eu{--fa:"\f4e9"}.fa-patreon{--fa:"\f3d9"}.fa-avianex{--fa:"\f374"}.fa-ello{--fa:"\f5f1"}.fa-gofore{--fa:"\f3a7"}.fa-bimobject{--fa:"\f378"}.fa-brave-reverse{--fa:"\e63d"}.fa-facebook-f{--fa:"\f39e"}.fa-google-plus-square,.fa-square-google-plus{--fa:"\f0d4"}.fa-web-awesome{--fa:"\e682"}.fa-mandalorian{--fa:"\f50f"}.fa-first-order-alt{--fa:"\f50a"}.fa-osi{--fa:"\f41a"}.fa-google-wallet{--fa:"\f1ee"}.fa-d-and-d-beyond{--fa:"\f6ca"}.fa-periscope{--fa:"\f3da"}.fa-fulcrum{--fa:"\f50b"}.fa-cloudscale{--fa:"\f383"}.fa-forumbee{--fa:"\f211"}.fa-mizuni{--fa:"\f3cc"}.fa-schlix{--fa:"\f3ea"}.fa-square-xing,.fa-xing-square{--fa:"\f169"}.fa-bandcamp{--fa:"\f2d5"}.fa-wpforms{--fa:"\f298"}.fa-cloudversify{--fa:"\f385"}.fa-usps{--fa:"\f7e1"}.fa-megaport{--fa:"\f5a3"}.fa-magento{--fa:"\f3c4"}.fa-spotify{--fa:"\f1bc"}.fa-optin-monster{--fa:"\f23c"}.fa-fly{--fa:"\f417"}.fa-square-bluesky{--fa:"\e6a3"}.fa-aviato{--fa:"\f421"}.fa-itunes{--fa:"\f3b4"}.fa-cuttlefish{--fa:"\f38c"}.fa-blogger{--fa:"\f37c"}.fa-flickr{--fa:"\f16e"}.fa-viber{--fa:"\f409"}.fa-soundcloud{--fa:"\f1be"}.fa-digg{--fa:"\f1a6"}.fa-tencent-weibo{--fa:"\f1d5"}.fa-letterboxd{--fa:"\e62d"}.fa-symfony{--fa:"\f83d"}.fa-maxcdn{--fa:"\f136"}.fa-etsy{--fa:"\f2d7"}.fa-facebook-messenger{--fa:"\f39f"}.fa-audible{--fa:"\f373"}.fa-think-peaks{--fa:"\f731"}.fa-bilibili{--fa:"\e3d9"}.fa-erlang{--fa:"\f39d"}.fa-x-twitter{--fa:"\e61b"}.fa-cotton-bureau{--fa:"\f89e"}.fa-dashcube{--fa:"\f210"}.fa-42-group,.fa-innosoft{--fa:"\e080"}.fa-stack-exchange{--fa:"\f18d"}.fa-elementor{--fa:"\f430"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:"\e01e"}.fa-creative-commons-nd{--fa:"\f4eb"}.fa-palfed{--fa:"\f3d8"}.fa-superpowers{--fa:"\f2dd"}.fa-resolving{--fa:"\f3e7"}.fa-xbox{--fa:"\f412"}.fa-square-web-awesome-stroke{--fa:"\e684"}.fa-searchengin{--fa:"\f3eb"}.fa-tiktok{--fa:"\e07b"}.fa-facebook-square,.fa-square-facebook{--fa:"\f082"}.fa-renren{--fa:"\f18b"}.fa-linux{--fa:"\f17c"}.fa-glide{--fa:"\f2a5"}.fa-linkedin{--fa:"\f08c"}.fa-hubspot{--fa:"\f3b2"}.fa-deploydog{--fa:"\f38e"}.fa-twitch{--fa:"\f1e8"}.fa-flutter{--fa:"\e694"}.fa-ravelry{--fa:"\f2d9"}.fa-mixer{--fa:"\e056"}.fa-lastfm-square,.fa-square-lastfm{--fa:"\f203"}.fa-vimeo{--fa:"\f40a"}.fa-mendeley{--fa:"\f7b3"}.fa-uniregistry{--fa:"\f404"}.fa-figma{--fa:"\f799"}.fa-creative-commons-remix{--fa:"\f4ee"}.fa-cc-amazon-pay{--fa:"\f42d"}.fa-dropbox{--fa:"\f16b"}.fa-instagram{--fa:"\f16d"}.fa-cmplid{--fa:"\e360"}.fa-upwork{--fa:"\e641"}.fa-facebook{--fa:"\f09a"}.fa-gripfire{--fa:"\f3ac"}.fa-jedi-order{--fa:"\f50e"}.fa-uikit{--fa:"\f403"}.fa-fort-awesome-alt{--fa:"\f3a3"}.fa-phabricator{--fa:"\f3db"}.fa-ussunnah{--fa:"\f407"}.fa-earlybirds{--fa:"\f39a"}.fa-trade-federation{--fa:"\f513"}.fa-autoprefixer{--fa:"\f41c"}.fa-whatsapp{--fa:"\f232"}.fa-square-upwork{--fa:"\e67c"}.fa-slideshare{--fa:"\f1e7"}.fa-google-play{--fa:"\f3ab"}.fa-viadeo{--fa:"\f2a9"}.fa-line{--fa:"\f3c0"}.fa-google-drive{--fa:"\f3aa"}.fa-servicestack{--fa:"\f3ec"}.fa-simplybuilt{--fa:"\f215"}.fa-bitbucket{--fa:"\f171"}.fa-imdb{--fa:"\f2d8"}.fa-deezer{--fa:"\e077"}.fa-raspberry-pi{--fa:"\f7bb"}.fa-jira{--fa:"\f7b1"}.fa-docker{--fa:"\f395"}.fa-screenpal{--fa:"\e570"}.fa-bluetooth{--fa:"\f293"}.fa-gitter{--fa:"\f426"}.fa-d-and-d{--fa:"\f38d"}.fa-microblog{--fa:"\e01a"}.fa-cc-diners-club{--fa:"\f24c"}.fa-gg-circle{--fa:"\f261"}.fa-pied-piper-hat{--fa:"\f4e5"}.fa-kickstarter-k{--fa:"\f3bc"}.fa-yandex{--fa:"\f413"}.fa-readme{--fa:"\f4d5"}.fa-html5{--fa:"\f13b"}.fa-sellsy{--fa:"\f213"}.fa-square-web-awesome{--fa:"\e683"}.fa-sass{--fa:"\f41e"}.fa-wirsindhandwerk,.fa-wsh{--fa:"\e2d0"}.fa-buromobelexperte{--fa:"\f37f"}.fa-salesforce{--fa:"\f83b"}.fa-octopus-deploy{--fa:"\e082"}.fa-medapps{--fa:"\f3c6"}.fa-ns8{--fa:"\f3d5"}.fa-pinterest-p{--fa:"\f231"}.fa-apper{--fa:"\f371"}.fa-fort-awesome{--fa:"\f286"}.fa-waze{--fa:"\f83f"}.fa-bluesky{--fa:"\e671"}.fa-cc-jcb{--fa:"\f24b"}.fa-snapchat,.fa-snapchat-ghost{--fa:"\f2ab"}.fa-fantasy-flight-games{--fa:"\f6dc"}.fa-rust{--fa:"\e07a"}.fa-wix{--fa:"\f5cf"}.fa-behance-square,.fa-square-behance{--fa:"\f1b5"}.fa-supple{--fa:"\f3f9"}.fa-webflow{--fa:"\e65c"}.fa-rebel{--fa:"\f1d0"}.fa-css3{--fa:"\f13c"}.fa-staylinked{--fa:"\f3f5"}.fa-kaggle{--fa:"\f5fa"}.fa-space-awesome{--fa:"\e5ac"}.fa-deviantart{--fa:"\f1bd"}.fa-cpanel{--fa:"\f388"}.fa-goodreads-g{--fa:"\f3a9"}.fa-git-square,.fa-square-git{--fa:"\f1d2"}.fa-square-tumblr,.fa-tumblr-square{--fa:"\f174"}.fa-trello{--fa:"\f181"}.fa-creative-commons-nc-jp{--fa:"\f4ea"}.fa-get-pocket{--fa:"\f265"}.fa-perbyte{--fa:"\e083"}.fa-grunt{--fa:"\f3ad"}.fa-weebly{--fa:"\f5cc"}.fa-connectdevelop{--fa:"\f20e"}.fa-leanpub{--fa:"\f212"}.fa-black-tie{--fa:"\f27e"}.fa-themeco{--fa:"\f5c6"}.fa-python{--fa:"\f3e2"}.fa-android{--fa:"\f17b"}.fa-bots{--fa:"\e340"}.fa-free-code-camp{--fa:"\f2c5"}.fa-hornbill{--fa:"\f592"}.fa-js{--fa:"\f3b8"}.fa-ideal{--fa:"\e013"}.fa-git{--fa:"\f1d3"}.fa-dev{--fa:"\f6cc"}.fa-sketch{--fa:"\f7c6"}.fa-yandex-international{--fa:"\f414"}.fa-cc-amex{--fa:"\f1f3"}.fa-uber{--fa:"\f402"}.fa-github{--fa:"\f09b"}.fa-php{--fa:"\f457"}.fa-alipay{--fa:"\f642"}.fa-youtube{--fa:"\f167"}.fa-skyatlas{--fa:"\f216"}.fa-firefox-browser{--fa:"\e007"}.fa-replyd{--fa:"\f3e6"}.fa-suse{--fa:"\f7d6"}.fa-jenkins{--fa:"\f3b6"}.fa-twitter{--fa:"\f099"}.fa-rockrms{--fa:"\f3e9"}.fa-pinterest{--fa:"\f0d2"}.fa-buffer{--fa:"\f837"}.fa-npm{--fa:"\f3d4"}.fa-yammer{--fa:"\f840"}.fa-btc{--fa:"\f15a"}.fa-dribbble{--fa:"\f17d"}.fa-stumbleupon-circle{--fa:"\f1a3"}.fa-internet-explorer{--fa:"\f26b"}.fa-stubber{--fa:"\e5c7"}.fa-telegram,.fa-telegram-plane{--fa:"\f2c6"}.fa-old-republic{--fa:"\f510"}.fa-odysee{--fa:"\e5c6"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:"\f40c"}.fa-node-js{--fa:"\f3d3"}.fa-edge-legacy{--fa:"\e078"}.fa-slack,.fa-slack-hash{--fa:"\f198"}.fa-medrt{--fa:"\f3c8"}.fa-usb{--fa:"\f287"}.fa-tumblr{--fa:"\f173"}.fa-vaadin{--fa:"\f408"}.fa-quora{--fa:"\f2c4"}.fa-square-x-twitter{--fa:"\e61a"}.fa-reacteurope{--fa:"\f75d"}.fa-medium,.fa-medium-m{--fa:"\f23a"}.fa-amilia{--fa:"\f36d"}.fa-mixcloud{--fa:"\f289"}.fa-flipboard{--fa:"\f44d"}.fa-viacoin{--fa:"\f237"}.fa-critical-role{--fa:"\f6c9"}.fa-sitrox{--fa:"\e44a"}.fa-discourse{--fa:"\f393"}.fa-joomla{--fa:"\f1aa"}.fa-mastodon{--fa:"\f4f6"}.fa-airbnb{--fa:"\f834"}.fa-wolf-pack-battalion{--fa:"\f514"}.fa-buy-n-large{--fa:"\f8a6"}.fa-gulp{--fa:"\f3ae"}.fa-creative-commons-sampling-plus{--fa:"\f4f1"}.fa-strava{--fa:"\f428"}.fa-ember{--fa:"\f423"}.fa-canadian-maple-leaf{--fa:"\f785"}.fa-teamspeak{--fa:"\f4f9"}.fa-pushed{--fa:"\f3e1"}.fa-wordpress-simple{--fa:"\f411"}.fa-nutritionix{--fa:"\f3d6"}.fa-wodu{--fa:"\e088"}.fa-google-pay{--fa:"\e079"}.fa-intercom{--fa:"\f7af"}.fa-zhihu{--fa:"\f63f"}.fa-korvue{--fa:"\f42f"}.fa-pix{--fa:"\e43a"}.fa-steam-symbol{--fa:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} +.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero{--fa:"\f3d0"}.fa-hooli{--fa:"\f427"}.fa-yelp{--fa:"\f1e9"}.fa-cc-visa{--fa:"\f1f0"}.fa-lastfm{--fa:"\f202"}.fa-shopware{--fa:"\f5b5"}.fa-creative-commons-nc{--fa:"\f4e8"}.fa-aws{--fa:"\f375"}.fa-redhat{--fa:"\f7bc"}.fa-yoast{--fa:"\f2b1"}.fa-cloudflare{--fa:"\e07d"}.fa-ups{--fa:"\f7e0"}.fa-pixiv{--fa:"\e640"}.fa-wpexplorer{--fa:"\f2de"}.fa-dyalog{--fa:"\f399"}.fa-bity{--fa:"\f37a"}.fa-stackpath{--fa:"\f842"}.fa-buysellads{--fa:"\f20d"}.fa-first-order{--fa:"\f2b0"}.fa-modx{--fa:"\f285"}.fa-guilded{--fa:"\e07e"}.fa-vnv{--fa:"\f40b"}.fa-js-square,.fa-square-js{--fa:"\f3b9"}.fa-microsoft{--fa:"\f3ca"}.fa-qq{--fa:"\f1d6"}.fa-orcid{--fa:"\f8d2"}.fa-java{--fa:"\f4e4"}.fa-invision{--fa:"\f7b0"}.fa-creative-commons-pd-alt{--fa:"\f4ed"}.fa-centercode{--fa:"\f380"}.fa-glide-g{--fa:"\f2a6"}.fa-drupal{--fa:"\f1a9"}.fa-jxl{--fa:"\e67b"}.fa-dart-lang{--fa:"\e693"}.fa-hire-a-helper{--fa:"\f3b0"}.fa-creative-commons-by{--fa:"\f4e7"}.fa-unity{--fa:"\e049"}.fa-whmcs{--fa:"\f40d"}.fa-rocketchat{--fa:"\f3e8"}.fa-vk{--fa:"\f189"}.fa-untappd{--fa:"\f405"}.fa-mailchimp{--fa:"\f59e"}.fa-css3-alt{--fa:"\f38b"}.fa-reddit-square,.fa-square-reddit{--fa:"\f1a2"}.fa-vimeo-v{--fa:"\f27d"}.fa-contao{--fa:"\f26d"}.fa-square-font-awesome{--fa:"\e5ad"}.fa-deskpro{--fa:"\f38f"}.fa-brave{--fa:"\e63c"}.fa-sistrix{--fa:"\f3ee"}.fa-instagram-square,.fa-square-instagram{--fa:"\e055"}.fa-battle-net{--fa:"\f835"}.fa-the-red-yeti{--fa:"\f69d"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:"\f3af"}.fa-edge{--fa:"\f282"}.fa-threads{--fa:"\e618"}.fa-napster{--fa:"\f3d2"}.fa-snapchat-square,.fa-square-snapchat{--fa:"\f2ad"}.fa-google-plus-g{--fa:"\f0d5"}.fa-artstation{--fa:"\f77a"}.fa-markdown{--fa:"\f60f"}.fa-sourcetree{--fa:"\f7d3"}.fa-google-plus{--fa:"\f2b3"}.fa-diaspora{--fa:"\f791"}.fa-foursquare{--fa:"\f180"}.fa-stack-overflow{--fa:"\f16c"}.fa-github-alt{--fa:"\f113"}.fa-phoenix-squadron{--fa:"\f511"}.fa-pagelines{--fa:"\f18c"}.fa-algolia{--fa:"\f36c"}.fa-red-river{--fa:"\f3e3"}.fa-creative-commons-sa{--fa:"\f4ef"}.fa-safari{--fa:"\f267"}.fa-google{--fa:"\f1a0"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:"\f35c"}.fa-atlassian{--fa:"\f77b"}.fa-linkedin-in{--fa:"\f0e1"}.fa-digital-ocean{--fa:"\f391"}.fa-nimblr{--fa:"\f5a8"}.fa-chromecast{--fa:"\f838"}.fa-evernote{--fa:"\f839"}.fa-hacker-news{--fa:"\f1d4"}.fa-creative-commons-sampling{--fa:"\f4f0"}.fa-adversal{--fa:"\f36a"}.fa-creative-commons{--fa:"\f25e"}.fa-watchman-monitoring{--fa:"\e087"}.fa-fonticons{--fa:"\f280"}.fa-weixin{--fa:"\f1d7"}.fa-shirtsinbulk{--fa:"\f214"}.fa-codepen{--fa:"\f1cb"}.fa-git-alt{--fa:"\f841"}.fa-lyft{--fa:"\f3c3"}.fa-rev{--fa:"\f5b2"}.fa-windows{--fa:"\f17a"}.fa-wizards-of-the-coast{--fa:"\f730"}.fa-square-viadeo,.fa-viadeo-square{--fa:"\f2aa"}.fa-meetup{--fa:"\f2e0"}.fa-centos{--fa:"\f789"}.fa-and{--fa:"\f170"}.fa-cloudsmith{--fa:"\f384"}.fa-opensuse{--fa:"\e62b"}.fa-pied-piper-alt{--fa:"\f1a8"}.fa-dribbble-square,.fa-square-dribbble{--fa:"\f397"}.fa-codiepie{--fa:"\f284"}.fa-node{--fa:"\f419"}.fa-mix{--fa:"\f3cb"}.fa-steam{--fa:"\f1b6"}.fa-cc-apple-pay{--fa:"\f416"}.fa-scribd{--fa:"\f28a"}.fa-debian{--fa:"\e60b"}.fa-openid{--fa:"\f19b"}.fa-instalod{--fa:"\e081"}.fa-files-pinwheel{--fa:"\e69f"}.fa-expeditedssl{--fa:"\f23e"}.fa-sellcast{--fa:"\f2da"}.fa-square-twitter,.fa-twitter-square{--fa:"\f081"}.fa-r-project{--fa:"\f4f7"}.fa-delicious{--fa:"\f1a5"}.fa-freebsd{--fa:"\f3a4"}.fa-vuejs{--fa:"\f41f"}.fa-accusoft{--fa:"\f369"}.fa-ioxhost{--fa:"\f208"}.fa-fonticons-fi{--fa:"\f3a2"}.fa-app-store{--fa:"\f36f"}.fa-cc-mastercard{--fa:"\f1f1"}.fa-itunes-note{--fa:"\f3b5"}.fa-golang{--fa:"\e40f"}.fa-kickstarter,.fa-square-kickstarter{--fa:"\f3bb"}.fa-grav{--fa:"\f2d6"}.fa-weibo{--fa:"\f18a"}.fa-uncharted{--fa:"\e084"}.fa-firstdraft{--fa:"\f3a1"}.fa-square-youtube,.fa-youtube-square{--fa:"\f431"}.fa-wikipedia-w{--fa:"\f266"}.fa-rendact,.fa-wpressr{--fa:"\f3e4"}.fa-angellist{--fa:"\f209"}.fa-galactic-republic{--fa:"\f50c"}.fa-nfc-directional{--fa:"\e530"}.fa-skype{--fa:"\f17e"}.fa-joget{--fa:"\f3b7"}.fa-fedora{--fa:"\f798"}.fa-stripe-s{--fa:"\f42a"}.fa-meta{--fa:"\e49b"}.fa-laravel{--fa:"\f3bd"}.fa-hotjar{--fa:"\f3b1"}.fa-bluetooth-b{--fa:"\f294"}.fa-square-letterboxd{--fa:"\e62e"}.fa-sticker-mule{--fa:"\f3f7"}.fa-creative-commons-zero{--fa:"\f4f3"}.fa-hips{--fa:"\f452"}.fa-css{--fa:"\e6a2"}.fa-behance{--fa:"\f1b4"}.fa-reddit{--fa:"\f1a1"}.fa-discord{--fa:"\f392"}.fa-chrome{--fa:"\f268"}.fa-app-store-ios{--fa:"\f370"}.fa-cc-discover{--fa:"\f1f2"}.fa-wpbeginner{--fa:"\f297"}.fa-confluence{--fa:"\f78d"}.fa-shoelace{--fa:"\e60c"}.fa-mdb{--fa:"\f8ca"}.fa-dochub{--fa:"\f394"}.fa-accessible-icon{--fa:"\f368"}.fa-ebay{--fa:"\f4f4"}.fa-amazon{--fa:"\f270"}.fa-unsplash{--fa:"\e07c"}.fa-yarn{--fa:"\f7e3"}.fa-square-steam,.fa-steam-square{--fa:"\f1b7"}.fa-500px{--fa:"\f26e"}.fa-square-vimeo,.fa-vimeo-square{--fa:"\f194"}.fa-asymmetrik{--fa:"\f372"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:"\f2b4"}.fa-gratipay{--fa:"\f184"}.fa-apple{--fa:"\f179"}.fa-hive{--fa:"\e07f"}.fa-gitkraken{--fa:"\f3a6"}.fa-keybase{--fa:"\f4f5"}.fa-apple-pay{--fa:"\f415"}.fa-padlet{--fa:"\e4a0"}.fa-amazon-pay{--fa:"\f42c"}.fa-github-square,.fa-square-github{--fa:"\f092"}.fa-stumbleupon{--fa:"\f1a4"}.fa-fedex{--fa:"\f797"}.fa-phoenix-framework{--fa:"\f3dc"}.fa-shopify{--fa:"\e057"}.fa-neos{--fa:"\f612"}.fa-square-threads{--fa:"\e619"}.fa-hackerrank{--fa:"\f5f7"}.fa-researchgate{--fa:"\f4f8"}.fa-swift{--fa:"\f8e1"}.fa-angular{--fa:"\f420"}.fa-speakap{--fa:"\f3f3"}.fa-angrycreative{--fa:"\f36e"}.fa-y-combinator{--fa:"\f23b"}.fa-empire{--fa:"\f1d1"}.fa-envira{--fa:"\f299"}.fa-google-scholar{--fa:"\e63b"}.fa-gitlab-square,.fa-square-gitlab{--fa:"\e5ae"}.fa-studiovinari{--fa:"\f3f8"}.fa-pied-piper{--fa:"\f2ae"}.fa-wordpress{--fa:"\f19a"}.fa-product-hunt{--fa:"\f288"}.fa-firefox{--fa:"\f269"}.fa-linode{--fa:"\f2b8"}.fa-goodreads{--fa:"\f3a8"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:"\f264"}.fa-jsfiddle{--fa:"\f1cc"}.fa-sith{--fa:"\f512"}.fa-themeisle{--fa:"\f2b2"}.fa-page4{--fa:"\f3d7"}.fa-hashnode{--fa:"\e499"}.fa-react{--fa:"\f41b"}.fa-cc-paypal{--fa:"\f1f4"}.fa-squarespace{--fa:"\f5be"}.fa-cc-stripe{--fa:"\f1f5"}.fa-creative-commons-share{--fa:"\f4f2"}.fa-bitcoin{--fa:"\f379"}.fa-keycdn{--fa:"\f3ba"}.fa-opera{--fa:"\f26a"}.fa-itch-io{--fa:"\f83a"}.fa-umbraco{--fa:"\f8e8"}.fa-galactic-senate{--fa:"\f50d"}.fa-ubuntu{--fa:"\f7df"}.fa-draft2digital{--fa:"\f396"}.fa-stripe{--fa:"\f429"}.fa-houzz{--fa:"\f27c"}.fa-gg{--fa:"\f260"}.fa-dhl{--fa:"\f790"}.fa-pinterest-square,.fa-square-pinterest{--fa:"\f0d3"}.fa-xing{--fa:"\f168"}.fa-blackberry{--fa:"\f37b"}.fa-creative-commons-pd{--fa:"\f4ec"}.fa-playstation{--fa:"\f3df"}.fa-quinscape{--fa:"\f459"}.fa-less{--fa:"\f41d"}.fa-blogger-b{--fa:"\f37d"}.fa-opencart{--fa:"\f23d"}.fa-vine{--fa:"\f1ca"}.fa-signal-messenger{--fa:"\e663"}.fa-paypal{--fa:"\f1ed"}.fa-gitlab{--fa:"\f296"}.fa-typo3{--fa:"\f42b"}.fa-reddit-alien{--fa:"\f281"}.fa-yahoo{--fa:"\f19e"}.fa-dailymotion{--fa:"\e052"}.fa-affiliatetheme{--fa:"\f36b"}.fa-pied-piper-pp{--fa:"\f1a7"}.fa-bootstrap{--fa:"\f836"}.fa-odnoklassniki{--fa:"\f263"}.fa-nfc-symbol{--fa:"\e531"}.fa-mintbit{--fa:"\e62f"}.fa-ethereum{--fa:"\f42e"}.fa-speaker-deck{--fa:"\f83c"}.fa-creative-commons-nc-eu{--fa:"\f4e9"}.fa-patreon{--fa:"\f3d9"}.fa-avianex{--fa:"\f374"}.fa-ello{--fa:"\f5f1"}.fa-gofore{--fa:"\f3a7"}.fa-bimobject{--fa:"\f378"}.fa-brave-reverse{--fa:"\e63d"}.fa-facebook-f{--fa:"\f39e"}.fa-google-plus-square,.fa-square-google-plus{--fa:"\f0d4"}.fa-web-awesome{--fa:"\e682"}.fa-mandalorian{--fa:"\f50f"}.fa-first-order-alt{--fa:"\f50a"}.fa-osi{--fa:"\f41a"}.fa-google-wallet{--fa:"\f1ee"}.fa-d-and-d-beyond{--fa:"\f6ca"}.fa-periscope{--fa:"\f3da"}.fa-fulcrum{--fa:"\f50b"}.fa-cloudscale{--fa:"\f383"}.fa-forumbee{--fa:"\f211"}.fa-mizuni{--fa:"\f3cc"}.fa-schlix{--fa:"\f3ea"}.fa-square-xing,.fa-xing-square{--fa:"\f169"}.fa-bandcamp{--fa:"\f2d5"}.fa-wpforms{--fa:"\f298"}.fa-cloudversify{--fa:"\f385"}.fa-usps{--fa:"\f7e1"}.fa-megaport{--fa:"\f5a3"}.fa-magento{--fa:"\f3c4"}.fa-spotify{--fa:"\f1bc"}.fa-option-monster{--fa:"\f23c"}.fa-fly{--fa:"\f417"}.fa-square-bluesky{--fa:"\e6a3"}.fa-aviato{--fa:"\f421"}.fa-itunes{--fa:"\f3b4"}.fa-cuttlefish{--fa:"\f38c"}.fa-blogger{--fa:"\f37c"}.fa-flickr{--fa:"\f16e"}.fa-viber{--fa:"\f409"}.fa-soundcloud{--fa:"\f1be"}.fa-digg{--fa:"\f1a6"}.fa-tencent-weibo{--fa:"\f1d5"}.fa-letterboxd{--fa:"\e62d"}.fa-symfony{--fa:"\f83d"}.fa-maxcdn{--fa:"\f136"}.fa-etsy{--fa:"\f2d7"}.fa-facebook-messenger{--fa:"\f39f"}.fa-audible{--fa:"\f373"}.fa-think-peaks{--fa:"\f731"}.fa-bilibili{--fa:"\e3d9"}.fa-erlang{--fa:"\f39d"}.fa-x-twitter{--fa:"\e61b"}.fa-cotton-bureau{--fa:"\f89e"}.fa-dashcube{--fa:"\f210"}.fa-42-group,.fa-innosoft{--fa:"\e080"}.fa-stack-exchange{--fa:"\f18d"}.fa-elementor{--fa:"\f430"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:"\e01e"}.fa-creative-commons-and{--fa:"\f4eb"}.fa-palfed{--fa:"\f3d8"}.fa-superpowers{--fa:"\f2dd"}.fa-resolving{--fa:"\f3e7"}.fa-xbox{--fa:"\f412"}.fa-square-web-awesome-stroke{--fa:"\e684"}.fa-searchengin{--fa:"\f3eb"}.fa-tiktok{--fa:"\e07b"}.fa-facebook-square,.fa-square-facebook{--fa:"\f082"}.fa-renren{--fa:"\f18b"}.fa-linux{--fa:"\f17c"}.fa-glide{--fa:"\f2a5"}.fa-linkedin{--fa:"\f08c"}.fa-hubspot{--fa:"\f3b2"}.fa-deploydog{--fa:"\f38e"}.fa-twitch{--fa:"\f1e8"}.fa-flutter{--fa:"\e694"}.fa-ravelry{--fa:"\f2d9"}.fa-mixer{--fa:"\e056"}.fa-lastfm-square,.fa-square-lastfm{--fa:"\f203"}.fa-vimeo{--fa:"\f40a"}.fa-mendeley{--fa:"\f7b3"}.fa-uniregistry{--fa:"\f404"}.fa-figma{--fa:"\f799"}.fa-creative-commons-remix{--fa:"\f4ee"}.fa-cc-amazon-pay{--fa:"\f42d"}.fa-dropbox{--fa:"\f16b"}.fa-instagram{--fa:"\f16d"}.fa-cmplid{--fa:"\e360"}.fa-upwork{--fa:"\e641"}.fa-facebook{--fa:"\f09a"}.fa-gripfire{--fa:"\f3ac"}.fa-jedi-order{--fa:"\f50e"}.fa-uikit{--fa:"\f403"}.fa-fort-awesome-alt{--fa:"\f3a3"}.fa-phabricator{--fa:"\f3db"}.fa-ussunnah{--fa:"\f407"}.fa-earlybirds{--fa:"\f39a"}.fa-trade-federation{--fa:"\f513"}.fa-autoprefixer{--fa:"\f41c"}.fa-whatsapp{--fa:"\f232"}.fa-square-upwork{--fa:"\e67c"}.fa-slideshare{--fa:"\f1e7"}.fa-google-play{--fa:"\f3ab"}.fa-viadeo{--fa:"\f2a9"}.fa-line{--fa:"\f3c0"}.fa-google-drive{--fa:"\f3aa"}.fa-servicestack{--fa:"\f3ec"}.fa-simplybuilt{--fa:"\f215"}.fa-bitbucket{--fa:"\f171"}.fa-imdb{--fa:"\f2d8"}.fa-deezer{--fa:"\e077"}.fa-raspberry-pi{--fa:"\f7bb"}.fa-jira{--fa:"\f7b1"}.fa-docker{--fa:"\f395"}.fa-screenpal{--fa:"\e570"}.fa-bluetooth{--fa:"\f293"}.fa-gitter{--fa:"\f426"}.fa-d-and-d{--fa:"\f38d"}.fa-microblog{--fa:"\e01a"}.fa-cc-diners-club{--fa:"\f24c"}.fa-gg-circle{--fa:"\f261"}.fa-pied-piper-hat{--fa:"\f4e5"}.fa-kickstarter-k{--fa:"\f3bc"}.fa-yandex{--fa:"\f413"}.fa-readme{--fa:"\f4d5"}.fa-html5{--fa:"\f13b"}.fa-sellsy{--fa:"\f213"}.fa-square-web-awesome{--fa:"\e683"}.fa-sass{--fa:"\f41e"}.fa-wirsindhandwerk,.fa-wsh{--fa:"\e2d0"}.fa-buromobelexperte{--fa:"\f37f"}.fa-salesforce{--fa:"\f83b"}.fa-octopus-deploy{--fa:"\e082"}.fa-medapps{--fa:"\f3c6"}.fa-ns8{--fa:"\f3d5"}.fa-pinterest-p{--fa:"\f231"}.fa-apper{--fa:"\f371"}.fa-fort-awesome{--fa:"\f286"}.fa-waze{--fa:"\f83f"}.fa-bluesky{--fa:"\e671"}.fa-cc-jcb{--fa:"\f24b"}.fa-snapchat,.fa-snapchat-ghost{--fa:"\f2ab"}.fa-fantasy-flight-games{--fa:"\f6dc"}.fa-rust{--fa:"\e07a"}.fa-wix{--fa:"\f5cf"}.fa-behance-square,.fa-square-behance{--fa:"\f1b5"}.fa-supple{--fa:"\f3f9"}.fa-webflow{--fa:"\e65c"}.fa-rebel{--fa:"\f1d0"}.fa-css3{--fa:"\f13c"}.fa-staylinked{--fa:"\f3f5"}.fa-kaggle{--fa:"\f5fa"}.fa-space-awesome{--fa:"\e5ac"}.fa-deviantart{--fa:"\f1bd"}.fa-cpanel{--fa:"\f388"}.fa-goodreads-g{--fa:"\f3a9"}.fa-git-square,.fa-square-git{--fa:"\f1d2"}.fa-square-tumblr,.fa-tumblr-square{--fa:"\f174"}.fa-trello{--fa:"\f181"}.fa-creative-commons-nc-jp{--fa:"\f4ea"}.fa-get-pocket{--fa:"\f265"}.fa-perbyte{--fa:"\e083"}.fa-grunt{--fa:"\f3ad"}.fa-weebly{--fa:"\f5cc"}.fa-connectdevelop{--fa:"\f20e"}.fa-leanpub{--fa:"\f212"}.fa-black-tie{--fa:"\f27e"}.fa-themeco{--fa:"\f5c6"}.fa-python{--fa:"\f3e2"}.fa-android{--fa:"\f17b"}.fa-bots{--fa:"\e340"}.fa-free-code-camp{--fa:"\f2c5"}.fa-hornbill{--fa:"\f592"}.fa-js{--fa:"\f3b8"}.fa-ideal{--fa:"\e013"}.fa-git{--fa:"\f1d3"}.fa-dev{--fa:"\f6cc"}.fa-sketch{--fa:"\f7c6"}.fa-yandex-international{--fa:"\f414"}.fa-cc-amex{--fa:"\f1f3"}.fa-uber{--fa:"\f402"}.fa-github{--fa:"\f09b"}.fa-php{--fa:"\f457"}.fa-alipay{--fa:"\f642"}.fa-youtube{--fa:"\f167"}.fa-skyatlas{--fa:"\f216"}.fa-firefox-browser{--fa:"\e007"}.fa-replyd{--fa:"\f3e6"}.fa-suse{--fa:"\f7d6"}.fa-jenkins{--fa:"\f3b6"}.fa-twitter{--fa:"\f099"}.fa-rockrms{--fa:"\f3e9"}.fa-pinterest{--fa:"\f0d2"}.fa-buffer{--fa:"\f837"}.fa-npm{--fa:"\f3d4"}.fa-yammer{--fa:"\f840"}.fa-btc{--fa:"\f15a"}.fa-dribbble{--fa:"\f17d"}.fa-stumbleupon-circle{--fa:"\f1a3"}.fa-internet-explorer{--fa:"\f26b"}.fa-stubber{--fa:"\e5c7"}.fa-telegram,.fa-telegram-plane{--fa:"\f2c6"}.fa-old-republic{--fa:"\f510"}.fa-odysee{--fa:"\e5c6"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:"\f40c"}.fa-node-js{--fa:"\f3d3"}.fa-edge-legacy{--fa:"\e078"}.fa-slack,.fa-slack-hash{--fa:"\f198"}.fa-medrt{--fa:"\f3c8"}.fa-usb{--fa:"\f287"}.fa-tumblr{--fa:"\f173"}.fa-vaadin{--fa:"\f408"}.fa-quora{--fa:"\f2c4"}.fa-square-x-twitter{--fa:"\e61a"}.fa-reacteurope{--fa:"\f75d"}.fa-medium,.fa-medium-m{--fa:"\f23a"}.fa-amilia{--fa:"\f36d"}.fa-mixcloud{--fa:"\f289"}.fa-flipboard{--fa:"\f44d"}.fa-viacoin{--fa:"\f237"}.fa-critical-role{--fa:"\f6c9"}.fa-sitrox{--fa:"\e44a"}.fa-discourse{--fa:"\f393"}.fa-joomla{--fa:"\f1aa"}.fa-mastodon{--fa:"\f4f6"}.fa-airbnb{--fa:"\f834"}.fa-wolf-pack-battalion{--fa:"\f514"}.fa-buy-n-large{--fa:"\f8a6"}.fa-gulp{--fa:"\f3ae"}.fa-creative-commons-sampling-plus{--fa:"\f4f1"}.fa-strava{--fa:"\f428"}.fa-ember{--fa:"\f423"}.fa-canadian-maple-leaf{--fa:"\f785"}.fa-teamspeak{--fa:"\f4f9"}.fa-pushed{--fa:"\f3e1"}.fa-wordpress-simple{--fa:"\f411"}.fa-nutritionix{--fa:"\f3d6"}.fa-wodu{--fa:"\e088"}.fa-google-pay{--fa:"\e079"}.fa-intercom{--fa:"\f7af"}.fa-zhihu{--fa:"\f63f"}.fa-korvue{--fa:"\f42f"}.fa-pix{--fa:"\e43a"}.fa-steam-symbol{--fa:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} diff --git a/template/CODE_OF_CONDUCT.md b/template/CODE_OF_CONDUCT.md index 22171e4..6f8f13c 100644 --- a/template/CODE_OF_CONDUCT.md +++ b/template/CODE_OF_CONDUCT.md @@ -1,25 +1,28 @@ # Contributor Code of Conduct -As contributors and maintainers of this project, we pledge to respect all people -who contribute through reporting issues, posting suggestions, updating any -material, submitting pull requests, and other activities. +As contributors and maintainers of this project, we pledge to respect +all people who contribute through reporting issues, posting suggestions, +updating any material, submitting pull requests, and other activities. -We are committed to making participation in this project a harassment-free -experience for everyone, regardless of level of experience, gender, gender -identity and expression, sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, or religion. +We are committed to making participation in this project a +harassment-free experience for everyone, regardless of level of +experience, gender, gender identity and expression, sexual orientation, +disability, personal appearance, body size, race, ethnicity, age, or +religion. -Examples of unacceptable behavior by participants include the use of sexual -language or imagery, derogatory comments or personal attacks, trolling, public -or private harassment, insults, or other unprofessional conduct. +Examples of unacceptable behavior by participants include the use of +sexual language or imagery, derogatory comments or personal attacks, +trolling, public or private harassment, insults, or other unprofessional +conduct. -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct. Project maintainers who do not follow the -Code of Conduct may be removed from the project team. +Project maintainers have the right and responsibility to remove, edit, +or reject comments, commits, code, wiki edits, issues, and other +contributions that are not aligned to this Code of Conduct. Project +maintainers who do not follow the Code of Conduct may be removed from +the project team. -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by opening an issue or contacting one or more of the project +Instances of abusive, harassing, or otherwise unacceptable behavior may +be reported by opening an issue or contacting one or more of the project maintainers. This Code of Conduct is adapted from the Contributor Covenant From b8f6bc191ef0f1c1cad94fa37c299ba3ae9d25fa Mon Sep 17 00:00:00 2001 From: "Luke W. Johnston" Date: Wed, 2 Sep 2026 14:06:28 +0200 Subject: [PATCH 8/8] =?UTF-8?q?build:=20=F0=9F=94=A8=20fix=20pre-commit=20?= =?UTF-8?q?build=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .pre-commit-config.yaml | 22 ++------------ CHANGELOG.md | 1 + CONTRIBUTING.md | 14 ++++----- template/CODE_OF_CONDUCT.md | 35 +++++++++++------------ template/includes/objectives/_session.qmd | 1 + template/overview/syllabus.qmd | 2 +- 6 files changed, 28 insertions(+), 47 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 14a5c95..cd8586f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,13 +14,13 @@ repos: # sub-packages, which confuses pre-commit when it tries to find the latest # version - repo: https://github.com/adhtruong/mirrors-typos - rev: v1.45.1 + rev: v1.50.0 hooks: - id: typos args: [--config, .config/typos.toml, --force-exclude] - repo: https://github.com/jolars/panache-pre-commit - rev: v2.51.0 + rev: v3.8.0 hooks: - id: panache-format @@ -33,21 +33,3 @@ repos: args: [--fix=lf] - id: check-merge-conflict args: [--assume-in-merge] - - - repo: https://github.com/commitizen-tools/commitizen - rev: v4.18.0 - hooks: - - id: commitizen - - # Use the mirror since the main `typos` repo has tags for different - # sub-packages, which confuses pre-commit when it tries to find the latest - # version - - repo: https://github.com/adhtruong/mirrors-typos - rev: v1.50.0 - hooks: - - id: typos - - - repo: https://github.com/rvben/rumdl-pre-commit - rev: v0.2.62 - hooks: - - id: rumdl-fmt # Auto-format diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29..1120a3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1 @@ + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b9ebd2b..8ca2343 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,9 +20,9 @@ manage our project, such as to run checks and test the template. Both the uv and justfile websites have a more detailed guide on using uv, but below are some simple instructions to get you started. -It's easiest to first -[install uv](https://docs.astral.sh/uv/getting-started/installation/) and then -install justfile with uv. Once you've installed uv, install justfile by running: +It's easiest to first [install +uv](https://docs.astral.sh/uv/getting-started/installation/) and then install +justfile with uv. Once you've installed uv, install justfile by running: ```bash uv tool install rust-just @@ -48,10 +48,10 @@ Meaning that if you make changes to the template and try to test it, it won't be able to test those changes. You have to commit the changes first in order for Copier to use them. -When committing changes, please try to follow -[Conventional Commits](https://decisions.seedcase-project.org/why-conventional-commits/) -as Git messages. Using this convention allows us to be able to automatically -create a release based on the commit message by using +When committing changes, please try to follow [Conventional +Commits](https://decisions.seedcase-project.org/why-conventional-commits/) as +Git messages. Using this convention allows us to be able to automatically create +a release based on the commit message by using [Cocogitto](https://decisions.seedcase-project.org/why-semantic-release-with-cocogitto/). If you don't use Conventional Commits when making a commit, we will revise the pull request title to follow that format. That's because we use squash merges diff --git a/template/CODE_OF_CONDUCT.md b/template/CODE_OF_CONDUCT.md index 6f8f13c..22171e4 100644 --- a/template/CODE_OF_CONDUCT.md +++ b/template/CODE_OF_CONDUCT.md @@ -1,28 +1,25 @@ # Contributor Code of Conduct -As contributors and maintainers of this project, we pledge to respect -all people who contribute through reporting issues, posting suggestions, -updating any material, submitting pull requests, and other activities. +As contributors and maintainers of this project, we pledge to respect all people +who contribute through reporting issues, posting suggestions, updating any +material, submitting pull requests, and other activities. -We are committed to making participation in this project a -harassment-free experience for everyone, regardless of level of -experience, gender, gender identity and expression, sexual orientation, -disability, personal appearance, body size, race, ethnicity, age, or -religion. +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, or religion. -Examples of unacceptable behavior by participants include the use of -sexual language or imagery, derogatory comments or personal attacks, -trolling, public or private harassment, insults, or other unprofessional -conduct. +Examples of unacceptable behavior by participants include the use of sexual +language or imagery, derogatory comments or personal attacks, trolling, public +or private harassment, insults, or other unprofessional conduct. -Project maintainers have the right and responsibility to remove, edit, -or reject comments, commits, code, wiki edits, issues, and other -contributions that are not aligned to this Code of Conduct. Project -maintainers who do not follow the Code of Conduct may be removed from -the project team. +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct. Project maintainers who do not follow the +Code of Conduct may be removed from the project team. -Instances of abusive, harassing, or otherwise unacceptable behavior may -be reported by opening an issue or contacting one or more of the project +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by opening an issue or contacting one or more of the project maintainers. This Code of Conduct is adapted from the Contributor Covenant diff --git a/template/includes/objectives/_session.qmd b/template/includes/objectives/_session.qmd index e69de29..4396ee2 100644 --- a/template/includes/objectives/_session.qmd +++ b/template/includes/objectives/_session.qmd @@ -0,0 +1 @@ +1. Objective one diff --git a/template/overview/syllabus.qmd b/template/overview/syllabus.qmd index b0c7591..7bd7dc9 100644 --- a/template/overview/syllabus.qmd +++ b/template/overview/syllabus.qmd @@ -13,7 +13,7 @@ in the [schedule](/overview/schedule.qmd), which will be covered in order: The overall aim of this workshop is to enable you to: -1. +1. Aim one Broken down into specific objectives for each session, we've designed the workshop to enable you to do the following: