From 98d1f3c9e2a7ed29bd513c1cf51fe45130da88a6 Mon Sep 17 00:00:00 2001 From: damithc Date: Tue, 12 Sep 2023 01:20:47 +0800 Subject: [PATCH 001/169] Migrate docs to MarkBind Let's migrate the docs site from Jekyll to MarkBind. Primary author: @tlylt in se-edu/addressbook-level3/pull/156 Further tweaks: @damithc in se-edu/addressbook-level3/pull/206 --- .github/workflows/docs.yml | 25 + .gitignore | 1 + docs/.gitignore | 23 + docs/AboutUs.md | 6 +- docs/Configuration.md | 6 +- docs/DevOps.md | 13 +- docs/DeveloperGuide.md | 116 +- docs/Documentation.md | 28 +- docs/Gemfile | 10 - docs/Logging.md | 6 +- docs/SettingUp.md | 26 +- docs/Testing.md | 19 +- docs/UserGuide.md | 52 +- docs/_config.yml | 15 - docs/_data/projects.yml | 23 - docs/_includes/custom-head.html | 6 - docs/_includes/head.html | 12 - docs/_includes/header.html | 36 - docs/_layouts/alt-page.html | 14 - docs/_layouts/default.html | 18 - docs/_layouts/page.html | 14 - docs/_markbind/layouts/default.md | 66 + docs/_markbind/variables.json | 3 + docs/_markbind/variables.md | 4 + docs/_sass/minima/_base.scss | 295 - docs/_sass/minima/_layout.scss | 263 - docs/_sass/minima/custom-mixins.scss | 21 - docs/_sass/minima/custom-styles.scss | 34 - docs/_sass/minima/custom-variables.scss | 76 - docs/_sass/minima/initialize.scss | 51 - docs/_sass/minima/skins/classic.scss | 84 - docs/_sass/minima/skins/solarized-dark.scss | 4 - docs/_sass/minima/skins/solarized.scss | 133 - docs/assets/css/style.scss | 12 - docs/images/ArchitectureDiagram.png | Bin 19887 -> 0 bytes docs/images/ArchitectureSequenceDiagram.png | Bin 15175 -> 0 bytes docs/images/BetterModelClassDiagram.png | Bin 14116 -> 0 bytes docs/images/CommitActivityDiagram.png | Bin 16227 -> 0 bytes docs/images/ComponentManagers.png | Bin 17411 -> 0 bytes docs/images/DeleteSequenceDiagram.png | Bin 28142 -> 0 bytes docs/images/LogicClassDiagram.png | Bin 36769 -> 0 bytes docs/images/LogicStorageDIP.png | Bin 5808 -> 0 bytes docs/images/ModelClassDiagram.png | Bin 27204 -> 0 bytes docs/images/ParserClasses.png | Bin 28856 -> 0 bytes docs/images/StorageClassDiagram.png | Bin 29426 -> 0 bytes docs/images/UiClassDiagram.png | Bin 48363 -> 0 bytes docs/images/UndoRedoState0.png | Bin 6619 -> 0 bytes docs/images/UndoRedoState1.png | Bin 7454 -> 0 bytes docs/images/UndoRedoState2.png | Bin 7855 -> 0 bytes docs/images/UndoRedoState3.png | Bin 7588 -> 0 bytes docs/images/UndoRedoState4.png | Bin 7605 -> 0 bytes docs/images/UndoRedoState5.png | Bin 9427 -> 0 bytes docs/images/tracing/LogicSequenceDiagram.png | Bin 16688 -> 0 bytes docs/index.md | 6 +- docs/package-lock.json | 8587 ++++++++++++++++++ docs/package.json | 14 + docs/site.json | 29 + docs/stylesheets/main.css | 144 + docs/team/johndoe.md | 4 +- docs/tutorials/AddRemark.md | 49 +- docs/tutorials/RemovingFields.md | 23 +- docs/tutorials/TracingCode.md | 76 +- 62 files changed, 9136 insertions(+), 1311 deletions(-) create mode 100644 .github/workflows/docs.yml create mode 100644 docs/.gitignore delete mode 100644 docs/Gemfile delete mode 100644 docs/_config.yml delete mode 100644 docs/_data/projects.yml delete mode 100644 docs/_includes/custom-head.html delete mode 100644 docs/_includes/head.html delete mode 100644 docs/_includes/header.html delete mode 100644 docs/_layouts/alt-page.html delete mode 100644 docs/_layouts/default.html delete mode 100644 docs/_layouts/page.html create mode 100644 docs/_markbind/layouts/default.md create mode 100644 docs/_markbind/variables.json create mode 100644 docs/_markbind/variables.md delete mode 100644 docs/_sass/minima/_base.scss delete mode 100644 docs/_sass/minima/_layout.scss delete mode 100644 docs/_sass/minima/custom-mixins.scss delete mode 100644 docs/_sass/minima/custom-styles.scss delete mode 100644 docs/_sass/minima/custom-variables.scss delete mode 100644 docs/_sass/minima/initialize.scss delete mode 100644 docs/_sass/minima/skins/classic.scss delete mode 100644 docs/_sass/minima/skins/solarized-dark.scss delete mode 100644 docs/_sass/minima/skins/solarized.scss delete mode 100644 docs/assets/css/style.scss delete mode 100644 docs/images/ArchitectureDiagram.png delete mode 100644 docs/images/ArchitectureSequenceDiagram.png delete mode 100644 docs/images/BetterModelClassDiagram.png delete mode 100644 docs/images/CommitActivityDiagram.png delete mode 100644 docs/images/ComponentManagers.png delete mode 100644 docs/images/DeleteSequenceDiagram.png delete mode 100644 docs/images/LogicClassDiagram.png delete mode 100644 docs/images/LogicStorageDIP.png delete mode 100644 docs/images/ModelClassDiagram.png delete mode 100644 docs/images/ParserClasses.png delete mode 100644 docs/images/StorageClassDiagram.png delete mode 100644 docs/images/UiClassDiagram.png delete mode 100644 docs/images/UndoRedoState0.png delete mode 100644 docs/images/UndoRedoState1.png delete mode 100644 docs/images/UndoRedoState2.png delete mode 100644 docs/images/UndoRedoState3.png delete mode 100644 docs/images/UndoRedoState4.png delete mode 100644 docs/images/UndoRedoState5.png delete mode 100644 docs/images/tracing/LogicSequenceDiagram.png create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/site.json create mode 100644 docs/stylesheets/main.css diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000000..57737a615fc --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,25 @@ +name: MarkBind Action + +on: + push: + branches: + - master + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + steps: + - name: Install Graphviz + run: sudo apt-get install graphviz + - name: Install Java + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + - name: Build & Deploy MarkBind site + uses: MarkBind/markbind-action@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + rootDirectory: './docs' + baseUrl: '/addressbook-level3' # replace with your repo name + version: '^5.1.0' diff --git a/.gitignore b/.gitignore index 284c4ca7cd9..eab4c7db6a5 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ src/test/data/sandbox/ # MacOS custom attributes files created by Finder .DS_Store docs/_site/ +docs/_markbind/logs/ diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000000..1748e487fbd --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,23 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +_markbind/logs/ + +# Dependency directories +node_modules/ + +# Production build files (change if you output the build to a different directory) +_site/ + +# Env +.env +.env.local + +# IDE configs +.vscode/ +.idea/* +*.iml diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 1c9514e966a..8cf4ab68e9e 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,8 +1,10 @@ --- -layout: page -title: About Us + layout: default.md + title: "About Us" --- +# About Us + We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg). You can reach us at the email `seer[at]comp.nus.edu.sg` diff --git a/docs/Configuration.md b/docs/Configuration.md index 13cf0faea16..32f6255f3b9 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -1,6 +1,8 @@ --- -layout: page -title: Configuration guide + layout: default.md + title: "Configuration guide" --- +# Configuration guide + Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: `config.json`). diff --git a/docs/DevOps.md b/docs/DevOps.md index d2fd91a6001..8228c845e86 100644 --- a/docs/DevOps.md +++ b/docs/DevOps.md @@ -1,12 +1,15 @@ --- -layout: page -title: DevOps guide + layout: default.md + title: "DevOps guide" + pageNav: 3 --- -* Table of Contents -{:toc} +# DevOps guide --------------------------------------------------------------------------------------------------------------------- + + + + ## Build automation diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 1b56bb5d31b..519c64ef564 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,15 +1,19 @@ --- -layout: page -title: Developer Guide + layout: default.md + title: "Developer Guide" + pageNav: 3 --- -* Table of Contents -{:toc} + +# AB-3 Developer Guide + + + -------------------------------------------------------------------------------------------------------------------- ## **Acknowledgements** -* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} +_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_ -------------------------------------------------------------------------------------------------------------------- @@ -21,14 +25,9 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md). ## **Design** -
- -:bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams. -
- ### Architecture - + The ***Architecture Diagram*** given above explains the high-level design of the App. @@ -53,7 +52,7 @@ The bulk of the app's work is done by the following four components: The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. - + Each of the four main components (also shown in the diagram above), @@ -62,7 +61,7 @@ Each of the four main components (also shown in the diagram above), For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. - + The sections below give more details of each component. @@ -70,7 +69,7 @@ The sections below give more details of each component. The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) -![Structure of the UI Component](images/UiClassDiagram.png) + The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. @@ -89,14 +88,16 @@ The `UI` component, Here's a (partial) class diagram of the `Logic` component: - + The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. -![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png) + + + -
:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram. -
+**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram. +
How the `Logic` component works: @@ -108,7 +109,7 @@ How the `Logic` component works: Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: - + How the parsing works: * When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. @@ -117,7 +118,7 @@ How the parsing works: ### Model component **API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) - + The `Model` component, @@ -127,18 +128,20 @@ The `Model` component, * stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. * does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components) -
:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
+ + +**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
- + -
+ ### Storage component **API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) - + The `Storage` component, * can save both address book data and user preference data in JSON format, and read them back into corresponding objects. @@ -171,58 +174,67 @@ Given below is an example usage scenario and how the undo/redo mechanism behaves Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. -![UndoRedoState0](images/UndoRedoState0.png) + Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. -![UndoRedoState1](images/UndoRedoState1.png) + Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. -![UndoRedoState2](images/UndoRedoState2.png) + -
:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. + -
+**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. + + Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. -![UndoRedoState3](images/UndoRedoState3.png) + + + + -
:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather +**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo. -
+
The following sequence diagram shows how an undo operation goes through the `Logic` component: -![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png) + -
:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. + -
+**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. + + Similarly, how an undo operation goes through the `Model` component is shown below: -![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png) + The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. -
:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. + + +**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. -
+ Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. -![UndoRedoState4](images/UndoRedoState4.png) + Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. -![UndoRedoState5](images/UndoRedoState5.png) + The following activity diagram summarizes what happens when a user executes a new command: - + #### Design considerations: @@ -275,14 +287,14 @@ _{Explain here how the data archiving feature will be implemented}_ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` -| Priority | As a …​ | I want to …​ | So that I can…​ | -| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | user | add a new person | | -| `* * *` | user | delete a person | remove entries that I no longer need | -| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | -| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | -| `*` | user with many persons in the address book | sort persons by name | locate a person easily | +| Priority | As a …​ | I want to …​ | So that I can…​ | +|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------| +| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | +| `* * *` | user | add a new person | | +| `* * *` | user | delete a person | remove entries that I no longer need | +| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | +| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | +| `*` | user with many persons in the address book | sort persons by name | locate a person easily | *{More to be added}* @@ -334,10 +346,12 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Given below are instructions to test the app manually. -
:information_source: **Note:** These instructions only provide a starting point for testers to work on; + + +**Note:** These instructions only provide a starting point for testers to work on; testers are expected to do more *exploratory* testing. -
+ ### Launch and shutdown diff --git a/docs/Documentation.md b/docs/Documentation.md index 3e68ea364e7..082e652d947 100644 --- a/docs/Documentation.md +++ b/docs/Documentation.md @@ -1,29 +1,21 @@ --- -layout: page -title: Documentation guide + layout: default.md + title: "Documentation guide" + pageNav: 3 --- -**Setting up and maintaining the project website:** - -* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation. -* The `docs/` folder is used for documentation. -* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html). -* Note these points when adapting the documentation to a different project/product: - * The 'Site-wide settings' section of the page linked above has information on how to update site-wide elements such as the top navigation bar. - * :bulb: In addition to updating content files, you might have to update the config files `docs\_config.yml` and `docs\_sass\minima\_base.scss` (which contains a reference to `AB-3` that comes into play when converting documentation pages to PDF format). -* If you are using Intellij for editing documentation files, you can consider enabling 'soft wrapping' for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping) +# Documentation Guide +* We use [**MarkBind**](https://markbind.org/) to manage documentation. +* The `docs/` folder contains the source files for the documentation website. +* To learn how set it up and maintain the project website, follow the guide [[se-edu/guides] Working with Forked MarkBind sites](https://se-education.org/guides/tutorials/markbind-forked-sites.html) for project documentation. **Style guidance:** * Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style). +* Also relevant is the [_se-edu/guides **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html). -* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html) - -**Diagrams:** - -* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html) -**Converting a document to the PDF format:** +**Converting to PDF** -* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html) +* See the guide [_se-edu/guides **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html). diff --git a/docs/Gemfile b/docs/Gemfile deleted file mode 100644 index c8385d85874..00000000000 --- a/docs/Gemfile +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } - -gem 'jekyll' -gem 'github-pages', group: :jekyll_plugins -gem 'wdm', '~> 0.1.0' if Gem.win_platform? -gem 'webrick' diff --git a/docs/Logging.md b/docs/Logging.md index 5e4fb9bc217..589644ad5c6 100644 --- a/docs/Logging.md +++ b/docs/Logging.md @@ -1,8 +1,10 @@ --- -layout: page -title: Logging guide + layout: default.md + title: "Logging guide" --- +# Logging guide + * We are using `java.util.logging` package for logging. * The `LogsCenter` class is used to manage the logging levels and logging destinations. * The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to the specified logging level. diff --git a/docs/SettingUp.md b/docs/SettingUp.md index 275445bd551..03df0295bd2 100644 --- a/docs/SettingUp.md +++ b/docs/SettingUp.md @@ -1,27 +1,32 @@ --- -layout: page -title: Setting up and getting started + layout: default.md + title: "Setting up and getting started" + pageNav: 3 --- -* Table of Contents -{:toc} +# Setting up and getting started + + -------------------------------------------------------------------------------------------------------------------- ## Setting up the project in your computer -
:exclamation: **Caution:** + +**Caution:** Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps. -
+ First, **fork** this repo, and **clone** the fork into your computer. If you plan to use Intellij IDEA (highly recommended): 1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**. -1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.
- :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project. +1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA. + + Note: Importing a Gradle project is slightly different from importing a normal Java project. + 1. **Verify the setup**: 1. Run the `seedu.address.Main` and try a few commands. 1. [Run the tests](Testing.md) to ensure they all pass. @@ -34,10 +39,11 @@ If you plan to use Intellij IDEA (highly recommended): If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA's coding style to match ours. -
:bulb: **Tip:** + + **Tip:** Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code. -
+ 1. **Set up CI** diff --git a/docs/Testing.md b/docs/Testing.md index 8a99e82438a..78ddc57e670 100644 --- a/docs/Testing.md +++ b/docs/Testing.md @@ -1,12 +1,15 @@ --- -layout: page -title: Testing guide + layout: default.md + title: "Testing guide" + pageNav: 3 --- -* Table of Contents -{:toc} +# Testing guide --------------------------------------------------------------------------------------------------------------------- + + + + ## Running tests @@ -19,8 +22,10 @@ There are two ways to run tests. * **Method 2: Using Gradle** * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`) -
:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle. -
+ + +**Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle. + -------------------------------------------------------------------------------------------------------------------- diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 7abd1984218..5123a969436 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,12 +1,15 @@ --- -layout: page -title: User Guide + layout: default.md + title: "User Guide" + pageNav: 3 --- -AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. +# AB-3 User Guide -* Table of Contents -{:toc} +AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. + + + -------------------------------------------------------------------------------------------------------------------- @@ -41,9 +44,9 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo ## Features -
+ -**:information_source: Notes about the command format:**
+**Notes about the command format:**
* Words in `UPPER_CASE` are the parameters to be supplied by the user.
e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. @@ -61,7 +64,7 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo e.g. if the command specifies `help 123`, it will be interpreted as `help`. * If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application. -
+ ### Viewing help : `help` @@ -78,9 +81,10 @@ Adds a person to the address book. Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` -
:bulb: **Tip:** -A person can have any number of tags (including 0) -
+ + +**Tip:** A person can have any number of tags (including 0) + Examples: * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` @@ -161,10 +165,12 @@ AddressBook data are saved in the hard disk automatically after any command that AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. -
:exclamation: **Caution:** -If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
-Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly. -
+ + +**Caution:** +If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
+Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly. +
### Archiving data files `[coming in v2.0]` @@ -187,12 +193,12 @@ _Details coming soon ..._ ## Command summary -Action | Format, Examples ---------|------------------ -**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -**Clear** | `clear` +Action | Format, Examples +-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------- +**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` +**Clear** | `clear` **Delete** | `delete INDEX`
e.g., `delete 3` -**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
e.g.,`edit 2 n/James Lee e/jameslee@example.com` -**Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake` -**List** | `list` -**Help** | `help` +**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
e.g.,`edit 2 n/James Lee e/jameslee@example.com` +**Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake` +**List** | `list` +**Help** | `help` diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 6bd245d8f4e..00000000000 --- a/docs/_config.yml +++ /dev/null @@ -1,15 +0,0 @@ -title: "AB-3" -theme: minima - -header_pages: - - UserGuide.md - - DeveloperGuide.md - - AboutUs.md - -markdown: kramdown - -repository: "se-edu/addressbook-level3" -github_icon: "images/github-icon.png" - -plugins: - - jemoji diff --git a/docs/_data/projects.yml b/docs/_data/projects.yml deleted file mode 100644 index 8f3e50cb601..00000000000 --- a/docs/_data/projects.yml +++ /dev/null @@ -1,23 +0,0 @@ -- name: "AB-1" - url: https://se-edu.github.io/addressbook-level1 - -- name: "AB-2" - url: https://se-edu.github.io/addressbook-level2 - -- name: "AB-3" - url: https://se-edu.github.io/addressbook-level3 - -- name: "AB-4" - url: https://se-edu.github.io/addressbook-level4 - -- name: "Duke" - url: https://se-edu.github.io/duke - -- name: "Collate" - url: https://se-edu.github.io/collate - -- name: "Book" - url: https://se-edu.github.io/se-book - -- name: "Resources" - url: https://se-edu.github.io/resources diff --git a/docs/_includes/custom-head.html b/docs/_includes/custom-head.html deleted file mode 100644 index 8559a67ffad..00000000000 --- a/docs/_includes/custom-head.html +++ /dev/null @@ -1,6 +0,0 @@ -{% comment %} - Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons: - - 1. Head over to https://realfavicongenerator.net/ to add your own favicons. - 2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet. -{% endcomment %} diff --git a/docs/_includes/head.html b/docs/_includes/head.html deleted file mode 100644 index 83ac5326933..00000000000 --- a/docs/_includes/head.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - {%- include custom-head.html -%} - - {{page.title}} - - diff --git a/docs/_includes/header.html b/docs/_includes/header.html deleted file mode 100644 index 33badcd4f99..00000000000 --- a/docs/_includes/header.html +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/docs/_layouts/alt-page.html b/docs/_layouts/alt-page.html deleted file mode 100644 index 5dbc6ef245f..00000000000 --- a/docs/_layouts/alt-page.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- -
- -
-

{{ page.alt_title | escape }}

-
- -
- {{ content }} -
- -
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html deleted file mode 100644 index e092cd572e0..00000000000 --- a/docs/_layouts/default.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - {%- include head.html -%} - - - - {%- include header.html -%} - -
-
- {{ content }} -
-
- - - - diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html deleted file mode 100644 index 01e4b2a93b8..00000000000 --- a/docs/_layouts/page.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- -
- -
-

{{ page.title | escape }}

-
- -
- {{ content }} -
- -
diff --git a/docs/_markbind/layouts/default.md b/docs/_markbind/layouts/default.md new file mode 100644 index 00000000000..7348aace92c --- /dev/null +++ b/docs/_markbind/layouts/default.md @@ -0,0 +1,66 @@ + + + + +
+ + AB-3 +
  • User Guide
  • +
  • Developer Guide
  • +
  • About Us
  • +
  • :fab-github: +
  • +
  • + +
  • +
    +
    + +
    + +
    + {{ content }} +
    + + +
    + +
    + +
    + [**Powered by** {{MarkBind}}, generated on {{timestamp}}] +
    +
    diff --git a/docs/_markbind/variables.json b/docs/_markbind/variables.json new file mode 100644 index 00000000000..9d89eb0358b --- /dev/null +++ b/docs/_markbind/variables.json @@ -0,0 +1,3 @@ +{ + "jsonVariableExample": "Your variables can be defined here as well" +} diff --git a/docs/_markbind/variables.md b/docs/_markbind/variables.md new file mode 100644 index 00000000000..89ae5318fa4 --- /dev/null +++ b/docs/_markbind/variables.md @@ -0,0 +1,4 @@ + +To inject this HTML segment in your markbind files, use {{ example }} where you want to place it. +More generally, surround the segment's id with double curly braces. + diff --git a/docs/_sass/minima/_base.scss b/docs/_sass/minima/_base.scss deleted file mode 100644 index 0d3f6e80ced..00000000000 --- a/docs/_sass/minima/_base.scss +++ /dev/null @@ -1,295 +0,0 @@ -html { - font-size: $base-font-size; -} - -/** - * Reset some basic elements - */ -body, h1, h2, h3, h4, h5, h6, -p, blockquote, pre, hr, -dl, dd, ol, ul, figure { - margin: 0; - padding: 0; - -} - - - -/** - * Basic styling - */ -body { - font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; - color: $text-color; - background-color: $background-color; - -webkit-text-size-adjust: 100%; - -webkit-font-feature-settings: "kern" 1; - -moz-font-feature-settings: "kern" 1; - -o-font-feature-settings: "kern" 1; - font-feature-settings: "kern" 1; - font-kerning: normal; - display: flex; - min-height: 100vh; - flex-direction: column; - overflow-wrap: break-word; -} - - - -/** - * Set `margin-bottom` to maintain vertical rhythm - */ -h1, h2, h3, h4, h5, h6, -p, blockquote, pre, -ul, ol, dl, figure, -%vertical-rhythm { - margin-bottom: $spacing-unit / 2; -} - -hr { - margin-top: $spacing-unit; - margin-bottom: $spacing-unit; -} - -/** - * `main` element - */ -main { - display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ -} - - - -/** - * Images - */ -img { - max-width: 100%; - vertical-align: middle; -} - - - -/** - * Figures - */ -figure > img { - display: block; -} - -figcaption { - font-size: $small-font-size; -} - - - -/** - * Lists - */ -ul, ol { - margin-left: $spacing-unit; -} - -li { - > ul, - > ol { - margin-bottom: 0; - } -} - - - -/** - * Headings - */ -h1, h2, h3, h4, h5, h6 { - font-weight: $base-font-weight; -} - - - -/** - * Links - */ -a { - color: $link-base-color; - text-decoration: none; - - &:visited { - color: $link-visited-color; - } - - &:hover { - color: $text-color; - text-decoration: underline; - } - - .social-media-list &:hover { - text-decoration: none; - - .username { - text-decoration: underline; - } - } -} - - -/** - * Blockquotes - */ -blockquote { - color: $brand-color; - border-left: 4px solid $brand-color-light; - padding-left: $spacing-unit / 2; - @include relative-font-size(1.125); - font-style: italic; - - > :last-child { - margin-bottom: 0; - } - - i, em { - font-style: normal; - } -} - - - -/** - * Code formatting - */ -pre, -code { - font-family: $code-font-family; - font-size: 0.9375em; - border: 1px solid $brand-color-light; - border-radius: 3px; - background-color: $code-background-color; -} - -code { - padding: 1px 5px; -} - -pre { - padding: 8px 12px; - overflow-x: auto; - - > code { - border: 0; - padding-right: 0; - padding-left: 0; - } -} - -.highlight { - border-radius: 3px; - background: $code-background-color; - @extend %vertical-rhythm; - - .highlighter-rouge & { - background: $code-background-color; - } -} - - - -/** - * Wrapper - */ -.wrapper { - max-width: calc(#{$content-width} - (#{$spacing-unit})); - margin-right: auto; - margin-left: auto; - padding-right: $spacing-unit / 2; - padding-left: $spacing-unit / 2; - @extend %clearfix; - - @media screen and (min-width: $on-large) { - max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); - padding-right: $spacing-unit; - padding-left: $spacing-unit; - } -} - - - -/** - * Clearfix - */ -%clearfix:after { - content: ""; - display: table; - clear: both; -} - - - -/** - * Icons - */ - -.orange { - color: #f66a0a; -} - -.grey { - color: #828282; -} - -/** - * Tables - */ -table { - margin-bottom: $spacing-unit; - width: 100%; - text-align: $table-text-align; - color: $table-text-color; - border-collapse: collapse; - border: 1px solid $table-border-color; - tr { - &:nth-child(even) { - background-color: $table-zebra-color; - } - } - th, td { - padding: ($spacing-unit / 3) ($spacing-unit / 2); - } - th { - background-color: $table-header-bg-color; - border: 1px solid $table-header-border; - } - td { - border: 1px solid $table-border-color; - } - - @include media-query($on-laptop) { - display: block; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } -} - -@media print { - /** - * Prevents page break from cutting through content when printing - */ - body { - display: block; - } - /** - * Replaces the top navigation menu with the project name when printing - */ - .site-header .wrapper { - display: none; - } - .site-header { - text-align: center; - } - .site-header:before { - content: "AB-3"; - font-size: 32px; - } -} - diff --git a/docs/_sass/minima/_layout.scss b/docs/_sass/minima/_layout.scss deleted file mode 100644 index ca99f981701..00000000000 --- a/docs/_sass/minima/_layout.scss +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Site header - */ -.site-header { - border-top: 5px solid $brand-color-dark; - border-bottom: 1px solid $brand-color-light; - min-height: $spacing-unit * 1.865; - line-height: $base-line-height * $base-font-size * 2.25; - - // Positioning context for the mobile navigation icon - position: relative; -} - -.site-title { - @include relative-font-size(1.625); - font-weight: 300; - letter-spacing: -1px; - margin-bottom: 0; - float: left; - - @include media-query($on-palm) { - padding-right: 45px; - } - - &, - &:visited { - color: $brand-color-dark; - } -} - -.site-nav { - position: absolute; - top: 9px; - right: $spacing-unit / 2; - background-color: $background-color; - border: 1px solid $brand-color-light; - border-radius: 5px; - text-align: right; - - .nav-trigger { - display: none; - } - - .menu-icon { - float: right; - width: 36px; - height: 26px; - line-height: 0; - padding-top: 10px; - text-align: center; - - > svg path { - fill: $brand-color-dark; - } - } - - label[for="nav-trigger"] { - display: block; - float: right; - width: 36px; - height: 36px; - z-index: 2; - cursor: pointer; - } - - input ~ .trigger { - clear: both; - display: none; - } - - input:checked ~ .trigger { - display: block; - padding-bottom: 5px; - } - - .page-link { - color: $text-color; - line-height: $base-line-height; - display: block; - padding: 5px 10px; - - // Gaps between nav items, but not on the last one - &:not(:last-child) { - margin-right: 0; - } - margin-left: 20px; - } - - @media screen and (min-width: $on-medium) { - position: static; - float: right; - border: none; - background-color: inherit; - - label[for="nav-trigger"] { - display: none; - } - - .menu-icon { - display: none; - } - - input ~ .trigger { - display: block; - } - - .page-link { - display: inline; - padding: 0; - - &:not(:last-child) { - margin-right: 20px; - } - margin-left: auto; - } - } -} - - - -/** - * Page content - */ -.page-content { - padding: $spacing-unit 0; - flex: 1 0 auto; -} - -.page-heading { - @include relative-font-size(2); -} - -.post-list-heading { - @include relative-font-size(1.75); -} - -.post-list { - margin-left: 0; - list-style: none; - - > li { - margin-bottom: $spacing-unit; - } -} - -.post-meta { - font-size: $small-font-size; - color: $brand-color; -} - -.post-link { - display: block; - @include relative-font-size(1.5); -} - - - -/** - * Posts - */ -.post-header { - margin-bottom: $spacing-unit; -} - -.post-title, -.post-content h1 { - @include relative-font-size(2.625); - letter-spacing: -1px; - line-height: 1.15; - - @media screen and (min-width: $on-large) { - @include relative-font-size(2.625); - } -} - -.post-content { - margin-bottom: $spacing-unit; - - h1, h2, h3 { margin-top: $spacing-unit * 2 } - h4, h5, h6 { margin-top: $spacing-unit } - - h2 { - @include relative-font-size(1.75); - - @media screen and (min-width: $on-large) { - @include relative-font-size(2); - } - } - - h3 { - @include relative-font-size(1.375); - - @media screen and (min-width: $on-large) { - @include relative-font-size(1.625); - } - } - - h4 { - @include relative-font-size(1.25); - } - - h5 { - @include relative-font-size(1.125); - } - h6 { - @include relative-font-size(1.0625); - } -} - - -.social-media-list { - display: table; - margin: 0 auto; - li { - float: left; - margin: 5px 10px 5px 0; - &:last-of-type { margin-right: 0 } - a { - display: block; - padding: $spacing-unit / 4; - border: 1px solid $brand-color-light; - &:hover { border-color: darken($brand-color-light, 10%) } - } - } -} - - - -/** - * Pagination navbar - */ -.pagination { - margin-bottom: $spacing-unit; - @extend .social-media-list; - li { - a, div { - min-width: 41px; - text-align: center; - box-sizing: border-box; - } - div { - display: block; - padding: $spacing-unit / 4; - border: 1px solid transparent; - - &.pager-edge { - color: darken($brand-color-light, 5%); - border: 1px dashed; - } - } - } -} - - - -/** - * Grid helpers - */ -@media screen and (min-width: $on-large) { - .one-half { - width: calc(50% - (#{$spacing-unit} / 2)); - } -} diff --git a/docs/_sass/minima/custom-mixins.scss b/docs/_sass/minima/custom-mixins.scss deleted file mode 100644 index 9d4bedc1c67..00000000000 --- a/docs/_sass/minima/custom-mixins.scss +++ /dev/null @@ -1,21 +0,0 @@ -@mixin alert-variant($background, $border, $color) { - color: $color; - @include gradient-bg($background); - border-color: $border; - - .alert-link { - color: darken($color, 10%); - } -} - -@mixin gradient-bg($color, $foreground: null) { - @if $enable-gradients { - @if $foreground { - background-image: $foreground, linear-gradient(180deg, mix($body-bg, $color, 15%), $color); - } @else { - background-image: linear-gradient(180deg, mix($body-bg, $color, 15%), $color); - } - } @else { - background-color: $color; - } -} diff --git a/docs/_sass/minima/custom-styles.scss b/docs/_sass/minima/custom-styles.scss deleted file mode 100644 index 56b5d56b430..00000000000 --- a/docs/_sass/minima/custom-styles.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Placeholder to allow defining custom styles that override everything else. -// (Use `_sass/minima/custom-variables.scss` to override variable defaults) -h2, h3, h4, h5, h6 { - color: #e46c0a; -} - -// Bootstrap style alerts -.alert { - position: relative; - padding: $alert-padding-y $alert-padding-x; - margin-bottom: $alert-margin-bottom; - border: $alert-border-width solid transparent; - border-radius : $alert-border-radius; -} - -// Headings for larger alerts -.alert-heading { - // Specified to prevent conflicts of changing $headings-color - color: inherit; -} - -// Provide class for links that match alerts -.alert-link { - font-weight: $alert-link-font-weight; -} - -// Generate contextual modifier classes for colorizing the alert. - -@each $color, $value in $theme-colors { - .alert-#{$color} { - @include alert-variant(color-level($value, $alert-bg-level), color-level($value, $alert-border-level), color-level($value, $alert-color-level)); - } -} - diff --git a/docs/_sass/minima/custom-variables.scss b/docs/_sass/minima/custom-variables.scss deleted file mode 100644 index a128970cbe7..00000000000 --- a/docs/_sass/minima/custom-variables.scss +++ /dev/null @@ -1,76 +0,0 @@ -// Placeholder to allow overriding predefined variables smoothly. - -//Bootstrap's default -$white: #fff !default; -$gray-100: #f8f9fa !default; -$gray-200: #e9ecef !default; -$gray-300: #dee2e6 !default; -$gray-400: #ced4da !default; -$gray-500: #adb5bd !default; -$gray-600: #6c757d !default; -$gray-700: #495057 !default; -$gray-800: #343a40 !default; -$gray-900: #212529 !default; -$black: #000 !default; -$blue: #0d6efd !default; -$indigo: #6610f2 !default; -$purple: #6f42c1 !default; -$pink: #d63384 !default; -$red: #dc3545 !default; -$orange: #fd7e14 !default; -$yellow: #ffc107 !default; -$green: #28a745 !default; -$teal: #20c997 !default; -$cyan: #17a2b8 !default; - -$primary: $blue !default; -$secondary: $gray-600 !default; -$success: $green !default; -$info: $cyan !default; -$warning: $yellow !default; -$danger: $red !default; -$light: $gray-100 !default; -$dark: $gray-800 !default; - -$theme-colors: ( - "primary": $primary, - "secondary": $secondary, - "success": $success, - "info": $info, - "warning": $warning, - "danger": $danger, - "light": $light, - "dark": $dark -) !default; - -$theme-color-interval: 8% !default; - -$body-bg: $white !default; -$body-color: $gray-900 !default; -$body-text-align: null !default; - -$enable-gradients: true; - -// Define alert colors, border radius, and padding. -$border-radius: .25rem !default; -$border-width: 1px !default; -$font-weight-bold: 700 !default; - -$alert-padding-y: .75rem !default; -$alert-padding-x: 1.25rem !default; -$alert-margin-bottom: 1rem !default; -$alert-border-radius: $border-radius !default; -$alert-link-font-weight: $font-weight-bold !default; -$alert-border-width: $border-width !default; - -$alert-bg-level: -10 !default; -$alert-border-level: -9 !default; -$alert-color-level: 6 !default; - -// Request a color level -// scss-docs-start color-level -@function color-level($color: $primary, $level: 0) { - $color-base: if($level > 0, $black, $white); - $level: abs($level); - @return mix($color-base, $color, $level * $theme-color-interval); -} diff --git a/docs/_sass/minima/initialize.scss b/docs/_sass/minima/initialize.scss deleted file mode 100644 index 30288811151..00000000000 --- a/docs/_sass/minima/initialize.scss +++ /dev/null @@ -1,51 +0,0 @@ -@charset "utf-8"; - -// Define defaults for each variable. - -$base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Segoe UI Symbol", "Segoe UI Emoji", "Apple Color Emoji", Roboto, Helvetica, Arial, sans-serif !default; -$code-font-family: "Menlo", "Inconsolata", "Consolas", "Roboto Mono", "Ubuntu Mono", "Liberation Mono", "Courier New", monospace; -$base-font-size: 16px !default; -$base-font-weight: 400 !default; -$small-font-size: $base-font-size * 0.875 !default; -$base-line-height: 1.5 !default; - -$spacing-unit: 30px !default; - -$table-text-align: left !default; - -// Width of the content area -$content-width: 800px !default; - -$on-palm: 600px !default; -$on-laptop: 800px !default; - -$on-medium: $on-palm !default; -$on-large: $on-laptop !default; - -// Use media queries like this: -// @include media-query($on-palm) { -// .wrapper { -// padding-right: $spacing-unit / 2; -// padding-left: $spacing-unit / 2; -// } -// } -// Notice the following mixin uses max-width, in a deprecated, desktop-first -// approach, whereas media queries used elsewhere now use min-width. -@mixin media-query($device) { - @media screen and (max-width: $device) { - @content; - } -} - -@mixin relative-font-size($ratio) { - font-size: #{$ratio}rem; -} - -// Import pre-styling-overrides hook and style-partials. -@import - "minima/custom-variables", // Hook to override predefined variables. - "minima/custom-mixins", // Hook to add custom mixins. - "minima/base", // Defines element resets. - "minima/layout", // Defines structure and style based on CSS selectors. - "minima/custom-styles" // Hook to override existing styles. -; diff --git a/docs/_sass/minima/skins/classic.scss b/docs/_sass/minima/skins/classic.scss deleted file mode 100644 index 37ea9c5244c..00000000000 --- a/docs/_sass/minima/skins/classic.scss +++ /dev/null @@ -1,84 +0,0 @@ -@charset "utf-8"; - -$brand-color: #828282 !default; -$brand-color-light: lighten($brand-color, 40%) !default; -$brand-color-dark: darken($brand-color, 25%) !default; - -$text-color: #111 !default; -$background-color: #fdfdfd !default; -$code-background-color: #eef !default; - -$link-base-color: #2a7ae2 !default; -$link-visited-color: darken($link-base-color, 15%) !default; - -$table-text-color: lighten($text-color, 18%) !default; -$table-zebra-color: lighten($brand-color, 46%) !default; -$table-header-bg-color: lighten($brand-color, 43%) !default; -$table-header-border: lighten($brand-color, 36%) !default; -$table-border-color: $brand-color-light !default; - - -// Syntax highlighting styles should be adjusted appropriately for every "skin" -// ---------------------------------------------------------------------------- - -.highlight { - .c { color: #998; font-style: italic } // Comment - .err { color: #a61717; background-color: #e3d2d2 } // Error - .k { font-weight: bold } // Keyword - .o { font-weight: bold } // Operator - .cm { color: #998; font-style: italic } // Comment.Multiline - .cp { color: #999; font-weight: bold } // Comment.Preproc - .c1 { color: #998; font-style: italic } // Comment.Single - .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special - .gd { color: #000; background-color: #fdd } // Generic.Deleted - .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific - .ge { font-style: italic } // Generic.Emph - .gr { color: #a00 } // Generic.Error - .gh { color: #999 } // Generic.Heading - .gi { color: #000; background-color: #dfd } // Generic.Inserted - .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific - .go { color: #888 } // Generic.Output - .gp { color: #555 } // Generic.Prompt - .gs { font-weight: bold } // Generic.Strong - .gu { color: #aaa } // Generic.Subheading - .gt { color: #a00 } // Generic.Traceback - .kc { font-weight: bold } // Keyword.Constant - .kd { font-weight: bold } // Keyword.Declaration - .kp { font-weight: bold } // Keyword.Pseudo - .kr { font-weight: bold } // Keyword.Reserved - .kt { color: #458; font-weight: bold } // Keyword.Type - .m { color: #099 } // Literal.Number - .s { color: #d14 } // Literal.String - .na { color: #008080 } // Name.Attribute - .nb { color: #0086B3 } // Name.Builtin - .nc { color: #458; font-weight: bold } // Name.Class - .no { color: #008080 } // Name.Constant - .ni { color: #800080 } // Name.Entity - .ne { color: #900; font-weight: bold } // Name.Exception - .nf { color: #900; font-weight: bold } // Name.Function - .nn { color: #555 } // Name.Namespace - .nt { color: #000080 } // Name.Tag - .nv { color: #008080 } // Name.Variable - .ow { font-weight: bold } // Operator.Word - .w { color: #bbb } // Text.Whitespace - .mf { color: #099 } // Literal.Number.Float - .mh { color: #099 } // Literal.Number.Hex - .mi { color: #099 } // Literal.Number.Integer - .mo { color: #099 } // Literal.Number.Oct - .sb { color: #d14 } // Literal.String.Backtick - .sc { color: #d14 } // Literal.String.Char - .sd { color: #d14 } // Literal.String.Doc - .s2 { color: #d14 } // Literal.String.Double - .se { color: #d14 } // Literal.String.Escape - .sh { color: #d14 } // Literal.String.Heredoc - .si { color: #d14 } // Literal.String.Interpol - .sx { color: #d14 } // Literal.String.Other - .sr { color: #009926 } // Literal.String.Regex - .s1 { color: #d14 } // Literal.String.Single - .ss { color: #990073 } // Literal.String.Symbol - .bp { color: #999 } // Name.Builtin.Pseudo - .vc { color: #008080 } // Name.Variable.Class - .vg { color: #008080 } // Name.Variable.Global - .vi { color: #008080 } // Name.Variable.Instance - .il { color: #099 } // Literal.Number.Integer.Long -} diff --git a/docs/_sass/minima/skins/solarized-dark.scss b/docs/_sass/minima/skins/solarized-dark.scss deleted file mode 100644 index f3b1f387de0..00000000000 --- a/docs/_sass/minima/skins/solarized-dark.scss +++ /dev/null @@ -1,4 +0,0 @@ -@charset "utf-8"; - -$sol-is-dark: true; -@import "minima/skins/solarized"; diff --git a/docs/_sass/minima/skins/solarized.scss b/docs/_sass/minima/skins/solarized.scss deleted file mode 100644 index 982bd7f2990..00000000000 --- a/docs/_sass/minima/skins/solarized.scss +++ /dev/null @@ -1,133 +0,0 @@ -@charset "utf-8"; - -// Solarized skin -// ============== -// Created by Sander Voerman using the Solarized -// color scheme by Ethan Schoonover . - -// This style sheet implements two options for the minima.skin setting: -// "solarized" for light mode and "solarized-dark" for dark mode. -$sol-is-dark: false !default; - - -// Color scheme -// ------------ -// The inline comments show the canonical L*a*b values for each color. - -$sol-base03: #002b36; // 15 -12 -12 -$sol-base02: #073642; // 20 -12 -12 -$sol-base01: #586e75; // 45 -07 -07 -$sol-base00: #657b83; // 50 -07 -07 -$sol-base0: #839496; // 60 -06 -03 -$sol-base1: #93a1a1; // 65 -05 -02 -$sol-base2: #eee8d5; // 92 -00 10 -$sol-base3: #fdf6e3; // 97 00 10 -$sol-yellow: #b58900; // 60 10 65 -$sol-orange: #cb4b16; // 50 50 55 -$sol-red: #dc322f; // 50 65 45 -$sol-magenta: #d33682; // 50 65 -05 -$sol-violet: #6c71c4; // 50 15 -45 -$sol-blue: #268bd2; // 55 -10 -45 -$sol-cyan: #2aa198; // 60 -35 -05 -$sol-green: #859900; // 60 -20 65 - -$sol-mono3: $sol-base3; -$sol-mono2: $sol-base2; -$sol-mono1: $sol-base1; -$sol-mono00: $sol-base00; -$sol-mono01: $sol-base01; - -@if $sol-is-dark { - $sol-mono3: $sol-base03; - $sol-mono2: $sol-base02; - $sol-mono1: $sol-base01; - $sol-mono00: $sol-base0; - $sol-mono01: $sol-base1; -} - - -// Minima color variables -// ---------------------- - -$brand-color: $sol-mono1 !default; -$brand-color-light: mix($sol-mono1, $sol-mono3) !default; -$brand-color-dark: $sol-mono00 !default; - -$text-color: $sol-mono01 !default; -$background-color: $sol-mono3 !default; -$code-background-color: $sol-mono2 !default; - -$link-base-color: $sol-blue !default; -$link-visited-color: mix($sol-blue, $sol-mono00) !default; - -$table-text-color: $sol-mono00 !default; -$table-zebra-color: mix($sol-mono2, $sol-mono3) !default; -$table-header-bg-color: $sol-mono2 !default; -$table-header-border: $sol-mono1 !default; -$table-border-color: $sol-mono1 !default; - - -// Syntax highlighting styles -// -------------------------- - -.highlight { - .c { color: $sol-mono1; font-style: italic } // Comment - .err { color: $sol-red } // Error - .k { color: $sol-mono01; font-weight: bold } // Keyword - .o { color: $sol-mono01; font-weight: bold } // Operator - .cm { color: $sol-mono1; font-style: italic } // Comment.Multiline - .cp { color: $sol-mono1; font-weight: bold } // Comment.Preproc - .c1 { color: $sol-mono1; font-style: italic } // Comment.Single - .cs { color: $sol-mono1; font-weight: bold; font-style: italic } // Comment.Special - .gd { color: $sol-red } // Generic.Deleted - .gd .x { color: $sol-red } // Generic.Deleted.Specific - .ge { color: $sol-mono00; font-style: italic } // Generic.Emph - .gr { color: $sol-red } // Generic.Error - .gh { color: $sol-mono1 } // Generic.Heading - .gi { color: $sol-green } // Generic.Inserted - .gi .x { color: $sol-green } // Generic.Inserted.Specific - .go { color: $sol-mono00 } // Generic.Output - .gp { color: $sol-mono00 } // Generic.Prompt - .gs { color: $sol-mono01; font-weight: bold } // Generic.Strong - .gu { color: $sol-mono1 } // Generic.Subheading - .gt { color: $sol-red } // Generic.Traceback - .kc { color: $sol-mono01; font-weight: bold } // Keyword.Constant - .kd { color: $sol-mono01; font-weight: bold } // Keyword.Declaration - .kp { color: $sol-mono01; font-weight: bold } // Keyword.Pseudo - .kr { color: $sol-mono01; font-weight: bold } // Keyword.Reserved - .kt { color: $sol-violet; font-weight: bold } // Keyword.Type - .m { color: $sol-cyan } // Literal.Number - .s { color: $sol-magenta } // Literal.String - .na { color: $sol-cyan } // Name.Attribute - .nb { color: $sol-blue } // Name.Builtin - .nc { color: $sol-violet; font-weight: bold } // Name.Class - .no { color: $sol-cyan } // Name.Constant - .ni { color: $sol-violet } // Name.Entity - .ne { color: $sol-violet; font-weight: bold } // Name.Exception - .nf { color: $sol-blue; font-weight: bold } // Name.Function - .nn { color: $sol-mono00 } // Name.Namespace - .nt { color: $sol-blue } // Name.Tag - .nv { color: $sol-cyan } // Name.Variable - .ow { color: $sol-mono01; font-weight: bold } // Operator.Word - .w { color: $sol-mono1 } // Text.Whitespace - .mf { color: $sol-cyan } // Literal.Number.Float - .mh { color: $sol-cyan } // Literal.Number.Hex - .mi { color: $sol-cyan } // Literal.Number.Integer - .mo { color: $sol-cyan } // Literal.Number.Oct - .sb { color: $sol-magenta } // Literal.String.Backtick - .sc { color: $sol-magenta } // Literal.String.Char - .sd { color: $sol-magenta } // Literal.String.Doc - .s2 { color: $sol-magenta } // Literal.String.Double - .se { color: $sol-magenta } // Literal.String.Escape - .sh { color: $sol-magenta } // Literal.String.Heredoc - .si { color: $sol-magenta } // Literal.String.Interpol - .sx { color: $sol-magenta } // Literal.String.Other - .sr { color: $sol-green } // Literal.String.Regex - .s1 { color: $sol-magenta } // Literal.String.Single - .ss { color: $sol-magenta } // Literal.String.Symbol - .bp { color: $sol-mono1 } // Name.Builtin.Pseudo - .vc { color: $sol-cyan } // Name.Variable.Class - .vg { color: $sol-cyan } // Name.Variable.Global - .vi { color: $sol-cyan } // Name.Variable.Instance - .il { color: $sol-cyan } // Literal.Number.Integer.Long -} diff --git a/docs/assets/css/style.scss b/docs/assets/css/style.scss deleted file mode 100644 index b5ec6976efa..00000000000 --- a/docs/assets/css/style.scss +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Only the main Sass file needs front matter (the dashes are enough) ---- - -@import - "minima/skins/{{ site.minima.skin | default: 'classic' }}", - "minima/initialize"; - -.icon { - height: 21px; - width: 21px -} diff --git a/docs/images/ArchitectureDiagram.png b/docs/images/ArchitectureDiagram.png deleted file mode 100644 index cd540665053ef53e3c0eb01ec3607b02f44a3ada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19887 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 diff --git a/docs/images/ArchitectureSequenceDiagram.png b/docs/images/ArchitectureSequenceDiagram.png deleted file mode 100644 index 37ad06a2803cb13da66978062b40b9555ecbd55a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15175 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 diff --git a/docs/images/BetterModelClassDiagram.png b/docs/images/BetterModelClassDiagram.png deleted file mode 100644 index 02a42e35e76b2a1b61e7feade34a0271e0640aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14116 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 diff --git a/docs/images/CommitActivityDiagram.png b/docs/images/CommitActivityDiagram.png deleted file mode 100644 index 5b464126b35fc8025f8b92e7261f5ed6287c5eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16227 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 diff --git a/docs/images/ComponentManagers.png b/docs/images/ComponentManagers.png deleted file mode 100644 index ae52a35718a82846d19185f2e5bed573d67cfbcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17411 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

    L`n{HvGzzHFon;CZ>OTfI1 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 diff --git a/docs/images/LogicStorageDIP.png b/docs/images/LogicStorageDIP.png deleted file mode 100644 index 871157f5a9c35321a8004b0017fe6a0533129e1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5808 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 TX#zhdLZYs$rBtk7`R2a>OJ+-` diff --git a/docs/images/ParserClasses.png b/docs/images/ParserClasses.png deleted file mode 100644 index 2caeeb1a067e5e2459376de1a91699a661b41855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28856 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 diff --git a/docs/images/StorageClassDiagram.png b/docs/images/StorageClassDiagram.png deleted file mode 100644 index 18fa4d0d51f03505593ab4dbadd5821491548e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29426 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�y3#e%kgElqe^sH=7 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 DN7m$8 diff --git a/docs/images/UiClassDiagram.png b/docs/images/UiClassDiagram.png deleted file mode 100644 index 11f06d686714cf02d88c4b32879bb71b11f56e13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48363 zcmdqIWmuG5)HXbbilBg!BHdD=q;yMzw6wHzcPb^Ibax{mNW)Mn-O|D^ba!`rd-M+P z=Z)id|9-#b5NEDy@3mK)>s;p!dMPK4j`j!*0)e1QN{A{#Ajtg?$PJu3H^5&CO@eyB z2fc&XD+dE>8&?Y>V+V-1k(H61o`aDgnZ7I88wUp)dv0cC8w))v2S-bbCkED*PJLaZ z;4$8&%C8*${yPK-JjW$@Q$;~(p5wmPSjo%gyOT1!P8h|O0eU_V@q`*f2|M136v9?j zEcCL4C?kx-DerBmQiD$Zl?rB0A^D@~G^fgGsk%IW8mTw}ae=21J1jXhKl+nz*M18| zp|Q)92nbT#Tes+qL=g(PAucq`5lR(@*6)4F3niYO@=PV>_VbI%d`{chEY+!)&5xTw z#Aqmn^sT+!nQcI{=s6$PczVS6d-wKsnKuQoR7eNT&rJAa(0ENMJw@>RRjCH1KiJ+N zP`SCU9lTu8#pBw>*J6F0_WrV;=(8V|3(LPxpA-=n z&B1*-A{rN73XN3U77jIxeGrk_O?&XUlRK7f(QB@z?;|tNc1lKAWQcNf91T0k|8>h8F?G> z!C9C~NF1Tn^0wuaj>H_AVLGT^#Omtu$dF>rxbm3YuVV~x(&%2)cvqE+BD)VAl1>=y zKG{obr@K^Cj2Px_v+;U)_@O-JD=PbD1KQDW@0qFaU~~{JhIU_5cLz=~H6yKXQ}*eo zB(eGZDynBneW|_oB2RIg+`0|CKvQd$G84#jViQbKoI@p5jXpsWP&VtJ^c^|ElcELnTwkJD19jK!qmhzU23@>w)e({P0+yQ ziWL#RL^BzF`O|Y*>}z-c!c8t9kEbi&d#u=@(?t`_WrRJS@}jYd5@rpDFMJ`0;Ua zyU9^;rUPmd7%rZ}XeR>w?zJqWf-=7BH^8eZB% zwJE`m7t)--Qaj{e-;W;x^Y~zi0Asy;iZBRu05DJbYsA;3?g4`cenZ$T`q$Uq{rbf- z#Mf>$(2<={XZHPEr0=X1M>K+W&c`I3t}BOzm^pAzpPvf z={`j8*Ps7$kndz*ot>Sbp`paw4nGj?FyjOM5fKrQmPVQ)3_+6!H-(LkI?c5Nk@9<_ z|8gM1g`NafDx0B7$Staliq9n_Y0=T5V+befkbChWAT^al`|e9Y@ZgDw2?t#8XP+W+ zJD-E!i&KN#oM95h2q!@p_1)|i2c+J=18MLd>rM$TKvu!xee4vwV>Le-7Ty5=*ukSf zkqBcZ<+$}umK3r_m5>)vg_NFtpG(lq98*G{YQ($$cB!wL?}^Cx5YFr>Ei2z}K3BDpVK_naxkeNfLi*49 zUXO2`E^oWC4h`c%B>7A)b=4p*iT*y~8#e<{Op{`{JkP0AE zBGovVqMzmATQ?!WzJI?c{zK0PW7Wzv%pc@jNjSY*)Pt;p|9OVkgqNL?{rZH=1WBdG z9r!&6+CQ$FebVwAK80H$E3NjFagX&3IUqwWP$Q7D1A!L_ z?xWXFSUMv&RGLX?(IgY#;9Lf!+CxsT|FW&m=o_V5oh}82IZM#Y)dbUnWaO`Df1fT} zr$s@uf2t)U+~=1sPT>L9wvl3qr#H$lA%svN4)vH#B-}c61?%t?cFs&5PqfWeEq+FtW+#--MGtPRFNU`JRj2#>ktK2vw1NC z{W$%;a6d#6(nC@#c-{GDIrrbhKt*01@e<6q!+Q zKj;2D&K%t!j$2hNPTHd}M>W3A<8&gUiP{LgUGf87Uq!+H{6snSk?r?`v%LK|Y&ZSR zco~^p0z8~cI#!0LQ`^M+>=*Wp3tK$ zSjYE>{@G_}bdJeaeH}7+%LLKCOkC`)sgB49$yk_*R8@_qyWd|siwxXUVqSYevvpf% z9a^Y!SSe;ve-`mo){)F8xPPb9UNWF%<-(3DiIJ#IAyOJZiqf|$kAPI|!-%HA^?2|lkUK4d%cXVSQ zw*|EBVuLU&eMLSqH@l+c(fSqEc3bqMjxh6iI?mowD{VZ*RMY+M6ip_E#y=`+qdfY% zlviqR8U0So7&m?e1FzWPaB!yWka;GI3s_%ez$dyV z)VXI96p z$EJqUeWx93Ag4*dGXIw|Q4a6gPoz>_)2EqJGC+6cG^+ezfIW9F`Zd? zGxe}4Tndv{d2 z63NKa2(QBdu{w52$DZy>9_TLAH}q{rnj~N6xW621ZYVM)6Ls%W4}_I6r=rLjbz1R` za4+Ly^glf&QeCR-JyhXR3{wrB92Nd3Ek0H-*SzT59CkUPAo(DBsS9O$6jo3s5Ep$F z$kTLwN>9fWA!->|KAM@kW*%bExco5U#P^<9rZ>;nBNDuHvPG8a zwY%Yuq$ige&knTeW9llHbVQc49oA^+49`48eGKLKqXm|6qkos|zx=C{F$bi?O$#cO zC<|FEj?Qr^%cvgN;|`j%ip?_{cnhnq7<*KG;FedtLK!V-SK2;W7c$7jv>n7ZK_Q=s zHjGv5qTufah8QDuxNvqbAl|ogGJm1t>F|utchiY!GRJZkwOfR^zk!Et&3?9Fc_!<2 zCPpnBvZ5w;OsKzFa(vz`lYXTvDeF@IlV`Sv zj74vouZ4ByrIkE>6Vi_otu4-I&Fj1j%n7S8quf?+p8w8bwkPYx|xQ;)s5g%dB_NWq7;lvCFow2SEaf7NhsQX?v^Qyr8+nX<*n5a_h^H zRN80Ku%&wj9)!Ie4ny~8(Pa?0?Ci*Nkkb)XPJ^NQe%kepi@ClYYV^|mOe13MRAp+! z@i}QEvk`kVG;wq8%Y^6ZD0W{UGgP;Jdw$(}-eBiEeOou)=*C6hUnnDeKt0$ua=!3A zy}d<@YsOL{d7ydZda04znxsXhp=u4mBm0HQn3o%v`t^oT zAaat%bO~`py43AbTWEYR@3}2E7^Qr?X9zl|i502#tHzpa?a5^)kM_qWvH}rHX6+B_ z?CDDOcDDyx$TWHw92)7(9+x^~1W zadxW>|HRii?zDl%fYk^KvwZQ+f>#gJ@2+v1OKQ*vKlq6yBoFZUdS8 z)U!@{ull4elSZRPxv!(^#6*+5fWMj$qEHfJ;;qOrZT~?olq$o!uXWdyAYaDlm#Ohp z?8u*Sy=NadoGT}p?*P^6gBb0cX@r!no zo%3Dfy4Qqhjh>HxaNm$bpr>M|`^n#b!I>UK7G|!-;7=^=stNdJ#pBd@H12R-tA>s; z#jwa1N1MrEMX@xN`&DeynTJdqFU$D*h5J7f`HTBEpx%4!MM=AEv^AP38tHth?aTY=7w?OIq|w7R`joza$dreXzh$<_5!6&otIuWYrTd|Q>(u89>MOO2 zAN{gV`pHQ>FRfj)xGHv6Ce$@)G?}+do@OxZ*VRC0b!7uaH&%Zn+&lod*V)C2%e()4 zBoE&v|j-k@DxhX>kf&^-BB=`+4M2uGFXObXPwg=sksCQ0=CX)n7Wb=?wt z(hGyR>l*q@dIY@tCxa&B80ze~_L|Dw<%1DLc_1T-G;YmFOO0BZPIA+7!%(-;+w~8# z(kKp<=1SdVSdz2s=Wia#T{v%`6~>(7k=A+aD15z48xUAoW_a*FO4|~3+F0^Z#gFpd zXPunsGXANW)G^^W*K@wt37WK=B--mUhC}91JzpUx)jKs-=IPGdMG%#7HNAWu1DBmJ z@lw=h2T}eAsQ*WKiFEB;X3yhdIRyCSFMjFRK4A5SAf7$e@VN-|$spL9~wfdj{NKrfN1hNIU{6G_W7TfVuvANTNlVKb{4ACAAB%;%t& z=KX?Qne(DB(e>2I>H230Vfp1kF6?S7YmQz-AP6`ebk1E?FyXk7L>-;ExWJ?+xZ55GDb^Tk7OC)aJrDKYq z$^8KFugh_UABW_X*bt_#Kdxf=T^9*tV#$4P9-lzi( zUvBCtKga@B$cwlS&&HSgOxyYHqV#U(Osh%5Dn0~>POyyp@d6n^X znWlV6=cf5XV85_DcTK0?J0}BS6PDM>#jyFlM<1P+N zq@km?QqM^qxScHpjX%NIZ0Atnya=J%Zsjr21sH~oI%tcY7-62KqpDLs1PD=SU$q8} z5bAW+1C(w z$;-cc(TY|zVygN4$e7}~HUAc`oMo*C9$U$y+lB0=m#=DxgYHT(uAIktnmB7PZ>jax zd(4xw8(XD1G;d33xIKb1Pyh3rg@f#Te#+<*{4JKWdtKj*c;Ku_tWB;Uo43$Q(foeWlD(`*i;v(3l3x zsqS3r>v-&3n<$Hvo5F>?ZVp*OSa5ev7wM0wEnjeumBNficBC=;j6ge)Vu$D=5QG+_ zwyUelj%zF1Qlss(!z}qe>Yk|nahGRE(!I~>)`BA-JL-D7iXH#z!GHbW^pxbmgtKZG zUh^8S>-l>t&2jo9BRvftd+|xXc3|%ZkOMNpKH>O~#+R z$;J8$T|tNt+=xnf**a!%$F&L>1n0d6*9K>vNiTn*m5wHBIm?5;c%`pFJD;9LY9wlo z9l7s^TOrR>C&?FAJ<{p#Xw+VOq~Sm)h=kxSeKxe+Y>KOlj6gM=!=7K^fRIZ_O50AB zfAJWjsFSk>-i3ApVE{uqE_T<^*iN^G5l{@Is*&!O>^Wu@Uxdd)3&-LlALl<3DF>a|+bQ+0Wx< z{UlyK%IqjT^s`3~2{!R;xUxX$AVe5aVqM(f1lSF@5b5nnuo^!ZUOO#!k9??qz<$Jt z{wBor*NNt9xw>Rnd2iY>e4fWL0N(dDi=sX0tB)IU!4nvtZatO{G2(GJic%U~po%%V ztL)U+frEdE78x-=RE-HrX>z5JovJF{$jxv{#6})};Czcj+{VsXWlef;c^7^=ozdgI7E^cmC(B2uu8(6-Q&f5j7Q1vn+d_ZG$+o4OBgD-&-% zr{W+F0Bd})5kbjIUzDKo8PvlebcjBJ<0Z4sU(LU(WwLTqV6!mj1w|KhT_oV*zu7dj zUAVYa9s(YR`Rj4B+CP#&okpjYz_L_J0J^kAolyZe9Rq1 z607@|@$2~O^mls%T=kxOg$Z%T-pk^g5X59c(2Bx3hFchEkoXWB&BZ1Squzb6MapVieLlo=w29Im>8;5ZdH>H33A7kt^5%q4PzQ~Ugvhn{$! z_iuvNdV$!gIA8;YqsFDMt2y5&5D;7zcX$pD$M*ER%+98Q;`z}~Qi{mShZSG`GUY{Z zXvm|gY;OQ3sxM1GRMQvPL^OkxbY(BII+2WHz zqfemWbIoBH5TX}*on-RB$uex_kugh)q!6YbiAjxUbQt3WjqDb`l>;F};sMta0bbqa zO#N32&d^zTe-hG@03#I&a0s71$xrh;l%MC7%N8E%P7eZVQ8uwdug=ZyaL&tNGcB8d z)W!d=uV#wiAE~f1H~ny=k$ZphHM#7<`{0lwm@aI6$rdW~fo-0_PlE$m^~I1UQ6DTt zsE@q+0?ZNW;!jp0x^It=rrS4fqrq=Oydzocl4~8yAS`japtF9<{s>$IM; z%zDh$Bc%Fm32@ww6d8(k{c0|N@Kz@*SO|1eTlPz9inZ$^&mt(rUx>(kFaUDQPWLQFy; zm&?x1o{$@i%MckzD&R#mWIa{?fK(b4I7X>=1 z^WCymrb%2Fh6^1L0|Ns+5mYoZG%`x-qn}5vcp_W6y6CGbdOz6g%zT4YTNfIU&h`%9 zz13aNqvyIyif}~17shR%@T>H8L0v6#U|ilZuTdFRW~aYL+5~5rk7`oimEt$p zd*(l!#_y?7zf{t6<#w_|z8?+zC}@q4-K<6CeOQ~!`N;`5a4-WhKpeOdVj}yJUTC_> zA#FJ0@~3f0Q#~lV={|;pTpiO(#$ktZ?1mQrFS|2)v@)E^@ZJx3D%&1PYz~|^2#Z=G zo8Nxv!%4Z8wl;%G!ElZ3d>pfGP;~xaRb1`b3vDr#V^B_55gacz75Y1tZ*4 zTU#3%wNq+Ak4Su7WKW(sT@>g!o~hJc?C^pJ@TcDI5W1|FZ6k$#=|3;AZiPN3l$Mq* zo&M%sUfzA^B=EhpEFY1-?@VR+oP$D&(!+lKfEW}i9~?sxu1{&z4C|@|Z?qWspKbN) zNKy0hdVnKIOiUCD!TYS36a4X`tX48sA9HsuVqQ)5njnF|9FwucOm!4cV!&y$+r$=D zp4HCdg`xLU7?-oexW}HA6W_`>(wMscxR`QKyH6G?E5=dh z#btmhC<~mvO z6by8S^@D;ua}PgazUixWq9lw&4P$^$(B~CL%=hgx-1ms|b|RTr;R(8qHM~cFyp@rX z1WxZGO(ceaRZ}S|ZT=9K+ElaFnkt_g{787~3^(N0kMeCydC2Leyxz9a}{T_1xUXjb|-*KVJYBwUbDCZ1)az>$pZiveY9*I zafRyeznl_edd~aa3WB6Ru8dZ-zKn`UCo_3BayEO4WR@ulD`mTDh@8KpMnKS792Y(* ztECj*&;#Gyt6N{j{r%mGyv=aZZ%ae>t_VhUT2Z{gNiKw}cYHfMA>#!3RkzNoQ4euo zURd%l0Ft~puELHtmDm~Syf{%1)-%?bP3Nc<@MN^}4TQWXBDZ1`$f(Pc)F1 zWW|&yWAna~Uw&8hQ`gJI7{CTT+a1VE1j*#1_?Q{!05?iWXhm=AppQlPuI~z2y;7wH zD9tB1{3+bPt{t3AW@32Sw3{ra1z+Y>`LTQp_YH`y4KY^@3F*RL5TGNdE=x!Wjca%T*Eu_=&T{aEY>!`pn#j~A9Xq1cd}d;eK1WV!fUd-NG|p4ADyBy24} zOe5^gQ)ig6Gih~u326&W%Z~;mAI|?8xCV5G!;?^_s0?CPlNW2HKh z=S?W3gg$});|G-%#}{Txi}9~}{WgGEUPMhWPxD_^@h;V-&Ze)at3nyqh#H2hsKTS?6SaqQA})$X9}Y9ZqPgQhf;p5*=^2rQ9pb zj1QUl5FJ6u&KFaB78N~@>M>N3xL5%S1IZh^#Yoj?Jdgs{1)3#}vN%p46b-32Q z|7`AelH%vL1AkF|Zf^wktjET?XZEI9@*b0aG2Ta~?W%U18X3lo#a26V5 zay!I~#uXEO>5}D=CXB<9ew<{G83^WTp;EysrPb=9b72#NQo(Ee_55beZs`j{`;3Z> zdiTKE)|pm}9e>Il zgWrs7ZRmeDYsMDCR`LkACFb4L(ihUS57SF22>>YM$G5 zgppn0H6@!`g{;KTO)Ej}W1h(%SBbTz*4r#YJ>5t?9vz?>e*GLlT*Gk8sFLR$V@b;a z1`XGd@RM{K#zMt#cS}Upq^2R^lzdH%RMBWp(6G@g@qJF@U<@Do@UQuFcI9l_p1E}| zZLR8o=s*kntGTxG2<7T{TOnyshm5D-NqOqI#?v7+fm9nXS9Jt*^LN%I&DUj4FO%DU=(vB*cTTVsHI(!YHmI9_xYmMh7`{7g zGJz<~Mnj;>Z6d4@C4WD7k*@ljydlkpBevYzR7T5L=u~LyM%R6pd{;?VXLE*$3nxEn zW|lN74$6G@j!?|^xgMSJzcd#?HFoQGMyYUFmsTR0X8_JjM(4c@W4*rj%&Jqv2B(Y} z_hu1s3XvohS3cK5lR=+Y(lx2~;&zxB4h~KZ9Z4K!@R1#v7UL=oNVYe9gUb#0&QI$3 zisL*VqS}*Hx}^PgMDDhWs(^u4LJG7FZOeBJ^><@Bsa!+2!&k-BXd+Mt%@zmv(z2*? zsDneLfiOTsIV~}Qg8P25sO#QK=5w`uP63^jpv%b3%cY0*qcoDsJp(kEyGVlk02J@Q zs_YELm2du?KIUwrE;RdV9SjHi!KUXF_2Z{~#5|3)AD)BBeoz4(%9Z7^hKMpVmk?jk zwiXQySFq@^Nk-T`XHG0fvLS?;;OtZOd%*7PacR6z4S4Jy6(M#A)H0bBvfNJ(*+(zM zbQ1mcP;{-)c?V;LU%4NUF-w_IV0ph+Vl;%M{CPB(& z(_o4FZ63Qv`LG! zI7Bvx#-D00b&DzC3`rcCZIW9#sUgOu45R_-O=WJRZ=^qBLiWgw7QQwhAR!X48eylgtFarBv@pWOcf9UAHZVhe^^&9thgeCh(|~|LDF2dEWdF9QvyYLnyh}Pepd>z~uQT4c1^c ztq(*b30a@m>+oqKpi@2tO_abm_EmD@bEUJu(3m>#%SU(;Vc%K*&#Uz*0Ms|;$;BRE z!iiHgm#owHJyw0dENXaFjrv^2DCe4B= z&?BL^5i{dLo&%eebkJN4)jU+^KcGN{B+UJZ`essgK79#9I_51V(r|xW3r~!o!AL>K z6Z19N>$L!j8^HJ_9;glu{a7VOnE6k-*X&4naUMO$gcaVfXX8>DM!z0hQ4uwdPTW!q zdYGt04(}o?P+7@P9Z-}tkJm6FWZyJ3Hr==3it1Puz#s=Mf??eZirc+#pch&`m}b}~o=^CUev z6}FVYRxfz`A&OdZjnl&JI*LG+_YZkhGtl^4hnmUERk}=EUF(0!HPyPf9IHOCr|S7> zQSt;&zSZ9B^@<79Sx3jqLp8sBnukw&CBWnThmSwjKQ~Tznj(fivG^=`kH(KZVi{Fr zyPe7{qn2-ZBBlTM&(aqBS{8xvFtmSGJB-yM#<)b&?`k)tfq?UJ=>U-GW$XF9;7BP4 z&}M@k&OeV9HS6?{3=UNvZi$IRdhkCxOMo< zlbmU4X{pYD>GiT;y>|9;(A05C8`sGfm+W*U7aOa8=lRV91+o|PXEP&slsTVyF~!U4 zb+{AU5CXKXt7c;XTojq#$h1Qe+J-pfY`C@@u2PSIv-zLoDB*4#IOr9pP^cFikH%N% z5ncKvZ*Vtg^W~-aRk}qpwqU}{kC+RsGQNHIVd`-g%H<6dt0`ecfO9Nwv9yxXK!f*m z0Ty`jhO%u3*uV(8-T_E#Yl;>YxW`5UQX+4VVK9&k$fXeA~bzWv*Esg1#5fw z`!J=NdC7-BmhuqrXRKx4ntj|IG`BjmoFBqunrq@0WK^CqW{x!YU7z2$HpGCq{>SMb z`+)ieCLC0JJj6QefSU*L1%wSM;|tpu^NC>^{4Q`I@sgzWv?lMwa2$C7>{p%`rxK0D z;oG!S>}@nHqAeG^U?|-xlhws19fYA?Y`Evl)Gc+&OSjXvugOKSUNqhyD&+msIFx*# zlYc{88O@Uy)z?BoQ~vpSd|XnUqnWfoyG9< zePTzZ{qeXF7tGJY063fRqy1O)CO<6i?!KSD|^Hwg|$ow$Zx<* z4NPZvT$^3u=H)=B%wNOtPQyF`YmZI_aZF&hkqZGGVOnjRU0q@Vq)2di;VaBm^63b> z3q8%|nm548G}bb(3K=!nDAxyLWi|n89(llvfgzWTO<9oiha8w)nIMp< z9t4Pa<)tC}<0jpow_W@JsyG;ZC2Fkp!?{Pst^<0u%@QJGg}+muhT;$q3RUBdCSG=5 z5f6!$9Fq!In?Jq_a=TiR`iVw9&+rt!a*0V z=u)cyrA@cL-bvKpksct{3Z{t&c?HL6c(q&ec9*hA-5IijnYwD3F6R;$o!x49jOJtZ zpRmd~1fulLAB15=1dR@Y>kkgQO>_sow`2?zF-5^WCoiT?7f%KDUcLckq{K;gVmueY z5Fy6(p2qF~U_hfbT3W>Ar=F%3O>5^>+wQ_P0kKyh+Z`{rNx>c9H~b^T@U6!pWsUtU-|mn3Pf=|cY6XL6c-FUW}Yb z0Rh@xQ(PCok-&{DICCYhn46feL6`t8e8I-zLk-Z8B_z>CY~vQ^aoF2RxP``Fmmn%} zy%lSr#$9cbDNkF?i-{>nf$yJoaalIlaSvk%G`38b9M8oKasYS~NJEzGCReBK>L!nU zx<7|v7U7YMrw-7{S7W9Ee#rU=zU@{hDKk9p07` zT@lTI$t*MVv>43mxi1UCgSs*M=k;mQ75_Ab&~8T{Cn`2!STS+g*Gv$L^nB7l7F++- zF`&AHHgCBBi3f{8UW-SVIQ;Y1Yk4vl^6A=$vnr-o%1*)8ic5y`e#0P`mgNu&XpO?J zg_P9Q)fd*c0H%x&N%#P?2#vOMW(trF>_1t($1h|&4o=;tLf}jB&m9UZ_BbUKfDB^_ zxaH}29!t|aDvpGW%a7tA7^Cqc*1%Q}!BVPdaLGnQHiLeVM}*b)EZBlXscDkXs2I>w z61P{soY^Et=5Nv}_a+$Upa)`dE?5h^{o{~%9^^6JpKtGw@94J%ti7ybl{sfFsw5Lo z2BlQl-pG&WCwTpJYy6zHa565ON?e#DXaZEHi($ zB?TWPe07H&Y#t2Q<>X{@lNMLZU(FmvCH3Sw7QWFcYF`Ki8S3=mMe5c~GMhgOz}L^) z4>EudhFl>Zu=iAL5n&6|R`$$O#|j+^O@fl(cG8w}g2%Gy^H=gE)n_0&X-kMzToQ3y z&yH+Ol2k3l*`deZR0Kap02;LSQHm@qoIwIZeF< zrYM6c5WoMxH$!G#`VW3pbbVF8Z^nR+pJ!tL(w#ORh-xCX(1Pz{lX`CKeN*U00Z77} zrDDkfKMT5g(c7j&i<>c0O2x0MO;8!-#;3OKJ1S7kj?VS8e1IBf+~1BGEvXlQ7E zXbTD55COHecEBSMNnPkR_Czt?m*g}xC4SF+QQx;Cj3!Bs*DN|FcbF_$LCT6W8nO8@ zm4mXp!qG~uJ7smQORJmk2)(#?OcQQAVpFD3$_XL=Pcg~o^*sLx4iaky_|3Snp)b%< zEl>)O)1_{q1n)ndx!U8qdqoVd0g5k>S+;oUSlKB2wpuX3U=xVjRDtwKX)J8OlJ{$W zMelPvQ*W@{c~uSZwiiDvgO{%RtXrqVHrv?9HD}UK8!(cm_YwE0P<={37_yrUOGrv) zmN*-O&TXVW#25JMqya?1^y(cc-QJq>j=Ipx2XDQ>k)!Wmr+z5@@BGtcpz~strgg zfXH&*Z4A@5wpF|XG&~9NtZ&$ApkQ+AKp2L~V0qm&r2!Ojsv|`kU=Du+Dz*;l8qqN$ zxacttN&tH5w5E+NrBLVZYmu{Kh4TGswalghRryt>384D~QfaDm-V6$1FE5z0lSva7 zA4Adw+)5@2v;cPwya^Qt6@gGorm6y{0#7|gjYDt7RS|^g3XpYHCcySriJfaaQ$ zSd*5!aB#5(yRYEp>F;V zOuFE2E5=|GkyPwsrdz?)kr;Z-R>l7eQ1Cq=R?nj%?TjskmfGiN2 zmhLC+|4~~{1ukq*avWMz#0XU<^Gm8CKuXgE)Dg@{ney#bdq>H2Ujb2*S^P>-7Z42F zs#4n^)Zu{@pXq^WYirkuJ!LQl^6=2PZ$h zQ%BK~MoyQYo?zHaIsRr+$~>}m)mZ3(+XM{@3#(QrPlUBCV3ZzAM)1zXGv|N_Gfs-i zs^>WlFyWKm#}z|#DzkTVNW|8Jk2(&ZIdT1$xaw*Q1zC`>YEmaA&7m2_$8*}76Gh`q z8;HSf)a!TmC@u*s+;U>}$>(t7d;*eVBUr&m@ukiM(Oe5Ly(D6JZF zyFT0mMSks|a1i9nUXt}Dalb)6L0gh0FTp*b^HN#FbuKQLA+Q!0Av@5LOG^Z&HF-jT z^Qde|D-PN<+|2*-Sa!m==DcS0P_h#mBi-`;6-F2zfa02Dmv0-fr|Y2B9y;bA5?S79(wX!X0!4ZJeY-B7R2w#wQ68W$ zKoZ4+wqmvBFM`zrV$zV(0d$q2A(=@r@5*v5Dd?X>iVlJa?LrbcJQqjQM1|vFc1SsW zhTw0(@C`g{(oMU`{QMZN5Ix7Lv`L(}htkK8Q;KPit;U)Lmt~73t2H20<8sm44qLH- zrVYB{*fcfQECKlA`OqfJN{K=$xr!i;G}W4|#%)@i50uhDODR9D!m`azFP;}-?ft%b z#3VuLJ1sxWrT`@3ixyF!t@Lw8GFS|cPoD8SANH%vIyg5Q*(~96ZLYa{+*i=?`CW%v zqbVWnN_-s5#o_bdHA=%^9*ECd%MIgiloZ(wX0KY@DAWvK9s+$ z_7?Tz!meUI9HgYE_xn#)(Bb#&4)`dB0kY%5E(8k$I?9(@x=z$7^-j?qbq}BS^RArZ zLuCo_g(r+BJ#FiNa)6JVeKGCtFklH z0nEFX(jzMQOUUw4X@34lvT>(~XXOn@w$n|4vg=iVn(QxOX>0v{L9|!8T||O@Tb0Lt zoeG|-)e@Jwmc7~1(jpl}6Z84yQOTUx1Yy<3px$$eODzlIy*OYW*Jc9{&2Syuzglm= z+wKYEsdM4w4!-Q|Kq{l|5HMDO9e{ZRkh_46tqtTZAO&49&Y53c9;>xCskCrNdI#Rcv!b-T~@l(f4U=XfH##u8{mvQo{F$&5MBPnEXDc1qLIaYX&14KuKuu2L{qjf5+ig2_gD= zOX%uZVPEd`#ibJ9^D3Dbcu3VhbJGe%_QzLQ!uDpHX~^lW0Il7#*!<|;AT?>j7>O>{ zD16wc?&)^J4v@wFTpkQBF>It}hQfFsvrF5?Aw3Zd+jbc%M@LyK4w#h3{tyN*}U8@dKWx^QZ! zYb{79%9~x|zr{Le7hg{Ct{jgOHbJ*Pwx*Lge}ZR-djjYoiR|#? zH5Y!^gsB09%HR7sa5)yJ9H3Fd%7%Jq@9DwH62Z!1+=pmOjWgC|z}A$KEt|8xuNcRW zUt=aMZ>JUiq9Sln$AOpyOgC(H6$k1T ziwM$h4ZiGZ{F(!3A;19{TU7P$(n9DsS&>jb-WgwS@I4hq@GjuaDneezBPs5PM{`Z* zyZ|}9zd%}EW_7kou==Du#q5=G1wd<)&cdCTryf6_9@od$x+-RU8v)v5(z@?!EtQmA z&OhWb@Rz{ggG!O@VYd6|ScsJp0a(qPY0?9r%^s%$j%y2U%9fg3sIK(N)O0j{2Ne=% zSXI~=VEV68z}1RrZ`Z&r<;V0jPhF+eDN#D25GJu3I(Fax0&-1?g+`Z|36n#z*U#|& z4zTavS5wh{T}_STgv+br=<7x1%sRNl1Sg|+%2gnoMoB#K&6_tbi2-z00+`6ES7O)R z|88jl-AB;kg8W1CnN$-<6@OzM=0z@&g8HYYFX+I_6A&-A7^3YA%jUy62cCE*(|}uUuujuALxU#JG#G1Yo6_pMf3z_!({K{dBI7=_^T|@(^<)qU z)VI0Mg7p_CA2wXMKbY$Pw)yRT4`%Xo)U{@d0aywPSPBkeDebwW#P~))J`K=0z}M+8 z!8J_6C7%s~q)niqE(S0e(R>yYEBG5g?5G-_b_#cFhEDc43t-*-RUqi;*!d2(LSUIW zv2$?cT_z*F4Bd3yQ1ktoT@M|FoJ@D5bL8#4E^wt%o|)|pbxHA1oz!m=vA;D zp1Fp!2LRooSoQn<{i8z0yVwgdTofpeV-ZL9dZ-C>x!GSq3)4ok;2FiyArKiTQJ|WF zTz2;xLKV3-RsvL9@mV*3c=1JbeifJrrZp}1$|#v84M&Y$JE~aXZ=VBK=6PML9(rxN zua?d+~MxYMda2^-mIGu$T%3Lno~ex3+_Erss8|_ z#>)3Q+UWyEs4&OrJXMkw|<4uivR4*ga^%6^s z0MtnkH^bp>L=c)MPo9l_>kP1vc5iTgDT|4`HJcRlybL#`#>o&Ax9g_(AXqXOuMMX7 zklrNb@}Ui{TBK*A$R2ZO28?^h#axk8mLQ6I{n>&3=G#U1#?@~|iqZ(I2p>SMmq4Sr z8&dQCG4@qqS#9Cgq;!LbbeDjHfOL0v34$QqUDA@$NcTslbR!^A(p`ddcjrIZ+kKvM z?*3aY7IV${#(2jVbA3yme=LD37PLIqj3w+{L?5!4!W?^6>!^0Ip?~8N1q-%Gh3t}nuT8I zJHHwxK~T!e=M6l=s+k@n-*B}J+dLVDEg$0nFV{3U&-vx;dL|V)pt9_Q6f%rfaxJwr zXb3{wladn}9hPE|KZ^q`Q&`~eaSz4k2wav4v_k930YhAG;O5{e6?beX*wN8<fg%uSpA>3v$Mt%QVtw68 z{mZ%)4mM_TmsGFF!JEa(^N^dTO9%I4v;a4hj#by>A0I}SebA_T_-?UA?oZhaM7X&K ztM^t*5AQ|@Pbx1_DXY#d(if#KVUfW8xGYph-vz}ET7fJCB-6Uv0MkjZ+(k0DL_Lm1 zrYaIa^qos;{-hFI0tublJjlo$ngdE(CJ5|jYwUvQ?({M@v^&-QyX zPYA}xvrqFs>;fwR*>AXO$+}h<8tOht2XIN7#`c9~byPlJ6c>@Sz^yV4;^K-A8efqX zUP_4LAb)DdPFM#nPv8&-3Q?hnw)A*I1Gt6mgwZPtct8*ao^l6LobBW&w*bjJupk- z#9k>QtC(8z$;usE;@$>I$EU?Zwnf;JP3z^|yylJV%gG(?wr(JJVXI;jqK-{+GO13M zM*R6vXB;IX2o0gh>V<9zsu|37Mj!@sbC)`s!zuaIJ23gz-l~(6es8yxtT+BXgQu~k z8W<165dLzaPFmnlC^2Iv_?BaT>?6TRh2jn_VqD7vsLG;H39y#yRGa`W^;a%B|HI*H zvAS=7vj^GrySu#BrULnwORrb$N5Myo8E_3du23Gv72rD{w(IIllgri?n`Gm1z}*9gxn7IN zg%4x6j7glzBojkMgG=B6T962*APCoqFJU`L3Dy>QOO7(8VD#f8(s$lF5&rjX`uA=R z6b5d-LX{|NZe)tbUd{_Zhie-F0?m1$dIYp=AiGZQ=oaPJ+haG_U+;^cd_mOqeDB`X z;bA;n1gy5_Ci$RfF5qf>z9N0=`xsqkatLlP1LQTd!0)$YrVWg@dY{}rfg9-=s!bDp z57znMEY@I?u zev8B6dU?Hh!&6V-#nE+;)#Fiu^dA9vH?O)0zbz<_i)c55|C#uMo=AE0p&?2BQd;pY& zHq%aOa)P$wJLNt>=XkH@G+vg9_x!>nQ;y6`!;f@kHAVhwx+3J@KWryoHx<;#y%%3A zc%RqX*z4}MIxbe1hnY#^6-h*fD>YwL)8!}&d}6t)pL}e;-cd@%B9|Mq*qwZr`?_mRM+LI2DNY zwcFvE_h+J{>i+*cW4IT(^Pgw9HEj3L{NSiA1|L6=R-?SekED>t(w#|*^K!;j&c=V9 zNM%4w-6O)n%`Dy4g#6qi+fMETElWyuYdsa8L;@W%4aU~R>wA~H54cAHm``I9lTZt) z$4+Gky%9>PA=`K6tF2FEV|{=Z9HLxBPiid zyA%5%8=nX)>K!~vs}eWO^)n?1{n^PN$`S+ltyfDI zm8&$D{x(#QpOVz#z*1?`&>U0P_p>B(t<9I=dOJ=R%SRS`YYTjKWs&6V(?_XhD;ee%ypis`znW+W`9TUiu5ad-bgD2i!_D%4m{yPYB;`;Dyqqqa9y}hD(%5M4 znob%fcG(J_Mg{IizP!V1^pynQ&qa{%nHaF-=u;Vac>Da@IyuJMHXDzRH}x}F`xsMC z(RPi#uJmI`>(h=nb^SXcS4Xi{>SO#t41IBQ%))<8q(t7Q_Ex1U^if7%S?Vmf^(c%# z6rTUGmdrEyXX->S5xd93{WrSTp_jkP)(RAD#P1q`>2|N7dg`HIK2l(b32cJY>9azW zt?UP_2BKVj%{#*~G-@52vK3&-ef;K1@?M$o9jTA4d+SAcNLXvVW%E}{7P@y>xbRrG z;<%oo%9XiUFbw`iqT;ySpJytw3ulz!P(s4aXuOM>KW$bW4&s}Jqgc6AH*a44s#bIu zGNwtEqj~I8ph3tuz+LDohGU@gh!i_`xz5F)bm!FZu8}OMD)3KmtkDaK-D+E}&bH4l zZqW``G@37e)7Y7q;D1VWGpbxxsNz&Y5EpEcF-TG)Ly43Q@d`SK$WlH*{8WK4_byYk zUg(>cso3@B!vaE0{c4`;9pB{*L9`Xe#MgIPR1u=Xi8?m>CyaWCBhS^F=G0h6T=PYQ zFC@kGb})h%p-W?lLi|43@-)>-MtsJYrsCj>^@ zPEKTv(a99nF!v4mLe2Yr{lgxAV$767 zAqt@lc8TpTyq1ShOA?J>Pgm5)MmUicNGUhX>VB!?Gk^Q5_A}fo6vrVz_cTO*&Gh2E z=%4B04?$GhYOR+R8Nz?48X>yY?GV^}ZXy`g%*cVoP~&nvdH*MWq6N~aGE^Oikc;k& z_klJN-hVd$Eji6;#&o!6zUUi)*g?GV#}SNZt#t$?sLJ7q;*s3wqX?yvJ9s0mzzybx zgwHd38t+omm7`PMUG1+i9+ulUhoHglLY+NZDrnC(ownCR3mN&~3j6SxEuam9JhL1{ zU=-n4-g{cfEMfKV=!|{!&&V>A;K!DLb!uUD0q^jQlZG?Hx7ZRmub3@PyM@PBtBgXg zl$P86+-7@xr>|@l2gzJRC_VW2EQG(7{t*K6|dNrb}KUbd`$2q}7p5z9+(- zLp&uo3Wt+Tsw~dJg*HkpH0dSrQ35+xq(4@^$(fd z0f;2>Puu3zc1jGFwwpgh&cn~+RvUY9q9^&zG5A&dXl$EZ?$6crY*Cz^&0F5KB=+drW{sorC`3 z<55;*N0_f0LYCjp{{;hn8|uRPQX?Q1Y7jb++zjQW9S$6)j^5oM>8D2imG`um{%2Q8 zab-h_zB|xOEOY_Kpewb+kE15+ zQepkFUys=HNJ}N$HF0>L1X%bMNNm=0f8cVrisMacATnV-Y>1$IZDT(ZniV&py2esJ zbHGuBQDeTFMDD-_C&}^8NusG|_N=1S?X2Uh$@4q}eX_Q^JxjOO0N1isPXmLO{pZ(& z6w$KFpzyL=tvHF?0`DAhq#5GU-;oqxYbDhk*v>bid?vK zppxSGONzyHZNozE|%o*}`*k!kt867+qSE2Pt3IXDuFV{Y z&vudWCx;HUGojnkPPqqB*QKL-m+7*iA0|lmS#)7CDA`i33kH(>9eAq$H=}MMM`2Cy z6JpjR#V}&^Y>Z@lGjRD;rQZjv3E`$AYw~h_|6EM^!lNx!x+HeY=Ya+X`F<`RApqRJ z7j$hW_7pc`d_8(;dl{U{+m6lPlRie#ZCsfP#BBfg)6J4 zfC5E7DJN1q*9%HoLYTo@3Q6!yvhbR$0d+(UGa5suD^`NzPwoBY%<>NZ)xn^%=@`S= zKN~PwP!&b(`R^_8c;H1)-0wyOm-58TMly^M+IR#cq3!+f9F~cf?nGF>j2@pK-J9U0*iG@&=x=cDimd{0JfR*rWDT?<=PdM$ z8!WQ1xyuavYj~SVXdE0qYI4dh9xCqLjsC?cA);LUsI0uzx1$@3q%d1NaudpCQg#ws zrb>2xTKNdsG2$kY{Cj>l7iqUNhy(4c3Uy zO`We$V%6TVmgMaHC@x&V#%qtzl<4yxDz6pmp1wNn#C3l4a@~SAF0LHYLU$rhSp14P z$3a9Gpcz<{V?@%g*S7tiR*jXasmD}vjm9*^(_ylMP!lq63A-E&Htj zN_3Z;3Kik`f{GFAYeQdC*&P-UX$M@rykIVRmd`|HJq8D@_4IhE@#z_A#unV?BG~+h zg9n*x33x^>&uo6$5$gL`vYKEy+ z%4?NErK}5rMc6+-8nDhT8vUSBlB3{PDAIPjJ-5L-@PS?MNb^r@@W$Nw!`$vD{#NJ! zwny7U)qAkVD9=1}$%}ok~cnA1Ke z8r9`<2uV0)Aqx;`Ux2I#iJF5*6Ku1)xDFMWd_kAcaXU}svn|~kK*1n+qv2n2R(bPN z?*pKSbc6X0-?ey;P3Tj5Tp}?l88r7zJA{0}7J;X_@EUXHrBqvN(?XHA$Xdh+% z*(9t2w3%e~F+7VL_`=-)S?zU~dNwRZLBhJN^#7E3#AXrV>{Q7warrRus59i+{UVBA zNaA$xoI!hKgTtH($|EwXFM{ZiTG25x`rk+>>U~8di61!{huK6>whk(UA?Ga65Z_0A zD&>8R5% z$LzjOsTUsIliKkp2dvlK?sx7kUlh=9qe+l-kW&)G69)^$w(PGC4IJGUW`1F4Y|<*( z3pFi15}}sOT%IV7k50aTpD|=KlPE$6%yFQ)$kfUUo?>qI;J5Fi@ArpteZ!O~u(E&l z!H?SxKai9771sxt+kI91IO2Puq|d#YcBaeEgy>-b7}|*l;R%?4X$|?bP~nqBE50P7 z=2D5wK>mh>o=K3vCU1iDa^iE&j<3XZh_zPGEs@C|TRQfwYm0dN^BdjpKgj;A@Y1u)BYO1;##V6Km_kR$JxU4x^U$&2 z@yW8G4%6~-3{Fg!s>&oWyNcI{XvQ6^q3;h8(8uKEzxutx{fxB$jjE1heEop>Rt87WAP|hHM~F8qQI3L20|Ik7dXc*EKQa+7H>-kTrB!-w^X< zum1<^js-?yNNUO}SZz8~$_CgM#n`|uhpod*KgU^=-y)HWp_?SqV<;S(3(=cA-I&3`N+17 z`FR;H@@Y>Dz)lgv;`MeKfkm+X_lgWJdPNLhbP#`k+LOcK=tOW3q5m92MX}Fvr+%0E zs&vWg20mt1*4Lkl1JRp{6YXXDR6e41{K0u~1#R&r1F;UCkDd*kjoGdxRfg3sNPok!4OKiT0@6(mxdHX?b*0@NwJqqb8p`qRydW_{I_ z3P%+Qem9v2H`vS64`w!FdUgqE?c)?ePLXz~SC=CWjOH=gzBgXi={`n7npG_?0;p+4 znBN$5X35b84X(?<&*C?r9?&2wpQvLbw59fnJCMmdE4G$)$38F2Rc0rNlH?KVDp{r; z{K!@{u1mfIp`-ixyh*Tt>jkOyOwm}s2o$cS&mVmeqKmyg|iQfk|YJp7!<#y+f) z-(Gx{?-JyrB}Qb&O?)mI)tYXI(`u4y(B>o2#0Xz(4TpsR_Kv`6a(6Cw0HS^#qWFdI z{p_GufW4tT`L<{hEiX&S_SH^ioRKs_C)8!vp%aINh7L_|3~aFwLH(~O6AhMe7j>Vy zFe#Wbl6%`55kHLN@!N}PLP#@m)|>?9an{^dMCPb@t?Ieycov8#bzlE|eydxJYq`XK55eAPUKD*RDwXWuQ-9$`C?05f6}CeW{QN z>#)T5z+OV0DUqMQzsV`h}C4!exZ#}jN#!Z&3pN)zVVc(+Ni)Izmi z$X0}FnXn{bE>mZA<1`>dTVaK}6Bq5`XEN@azOs#i{-t@jE`lku zDWaLPB0T9KYuVuI-8R?EC91_=0TzV9KLRXtDe8#qwN@-dbz(@R<-$ohN`jLE$R8e= zVLN~GnVHVO75IOIX(#OYtaC|TCS_vJyS~t$)zKAl3)c9oL$MsaZfDlhBiMJoVC_v4 z>LjOs2*PBYSVP*3)h=6j4F$~Fn(6K<;8@+=&bi?rf=aa6F6t`=P&d zI)?q>FCyC7k+SCdnV((?B->x#{ufg#--B8|qJM_qVL?ar=3nDLlS{x;Ss5uM**v@f%dLu!|LT+kdH(WKB3Ldt6QgsW zybmSszJI6JSg_jHy_VAR-zBN$)BeAg6CsKa-SYoRLP#*yrDt*-2(jUY7Y-Wl3NHF~ z1)k!kS%F7hm&>n)B7yqop;2Iic>TOM*#Sxfvwvi+kI3Lp!gFzI@q>bQI)of)#s%F& zwwF17t4zpD;0uuIZW!foBg%fMfdip~Pls*amzf$_k&$rw#fdDTvsZzz;7bK^7Ci6E zH;yyy*t)VsN#CDK!ZupEpZSJPw5AQ8;S5BJ)oV7AcScm_f7}ouh9_)t{BL(XS<}M2CNi=_dum9W zr25lCm3^R^N+YOXt*EYA)#(R&CZ%9aeoJtXF(70*?3$4r zeUsqC2=m`l^BQWjH1YV=EfZ(Cj$8s1ZF+p*+0lh^W^@7n(s(e{C9E zJ!yboToaJ9*nFwn#(>}Q+%IIqBm2ABFxGDUL#HDounT?@w)9<_7pcYt3B!Gq-csUP z4UR(=QPdE;Yl4wk-D+EUbMe4q4u;afK#8Fqt{C(+)0W6jZ|&E)>00?8coQltga56C z%|>a+0+Fk{dFWeKO7mHb!tQYbVn!lehc28pk&ZL!Aq)O#ALnX+e~P3c4uP8P^4Hm# z;`g|Q+7|k8LVvvaR1;IId0I5IgBx@I&HnNiBO1l#lK{O?5=%|eF)^ke@>Lg@>!xYt zj@h{{FvsZzwls+IV2%YbCtb+ASwYOZ&$CcD5EU~#qYm!ZDo zi)c{f!Nl@C2%M68S5ODC6MWtA)qh9d_4w<{30lhsBmrTBV=SFKcf5NM(RKk11*Fgr zq~LxHr6fh3XrDjFZZ0I@&2lza=i6x8qJheKI(r1mzlSPAe^-sNED2IB${_!JVt-b( z(;E1lCXoNsHhgVkBK6D)*7|R6be)h|d?IToI<>xec66pY0=&UOMr3N8@$3z9&yX}s zVh=x_S4&R~r)b&j!c$pieDgP-7-4H5u%<4W`PZp4KS55<6LLDA)vX@8K`^ieEtG?j<-2)j1)-@}iaAxlLm$@LCm`BqM+^T!v9Q@ONg0*zgA-CTsC>N3`08qle@N~>zU?zqQh|llM=eRo+oR4;79c;>*}VaMkN5?G!m+Prw;no zGc6Zhmvzi-p(Jt&nwGe4H=tN?FEzU5S8zE9w1w6b^C1-(q(XK{men&=e+UHff`H(DQ}A(gdOGU<4(kaqLQmG=BBHg=_h&&X zq>!_><$GO&stp?0G0wWtvS8fP$$@;4C#H$jNC;H@!TN2Q)M63gmIMyW4qx_avejKr z=k>Mpq?%$JUcGwtl}Y#FY+Lo}&71VkPi4~ALYJp>uDSPpw-%8i1$*22M+>HxV07YE zSfN4Q3Nzc9_QAXNcPf0XM^X>+7*t8A;2mhq=nemNFw|&h1gX7kqw-E!<#;DwlAl{o zT*nj}u=+2u%Y&s$HJtLkygH;JM*M*L96!bOHOc!~CV@ARXXNWMO}}(@Ytw3qU)N_Y zZn5Q2M=+p20rCQ$`FP*G95>uI z|H=*an~gT@2j?`c6h#jW zo$=#Ib?_a1LtBy>PP2w_SH^86X%GfrMyuhn0yYPBivm|x!L-~A`qWnDYFtb|w0u7pQ6`GB=AKoIaqwDwB?`#_VQ>R{T{Y}hE3T_A zwuN47>~Ho0QFvfsbJfz$=_bh))x$2Pruan^g~+^uRVhdPV^|f)f6IW+|1>MS)$3;3 zCRs`0+dXHS`hJaP=HS~x{FCmK6Pz<0w~xwrL|*~tO)gYBh^UxD0>+DQ%1{$UBacpi zRL7^}mvQZ-GK*K%s(%};;*J#?{c^0Uxzv-;QHNrVYBsur*$Qd{py@^}6aWr(PC1R~ zBDBPSDs;DKR!}+snQ{!z_0Bo~ey^WH9ruBR9Wnx4HQ>(_A>SQ&9@`>4}#xm+A>3{-1`b(-&qkVsKDVa+FjI8t&ugQ zYGYs2{E|}(IEij~do5+GyBt0YTC6@tBhO`ELneQV`8B{IRrn%fc5+e-w!kKVAH=VQ zuH0>k>rEQ2?2TG17U#XXyV>|3A(npz9TNmd)WMjt-SUzHyL6^Sbb4a#pXHZZX2O=f z^3XVZK9_J}E&-$M>Fv81C`TwNgwOe47y1grB66hA0|&F_K7Iv(jG8>In?TCgk3tf) z>Gob7;N7Q=?Ohz)qpkT5G1vdv%cdPLHqjb+G}P?wh0dg42ACvLQCCx0`!ttVD=b=g zfyMdWZ@0)KZ^?d&(yPk z(JtDAWsc+as0VUa*g|x~K;YS@#Ku8NN_uW&s<)U^{uZhB$l)lo$ zX&+vU=yJZiA%UpFYi$VleB0F$q@AcE zt=n(QtR2(mygC-&|FXT7nXXoU)#q0UKx~ySOT#fzeG9;+SpaCwdvQjitFO!?h<>m} zh|@4ZDCY)KN-=xN*3juP=rL-Qy63M~+CZ@b1?CdzgqewvdJ!?s?OB6s`dDm5U4p}p zlul{%z#zasVR?0w0YCs&jd_3W4MqwS7pTOFnWE)Yz`W3u$@BxfvcprW zzK7nR$+WbUMz@JPkui4f<7YMFSi{B><- z&HfqWl4!x9COI2W@>(an?3C^K)nV5Y$^=m_8rA1pxb;UcSC_beZ>XIpaXnnO2B+dB zf6eAPj|!+A^jpp1y%xq-hUwE`9=V?g_)2KEm5_1O9LP#xChO#cJD3bk-nxG-`59HY zoq59)bXEj~FFFKvSVAWuajW7`ILu_zBnCaN>-c*ym^<_(+o_0UWF%ak+Mb<*^}CPM z`Q33gVjDjSe!d~l+#fo9KbDP4SH31R16ypZ4eRe2n?BVLBzj~Rq4$KKH?3v|YTn7+ zA&eF52`yS?>uNgFh=HNmA#&VltXNOTJEPfJ;&7W-%{W3y*su*SlS*Gevuk@i`RY`{ zmke*NN0M06ANc)tQ!1`BWZ>b9W*y!i6`DN=O)n-*Ga%?=;x7BLGi{D;fY67Q1&~vNdMz_ThzG_X(xj5?j+E$ z7_f=R`i-$lO0j~6W4LIWkA*rf+zSVS=$7_6ZH+^vki-*-5DCF4ad8sqjgJ=2mY6;B zTnl;O<=>LJJB0+QrxV>9*9-*LH={~bwu*@BW39ez8|m>^QtXawKWETWDn-~c<0Nn5 zQMf~)>lM#4ej8S*4--aJMBA(xH1OE~Q4_AakRec^{7tfFVFghvYz#|b-FhETyPr4{ zF9*Opu>Aq_DwET0r#2aJzbrvL>Wv$Q{t_jzOb-<=Q@!dCL|ywT_F}(>Q_4tAkl;CD6q&(_=qvQ z#BXjp3#1q%L2c;=j!(4&ZZMMd45DWe9%mM$K-|qF)sW0Ih z@DiVcuz2DBQq37g`}vq?G8F;^%Zt*iU)jd$kLGGG7L?Pxz&-NTxZ0-*!g|QvW8O3- zNV9gjx4#OgMEc7Po736%PmFhhKj3wA2{@EidM>_$fqX!o24qt`kv%BpB$$B_pWl(u|;<9h(qH7pX z0Lro$K|P7k~(~6}QpoCgdR3LQB4+XbghsE#bTZNdjvks~D%ZDw?F9_ATaY z*L!#q^t{rWM)D75uqsrpf_Uy90GrspdqIy;vlby`uP~Xgi>t%H+|)`DoK3T03K4L3rk;bGcIfn*BkgpGKZW{7!|Tap z7VNH*Fh_ReF&poeQpeKF_i4!RH^(QM1R~nh2o$pa9NdEXBM3OM2KyKFEl>OgmM^XI+ zibbhztYR_U=DWG>vJ0TE17ikNp|%OmP}?!m?MtIQE}{zv5bJ>){_$T&=X<$6*!vgP zC8*g8AREw7HIz1#Zi-299u0j>>gg{$u0BWWf%#h!@P0wj>=4n=nf>-Iw_0>_b+6?H zRLw86WyrFI_J7XKB?3O4E44u@0J{Tv+H7l-d(Wxsy)>zcwivxKBEKuwFUBGAh$zsd$L_@aHX% zH#UJ%0g`kd#g3A=U&Khq3&4kMZF7id$2M2)X?JurM4h#-Z+J?ZO~i7vaWi zsvCb#cfeda^ww6Z|K9Y3BE;oitL4?GPV?Q)gPp2{zKS9Jrgmq5a&VJMDhqlFNh03B zy1il7>?ZBWKJY)P4yZvL^Pec;Kb+VdMs~0!#-3u!^oM<5`#r>CO6KI#)HHdFwuI3P zER`0n-stubXAaTK#bj?W^9?Kg*@Ab}yoaG&ozv%m_E%QuW>wB-4dtpBj7G(fCX=g4I*|S9c*^^P;v0aY z?wOk8^xiU4vx6RkigU$rWDf#td@93fV^b18V>;GSi#j5oO_fmcOcjU$NE97 zrvZq83~-Mga+cL*iM3hkH84ojZdN!HizRbm`*3+8YRPthv85c1-c3a-NcbZSyG7>eZZXc~vwZwV9lVjL ztja$VzH`q8<(sgIL=rQcsAU4va!7U9qgN+1h+WhRaY_{O#P!?qKj{Esowl7eKT+(L7R4Ot+>7E~sfe;!(fdFJwrT~7hG4;}h@uNei3IpsPz6brP{?Vg8yB1m&Ma*X{IB`+(WR4V29m=e`$U=y4eC1azX<&o&zG zuwQ_q1wql@SMO9F#ZG4hDydFty#86o`dp7%~1 zfy9B^H>w-E*p_u)g0#GF$RhS>y!@RXpFWeOQ``1>+r6`klevAg^#i(V!AB~&Va4tC zinqWUv&^ONtakp%FZC;uTusA)OywUiP^@?UhqG?b6m}u@-F+SXV3LA($9+xs=TG-Q zhK@rI0wmUdh6*JPeerg)B2C3?gO>UIc32C|trEcZ zW#SPnZDy?6>+{2P_XRIGT-r<@mj{@#b^VI#Ffyhm%g|p93kb$|?Ao7yX*{c^5{5%r zOl$K1;(c$y?oAJZ(~LSX?rA>nfY7lj^6hDTQn&ENGK{>U&wY&4(N3`AZD(DF4aV=K z4e=F00}qO-4~Xhu>aBSXDi(sqeMr&~xuZu^%{2-$p zgPIGv9>G?Tu=`(Y5p(ohICH8pAvThWV}AsU~s=;|9H`)$1|Bi4Mk&9EgR#r(5Dg z+RJYkZn^>82$;CJ)pk{S+9PG$tsT|LC$I)fjiBQER2%%%Gbt!&?ha>tRzv}vK|nZa zA~UewY@M(Stq*uV-Yyzs{)VZ;pWncS#%YLWWxZaqo4f*&7u|vBX94O@X|?V;?E5;Y z=oN!~!!(N_R{sF0v?$vZA5k)(mApzU_KSrr;wh}d%ZMF|1)}yJoBCY{&Zi{#k5u{H z7%7uozdE8-e~^2JJ#!-b+Bi&G78U?h{@?g~QjELML1;XL6P#u?V+DwiPqKa%x%ujj zp(SXa(0r*8EtDpal*pst4yJWEn_@P6YVk2HdFpvt`TbsH$^8AN34zn2EWz5B@b?8H z81#7IJ_4n!P7pBu;oVyj1EQl2G_9<6wNF#f5&eSI7T`v~ln>Z1Vvhkx)cM-;HLJHP zS>>wppx#FvkAmTv^dG#djtHpPo^m1p@^OqWZ&_^3yH%x?9LUsx9()3%K|s1riPRtX z6KgzC0$iO?fI$FIaUYwi;>f?wmD&PiXbY|s^_jWT(EO5 zJR0e(NuSa3xqbmpOjoh+&)XVndp$l$k{s&D@kCOSSSrG^7#iNJRQa?(=Ygvi70>k4 zQeIZ18-1Eqw(!BfnX$9`(rG?*xZYI=#v#>G?bG+RZ_aiPkC&u*W`ITEFPjf0hTrZa za!pvzp*BO3#&w*ZtTqD;*!R2${6E2`>XrX}GY5y&dHFySY!0FMAp zNv6E!i)*1k`TN&C*9?~T-9$aW3B(GI7@RIpEAlV>M2_W5AW(@N{2G#b&M(jC_ed$F~z}f_d zXQu)tDf3codDm^aE%Ns3t6|rnnEsCG1su&toX2*wr*f1vr-28kob)JLmFXgW0BCmN z9x0u&+<+&Jzgu7N&$FWl1CFz;by!G3f}OkG*5rblSCCUBYQupXF%9rdq-KY5V_MHPpj_koi_&9E{wv z+s$}_mA{ApqXNWJh6OGdFvw46v-#Il#R5tc%;E2^NfBq=wROTj3&&JFQii8dM3yYo z0R=NcbN7ihv=OTls^45lAFpGs240e)a#hbAoq#Ssec)5-a|@9Z>hn`0R+}#dicuwy zDK6NoU0K&&0n3jV_zCmcICsEW0J%wuRJX5J!IteH>PL;+Sckwbt{1laJ5oBcVk#1# z8xcCEsR4HWW=70hyGU`Q19bg}TH?FqbAGVl$jni<+$Y&_!yepN=aP>+fYSRCyeDc9 z6hgY@`x;yxAgYb{`{KBO2y|W5N(7e?pAXPIg}?30+3b7|2%{GjQ?vW+0X0<-XQegy zt0mR$g%?Y(^AkpWl|a`N-tZ;ZjOI2A@mDwYgm zUpkE{B4kPp#G0}329g7=c@8juZ#r=Q9<@0*YJdiW83loiyT2&~Q0vn^jo2A@Iwd<* zVuM)_D1gx#U%!Fl`$v?v^c_+Myg>c66&bM=#hH5V)-`N)JDN(=I;=xH#=~u-xH1U$Y;pj2vIm@5&toUiE$BEc>=(ZKRS@0vum@hEl$gQQ-)Mb+Rc;Lynf+5TR zQ*6D4kR#B_s$X_G?8wr-kIdyqJP;cCI5JSP$Y(k*R;4o5Lj%^l2kz6Do1iKA0y~2g zBZ{5iJ`6rO?~=dNzoN=n9w-9oz_tPKxynx_6wlN5yUIPRbpc1-lGIt!^Pj`ck+hy@ zO^HA#u4kZt)N@%OFM8ZnXorEuN?67G;QN zIav3b+pj=pAL?v8&B_NKL;TigL(JYI4Y-LI8!-=1@~+{C)4mxx087MGTQ1w*{)-hO zWcvv+XpkN;d6~Hs5a%cx4oGDn7y=zhl`T%1)Dl#vxuFlN<|fc!EEW}vuIWzzzcx|A zlz;!x=^^DL=&TQKhV>AIWW*Fq(<@JmhXe$=pb%B6eTS_hns-oJR6m#o8=T-A*J zZTp-QSbo`?0M+ja)Ybx*50N(=9^k*~0Zn7SCOXyu11LWrSv3#a#-cZ3W8wS;`R2(X z@1Zd#mD)}-YyQnN(RY5>M(FazjYC0zVx?D|Z8rrwE$q!}kOY9Nel#_X4EPiC{oWu} zAm$h|PgKdlc>U9d)66(T6rdwXAxHJ_`b_%(qC`J`AN*XJ?{H(u5XkuDy1^m(S5xj~ zNr!xKU~_@g@M_LPUS}Pyw-gBJW$C|WPltB@x24ghg)a{#Z2?enT%`J37QcNxa((;^ zw4R}OD)3Oi!cq5>$0-1Q{+*iL7I&u=Ov;HdIN@z4V&L@{M02^ zNiE<^g~WnV!9BK70Zc-mf~`Ma17+XnA2Drf%en`9TVix6M|Sz%5u&bewRA>oH5p#h zA24#%{PO1fGGkVpXH6KGCXJ>WEp*-_HV*e}vlNR68$O&@W&u=uo8)T6)7At`3&1-C zvX*?6yf|2?PgzBW&HYO`kbw5wsr)Jl)aIoU8t(T#gXtOwRsccz4u4`81SP;ODzkMm zLjA)EXrn1@ze8&Jk<#-hTZi^(%Gfr6xXElRb~ni7FPYAewAIrF8^R!A%n*zJXf{F&W9y%cK&Aj2WwL1_YZt1J<4>{3Hg z6hIJ#nC5-S5L5zi^5RYzGZhm6=>W9bt|gqts8~KXdjnv_1i!sYOI(##2r&cpBrr5Q zVO!eN61buz72ve0cVRnxEnSwU-%3D8a|=ft0X#FSR>d{0{zeAn_T_d^Bh=nq)M!29e!k|8^+-u zX2zlubgtVg>R)aP)SiQp40wz{mEiy&8d!;i#9xB!?nqktIfw3YqW#EyLas3He}{V< zOUX`4$$ZUjE*?$#loH7R)&ukCvq7}Zm~?}0AK8J4`(I+!NZPfV{k!){zdb~~F8*tR z3!6s!$dvJ*m4_TI8W_DV>0_Q;kI*+o_gA+q;~>^(A)Ga`HMd2;f7x$gVEuKW6a zK7YXHCl8NDIp61TypGp+j`y*s+R5I5e_4d^%XetNL2#r}GK3_b3O3G{WBYf1CVTCL z#=|KWJGUrHTc~QF*Aw+}({}`2tlH=&@AF0`S^yfSKlLnKL|31qX;>ow29cXjokq+?1_5<3agJh2MbNAp-t^u6gMcBwgn^Z@xU)*^ z%FtE$i#y`q>5!mK?UX5I&h&u{ecqe`&cpvR>gM~$a4U(~{QM_quqzS=o_?RVgm@`g zD8DEz@b5k?bhV1s=UkTu&0{6jt3~5$Z{Gl=vE@7NL3BC7oazL0_y2@dxvC!YhC8IF7Dnry=zUoJH@c{ z=q;>wW$F)i=;8+(Z~xiD@&bt&H@Z0OriuH@*Q55JhZ87a2m;_`FVcJfE!t*tV(8_Z z=-I<-wD@k7m*83m^;)^8>lS?}^t%-4?@7qWkVvH6*mkq>)e&9>T1PxbprC&jjEzV) zqstVbFXzVD<^ru`65i=|T|srDjF1l+cb`3RgSGmXc>l)Csm^9x-m_BSD^+RExBsBd z_*ZKyPEKO6{lV|a?|*gG@83Lt=>U4hsaEgeKkk?bW0}N;-H(L#;x(7wIy%6}Qc9fO zh`Nf;N?Kf8jEQsky*{LiZO}~Nh*ag&I===+23j;wA9q}n7l5yx82J0WuE>?4X$9IH z@pU?JMpNTBg5YB0CMeUa*eT4-%{lZdGS8pr zGvf6)h&*70pK?&To)(Dx(#7_F*SS4WVVG6+y8BvS_0K0AI)_i@d;(EWvyz-|w}JQ_ zDv0^fQ-NJg+^6^XvjH85MI#)vw(iY^t48xZC0QJGxod^9*L#*_4}xh5LJ2b!W~PgG zjSZFWdIb=~5|}(>@P2_N$|fD*ZDM#Iw9UVQY_BtAG2Mf&;b4a$aX8~C)w~f)5L~^t z>j_hz`BBNdKi+ef_*ZoKJ&1Pmjq1;(4o-<84N#KE-~J^IKrEb01VX@Gy+u^ zs>b%tVkZPkTDB?|(_nYK*ZV978<{?ue_X>)77fE?rg?S8Ol3o(v0Z^36Uf<~Usm4% zf3gv6xLgfHEhw{`cPlh{M@fHqd12>LmfbU$da(MwLc(drW*XP}Q`zi!rDQrA(h~GO z7emOB1Q)Uzi^qU+h5KvC&(odf4>gi-=hko=q~~}$wch!tzrp?abB#8s5CSzWdnQ)&$)EaI(UL@ZGvF03zZU5*9vD0Sl5wJ+E-VSrPGYeQ z4Vz2@P^3^9tFEqhL3^c5Y9C~cc@Uh?r2|UvLN9ZgahNzL(6Y1988sNBJ_0u>zjhd} za(JCerp>@Ke!uDIDh6y#j-OKTfdNiHVU&j)aKKQWJFc;{0U_tB>zZ0@!tE?CPm2i+ z`}H9tY+{77Je7)?1myF=bmM4(Pr#a2Ll6x3#?2P~x{vviwq|zBBsOV(`Zwr!V(iS} z*6(>Zynti?1zW3RX}Q9^0%!ZMog}^LHiy7l72}#sP5WBcHJ>x|!S1eek=c_cP24)T z64XRQ1Em)IVyA~0)}sXredycYhTe%hPl_*f+c0{}ZfrcMk}3!{wC6)!O5ik1Uj?$; z@3E$`bPf0#jBy2c9OkOpl188$V2f3=m4?*bn$@?PKa`P@=d#OqL%l`iU=JQRE+!cJ~x>aac8_yYPKVG%f&DF5Ufw(2+zUjA7 z^X&Hp^X#eGfWW||wn?AkwNv!57r981q@NX)+7;05jd{5nCUkND`OAOwSydi=zwH4& z%+A?`e3bm9wU_VHaqqhT?W{zY9o!dqt_o)pxn5U4+V$T5*phsZUPRJpoYG{d0XS-4 zrf)jfZvs#xq+;X0GXh2D0p_Sje$|e!j(N6@#A{MZ1p+nS3rCI&`EQ`GKKk+AEkPQ5kU$z5b+Ynz&!Y;A7NTs87Z zBRecCjMJzNxBKc1rK#G*ZzLBW%+=M}IBNG7x653vQd(>AlnfEn`Kmk&&uZ~|r(bPB z?<{P#=|M-NNiNwJt+hma^-MxJ563BL8B?l158OlGK5~|S31BPB=K&j@58r+V-7)u3+<}FjJUl!S z6lbT$8?>Tcev@h$vi`YQc+-02R*jB&NHP1g?5wON#|+ts!vfUaO7rqUf11e=`uJcs zpN_!yO#mD9DVwh@$kHNivUE}?6!`pvvI=lV5?I9OkR8{$B4OE~m@28h1)*Oan13ue z$W3A!&^UKwl(W_sZTX((QCPmYBF9Dh6d=U58TL#mN>J_KQkDUUuN*QuKWhQD<{Ku60KhXc;;1PvjkB*9ckwl8wz`OCrCw>>CLV=j`807?5w-H z``4yP-!uFMBO{}+u`y=}gKU-5vy;4v$$D?R?g%Qr`C3X|8{E9DtuqoCC8f*Wc{MI8 z+uE$+T|0&+nx`dyhMgmTCiv;uFoX&!%EAbv`RS~@e_Zend=#jVGNnAdRKkKvdi%Pk z3*%qMV+FrUdt7*t;Z`BtL3sL{QJ1pVc#ob>pT}%PTteOz<{8sRenC z5vs($&=c>{rP#PQU-aJS+3TnR5IUr#sgk!qMn$V0$;ZM==1=8g;cojK!{%W8z!6rB zEI;weva(G3R$4Phh}Y@q$Mr!0*Okw=F9!>NbI>2dnf?YAEcHr{{$HXuOmDIdj13GF z_AkDlg{-M!Ahf-%IILGV2c-xs5LI)bQsAtNF$j@R3MJHUtcbn<{s@1x<6@9lFH#Zx zk~N{-a9*?_S%Ez|Dznh)t3MoC`vQH7w&2dLEw@X%8GVy`#zoDS!t!9ZJFT6+aJfUn ze`AI|w2O|TGv+N>VS&c6%dTP*Xa24^rt#kP$Zg-ZdvEWUKB|V6k2CZrqkvUBLCj7UW@0*6tL{Q)!hG(mpgc~jdAkOIk7^Wr9IyATew}SDu z-fDwkYhyukedy(TE(^OPB=D9X1y5chBV;`FFi9zV$DUhpv_+2%>T68mvx8M56*-#D zA7UVjmm8GM$jR*R3fux7?xRpeRc6^N7`z5F2Mh(5k7~~*WJpMISb+18tTg$&HicvA zLuEB#0d5+gmBJJ|+ZA!s1LV~lZA9w`^e#8uY~3|S81Fe&pN$(F1}YFx^CP++(PM2b z4P`&yU)9amD~E>n+rl=cu!sm1Tqu#NnJ4mmpGcoZz%dijf6<$yB;VNp;e4WnE}km!po#mkudkhbCb0WAR5vlUK^i34liDnLQP7*(Aobvs>;K zcB!l8$aNsJx*qL2%=_J+zUur8_IJQ-`L;qYvhxI5#+0_}61bT+1pxA)iAa*zQRKUS z$NPoI`Q9YG?wJLlFyJ`nF!!X#6JR*GgG&%7b?a}paRVf;B2n`-F3$0hB&d2u33b_Y zpq?LhT-+ji|K5`}(SXR3zQbgl13QWqMb zfbHJ3#iQZ<6y+X+0kVii`X3&**6qJxd%hbW^_P5tl9I$tACT8}1p4B2Vw^HiGU9F>O=ce&vA+FqP2Ng0fehJ9t_Hc=7s1cL0D6hxxlY5|Eq8F{uR~jEzq; zX1Ns7;7Ajct}E8{$gC&E|d+ONU!Pex1m$`s>Rm}Tsu8ue(#Cm#PTQ9WqzS#=4^`mRAcXB*1 zTf{Q<{t(2K)H-oLNXxajpfD{J8O=4TB6y1JO67W;z`tSH{SoP6$L?p}8!4B-p^8$Y zA{;v_k}${kZCBkX4cZ`(WkFD6Cg+>Yn*rAZ>WeFVqAAV*NHF>zw>ldVVG&;%ip3lZ z`T5}Kq2ZwaP407LH!gP2kq=*_vVlMWkcoQrlgCV{<|>0V%Ggpa!$G zkD%!kd}~Gs2PgUJMi4=nuG7oZpFfSN(nkMCw4-$o|-^{J|ge>>Dd5$G%`??SGlibup=z%HIe^xLX0WwK*<5T{R zFLbNDnA|wE^lesnl3%Rl1$}0F+qI+n^0P-3+WUt~=^jr@p`!6-Wdxsw`Zn;0u;XLp zK=L{xYQONO60W zizVO)0HU5>1{)?}iOd%dVcwHyFT9>bC?9B^a5cGF*lvQjVfXF#U@~$w92h+1%@M3* zC^oZioGU;%1ls9ud=X^0k@BiV)Q7G7=&iuD0(cv9*`;Unvr3@N3t(h#$+7ql8b-)^ z{>UaQeukuCZoh$HhI0(!w3)(rr)}^ugC&x{*QJ~IB3Ss(#9RgF3MI@A06GZJ->k0k z0!5z)jaL)+WKqvy#_IiXdyHj~&ifq&mc&~ry;w}73HW0H@O?qRBX9c@0rauZ^|HXW zXFVtWW;W7|=OzZt^vp7*!_E`Xx5HP()PIfmC1J?8U3zo*G&>UMCPQx;^pzKuU)MCu$GJfOjXNw(*HH<(zD$qqKIj+s z3T#~&x7$}*yZHPHrH>mZRe`YnPK#dA`Pm2taauXihvUDMaMRyI{SvnZCzM`bal;7h z&dP(8dT=dETH{1~IBdTd%5ZLa%9H|$;M@Qn2>QWdybL+Fh3KrC>(*~@&JRR_AYsN+ zC;CveYUgMP(^NG2^-Fl2lxLFUNa;1K89ZgJn^#1G8)$v9Pc%o9;;EEjbvqYkzkQ+m z+;|8;fLQq?m@;EGgfl?%N?lh)*oCp5oA=77EIh`x~dTu>w|k6 zShjTILQ~`cOtzHiI#7X#Sesd=0W(C@;FnE6C9kCY*%4cv63cxBFyjl~a4^VPRGB$_ zZr`P83>gSm))fxe3KHcepUsx)!Mn60k>8{{)nB=`Xglg{wKDsPi9yf7^3D%k?sD2) ztbpqV2GdqUa8i@BB3`n$!!(U2sCXWkv;M=(az_o3<-q3lCLoE%RcoVTh_C?&2)K=% zoihbx8#wB@z#UJUow2XMst+AK##c-v!07Q5WMhYX67fuQQwM4J~lzQCgn5LFpfR70B;)xc5J2bX|3_yd?L1#omYA_^8Zoa4N&3L~0=50_wgZJQxJ1Ax?Ez8ETc>_B zBsU?+QcQ;Jy&avKV|zy9%`?^t5m7@Vzd=>=sgMHomDkljWFgu&LM7U`N z)}ao&r~XtHe9OelGX^4;G5ua71+V`*#Bek~R^ewVECF=eLG+!C3Yeic z$j3D?`h24j)Q;!2l6|;45HM z2ZA;jfwvn~y_x-ezd^yLD+DgGe(%XVxz+_<&CBVuD(Gl|FI2CNl${zU!O8%y1-QCL zh#5flIY8k28C>K}Lo_!|=+prQ2wK9tw9_mE-uEkc803nOWbnsAK>S+J&l_sY$sx z>6TI_Tbby}!9RoN)>lvDc!NbO8B!~5t;s`2zo`PgZSqbkRcW>JMr1n^dQ6yuz*ytP ztz~cjgGBlVq`O>xPyTZlKK5Fp+yvMLTN_@=XBSmHd!c*=3F6`T0~O^nF}^vnewQPMWH4+pP`?!0K) zt|r#BcRQfLz@}oUQNE3*R?3d*z=rbDB*^f%sq(rD_1(OSi}RpShU|`muPl3|5!|)n zztQGnq{Bud4P5df%UVD|4{>!o03q-Iq^O`_-jvC{M;ag~HpAsUzXT zv7mnexCWXRiy|+jz&i~QDF@o1#d;qr#_YqC5yrfy-v#Cqr<5!yTEwKAG!b*~pQur& z!TGkVV&9#FS_?9Wd*E+6Y1&rRq`PT)FvJNjNP)%$U`inC7)(RyO6in)W;QclwY0|& zD&#!{6jDpxR?2G-<-0cF@r=ZrvfY6bTfzjJRC>k_3kxGbM*5PBK+9aThP1Xy(6buq z6^2_K%puXyFX-+|R7n#BQd430htfTY4w?$UlDJ@o>HnfR+AKD@hskU*tGhtOZSeAK z`+HaG(>%L8clv&+_6r@h7iK^43@cg~AY9;NrnESVj`l>!Z%f>HTk076`#aLA$f$uw zQuwZ!Rzt8RMiAATOaQblM9D4ip?C*_}9j*cF@;~*}$EDUJ6>S zPi70s1I5<$GZfzlid;t@r}*WI*$#?ctrHL|QD~?^?J;D98|a*IgzObc&Kq{;5$hnS zjl7Gklx`kB`1u^a5qT217ZVp^M7>L{wk*=LQ+P%fS*1m+eG6rt+mlD3zi)TaK5i1> zdAxHR`E^3cbvAl}wt~(UQ!7{4R@7iqHRde0yl`{BrGUNi78QTSXl4-YwS@Tv zuA?Usdy#}nf1D+BuW^g+Uv#qB`{rrm_{U0AK$X)(sc2g6myh|r@&||@I#4S<{ zDI*Tf?8K9;QZw^W$a-Jv4-V8{4JH5n(2bVF8G2)%ljTry_Hwo(?;hTn=Fyk;xbS_n z9)57^>gJNQ)PL<@FF0RWw%1aA|7*`L>xx23?mXkv>rtZLiyx=4ip1MrYCvx!U$}Yw zul;F~!FtSD*Ubt92UcmbMEce%zKl9|R+oG=InYQ7TW%q<0r?Zu_eRF&|w4}(g zjy8`9sU*O9b`VV?V0I9~A^%hS&K=9&7dNo+Z}%lhpOw^}>PPamyK#?e4y5RMSMDCG z>o$DMCmv;+4x7tbufH%=z#!zhr8GdX@V!n2ehZaOHp^JVmtD(wJ^V<3SneXc3eS4|R z_FjG$wp0t`b>>t3rDvJn!XupOm_8Ji6^xC%F5;!A-|uBiju_~Oq%JvbCd;&a&%e28 z^bN;?i^=)g-nJ8Zg+|cfL7JA#3!1v$dr1-p*VI4Le@kNFSbj39|N49GlLv{FjL0@7 z*<|wZRedC7vq(3FxawcK)Y@n)S9h(>>WQTKNq;-x>d}S@yceI7y!>hNNmPO=@jW)P zj)5^W=9B&P+ch6^$S+XdJJiQldt=P1QLOng1o`W@Bl?2nh@e%Tbx$0bOX&(n*8tnl z8xx&pc=nbnpBmaNQ?L<7F;cF+KLX0|59`9UIfZ{@mEra>2^sF)D&c)r?cq#}OU_4A zB%kcO$T3k3dYD75=dfR}MV_)S;^ELy9NtiN*|$rqYWyt+=De(LW?y&?$A!vk!}wo( zy@m%SIa{q(%HKV%K&7Mk0YS3deySee(BjO5|Q zyc@a3v0X;_c_f-+u!6Ey=2R=NN`BVrE;)rElZ(UN<0=b0#B6uezvBmSi6i&>WqA2i z{G*OStC1uPt>fiP{@LD<{Nb%3Cw5D19feMQ>>9pv?Rpi zb+Yhg!pF$77AM|YRmu#7lc(61{ifyq3a1A-0_7$;b5kO5@og`bnyp9Q^e)KymTl=s zH@(q7-oKMWj`9;MfV`F%mlb(j=&dYVhMsNn+nd1oypgW@6;8N19S|aj*O1Kk_kBwS^~b{G}R7 zROCHe40v*0@vs;QWlogHnpP6%dAmEr@~Aye(-#`JUBNHo>AHNiRB>6G%+ozX^*UMq z*Z?iU?5`YwAhA-(hfUkwkFhot8;xE0_-gh>nwECEZT#@4R#>Ao`#X*H{+>L??SmO4 zyE&daRz zAHJ@NNk$!BOt|{(Xc2oZ*i$ck!tKduX_}}WOXf+-#xFcEqV&G-P+?K4929+=|4MDm zj=^#r4@>^ubT(CgVb*n+Hu+m2kZ{gw<<_Q-DT6i1Lct{480*HCI94oI6Jo~SUZy; zO-F`Tb{u!edazBE95eH9Bf^&7P%WE?LeOU8E-|{*Ur5FKr;UH}c-OdcD#kx{Ni@G^ zXFT}C6Z~>TuYY$Q$5dd*GyZjCZthy%6J;*=*+p)J70;XfQz+L8=grcw%dyjv#pRv0 zFBpCaf2BRdC2zg8(yWQGVfVHAQ8$~H7H{9izxURWVW0Vh_^S9{ks;8HvZFY_K^Xm& zwlQw@B#yXsSMeb>uZ;aC7m1tneXiI4|3Ad(NqLUssC695zb$n^MM?3{X3}Pj{HDlf z396c8mV8BDBg7`dKmG=p=A!3LrcWEOPOjY|ddRh|0k!#fr^r$eAOm!O8~+>;;&xe{cQ`aa5m>Jyq4FWjx5H7^k=7OwsUdh(vXrT z&MG<2&9@ky?oGI)mS?otQl-30t>H6S$QO}9t0AUjN*F^{Pm8cEsr;H!bUAVd_K=w# zbjzIr2fX^5E!%-RQW@E~JjI=2s-cwo59NbAKag5%Q2I7{7ztS!u9CY*ZP*ugOb)a( z4{qQg>g4|pnzuZ8GNd&|$-{(q$JX;45`6KIXp`Re-1DZ^y{viYw~;#Iu9i|x`u+dg z63z8F30+WJvS>+rtWIM+VfUkArEA_PLk#JDi{W<{D_ZTeajxthpUvZf3sjhhjhO#b zY6QuAkCj>i4;L@)^9N!(J#}mi7KZBWdVDJtrWKb%RbNuo-h00jwvf#6jKt-&OPr)) z1K0o9pK^AepF%5w=bsM2JY4*}w`T3XPBYi?&6OKLTK*9jeh2>*ZRdgDW9%lcq__wH zDM&w;mZ&`kYYt_5opdV~l>>jq7P3xo12(Z9931LL{2l zZV-n574Hy+HIV79IN90DMh+#$U5|szUAZ59{zxl%dMB=|yxnhD)AvIozJv){%@dlo z>T(-W%oE6HHl||ujsD~D_9nR3@ey^>|Jb69cn5pL6!SlVz`OF*b4&!+KNfYl)_j}_ z;r{X;AvekK&!gmbQfKXP?}B2oX&zTRB<6A9N{0}{6#id-UA&%$1r0f3es($ho~KiT z*@D0f0mfIVzYe3{$?EuOJ`3+KL47}TvN^C)5y)Xa<`u`RZp(3cgnQuM5AbZEdR+7r z!-*&CD$X!tY>qeqQwSaHdVSaC>K`yQ_=4 zuPNc>nQe<$o=+RgkZb=t5k>}vSEUF9;+NC%@TV;0WJ-%Kx%QLwK#GNjhx3Rc(nu*N z#!xO)SGm#t{ESJFst(1Ti*QLoUNK>=k+zOMHl}6cep*#>LyvP zb|GiFtCG^IQ{yrCpwqpt=r$^QerkdlP7DOXE;&>gc+v%Lk#SLD<)85JUsI#X;4dON lB#}7q!;Ib*6MmGO&}vVNs4w(+IKyuU1sN6T0?9`K{}0Zw_{snP diff --git a/docs/images/UndoRedoState0.png b/docs/images/UndoRedoState0.png deleted file mode 100644 index c5f91b5853370c1d6a8b9f5f9a9724e4a4a2c429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6619 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 diff --git a/docs/images/UndoRedoState2.png b/docs/images/UndoRedoState2.png deleted file mode 100644 index 20853694e0338a708b62ce3a20c72bff00c0b8e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7855 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 diff --git a/docs/images/UndoRedoState3.png b/docs/images/UndoRedoState3.png deleted file mode 100644 index 1a9551b31bea8ffedd9db1094f06ef6b74431fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7588 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 E2LvS7wEzGB diff --git a/docs/images/UndoRedoState4.png b/docs/images/UndoRedoState4.png deleted file mode 100644 index 46dfae78c94886758c6d6c3c525db41b361d14e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7605 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 diff --git a/docs/images/UndoRedoState5.png b/docs/images/UndoRedoState5.png deleted file mode 100644 index f45889b5fdff0652cf017fd906297d229e49c8fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 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 diff --git a/docs/images/tracing/LogicSequenceDiagram.png b/docs/images/tracing/LogicSequenceDiagram.png deleted file mode 100644 index 25c8b66b9f12ddad7feb7610fbdb2012d612a91a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16688 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 jA=0.1.90" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz", + "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/file-exists/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@kwsites/file-exists/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "node_modules/@markbind/core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@markbind/core/-/core-5.1.0.tgz", + "integrity": "sha512-YAXjH+qCXnrBzpKIAJkayVLmyIUaG/8Dms3Gpd2VIufeZyW8w0diXdgKSsymjzodTMgghZMdxG3Qpng833ARPg==", + "dev": true, + "dependencies": { + "@fortawesome/fontawesome-free": "^6.4.0", + "@markbind/core-web": "5.1.0", + "@primer/octicons": "^15.0.1", + "@sindresorhus/slugify": "^0.9.1", + "@tlylt/markdown-it-imsize": "^3.0.0", + "bluebird": "^3.7.2", + "bootswatch": "5.1.3", + "cheerio": "^0.22.0", + "crypto-js": "^4.0.0", + "csv-parse": "^4.14.2", + "ensure-posix-path": "^1.1.1", + "fastmatter": "^2.1.1", + "fs-extra": "^9.0.1", + "gh-pages": "^2.1.1", + "highlight.js": "^10.4.1", + "htmlparser2": "^3.10.1", + "ignore": "^5.1.4", + "js-beautify": "1.14.3", + "katex": "^0.15.6", + "lodash": "^4.17.15", + "markdown-it": "^12.3.2", + "markdown-it-attrs": "^4.1.3", + "markdown-it-emoji": "^1.4.0", + "markdown-it-linkify-images": "^3.0.0", + "markdown-it-mark": "^3.0.0", + "markdown-it-regexp": "^0.4.0", + "markdown-it-sub": "^1.0.0", + "markdown-it-sup": "^1.0.0", + "markdown-it-table-of-contents": "^0.4.4", + "markdown-it-task-lists": "^2.1.1", + "markdown-it-texmath": "^1.0.0", + "markdown-it-video": "^0.6.3", + "material-icons": "^1.9.1", + "moment": "^2.29.4", + "nunjucks": "3.2.2", + "path-is-inside": "^1.0.2", + "simple-git": "^2.17.0", + "url-parse": "^1.5.10", + "uuid": "^8.3.1", + "vue": "2.6.14", + "vue-server-renderer": "2.6.14", + "vue-template-compiler": "2.6.14", + "walk-sync": "^2.0.2", + "winston": "^2.4.4" + } + }, + "node_modules/@markbind/core-web": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@markbind/core-web/-/core-web-5.1.0.tgz", + "integrity": "sha512-TRzz8ZCr25pylKvFxF/WwXDi4Gbtsb2OLXV61WyTFqVy03tFoEJ2mqncpbliI9DrfDdKWcm1YZPgDCedVkYjKA==", + "dev": true + }, + "node_modules/@primer/octicons": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@primer/octicons/-/octicons-15.2.0.tgz", + "integrity": "sha512-4cHZzcZ3F/HQNL4EKSaFyVsW7XtITiJkTeB1JDDmRuP/XobyWyF9gWxuV9c+byUa8dOB5KNQn37iRvNrIehPUQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1" + } + }, + "node_modules/@sindresorhus/slugify": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-0.9.1.tgz", + "integrity": "sha512-b6heYM9dzZD13t2GOiEQTDE0qX+I1GyOotMwKh9VQqzuNiVdPVT8dM43fe9HNb/3ul+Qwd5oKSEDrDIfhq3bnQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@tlylt/markdown-it-imsize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tlylt/markdown-it-imsize/-/markdown-it-imsize-3.0.0.tgz", + "integrity": "sha512-6kTM+vRJTuN2UxNPyJ8yC+NHrzS+MxVHV+z+bDxSr/Fd7eTah2+otLKC2B17YI/1lQnSumA2qokPGuzsA98c6g==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apache-crypt": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.5.tgz", + "integrity": "sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg==", + "dev": true, + "dependencies": { + "unix-crypt-td-js": "^1.1.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/apache-md5": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.7.tgz", + "integrity": "sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootswatch": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-5.1.3.tgz", + "integrity": "sha512-NmZFN6rOCoXWQ/PkzmD8FFWDe24kocX9OXWHNVaLxVVnpqpAzEbMFsf8bAfKwVtpNXibasZCzv09B5fLieAh2g==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", + "dev": true, + "dependencies": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "dev": true + }, + "node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "dev": true + }, + "node_modules/cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ensure-posix-path": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz", + "integrity": "sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==", + "dev": true + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "node_modules/event-stream/node_modules/split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/event-stream/node_modules/stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "dev": true, + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastmatter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fastmatter/-/fastmatter-2.1.1.tgz", + "integrity": "sha512-NFrjZEPJZTexoJEuyM5J7n4uFaLf0dOI7Ok4b2IZXOYBqCp1Bh5RskANmQ2TuDsz3M35B1yL2AP/Rn+kp85KeA==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.0", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through2": "^3.0.1" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, + "node_modules/figlet": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/file-stream-rotator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz", + "integrity": "sha512-W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==", + "dev": true, + "dependencies": { + "moment": "^2.11.2" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha512-UZArj7+U+2reBBVCvVmRlyq9D7EYQdUtuNN+1iz7pF1jGcJ2L0TjiRCxsTZfj2xFbM4c25uGCUDpKTHA7L2TKg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha512-DKVP0WQcB7WaIMSwDETqImRej2fepPqvXQjaVib7LRZn9Rxn5UbvK2tYTqGf1A1DkIprQQkG4XSQXSOZp7Q3GQ==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filenamify-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz", + "integrity": "sha512-O9K9JcZeF5VdZWM1qR92NSv1WY2EofwudQayPx5dbnnFl9k0IcZha4eV/FGkjnBK+1irOQInij0yiooCHu/0Fg==", + "dev": true, + "dependencies": { + "filenamify": "^1.0.0", + "humanize-url": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gh-pages": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.2.0.tgz", + "integrity": "sha512-c+yPkNOPMFGNisYg9r4qvsMIjVYikJv7ImFOhPIVPt0+AcRUamZ7zkGRLHz7FKB0xrlZ+ddSOJsZv9XAFVXLmA==", + "dev": true, + "dependencies": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify-url": "^1.0.0", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/gh-pages/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/gh-pages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gh-pages/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/gh-pages/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/http-auth": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz", + "integrity": "sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==", + "dev": true, + "dependencies": { + "apache-crypt": "^1.1.2", + "apache-md5": "^1.0.6", + "bcryptjs": "^2.3.0", + "uuid": "^3.0.0" + }, + "engines": { + "node": ">=4.6.1" + } + }, + "node_modules/http-auth/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/humanize-url": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", + "integrity": "sha512-RtgTzXCPVb/te+e82NDhAc5paj+DuKSratIGAr+v+HZK24eAQ8LMoBGYoL7N/O+9iEc33AKHg45dOMKw3DNldQ==", + "dev": true, + "dependencies": { + "normalize-url": "^1.0.0", + "strip-url-auth": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/js-beautify": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.3.tgz", + "integrity": "sha512-f1ra8PHtOEu/70EBnmiUlV8nJePS58y9qKjl4JHfYWlFH6bo7ogZBz//FAZp7jDuXtYnGYKymZPlrg2I/9Zo4g==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/katex": { + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.15.6.tgz", + "integrity": "sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { + "commander": "^8.0.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/live-server": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/live-server/-/live-server-1.2.1.tgz", + "integrity": "sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw==", + "dev": true, + "dependencies": { + "chokidar": "^2.0.4", + "colors": "latest", + "connect": "^3.6.6", + "cors": "latest", + "event-stream": "3.3.4", + "faye-websocket": "0.11.x", + "http-auth": "3.1.x", + "morgan": "^1.9.1", + "object-assign": "latest", + "opn": "latest", + "proxy-middleware": "latest", + "send": "latest", + "serve-index": "^1.9.1" + }, + "bin": { + "live-server": "live-server.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/live-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/live-server/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/live-server/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/live-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/live-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/live-server/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/live-server/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "node_modules/lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==", + "dev": true + }, + "node_modules/lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==", + "dev": true + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "dev": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "node_modules/lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", + "dev": true + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "node_modules/lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==", + "dev": true + }, + "node_modules/lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==", + "dev": true + }, + "node_modules/lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/logform": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", + "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", + "dev": true, + "dependencies": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.2.0" + } + }, + "node_modules/logform/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", + "dev": true + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markbind-cli": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/markbind-cli/-/markbind-cli-5.1.0.tgz", + "integrity": "sha512-6POI1Q++2aZa+Udk/oQ6LX1oNPbKUBDY0mN3Up7VOFeK+XYW51faxuCk2Q91JTBxYRKLNtshxf0y12kB4Cj9Qw==", + "dev": true, + "dependencies": { + "@markbind/core": "5.1.0", + "@markbind/core-web": "5.1.0", + "bluebird": "^3.7.2", + "chalk": "^3.0.0", + "cheerio": "^0.22.0", + "chokidar": "^3.3.0", + "colors": "1.4.0", + "commander": "^8.1.0", + "figlet": "^1.2.4", + "find-up": "^4.1.0", + "fs-extra": "^9.0.1", + "live-server": "1.2.1", + "lodash": "^4.17.15", + "url-parse": "^1.5.10", + "winston": "^2.4.4", + "winston-daily-rotate-file": "^3.10.0" + }, + "bin": { + "markbind": "index.js" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-attrs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz", + "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "markdown-it": ">= 9.0.0" + } + }, + "node_modules/markdown-it-emoji": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", + "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==", + "dev": true + }, + "node_modules/markdown-it-linkify-images": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-linkify-images/-/markdown-it-linkify-images-3.0.0.tgz", + "integrity": "sha512-Vs5yGJa5MWjFgytzgtn8c1U6RcStj3FZKhhx459U8dYbEE5FTWZ6mMRkYMiDlkFO0j4VCsQT1LT557bY0ETgtg==", + "dev": true, + "dependencies": { + "markdown-it": "^13.0.1" + } + }, + "node_modules/markdown-it-linkify-images/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/markdown-it-linkify-images/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/markdown-it-linkify-images/node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/markdown-it-linkify-images/node_modules/markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-mark": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/markdown-it-mark/-/markdown-it-mark-3.0.1.tgz", + "integrity": "sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A==", + "dev": true + }, + "node_modules/markdown-it-regexp": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-regexp/-/markdown-it-regexp-0.4.0.tgz", + "integrity": "sha512-0XQmr46K/rMKnI93Y3CLXsHj4jIioRETTAiVnJnjrZCEkGaDOmUxTbZj/aZ17G5NlRcVpWBYjqpwSlQ9lj+Kxw==", + "dev": true + }, + "node_modules/markdown-it-sub": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz", + "integrity": "sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==", + "dev": true + }, + "node_modules/markdown-it-sup": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz", + "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==", + "dev": true + }, + "node_modules/markdown-it-table-of-contents": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", + "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==", + "dev": true, + "engines": { + "node": ">6.4.0" + } + }, + "node_modules/markdown-it-task-lists": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz", + "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==", + "dev": true + }, + "node_modules/markdown-it-texmath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-texmath/-/markdown-it-texmath-1.0.0.tgz", + "integrity": "sha512-4hhkiX8/gus+6e53PLCUmUrsa6ZWGgJW2XCW6O0ASvZUiezIK900ZicinTDtG3kAO2kon7oUA/ReWmpW2FByxg==", + "dev": true + }, + "node_modules/markdown-it-video": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/markdown-it-video/-/markdown-it-video-0.6.3.tgz", + "integrity": "sha512-T4th1kwy0OcvyWSN4u3rqPGxvbDclpucnVSSaH3ZacbGsAts964dxokx9s/I3GYsrDCJs4ogtEeEeVP18DQj0Q==", + "dev": true + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/matcher-collection": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz", + "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "minimatch": "^3.0.2" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/material-icons": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.11.tgz", + "integrity": "sha512-kp2oAdaqo/Zp6hpTZW01rOgDPWmxBUszSdDzkRm1idCjjNvdUMnqu8qu58cll6CObo+o0cydOiPLdoSugLm+mQ==", + "dev": true + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "dev": true, + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.2.tgz", + "integrity": "sha512-KUi85OoF2NMygwODAy28Lh9qHmq5hO3rBlbkYoC8v377h4l8Pt5qFjILl0LWpMbOrZ18CzfVVUvIHUIrtED3sA==", + "dev": true, + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "optionalDependencies": { + "chokidar": "^3.3.0" + } + }, + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/opn": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz", + "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==", + "deprecated": "The package has been renamed to `open`", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-middleware": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", + "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "node_modules/simple-git": { + "version": "2.48.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.48.0.tgz", + "integrity": "sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A==", + "dev": true, + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/steveukx/" + } + }, + "node_modules/simple-git/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/simple-git/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-url-auth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", + "integrity": "sha512-++41PnXftlL3pvI6lpvhSEO+89g1kIJC4MYB5E6yH+WHa5InIqz51yGd1YOGd7VNSNdoEOfzTMqbAM/2PbgaHQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unix-crypt-td-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", + "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "dev": true + }, + "node_modules/vue-server-renderer": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz", + "integrity": "sha512-HifYRa/LW7cKywg9gd4ZtvtRuBlstQBao5ZCWlg40fyB4OPoGfEXAzxb0emSLv4pBDOHYx0UjpqvxpiQFEuoLA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "lodash.template": "^4.5.0", + "lodash.uniq": "^4.5.0", + "resolve": "^1.2.0", + "serialize-javascript": "^3.1.0", + "source-map": "0.5.6" + } + }, + "node_modules/vue-server-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-server-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-server-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "node_modules/walk-sync": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz", + "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "ensure-posix-path": "^1.1.0", + "matcher-collection": "^2.0.0", + "minimatch": "^3.0.4" + }, + "engines": { + "node": "8.* || >= 10.*" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/winston": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.6.tgz", + "integrity": "sha512-J5Zu4p0tojLde8mIOyDSsmLmcP8I3Z6wtwpTDHx1+hGcdhxcJaAmG4CFtagkb+NiN1M9Ek4b42pzMWqfc9jm8w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/winston-compat": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.5.tgz", + "integrity": "sha512-EPvPcHT604AV3Ji6d3+vX8ENKIml9VSxMRnPQ+cuK/FX6f3hvPP2hxyoeeCOCFvDrJEujalfcKWlWPvAnFyS9g==", + "dev": true, + "dependencies": { + "cycle": "~1.0.3", + "logform": "^1.6.0", + "triple-beam": "^1.2.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-daily-rotate-file": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.10.0.tgz", + "integrity": "sha512-KO8CfbI2CvdR3PaFApEH02GPXiwJ+vbkF1mCkTlvRIoXFI8EFlf1ACcuaahXTEiDEKCii6cNe95gsL4ZkbnphA==", + "dev": true, + "dependencies": { + "file-stream-rotator": "^0.4.1", + "object-hash": "^1.3.0", + "semver": "^6.2.0", + "triple-beam": "^1.3.0", + "winston-compat": "^0.1.4", + "winston-transport": "^4.2.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "winston": "^2 || ^3" + } + }, + "node_modules/winston-daily-rotate-file/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport/node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, + "node_modules/winston-transport/node_modules/logform": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", + "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/winston-transport/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/winston/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/winston/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + }, + "dependencies": { + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@fortawesome/fontawesome-free": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz", + "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==", + "dev": true + }, + "@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "requires": { + "debug": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "@markbind/core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@markbind/core/-/core-5.1.0.tgz", + "integrity": "sha512-YAXjH+qCXnrBzpKIAJkayVLmyIUaG/8Dms3Gpd2VIufeZyW8w0diXdgKSsymjzodTMgghZMdxG3Qpng833ARPg==", + "dev": true, + "requires": { + "@fortawesome/fontawesome-free": "^6.4.0", + "@markbind/core-web": "5.1.0", + "@primer/octicons": "^15.0.1", + "@sindresorhus/slugify": "^0.9.1", + "@tlylt/markdown-it-imsize": "^3.0.0", + "bluebird": "^3.7.2", + "bootswatch": "5.1.3", + "cheerio": "^0.22.0", + "crypto-js": "^4.0.0", + "csv-parse": "^4.14.2", + "ensure-posix-path": "^1.1.1", + "fastmatter": "^2.1.1", + "fs-extra": "^9.0.1", + "gh-pages": "^2.1.1", + "highlight.js": "^10.4.1", + "htmlparser2": "^3.10.1", + "ignore": "^5.1.4", + "js-beautify": "1.14.3", + "katex": "^0.15.6", + "lodash": "^4.17.15", + "markdown-it": "^12.3.2", + "markdown-it-attrs": "^4.1.3", + "markdown-it-emoji": "^1.4.0", + "markdown-it-linkify-images": "^3.0.0", + "markdown-it-mark": "^3.0.0", + "markdown-it-regexp": "^0.4.0", + "markdown-it-sub": "^1.0.0", + "markdown-it-sup": "^1.0.0", + "markdown-it-table-of-contents": "^0.4.4", + "markdown-it-task-lists": "^2.1.1", + "markdown-it-texmath": "^1.0.0", + "markdown-it-video": "^0.6.3", + "material-icons": "^1.9.1", + "moment": "^2.29.4", + "nunjucks": "3.2.2", + "path-is-inside": "^1.0.2", + "simple-git": "^2.17.0", + "url-parse": "^1.5.10", + "uuid": "^8.3.1", + "vue": "2.6.14", + "vue-server-renderer": "2.6.14", + "vue-template-compiler": "2.6.14", + "walk-sync": "^2.0.2", + "winston": "^2.4.4" + } + }, + "@markbind/core-web": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@markbind/core-web/-/core-web-5.1.0.tgz", + "integrity": "sha512-TRzz8ZCr25pylKvFxF/WwXDi4Gbtsb2OLXV61WyTFqVy03tFoEJ2mqncpbliI9DrfDdKWcm1YZPgDCedVkYjKA==", + "dev": true + }, + "@primer/octicons": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@primer/octicons/-/octicons-15.2.0.tgz", + "integrity": "sha512-4cHZzcZ3F/HQNL4EKSaFyVsW7XtITiJkTeB1JDDmRuP/XobyWyF9gWxuV9c+byUa8dOB5KNQn37iRvNrIehPUQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1" + } + }, + "@sindresorhus/slugify": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-0.9.1.tgz", + "integrity": "sha512-b6heYM9dzZD13t2GOiEQTDE0qX+I1GyOotMwKh9VQqzuNiVdPVT8dM43fe9HNb/3ul+Qwd5oKSEDrDIfhq3bnQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "lodash.deburr": "^4.1.0" + } + }, + "@tlylt/markdown-it-imsize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tlylt/markdown-it-imsize/-/markdown-it-imsize-3.0.0.tgz", + "integrity": "sha512-6kTM+vRJTuN2UxNPyJ8yC+NHrzS+MxVHV+z+bDxSr/Fd7eTah2+otLKC2B17YI/1lQnSumA2qokPGuzsA98c6g==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "apache-crypt": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.5.tgz", + "integrity": "sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg==", + "dev": true, + "requires": { + "unix-crypt-td-js": "^1.1.4" + } + }, + "apache-md5": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.7.tgz", + "integrity": "sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bootswatch": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-5.1.3.tgz", + "integrity": "sha512-NmZFN6rOCoXWQ/PkzmD8FFWDe24kocX9OXWHNVaLxVVnpqpAzEbMFsf8bAfKwVtpNXibasZCzv09B5fLieAh2g==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "dev": true + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "ensure-posix-path": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz", + "integrity": "sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + }, + "dependencies": { + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "dev": true, + "requires": { + "through": "2" + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, + "requires": { + "duplexer": "~0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "fastmatter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fastmatter/-/fastmatter-2.1.1.tgz", + "integrity": "sha512-NFrjZEPJZTexoJEuyM5J7n4uFaLf0dOI7Ok4b2IZXOYBqCp1Bh5RskANmQ2TuDsz3M35B1yL2AP/Rn+kp85KeA==", + "dev": true, + "requires": { + "js-yaml": "^3.13.0", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through2": "^3.0.1" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, + "figlet": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", + "dev": true + }, + "file-stream-rotator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz", + "integrity": "sha512-W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==", + "dev": true, + "requires": { + "moment": "^2.11.2" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha512-UZArj7+U+2reBBVCvVmRlyq9D7EYQdUtuNN+1iz7pF1jGcJ2L0TjiRCxsTZfj2xFbM4c25uGCUDpKTHA7L2TKg==", + "dev": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha512-DKVP0WQcB7WaIMSwDETqImRej2fepPqvXQjaVib7LRZn9Rxn5UbvK2tYTqGf1A1DkIprQQkG4XSQXSOZp7Q3GQ==", + "dev": true, + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "filenamify-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz", + "integrity": "sha512-O9K9JcZeF5VdZWM1qR92NSv1WY2EofwudQayPx5dbnnFl9k0IcZha4eV/FGkjnBK+1irOQInij0yiooCHu/0Fg==", + "dev": true, + "requires": { + "filenamify": "^1.0.0", + "humanize-url": "^1.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "gh-pages": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.2.0.tgz", + "integrity": "sha512-c+yPkNOPMFGNisYg9r4qvsMIjVYikJv7ImFOhPIVPt0+AcRUamZ7zkGRLHz7FKB0xrlZ+ddSOJsZv9XAFVXLmA==", + "dev": true, + "requires": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify-url": "^1.0.0", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "http-auth": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz", + "integrity": "sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==", + "dev": true, + "requires": { + "apache-crypt": "^1.1.2", + "apache-md5": "^1.0.6", + "bcryptjs": "^2.3.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "humanize-url": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", + "integrity": "sha512-RtgTzXCPVb/te+e82NDhAc5paj+DuKSratIGAr+v+HZK24eAQ8LMoBGYoL7N/O+9iEc33AKHg45dOMKw3DNldQ==", + "dev": true, + "requires": { + "normalize-url": "^1.0.0", + "strip-url-auth": "^1.0.0" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "js-beautify": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.3.tgz", + "integrity": "sha512-f1ra8PHtOEu/70EBnmiUlV8nJePS58y9qKjl4JHfYWlFH6bo7ogZBz//FAZp7jDuXtYnGYKymZPlrg2I/9Zo4g==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "katex": { + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.15.6.tgz", + "integrity": "sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA==", + "dev": true, + "requires": { + "commander": "^8.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "live-server": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/live-server/-/live-server-1.2.1.tgz", + "integrity": "sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw==", + "dev": true, + "requires": { + "chokidar": "^2.0.4", + "colors": "latest", + "connect": "^3.6.6", + "cors": "latest", + "event-stream": "3.3.4", + "faye-websocket": "0.11.x", + "http-auth": "3.1.x", + "morgan": "^1.9.1", + "object-assign": "latest", + "opn": "latest", + "proxy-middleware": "latest", + "send": "latest", + "serve-index": "^1.9.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==", + "dev": true + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==", + "dev": true + }, + "lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==", + "dev": true + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "logform": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", + "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", + "dev": true, + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.2.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markbind-cli": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/markbind-cli/-/markbind-cli-5.1.0.tgz", + "integrity": "sha512-6POI1Q++2aZa+Udk/oQ6LX1oNPbKUBDY0mN3Up7VOFeK+XYW51faxuCk2Q91JTBxYRKLNtshxf0y12kB4Cj9Qw==", + "dev": true, + "requires": { + "@markbind/core": "5.1.0", + "@markbind/core-web": "5.1.0", + "bluebird": "^3.7.2", + "chalk": "^3.0.0", + "cheerio": "^0.22.0", + "chokidar": "^3.3.0", + "colors": "1.4.0", + "commander": "^8.1.0", + "figlet": "^1.2.4", + "find-up": "^4.1.0", + "fs-extra": "^9.0.1", + "live-server": "1.2.1", + "lodash": "^4.17.15", + "url-parse": "^1.5.10", + "winston": "^2.4.4", + "winston-daily-rotate-file": "^3.10.0" + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + } + } + }, + "markdown-it-attrs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz", + "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", + "dev": true, + "requires": {} + }, + "markdown-it-emoji": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", + "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==", + "dev": true + }, + "markdown-it-linkify-images": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-linkify-images/-/markdown-it-linkify-images-3.0.0.tgz", + "integrity": "sha512-Vs5yGJa5MWjFgytzgtn8c1U6RcStj3FZKhhx459U8dYbEE5FTWZ6mMRkYMiDlkFO0j4VCsQT1LT557bY0ETgtg==", + "dev": true, + "requires": { + "markdown-it": "^13.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + } + } + }, + "markdown-it-mark": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/markdown-it-mark/-/markdown-it-mark-3.0.1.tgz", + "integrity": "sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A==", + "dev": true + }, + "markdown-it-regexp": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-regexp/-/markdown-it-regexp-0.4.0.tgz", + "integrity": "sha512-0XQmr46K/rMKnI93Y3CLXsHj4jIioRETTAiVnJnjrZCEkGaDOmUxTbZj/aZ17G5NlRcVpWBYjqpwSlQ9lj+Kxw==", + "dev": true + }, + "markdown-it-sub": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz", + "integrity": "sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==", + "dev": true + }, + "markdown-it-sup": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz", + "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==", + "dev": true + }, + "markdown-it-table-of-contents": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", + "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==", + "dev": true + }, + "markdown-it-task-lists": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz", + "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==", + "dev": true + }, + "markdown-it-texmath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-texmath/-/markdown-it-texmath-1.0.0.tgz", + "integrity": "sha512-4hhkiX8/gus+6e53PLCUmUrsa6ZWGgJW2XCW6O0ASvZUiezIK900ZicinTDtG3kAO2kon7oUA/ReWmpW2FByxg==", + "dev": true + }, + "markdown-it-video": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/markdown-it-video/-/markdown-it-video-0.6.3.tgz", + "integrity": "sha512-T4th1kwy0OcvyWSN4u3rqPGxvbDclpucnVSSaH3ZacbGsAts964dxokx9s/I3GYsrDCJs4ogtEeEeVP18DQj0Q==", + "dev": true + }, + "matcher-collection": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz", + "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "minimatch": "^3.0.2" + } + }, + "material-icons": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.11.tgz", + "integrity": "sha512-kp2oAdaqo/Zp6hpTZW01rOgDPWmxBUszSdDzkRm1idCjjNvdUMnqu8qu58cll6CObo+o0cydOiPLdoSugLm+mQ==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "nunjucks": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.2.tgz", + "integrity": "sha512-KUi85OoF2NMygwODAy28Lh9qHmq5hO3rBlbkYoC8v377h4l8Pt5qFjILl0LWpMbOrZ18CzfVVUvIHUIrtED3sA==", + "dev": true, + "requires": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "chokidar": "^3.3.0", + "commander": "^5.1.0" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opn": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz", + "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "proxy-middleware": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", + "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "simple-git": { + "version": "2.48.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.48.0.tgz", + "integrity": "sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A==", + "dev": true, + "requires": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "strip-url-auth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", + "integrity": "sha512-++41PnXftlL3pvI6lpvhSEO+89g1kIJC4MYB5E6yH+WHa5InIqz51yGd1YOGd7VNSNdoEOfzTMqbAM/2PbgaHQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unix-crypt-td-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", + "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "dev": true + }, + "vue-server-renderer": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz", + "integrity": "sha512-HifYRa/LW7cKywg9gd4ZtvtRuBlstQBao5ZCWlg40fyB4OPoGfEXAzxb0emSLv4pBDOHYx0UjpqvxpiQFEuoLA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "lodash.template": "^4.5.0", + "lodash.uniq": "^4.5.0", + "resolve": "^1.2.0", + "serialize-javascript": "^3.1.0", + "source-map": "0.5.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "walk-sync": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz", + "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "ensure-posix-path": "^1.1.0", + "matcher-collection": "^2.0.0", + "minimatch": "^3.0.4" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "winston": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.6.tgz", + "integrity": "sha512-J5Zu4p0tojLde8mIOyDSsmLmcP8I3Z6wtwpTDHx1+hGcdhxcJaAmG4CFtagkb+NiN1M9Ek4b42pzMWqfc9jm8w==", + "dev": true, + "requires": { + "async": "^3.2.3", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true + } + } + }, + "winston-compat": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.5.tgz", + "integrity": "sha512-EPvPcHT604AV3Ji6d3+vX8ENKIml9VSxMRnPQ+cuK/FX6f3hvPP2hxyoeeCOCFvDrJEujalfcKWlWPvAnFyS9g==", + "dev": true, + "requires": { + "cycle": "~1.0.3", + "logform": "^1.6.0", + "triple-beam": "^1.2.0" + } + }, + "winston-daily-rotate-file": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.10.0.tgz", + "integrity": "sha512-KO8CfbI2CvdR3PaFApEH02GPXiwJ+vbkF1mCkTlvRIoXFI8EFlf1ACcuaahXTEiDEKCii6cNe95gsL4ZkbnphA==", + "dev": true, + "requires": { + "file-stream-rotator": "^0.4.1", + "object-hash": "^1.3.0", + "semver": "^6.2.0", + "triple-beam": "^1.3.0", + "winston-compat": "^0.1.4", + "winston-transport": "^4.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, + "logform": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", + "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000000..aa7083fd8a7 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,14 @@ +{ + "name": "docs", + "version": "1.0.0", + "description": "AB-3 docs", + "scripts": { + "init": "markbind init", + "build": "markbind build", + "serve": "markbind serve", + "deploy": "markbind deploy" + }, + "devDependencies": { + "markbind-cli": "^5.1.0" + } +} diff --git a/docs/site.json b/docs/site.json new file mode 100644 index 00000000000..ffe411c3f82 --- /dev/null +++ b/docs/site.json @@ -0,0 +1,29 @@ +{ + "baseUrl": "", + "titlePrefix": "", + "titleSuffix": "AddressBook Level-3", + "faviconPath": "images/SeEduLogo.png", + "style": { + "codeTheme": "light" + }, + "ignore": [ + "_markbind/layouts/*", + "_markbind/logs/*", + "_site/*", + "site.json", + "*.md", + "*.njk", + ".git/*", + "node_modules/*" + ], + "pagesExclude": ["node_modules/*"], + "pages": [ + { + "glob": ["**/index.md", "**/*.md"] + } + ], + "deploy": { + "message": "Site Update." + }, + "timeZone": "Asia/Singapore" +} diff --git a/docs/stylesheets/main.css b/docs/stylesheets/main.css new file mode 100644 index 00000000000..1074ade42dd --- /dev/null +++ b/docs/stylesheets/main.css @@ -0,0 +1,144 @@ +mark { + background-color: #ff0; + border-radius: 5px; + padding-top: 0; + padding-bottom: 0; +} + +.indented { + padding-left: 20px; +} + +.theme-card img { + width: 100%; +} + +/* Scrollbar */ + +.slim-scroll::-webkit-scrollbar { + width: 5px; +} + +.slim-scroll::-webkit-scrollbar-thumb { + background: #808080; + border-radius: 20px; +} + +.slim-scroll::-webkit-scrollbar-track { + background: transparent; + border-radius: 20px; +} + +.slim-scroll-blue::-webkit-scrollbar { + width: 5px; +} + +.slim-scroll-blue::-webkit-scrollbar-thumb { + background: #00b0ef; + border-radius: 20px; +} + +.slim-scroll-blue::-webkit-scrollbar-track { + background: transparent; + border-radius: 20px; +} + +/* Layout containers */ + +#flex-body { + display: flex; + flex: 1; + align-items: start; +} + +#content-wrapper { + flex: 1; + margin: 0 auto; + min-width: 0; + max-width: 1000px; + overflow-x: auto; + padding: 0.8rem 20px 0 20px; + transition: 0.4s; + -webkit-transition: 0.4s; +} + +#site-nav, +#page-nav { + display: flex; + flex-direction: column; + position: sticky; + top: var(--sticky-header-height); + flex: 0 0 auto; + max-width: 300px; + max-height: calc(100vh - var(--sticky-header-height)); + width: 300px; +} + +#site-nav { + border-right: 1px solid lightgrey; + padding-bottom: 20px; + z-index: 999; +} + +.site-nav-top { + margin: 0.8rem 0; + padding: 0 12px 12px 12px; +} + +.nav-component { + overflow-y: auto; +} + +#page-nav { + border-left: 1px solid lightgrey; +} + +@media screen and (max-width: 1299.98px) { + #page-nav { + display: none; + } +} + +/* Bootstrap medium(md) responsive breakpoint */ +@media screen and (max-width: 991.98px) { + #site-nav { + display: none; + } +} + +/* Bootstrap small(sm) responsive breakpoint */ +@media (max-width: 767.98px) { + .indented { + padding-left: 10px; + } + + #content-wrapper { + padding: 0 10px; + } +} + +/* Bootstrap extra small(xs) responsive breakpoint */ +@media screen and (max-width: 575.98px) { + #site-nav { + display: none; + } +} + +/* Hide site navigation when printing */ +@media print { + #site-nav { + display: none; + } + + #page-nav { + display: none; + } +} + +h2, +h3, +h4, +h5, +h6 { + color: #e46c0a; +} diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md index 773a07794e2..86aa7ebfc34 100644 --- a/docs/team/johndoe.md +++ b/docs/team/johndoe.md @@ -1,6 +1,6 @@ --- -layout: page -title: John Doe's Project Portfolio Page + layout: default.md + title: "John Doe's Project Portfolio Page" --- ### Project: AddressBook Level 3 diff --git a/docs/tutorials/AddRemark.md b/docs/tutorials/AddRemark.md index d98f38982e7..8b18f27946b 100644 --- a/docs/tutorials/AddRemark.md +++ b/docs/tutorials/AddRemark.md @@ -1,8 +1,11 @@ --- -layout: page -title: "Tutorial: Adding a command" + layout: default.md + title: "Tutorial: Adding a command" + pageNav: 3 --- +# Tutorial: Adding a command + Let's walk you through the implementation of a new command — `remark`. This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format: @@ -22,7 +25,7 @@ For now, let’s keep `RemarkCommand` as simple as possible and print some outpu **`RemarkCommand.java`:** -``` java +```java package seedu.address.logic.commands; import seedu.address.model.Model; @@ -57,13 +60,13 @@ Run `Main#main` and try out your new `RemarkCommand`. If everything went well, y While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress. -![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png) + Following the convention in other commands, we add relevant messages as constants and use them. **`RemarkCommand.java`:** -``` java +```java public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the remark of the person identified " + "by the index number used in the last person listing. " @@ -90,7 +93,7 @@ Let’s change `RemarkCommand` to parse input from the user. We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended. -``` java +```java import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; //... public class RemarkCommand extends Command { @@ -142,13 +145,13 @@ Now let’s move on to writing a parser that will extract the index and remark f Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface. -![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png) + Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does. **`ArgumentTokenizer.java`:** -``` java +```java /** * Tokenizes an arguments string and returns an {@code ArgumentMultimap} * object that maps prefixes to their respective argument values. Only the @@ -166,7 +169,7 @@ We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` a **`ArgumentMultimap.java`:** -``` java +```java /** * Returns the last value of {@code prefix}. */ @@ -181,7 +184,7 @@ This appears to be what we need to get a String of the remark. But what about th **`DeleteCommandParser.java`:** -``` java +```java Index index = ParserUtil.parseIndex(args); return new DeleteCommand(index); ``` @@ -192,7 +195,7 @@ Now that we have the know-how to extract the data that we need from the user’s **`RemarkCommandParser.java`:** -``` java +```java public RemarkCommand parse(String args) throws ParseException { requireNonNull(args); ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, @@ -212,11 +215,11 @@ public RemarkCommand parse(String args) throws ParseException { } ``` -

    + If you are stuck, check out the sample [here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a). @@ -244,7 +247,7 @@ Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/s **`PersonCard.java`:** -``` java +```java @FXML private Label remark; ``` @@ -276,11 +279,11 @@ We change the constructor of `Person` to take a `Remark`. We will also need to d Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`! -
    + -:bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands. +Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands. -
    + Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order! @@ -291,11 +294,11 @@ AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the While the changes to code may be minimal, the test data will have to be updated as well. -
    + -:exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book! +You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book! -
    + Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf) to see what the changes entail. @@ -308,7 +311,7 @@ Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/c **`PersonCard.java`:** -``` java +```java public PersonCard(Person person, int displayedIndex) { //... remark.setText(person.getRemark().value); @@ -328,7 +331,7 @@ save it with `Model#setPerson()`. **`RemarkCommand.java`:** -``` java +```java //... public static final String MESSAGE_ADD_REMARK_SUCCESS = "Added remark to Person: %1$s"; public static final String MESSAGE_DELETE_REMARK_SUCCESS = "Removed remark from Person: %1$s"; diff --git a/docs/tutorials/RemovingFields.md b/docs/tutorials/RemovingFields.md index f29169bc924..c73bd379e5e 100644 --- a/docs/tutorials/RemovingFields.md +++ b/docs/tutorials/RemovingFields.md @@ -1,8 +1,11 @@ --- -layout: page -title: "Tutorial: Removing Fields" + layout: default.md + title: "Tutorial: Removing Fields" + pageNav: 3 --- +# Tutorial: Removing Fields + > Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away. > > — Antoine de Saint-Exupery @@ -10,17 +13,17 @@ title: "Tutorial: Removing Fields" When working on an existing code base, you will most likely find that some features that are no longer necessary. This tutorial aims to give you some practice on such a code 'removal' activity by removing the `address` field from `Person` class. -
    + **If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.

    However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don't actually do the steps yourself.** -
    + -* Table of Contents -{:toc} + + ## Safely deleting `Address` @@ -50,10 +53,10 @@ Let’s try removing references to `Address` in `EditPersonDescriptor`. 1. Remove the usages of `address` and select `Do refactor` when you are done. -
    + - :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor. -
    + **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor. + 1. Repeat the steps for the remaining usages of `Address` @@ -71,7 +74,7 @@ A quick look at the `PersonCard` class and its `fxml` file quickly reveals why i **`PersonCard.java`** -``` java +```java ... @FXML private Label address; diff --git a/docs/tutorials/TracingCode.md b/docs/tutorials/TracingCode.md index 4fb62a83ef6..2b1b0f2d6b7 100644 --- a/docs/tutorials/TracingCode.md +++ b/docs/tutorials/TracingCode.md @@ -1,26 +1,30 @@ --- -layout: page -title: "Tutorial: Tracing code" + layout: default.md + title: "Tutorial: Tracing code" + pageNav: 3 --- +# Tutorial: Tracing code + + > Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\[Therefore,\] making it easy to read makes it easier to write. > > — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command. -* Table of Contents -{:toc} + + ## Before we start Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the 'Architecture' section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components. -![ArchitectureDiagram](../images/ArchitectureDiagram.png) + It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App. - + Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works. @@ -37,16 +41,16 @@ As you know, the first step of debugging is to put in a breakpoint where you wan In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component. - + According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`. -
    + -:bulb: **Intellij Tip:** The ['**Search Everywhere**' feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the '**Find Symbol**' ('Symbol' here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`. -
    +**Intellij Tip:** The ['**Search Everywhere**' feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the '**Find Symbol**' ('Symbol' here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`. + A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for. @@ -67,14 +71,14 @@ public interface Logic { But apparently, this is an interface, not a concrete implementation. That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here's the relevant diagram: - + Next, let's find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`. -
    + -:bulb: **Intellij Tip:** The ['**Find Usages**' feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used. -
    +**Intellij Tip:** The ['**Find Usages**' feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used. + ![`Find Usages` tool window. `Edit` \> `Find` \> `Find Usages`.](../images/tracing/FindUsages.png) @@ -87,10 +91,10 @@ Now let’s set the breakpoint. First, double-click the item to reach the corres Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`. -
    + -:bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component. -
    +**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component. + 1. To start the debugging session, simply `Run` \> `Debug Main` @@ -110,7 +114,7 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ **LogicManager\#execute().** - ``` java + ```java @Override public CommandResult execute(String commandText) throws CommandException, ParseException { @@ -142,7 +146,7 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ ![StepOver](../images/tracing/StepOver.png) 1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below): - ``` java + ```java public Command parseCommand(String userInput) throws ParseException { ... final String commandWord = matcher.group("commandWord"); @@ -157,7 +161,7 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ 1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command). - ``` java + ```java ... case EditCommand.COMMAND_WORD: return new EditCommandParser().parse(arguments); @@ -166,8 +170,10 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ 1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the 'step into' button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`. -
    :bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them! -
    + + + **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them! + 1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required. @@ -175,17 +181,17 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ ![EditCommand](../images/tracing/EditCommand.png) 1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component. - + 1. Let’s continue stepping through until we return to `LogicManager#execute()`. The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?
    - ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png) + 1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below): **`EditCommand#execute()`:** - ``` java + ```java @Override public CommandResult execute(Model model) throws CommandException { ... @@ -205,25 +211,28 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the 'filtered list' with _all_ persons.
    FYI, The 'filtered list' is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.
    To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the 'filtered list' of persons is being tracked. -
    +
    * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component) 1. As you step through the rest of the statements in the `EditCommand#execute()` method, you'll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.
    Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.
    1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you've encountered so far, and see how they fit into the class structure of the `Logic` component: - + + * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component) 1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component. -
    :bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into. -
    + + + **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into. + -1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability): +1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability): **`JsonSerializableAddressBook` constructor:** - ``` java + ```java /** * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use. * @@ -243,7 +252,8 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format. 1. While you are stepping through the classes in the `Storage` component, here is the component's class diagram to help you understand how those classes fit into the structure of the component.
    - + + * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component) 1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint). @@ -251,7 +261,7 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ 1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in: **`ResultDisplay#setFeedbackToUser()`** - ``` java + ```java public void setFeedbackToUser(String feedbackToUser) { requireNonNull(feedbackToUser); resultDisplay.setText(feedbackToUser); From f74c450e62663b60996def9c31372166b46574e6 Mon Sep 17 00:00:00 2001 From: damithc Date: Fri, 9 Feb 2024 18:07:35 +0800 Subject: [PATCH 002/169] Bump MarkBind version --- .github/workflows/docs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 57737a615fc..0cd51c5fb97 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -21,5 +21,5 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} rootDirectory: './docs' - baseUrl: '/addressbook-level3' # replace with your repo name - version: '^5.1.0' + baseUrl: '/tp' # assuming your repo name is tp + version: '^5.2.0' From 353996b3207c00f1cb54ebb080fa80079add475d Mon Sep 17 00:00:00 2001 From: damithc Date: Fri, 9 Feb 2024 18:08:02 +0800 Subject: [PATCH 003/169] Add a Home button in the top NavBar --- docs/_markbind/layouts/default.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_markbind/layouts/default.md b/docs/_markbind/layouts/default.md index 7348aace92c..8576932d696 100644 --- a/docs/_markbind/layouts/default.md +++ b/docs/_markbind/layouts/default.md @@ -5,6 +5,7 @@
    AB-3 +
  • Home
  • User Guide
  • Developer Guide
  • About Us
  • From 8d18d37017ac5b670b8eca7691af95087ab138e0 Mon Sep 17 00:00:00 2001 From: damithc Date: Fri, 9 Feb 2024 18:09:08 +0800 Subject: [PATCH 004/169] Reduce font size for printing --- docs/stylesheets/main.css | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/stylesheets/main.css b/docs/stylesheets/main.css index 1074ade42dd..ba6f8385d2d 100644 --- a/docs/stylesheets/main.css +++ b/docs/stylesheets/main.css @@ -133,6 +133,32 @@ mark { #page-nav { display: none; } + + /* Reduce font size when printing */ + h1 { + font-size: 1.2rem !important; + } + h2 { + font-size: 1.0rem !important; + } + h3 { + font-size: 0.9rem !important; + } + h4 { + font-size: 0.8rem !important; + } + h5 { + font-size: 0.7rem !important; + } + body { + font-size: 0.65rem !important; + } + .btn { + font-size: 0.65rem !important; + } + img { + zoom: 0.8; /* might not work on some browsers */ + } } h2, From 6f56dc07d867733f444ba907d97d818fb135ef56 Mon Sep 17 00:00:00 2001 From: yiwern5 Date: Mon, 26 Feb 2024 16:07:43 +0800 Subject: [PATCH 005/169] Configure MarkBind --- docs/_markbind/layouts/default.md | 2 +- docs/site.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_markbind/layouts/default.md b/docs/_markbind/layouts/default.md index 8576932d696..5e0840f4ae1 100644 --- a/docs/_markbind/layouts/default.md +++ b/docs/_markbind/layouts/default.md @@ -4,7 +4,7 @@
    - AB-3 + EffiTrack
  • Home
  • User Guide
  • Developer Guide
  • diff --git a/docs/site.json b/docs/site.json index ffe411c3f82..0fdf99a54ad 100644 --- a/docs/site.json +++ b/docs/site.json @@ -1,7 +1,7 @@ { "baseUrl": "", "titlePrefix": "", - "titleSuffix": "AddressBook Level-3", + "titleSuffix": "EffiTrack", "faviconPath": "images/SeEduLogo.png", "style": { "codeTheme": "light" From 6041c57a76feac3c766b5229b53e9fb30859eaa5 Mon Sep 17 00:00:00 2001 From: yiwern5 Date: Mon, 26 Feb 2024 16:38:24 +0800 Subject: [PATCH 006/169] Testing fork --- test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt diff --git a/test.txt b/test.txt new file mode 100644 index 00000000000..e69de29bb2d From 49f56bf1f16bc1b4f9b45fab550e3193cf15deee Mon Sep 17 00:00:00 2001 From: yiwern5 Date: Mon, 4 Mar 2024 18:48:36 +0800 Subject: [PATCH 007/169] Adding Command Tutorial --- .../seedu/address/commons/core/Messages.java | 13 +++ .../address/logic/commands/EditCommand.java | 52 ++++------ .../address/logic/commands/RemarkCommand.java | 94 +++++++++++++++++++ .../logic/parser/AddCommandParser.java | 9 +- .../logic/parser/AddressBookParser.java | 56 +++++------ .../seedu/address/logic/parser/CliSyntax.java | 1 + .../logic/parser/RemarkCommandParser.java | 37 ++++++++ .../seedu/address/model/person/Person.java | 47 ++++++---- .../seedu/address/model/person/Remark.java | 33 +++++++ .../address/model/util/SampleDataUtil.java | 42 +++++---- .../address/storage/JsonAdaptedPerson.java | 21 +++-- .../java/seedu/address/ui/PersonCard.java | 26 ++++- src/main/resources/view/PersonListCard.fxml | 1 + .../logic/commands/CommandTestUtil.java | 2 + .../logic/commands/RemarkCommandTest.java | 63 +++++++++++++ .../logic/parser/AddressBookParserTest.java | 19 ++-- .../logic/parser/RemarkCommandParserTest.java | 43 +++++++++ .../address/model/person/RemarkTest.java | 31 ++++++ .../seedu/address/testutil/PersonBuilder.java | 26 +++-- 19 files changed, 483 insertions(+), 133 deletions(-) create mode 100644 src/main/java/seedu/address/commons/core/Messages.java create mode 100644 src/main/java/seedu/address/logic/commands/RemarkCommand.java create mode 100644 src/main/java/seedu/address/logic/parser/RemarkCommandParser.java create mode 100644 src/main/java/seedu/address/model/person/Remark.java create mode 100644 src/test/java/seedu/address/logic/commands/RemarkCommandTest.java create mode 100644 src/test/java/seedu/address/logic/parser/RemarkCommandParserTest.java create mode 100644 src/test/java/seedu/address/model/person/RemarkTest.java diff --git a/src/main/java/seedu/address/commons/core/Messages.java b/src/main/java/seedu/address/commons/core/Messages.java new file mode 100644 index 00000000000..de4087a2e4b --- /dev/null +++ b/src/main/java/seedu/address/commons/core/Messages.java @@ -0,0 +1,13 @@ +package seedu.address.commons.core; + +/** + * Container for user visible messages. + */ +public class Messages { + + public static final String MESSAGE_UNKNOWN_COMMAND = "Unknown command"; + public static final String MESSAGE_INVALID_COMMAND_FORMAT = "Invalid command format! \n%1$s"; + public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX = "The person index provided is invalid"; + public static final String MESSAGE_PERSONS_LISTED_OVERVIEW = "%1$d persons listed!"; + +} \ No newline at end of file diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 4b581c7331e..5f9bbf05f15 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -11,14 +11,12 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.Set; +import seedu.address.commons.core.Messages; import seedu.address.commons.core.index.Index; import seedu.address.commons.util.CollectionUtil; -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.logic.Messages; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; import seedu.address.model.person.Address; @@ -26,6 +24,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.person.Remark; import seedu.address.model.tag.Tag; /** @@ -85,7 +84,7 @@ public CommandResult execute(Model model) throws CommandException { model.setPerson(personToEdit, editedPerson); model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson))); + return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson)); } /** @@ -99,13 +98,15 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone()); Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail()); Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress()); + Remark updatedRemark = personToEdit.getRemark(); // edit command does not allow editing remarks Set updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags()); - return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags); + return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRemark, updatedTags); } @Override public boolean equals(Object other) { + // short circuit if same object if (other == this) { return true; } @@ -115,17 +116,10 @@ public boolean equals(Object other) { return false; } - EditCommand otherEditCommand = (EditCommand) other; - return index.equals(otherEditCommand.index) - && editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("index", index) - .add("editPersonDescriptor", editPersonDescriptor) - .toString(); + // state check + EditCommand e = (EditCommand) other; + return index.equals(e.index) + && editPersonDescriptor.equals(e.editPersonDescriptor); } /** @@ -211,6 +205,7 @@ public Optional> getTags() { @Override public boolean equals(Object other) { + // short circuit if same object if (other == this) { return true; } @@ -220,23 +215,14 @@ public boolean equals(Object other) { return false; } - EditPersonDescriptor otherEditPersonDescriptor = (EditPersonDescriptor) other; - return Objects.equals(name, otherEditPersonDescriptor.name) - && Objects.equals(phone, otherEditPersonDescriptor.phone) - && Objects.equals(email, otherEditPersonDescriptor.email) - && Objects.equals(address, otherEditPersonDescriptor.address) - && Objects.equals(tags, otherEditPersonDescriptor.tags); - } + // state check + EditPersonDescriptor e = (EditPersonDescriptor) other; - @Override - public String toString() { - return new ToStringBuilder(this) - .add("name", name) - .add("phone", phone) - .add("email", email) - .add("address", address) - .add("tags", tags) - .toString(); + return getName().equals(e.getName()) + && getPhone().equals(e.getPhone()) + && getEmail().equals(e.getEmail()) + && getAddress().equals(e.getAddress()) + && getTags().equals(e.getTags()); } } -} +} \ No newline at end of file diff --git a/src/main/java/seedu/address/logic/commands/RemarkCommand.java b/src/main/java/seedu/address/logic/commands/RemarkCommand.java new file mode 100644 index 00000000000..d95ea3bea1b --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/RemarkCommand.java @@ -0,0 +1,94 @@ +package seedu.address.logic.commands; + +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK; +import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; + +import seedu.address.commons.core.Messages; +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; +import seedu.address.model.person.Person; +import seedu.address.model.person.Remark; + +import java.util.List; + +/** + * Changes the remark of an existing person in the address book. + */ +public class RemarkCommand extends Command { + + public static final String COMMAND_WORD = "remark"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the remark of the person identified " + + "by the index number used in the last person listing. " + + "Existing remark will be overwritten by the input.\n" + + "Parameters: INDEX (must be a positive integer) " + + PREFIX_REMARK + "[REMARK]\n" + + "Example: " + COMMAND_WORD + " 1 " + + PREFIX_REMARK + "Likes to swim."; + + public static final String MESSAGE_ARGUMENTS = "Index: %1$d, Remark: %2$s"; + + private final Index index; + private final Remark remark; + public static final String MESSAGE_ADD_REMARK_SUCCESS = "Added remark to Person: %1$s"; + public static final String MESSAGE_DELETE_REMARK_SUCCESS = "Removed remark from Person: %1$s"; + + /** + * @param index of the person in the filtered person list to edit the remark + * @param remark of the person to be updated to + */ + public RemarkCommand(Index index, Remark remark) { + requireAllNonNull(index, remark); + + this.index = index; + this.remark = remark; + } + @Override + public CommandResult execute(Model model) throws CommandException { + List lastShownList = model.getFilteredPersonList(); + + if (index.getZeroBased() >= lastShownList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + } + + Person personToEdit = lastShownList.get(index.getZeroBased()); + Person editedPerson = new Person( + personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(), + personToEdit.getAddress(), remark, personToEdit.getTags()); + + model.setPerson(personToEdit, editedPerson); + model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); + + return new CommandResult(generateSuccessMessage(editedPerson)); + } + + /** + * Generates a command execution success message based on whether + * the remark is added to or removed from + * {@code personToEdit}. + */ + private String generateSuccessMessage(Person personToEdit) { + String message = !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS; + return String.format(message, personToEdit); + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof RemarkCommand)) { + return false; + } + + // state check + RemarkCommand e = (RemarkCommand) other; + return index.equals(e.index) + && remark.equals(e.remark); + } +} \ No newline at end of file diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index 4ff1a97ed77..1c5b17d532c 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -1,6 +1,6 @@ package seedu.address.logic.parser; -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; @@ -17,6 +17,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.person.Remark; import seedu.address.model.tag.Tag; /** @@ -38,14 +39,14 @@ public AddCommand parse(String args) throws ParseException { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } - argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS); Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); + Remark remark = new Remark(""); // add command does not allow adding remarks straight away Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - Person person = new Person(name, phone, email, address, tagList); + Person person = new Person(name, phone, email, address, remark, tagList); return new AddCommand(person); } @@ -58,4 +59,4 @@ private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Pre return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); } -} +} \ No newline at end of file diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 3149ee07e0b..a4d51052ca3 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -1,13 +1,11 @@ package seedu.address.logic.parser; -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; -import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -import seedu.address.commons.core.LogsCenter; import seedu.address.logic.commands.AddCommand; import seedu.address.logic.commands.ClearCommand; import seedu.address.logic.commands.Command; @@ -17,6 +15,7 @@ import seedu.address.logic.commands.FindCommand; import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.ListCommand; +import seedu.address.logic.commands.RemarkCommand; import seedu.address.logic.parser.exceptions.ParseException; /** @@ -28,7 +27,6 @@ public class AddressBookParser { * Used for initial separation of command word and args. */ private static final Pattern BASIC_COMMAND_FORMAT = Pattern.compile("(?\\S+)(?.*)"); - private static final Logger logger = LogsCenter.getLogger(AddressBookParser.class); /** * Parses user input into command for execution. @@ -45,42 +43,38 @@ public Command parseCommand(String userInput) throws ParseException { final String commandWord = matcher.group("commandWord"); final String arguments = matcher.group("arguments"); - - // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower) - // log messages such as the one below. - // Lower level log messages are used sparingly to minimize noise in the code. - logger.fine("Command word: " + commandWord + "; Arguments: " + arguments); - switch (commandWord) { - case AddCommand.COMMAND_WORD: - return new AddCommandParser().parse(arguments); + case AddCommand.COMMAND_WORD: + return new AddCommandParser().parse(arguments); + + case EditCommand.COMMAND_WORD: + return new EditCommandParser().parse(arguments); - case EditCommand.COMMAND_WORD: - return new EditCommandParser().parse(arguments); + case DeleteCommand.COMMAND_WORD: + return new DeleteCommandParser().parse(arguments); - case DeleteCommand.COMMAND_WORD: - return new DeleteCommandParser().parse(arguments); + case ClearCommand.COMMAND_WORD: + return new ClearCommand(); - case ClearCommand.COMMAND_WORD: - return new ClearCommand(); + case FindCommand.COMMAND_WORD: + return new FindCommandParser().parse(arguments); - case FindCommand.COMMAND_WORD: - return new FindCommandParser().parse(arguments); + case RemarkCommand.COMMAND_WORD: + return new RemarkCommandParser().parse(arguments); - case ListCommand.COMMAND_WORD: - return new ListCommand(); + case ListCommand.COMMAND_WORD: + return new ListCommand(); - case ExitCommand.COMMAND_WORD: - return new ExitCommand(); + case ExitCommand.COMMAND_WORD: + return new ExitCommand(); - case HelpCommand.COMMAND_WORD: - return new HelpCommand(); + case HelpCommand.COMMAND_WORD: + return new HelpCommand(); - default: - logger.finer("This user input caused a ParseException: " + userInput); - throw new ParseException(MESSAGE_UNKNOWN_COMMAND); + default: + throw new ParseException(MESSAGE_UNKNOWN_COMMAND); } } -} +} \ No newline at end of file diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 75b1a9bf119..d1631e40cd6 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -10,6 +10,7 @@ public class CliSyntax { public static final Prefix PREFIX_PHONE = new Prefix("p/"); public static final Prefix PREFIX_EMAIL = new Prefix("e/"); public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); + public static final Prefix PREFIX_REMARK = new Prefix("r/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); } diff --git a/src/main/java/seedu/address/logic/parser/RemarkCommandParser.java b/src/main/java/seedu/address/logic/parser/RemarkCommandParser.java new file mode 100644 index 00000000000..14da5e452f9 --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/RemarkCommandParser.java @@ -0,0 +1,37 @@ +package seedu.address.logic.parser; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK; + +import seedu.address.commons.core.index.Index; +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.logic.commands.RemarkCommand; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.person.Remark; + +/** + * Parses input arguments and creates a new {@code RemarkCommand} object + */ +public class RemarkCommandParser implements Parser { + /** + * Parses the given {@code String} of arguments in the context of the {@code RemarkCommand} + * and returns a {@code RemarkCommand} object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public RemarkCommand parse(String args) throws ParseException { + requireNonNull(args); + ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_REMARK); + + Index index; + try { + index = ParserUtil.parseIndex(argMultimap.getPreamble()); + } catch (IllegalValueException ive) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, RemarkCommand.MESSAGE_USAGE), ive); + } + + String remark = argMultimap.getValue(PREFIX_REMARK).orElse(""); + + return new RemarkCommand(index, new Remark(remark)); + } +} \ No newline at end of file diff --git a/src/main/java/seedu/address/model/person/Person.java b/src/main/java/seedu/address/model/person/Person.java index abe8c46b535..4d41c5f3501 100644 --- a/src/main/java/seedu/address/model/person/Person.java +++ b/src/main/java/seedu/address/model/person/Person.java @@ -7,7 +7,6 @@ import java.util.Objects; import java.util.Set; -import seedu.address.commons.util.ToStringBuilder; import seedu.address.model.tag.Tag; /** @@ -23,17 +22,19 @@ public class Person { // Data fields private final Address address; + private final Remark remark; private final Set tags = new HashSet<>(); /** * Every field must be present and not null. */ - public Person(Name name, Phone phone, Email email, Address address, Set tags) { + public Person(Name name, Phone phone, Email email, Address address, Remark remark, Set tags) { requireAllNonNull(name, phone, email, address, tags); this.name = name; this.phone = phone; this.email = email; this.address = address; + this.remark = remark; this.tags.addAll(tags); } @@ -53,6 +54,10 @@ public Address getAddress() { return address; } + public Remark getRemark() { + return remark; + } + /** * Returns an immutable tag set, which throws {@code UnsupportedOperationException} * if modification is attempted. @@ -62,7 +67,7 @@ public Set getTags() { } /** - * Returns true if both persons have the same name. + * Returns true if both persons of the same name have at least one other identity field that is the same. * This defines a weaker notion of equality between two persons. */ public boolean isSamePerson(Person otherPerson) { @@ -71,7 +76,8 @@ public boolean isSamePerson(Person otherPerson) { } return otherPerson != null - && otherPerson.getName().equals(getName()); + && otherPerson.getName().equals(getName()) + && (otherPerson.getPhone().equals(getPhone()) || otherPerson.getEmail().equals(getEmail())); } /** @@ -84,17 +90,16 @@ public boolean equals(Object other) { return true; } - // instanceof handles nulls if (!(other instanceof Person)) { return false; } Person otherPerson = (Person) other; - return name.equals(otherPerson.name) - && phone.equals(otherPerson.phone) - && email.equals(otherPerson.email) - && address.equals(otherPerson.address) - && tags.equals(otherPerson.tags); + return otherPerson.getName().equals(getName()) + && otherPerson.getPhone().equals(getPhone()) + && otherPerson.getEmail().equals(getEmail()) + && otherPerson.getAddress().equals(getAddress()) + && otherPerson.getTags().equals(getTags()); } @Override @@ -105,13 +110,19 @@ public int hashCode() { @Override public String toString() { - return new ToStringBuilder(this) - .add("name", name) - .add("phone", phone) - .add("email", email) - .add("address", address) - .add("tags", tags) - .toString(); + final StringBuilder builder = new StringBuilder(); + builder.append(getName()) + .append(" Phone: ") + .append(getPhone()) + .append(" Email: ") + .append(getEmail()) + .append(" Address: ") + .append(getAddress()) + .append(" Remark: ") + .append(getRemark()) + .append(" Tags: "); + getTags().forEach(builder::append); + return builder.toString(); } -} +} \ No newline at end of file diff --git a/src/main/java/seedu/address/model/person/Remark.java b/src/main/java/seedu/address/model/person/Remark.java new file mode 100644 index 00000000000..c8fd1193895 --- /dev/null +++ b/src/main/java/seedu/address/model/person/Remark.java @@ -0,0 +1,33 @@ +package seedu.address.model.person; + +import static java.util.Objects.requireNonNull; + +/** + * Represents a Person's remark in the address book. + * Guarantees: immutable; is always valid + */ +public class Remark { + public final String value; + + public Remark(String remark) { + requireNonNull(remark); + value = remark; + } + + @Override + public String toString() { + return value; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof Remark // instanceof handles nulls + && value.equals(((Remark) other).value)); // state check + } + + @Override + public int hashCode() { + return value.hashCode(); + } +} \ No newline at end of file diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index 1806da4facf..c25941e739a 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -11,32 +11,36 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.person.Remark; import seedu.address.model.tag.Tag; /** * Contains utility methods for populating {@code AddressBook} with sample data. */ public class SampleDataUtil { + + public static final Remark EMPTY_REMARK = new Remark(""); + public static Person[] getSamplePersons() { return new Person[] { - new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), - new Address("Blk 30 Geylang Street 29, #06-40"), - getTagSet("friends")), - new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), - new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), - getTagSet("colleagues", "friends")), - new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), - new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), - getTagSet("neighbours")), - new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), - new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), - getTagSet("family")), - new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), - new Address("Blk 47 Tampines Street 20, #17-35"), - getTagSet("classmates")), - new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), - new Address("Blk 45 Aljunied Street 85, #11-31"), - getTagSet("colleagues")) + new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), + new Address("Blk 30 Geylang Street 29, #06-40"), EMPTY_REMARK, + getTagSet("friends")), + new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), + new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), EMPTY_REMARK, + getTagSet("colleagues", "friends")), + new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), + new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), EMPTY_REMARK, + getTagSet("neighbours")), + new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), + new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), EMPTY_REMARK, + getTagSet("family")), + new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), + new Address("Blk 47 Tampines Street 20, #17-35"), EMPTY_REMARK, + getTagSet("classmates")), + new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), + new Address("Blk 45 Aljunied Street 85, #11-31"), EMPTY_REMARK, + getTagSet("colleagues")) }; } @@ -57,4 +61,4 @@ public static Set getTagSet(String... strings) { .collect(Collectors.toSet()); } -} +} \ No newline at end of file diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java index bd1ca0f56c8..d4de2fa88a7 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java @@ -15,6 +15,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.person.Remark; import seedu.address.model.tag.Tag; /** @@ -28,21 +29,21 @@ class JsonAdaptedPerson { private final String phone; private final String email; private final String address; - private final List tags = new ArrayList<>(); + private final List tagged = new ArrayList<>(); /** * Constructs a {@code JsonAdaptedPerson} with the given person details. */ @JsonCreator public JsonAdaptedPerson(@JsonProperty("name") String name, @JsonProperty("phone") String phone, - @JsonProperty("email") String email, @JsonProperty("address") String address, - @JsonProperty("tags") List tags) { + @JsonProperty("email") String email, @JsonProperty("address") String address, + @JsonProperty("tagged") List tagged) { this.name = name; this.phone = phone; this.email = email; this.address = address; - if (tags != null) { - this.tags.addAll(tags); + if (tagged != null) { + this.tagged.addAll(tagged); } } @@ -54,7 +55,7 @@ public JsonAdaptedPerson(Person source) { phone = source.getPhone().value; email = source.getEmail().value; address = source.getAddress().value; - tags.addAll(source.getTags().stream() + tagged.addAll(source.getTags().stream() .map(JsonAdaptedTag::new) .collect(Collectors.toList())); } @@ -66,7 +67,7 @@ public JsonAdaptedPerson(Person source) { */ public Person toModelType() throws IllegalValueException { final List personTags = new ArrayList<>(); - for (JsonAdaptedTag tag : tags) { + for (JsonAdaptedTag tag : tagged) { personTags.add(tag.toModelType()); } @@ -102,8 +103,10 @@ public Person toModelType() throws IllegalValueException { } final Address modelAddress = new Address(address); + final Remark modelRemark = new Remark(""); //TODO: Implement parsing and marshalling in the storage commit. + final Set modelTags = new HashSet<>(personTags); - return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags); + return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRemark, modelTags); } -} +} \ No newline at end of file diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java index 094c42cda82..b62fe98b221 100644 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ b/src/main/java/seedu/address/ui/PersonCard.java @@ -39,11 +39,10 @@ public class PersonCard extends UiPart { @FXML private Label email; @FXML + private Label remark; + @FXML private FlowPane tags; - /** - * Creates a {@code PersonCode} with the given {@code Person} and index to display. - */ public PersonCard(Person person, int displayedIndex) { super(FXML); this.person = person; @@ -52,8 +51,27 @@ public PersonCard(Person person, int displayedIndex) { phone.setText(person.getPhone().value); address.setText(person.getAddress().value); email.setText(person.getEmail().value); + remark.setText(person.getRemark().value); person.getTags().stream() .sorted(Comparator.comparing(tag -> tag.tagName)) .forEach(tag -> tags.getChildren().add(new Label(tag.tagName))); } -} + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof PersonCard)) { + return false; + } + + // state check + PersonCard card = (PersonCard) other; + return id.getText().equals(card.id.getText()) + && person.equals(card.person); + } +} \ No newline at end of file diff --git a/src/main/resources/view/PersonListCard.fxml b/src/main/resources/view/PersonListCard.fxml index f5e812e25e6..1bff2cd09eb 100644 --- a/src/main/resources/view/PersonListCard.fxml +++ b/src/main/resources/view/PersonListCard.fxml @@ -31,6 +31,7 @@